Kom i gang med API'et
Første kald, dine bygninger og rum, og hvordan du ændrer en indstilling.
API'et er formet efter Home Assistants climate-entitet. Felterne hedder det samme, så en integration i vidt omfang kan sende værdierne videre uden oversættelse.
| API | climate-entitet |
|---|---|
current_temperature | current_temperature |
current_humidity | current_humidity |
target_temperature | target_temperature — skrives med PATCH |
min_temp / max_temp | min_temp / max_temp (7 og 35) |
hvac_mode | hvac_mode — heat eller off |
hvac_modes | hvac_modes |
hvac_action | hvac_action — heating, idle eller off |
preset_mode | preset_mode |
preset_modes | preset_modes |
Sensorens rå værdier ligger stadig under sensor og hører hjemme som selvstændige entiteter:
| API | Entitet |
|---|---|
sensor.batt | sensor, device_class: battery, enhed % |
sensor.rssi | sensor, device_class: signal_strength, enhed dBm |
power | sensor — andel af tiden ventilen er åben, gang med 100 for procent |
sensor.timestamp | Hvornår målingen sidst blev opdateret |
En bygning bliver naturligt et device, og rummene kan lægges i areas.
power er ikke en effekt i watt. Styringen åbner og lukker telestaten inden for et fast tidsvindue, og power er den andel af vinduet, ventilen står åben — 0.5 er åben halvdelen af tiden. Vinduets længde afhænger af rummets gulvtype og af opsætningen, så regn ikke med en bestemt varighed.
Det ene kald giver alle rum med de aktuelle målinger. Der findes med vilje ikke et separat sensor-endpoint, netop så en pollende integration slipper for at hente rum og sensorer hver for sig.
Et interval på 30-60 sekunder er rigeligt. Temperaturen i en bolig ændrer sig langsomt, og sensorerne rapporterer ikke oftere.
Bygningen bærer to felter, der kommer fra gatewayens livstegn:
available har tre tilstande, ikke to:
| Værdi | Betyder |
|---|---|
true | Hardwaren har rapporteret for nylig |
false | Den har været tavs for længe |
null | Ingen gateway har rapporteret nogensinde |
null er ikke det samme som nede. Det er typisk en bygning, hvor hardwaren aldrig er blevet sat op. En integration bør behandle false som unavailable, mens null snarere bør give en tydelig besked om, at der ikke er noget at forbinde til.
Har en bygning flere gateways, tæller den nyeste heartbeat — én glemt enhed trækker ikke et fungerende hus offline.
Bag kulissen holdes et slukket rum på nul effekt — der findes ikke en separat afbryder. Det kan du se i svaret: manual_power bliver {"enabled": true, "power": 0}. Du kan sætte det direkte i stedet, hvis du vil have en delvis overstyring frem for helt slukket.
Sender du både hvac_mode og manual_power i samme kald, vinder hvac_mode — så resultatet ikke afhænger af rækkefølgen i JSON'en.
Opret nøglen på Min konto eller i appen under Indstillinger → API-nøgler, og kopiér den med det samme — den vises kun én gang.
Den passer direkte ind i et config flow: brugeren indsætter nøglen, og integrationen henter selv listen af bygninger med GET /v1/buildings.
Læg nøglen i integrationens konfiguration — ikke i kode. Skal den spærres igen, sker det begge steder. Se Autentificering.
Læs videre
Første kald, dine bygninger og rum, og hvordan du ændrer en indstilling.
Nøgler, rettigheder, spærring og hvad de enkelte fejlkoder betyder.
Færdige kodestumper i curl, JavaScript og Dart.
Alle endpoints, felter og skemaer, genereret fra specen.
GET /v1/buildings/{buildingId}/rooms{
"available": true,
"last_seen": "2026-08-23T08:49:57.000Z"
}# Sluk rummet
curl -X PATCH -H "x-api-key: $SG_API_KEY" -H "content-type: application/json" \
-d '{"hvac_mode": "off"}' \
https://api.smart-gulvvarme.dk/v1/buildings/BUILDING_ID/rooms/ROOM_ID
# Giv det tilbage til varmestyringen
-d '{"hvac_mode": "heat"}'@property
def available(self) -> bool:
return self.building.get("available") is True