curl -s -H "x-api-key: $SG_API_KEY" \
"https://api.smart-gulvvarme.dk/v1/buildings/$BUILDING_ID/rooms"Alle eksempler bruger SG_API_KEY som miljøvariabel. Erstat api.smart-gulvvarme.dk med værten fra API-referencen.
curl -s -H "x-api-key: $SG_API_KEY" \
"https://api.smart-gulvvarme.dk/v1/buildings/$BUILDING_ID/rooms"const BASE = 'https://api.smart-gulvvarme.dk/v1'
async function getRooms(buildingId) {
const res = await fetch(`${BASE}/buildings/${buildingId}/rooms`, {
headers: { 'x-api-key': process.env.SG_API_KEY },
})
if (!res.ok) {
const { error } = await res.json()
throw new Error(`${res.status} ${error.code}: ${error.message}`)
}
return res.json()
}
const rooms = await getRooms(buildingId)
for (const room of rooms) {
const now = room.current_temperature ?? '–'
console.log(`${room.name}: ${now}°C -> ${room.target_temperature}°C (${room.hvac_action})`)
}import 'dart:convert';
import 'package:http/http.dart' as http;
const base = 'https://api.smart-gulvvarme.dk/v1';
Future<List<dynamic>> getRooms(String buildingId, String apiKey) async {
final res = await http.get(
Uri.parse('$base/buildings/$buildingId/rooms'),
headers: {'x-api-key': apiKey},
);
if (res.statusCode != 200) {
final error = jsonDecode(res.body)['error'];
throw Exception('${res.statusCode} ${error['code']}: ${error['message']}');
}
return jsonDecode(res.body) as List<dynamic>;
}curl -s -X PATCH \
-H "x-api-key: $SG_API_KEY" \
-H "content-type: application/json" \
-d '{"target_temperature": 21.5}' \
"https://api.smart-gulvvarme.dk/v1/buildings/$BUILDING_ID/rooms/$ROOM_ID"async function setTemperature(buildingId, roomId, celsius) {
const res = await fetch(`${BASE}/buildings/${buildingId}/rooms/${roomId}`, {
method: 'PATCH',
headers: {
'x-api-key': process.env.SG_API_KEY,
'content-type': 'application/json',
},
body: JSON.stringify({ target_temperature: celsius }),
})
if (!res.ok) {
const { error } = await res.json()
throw new Error(`${res.status} ${error.code}: ${error.message}`)
}
return res.json() // det opdaterede rum
}Kun disse felter kan skrives. Alt andet i kroppen afvises med 400, så en tastefejl bliver opdaget med det samme frem for at blive ignoreret i stilhed.
{
"name": "Stue",
"target_temperature": 21.5,
"preset_mode": "medium",
"hvac_mode": "heat",
"manual_power": { "enabled": true, "power": 0.4 },
"sensor_id": "58:2D:34:35:D5:A0"
}Nogle detaljer værd at kende:
target_temperature skal være mellem 7 og 35 grader — samme grænser som min_temp og `max_temp` i svaret.preset_mode er en af none, low, medium, high. Små bogstaver.hvac_mode er heat eller off. Se [Home Assistant](/docs/api-home-assistant) for hvordan et rum slukkes.manual_power.power er den andel af tidsvinduet, ventilen holdes åben — fra 0 til 1, ikke procent. Se `power` under [Kom i gang](/docs/api-kom-i-gang). Den bruges kun, når `enabled` er `true`.sensor_id skal pege på en sensor, der findes i samme bygning.Sender du både hvac_mode og manual_power, vinder hvac_mode — så resultatet ikke afhænger af rækkefølgen i JSON'en.
Andre felter på et rum — for eksempel komfortbåndet, nattilstand og gulvtype — hører til varmestyringen og kan ikke sættes via API'et. Sender du dem, får du 400.
curl -s -H "x-api-key: $SG_API_KEY" \
"https://api.smart-gulvvarme.dk/v1/buildings/does-not-exist"{
"error": {
"code": "not_found",
"message": "No such building: does-not-exist"
}
}Se Autentificering for alle fejlkoder.
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.
Sådan oversættes felterne til en climate-entitet.
Alle endpoints, felter og skemaer, genereret fra specen.