vor einer Woche
Hallo zusammen!
Über die Bosch Smart Home App, ist es möglich, den Sollwert an einem Raumthermostat (II) für eine begrenzte Zeit manuell zu setzen (Über den "Stoppuhr"-Button). Der automatische Zeitplan wird dann für einen begrenzten Zeitraum überschrieben. Nach Ablauf der eingestellten Zeit wechselt der Thermostat wieder zurück auf "Automatisch".
Meine Frage ist nun: Kann man dieses Verhalten auch mit der REST API erwirken?
Zumindest wenn ich den Status (der RoomClimateControl) auslese, sehe ich, dass das eingestellt ist, z.B.:
'customDuration': {
'customDurationActive': True,
'customDurationActiveSince': '2026-01-25T12:09:04.052673Z'
}, 'nextChange': {
'nextSetpointTemperature': 16.0,
'nextOperationMode': 'AUTOMATIC',
'nextSetPointTemperatureChange': '2026-01-25T13:10:00Z'
}
Daher vermute ich, dass das Verhalten von dem SHC verwaltet wird (und nicht von der App). Aber ich habe keine Dokumentation gefunden, wie ich das über die REST API setzen kann.
Oder steuert das doch die App? (Und ich muss die Logik in meinem Projekt selbst programmieren?)
Sonntag
Okay, sorry, ich habe wo ganz falsches geschaut.
Die Operation für den RoomClimateControl DeviceService lautet
startCustomDurationund muss um zwei Parameter im Body als Array ergänzt werden:
1. die Temperatur, z. B. "21.5"
2. der Zeitpunkt, bis wann die Temperatur gelten soll, z. B. "2027-12-03T10:15:30+01:00"
Ich hoffe, so klappt es.
POST /devices/<roomClimateControlId>/services/RoomClimateControl/operation/startCustomDuration
Body:
[ 22.5, "2027-12-03T10:15:30+01:00" ]
vor einer Woche
Hallo @ijonmichy,
ja, das geht über die REST-API.
Probiers mal mit einem POST-Request auf /devices/<roomClimateControlId>/services/PowerSwitchProgram/operation/turnOnTemporarily.
Viele Grüße
Sebastian
P.S. deine Vermutung war richtig. Es wäre zu unzuverlässig, der App das automatische Ausschalten zu überlassen. Es gibt ja keine Garantie, dass diese zum richtigen Zeitpunkt eine Verbindung zum SHC herstellen kann.
vor einer Woche
Super! Danke für die schnelle Antwort.
Kannst du mir auch sagen, wie das json strukturiert ist, das ich im body senden muss? (Hab die Struktur von climateControlState ausprobiert. Aber ich weiß nicht, wie ich die Zeit definiere, bei der wieder auf Automatik geschaltet werden soll.)
vor einer Woche
Guter Punkt! Ich glaube, nur die Dauer in Sekunden.
Sonntag
Also nur die Dauer in Sekunden? Und die Temperatur? (Oder setze ich erst die Temperatur und steuere dann den PowerSwitchProgram-Endpunkt an?)
Wenn ich nur einen Zahlenwert übergebe, bekomme ich jedenfalls Fehler 422
{
"@type":"JsonRestExceptionResponseEntity",
"errorCode":"JSON_MAPPING_FAILED",
"statusCode":422
}
Sonntag
Okay, sorry, ich habe wo ganz falsches geschaut.
Die Operation für den RoomClimateControl DeviceService lautet
startCustomDurationund muss um zwei Parameter im Body als Array ergänzt werden:
1. die Temperatur, z. B. "21.5"
2. der Zeitpunkt, bis wann die Temperatur gelten soll, z. B. "2027-12-03T10:15:30+01:00"
Ich hoffe, so klappt es.
POST /devices/<roomClimateControlId>/services/RoomClimateControl/operation/startCustomDuration
Body:
[ 22.5, "2027-12-03T10:15:30+01:00" ]
Sonntag
Perfekt! Das funktioniert. Vielen Dank 🙂
vor einer Woche
Also nur die Dauer in Sekunden? Und die Temperatur? (Oder setze ich erst die Temperatur und steuere dann den PowerSwitchProgram-Endpunkt an?)
Wenn ich nur einen Zahlenwert übergebe, bekomme ich jedenfalls Fehler 422
{
"@type":"JsonRestExceptionResponseEntity",
"errorCode":"JSON_MAPPING_FAILED",
"statusCode":422
}
gestern - zuletzt bearbeitet gestern
Wie frage ich per REST-API die Schaltzeiten von einem RoomClimateControl Service ab? Bei z.B. einem Zwischenstecker klappt das mit
$"devices/{{device_id}}/services/PowerSwitchProgram"
Bei einem RoomClimateControl bekomme ich die Schedule-ID z.B.
gestern
Probier's bitte mal mit GET /climate/schedule/roomClimateControl_hz_1/<scheduleId>
gestern - zuletzt bearbeitet gestern
Hallo @sebastian, auf
{{shc_api}}/climate/schedule/roomClimateControl_hz_11/b3a8492a-edf4-498c-966c-68f11debf223
bekomme ich "nur" das zurück: