abbrechen
Suchergebnisse werden angezeigt für 
Anzeigen  nur  | Stattdessen suchen nach 
Meintest du: 


Raumthermostat II: Zeitbegrenzte manuelle Steuerung via REST API

ijonmichy
Apprentice Homie

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?)

1 AKZEPTIERTE LÖSUNG

SebastianHarder
Experte von Bosch Smart Home

Okay, sorry, ich habe wo ganz falsches geschaut.

Die Operation für den RoomClimateControl DeviceService lautet 

startCustomDuration

und 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" ]

Lead Android Developer @ Bosch Smart Home
Zuhause: SHC II mit 61 Geräten + 29 Hue, 38 Automationen, Pixel 8 Pro mit Android 16.1 Beta

☝️ gerne mitmachen! Info SHC Generation, Smartphone und Betriebssystem hilft häufig bei der Lösung von Problemen. Einfach im Profil bei "Persönliche Informationen" in der "Signatur" eintragen.

Lösung in ursprünglichem Beitrag anzeigen

10 ANTWORTEN 10

SebastianHarder
Experte von Bosch Smart Home

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.

Lead Android Developer @ Bosch Smart Home
Zuhause: SHC II mit 61 Geräten + 29 Hue, 38 Automationen, Pixel 8 Pro mit Android 16.1 Beta

☝️ gerne mitmachen! Info SHC Generation, Smartphone und Betriebssystem hilft häufig bei der Lösung von Problemen. Einfach im Profil bei "Persönliche Informationen" in der "Signatur" eintragen.

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.)

SebastianHarder
Experte von Bosch Smart Home

Guter Punkt! Ich glaube, nur die Dauer in Sekunden.

Lead Android Developer @ Bosch Smart Home
Zuhause: SHC II mit 61 Geräten + 29 Hue, 38 Automationen, Pixel 8 Pro mit Android 16.1 Beta

☝️ gerne mitmachen! Info SHC Generation, Smartphone und Betriebssystem hilft häufig bei der Lösung von Problemen. Einfach im Profil bei "Persönliche Informationen" in der "Signatur" eintragen.

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
}

SebastianHarder
Experte von Bosch Smart Home

Okay, sorry, ich habe wo ganz falsches geschaut.

Die Operation für den RoomClimateControl DeviceService lautet 

startCustomDuration

und 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" ]

Lead Android Developer @ Bosch Smart Home
Zuhause: SHC II mit 61 Geräten + 29 Hue, 38 Automationen, Pixel 8 Pro mit Android 16.1 Beta

☝️ gerne mitmachen! Info SHC Generation, Smartphone und Betriebssystem hilft häufig bei der Lösung von Problemen. Einfach im Profil bei "Persönliche Informationen" in der "Signatur" eintragen.

Perfekt! Das funktioniert. Vielen Dank 🙂

ijonmichy
Apprentice Homie

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
}

Stefan71242
Vice President of the Homies

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. 

{
        "@type": "DeviceServiceData",
        "id": "RoomClimateControl",
        "deviceId": "roomClimateControl_hz_11",
        "state": {
            "@type": "climateControlState",
            "operationMode": "AUTOMATIC",
            "setpointTemperature": 22.0,
            "ventilationMode": false,
            "low": false,
            "boostMode": false,
            "summerMode": false,
            "supportsBoostMode": false,
            "roomControlMode": "HEATING",
            "activeScheduleId": "b3a8492a-edf4-498c-966c-68f11debf223",
            "setPointTemperatureOffset": 0.0,
            "isSetPointTemperatureOffsetActive": false,
            "setPointTemperatureOffsetActiveValue": 0.0,

Aber wie frage ich den Schaltplan für diese ID ab?
Ich habe alle Services vom RoomClimateControl und auch dem zugehörigen Thermostat im Raum ausprobiert, leider ohne Erfolg.
SHC II mit 159 Komponenten, 18 Szenarien, 65 Automationen, 6 Zustände, Stromausfallwächter, Schlüsselschalter Alarm, Briefkasteneinwurferkennung, 3 fest verbaute Tablets für BSH als BHS-Zentralen, Freeware Windows-BSH-Software: https://www.smart-home-center.info

SebastianHarder
Experte von Bosch Smart Home

Probier's bitte mal mit GET /climate/schedule/roomClimateControl_hz_1/<scheduleId>

Lead Android Developer @ Bosch Smart Home
Zuhause: SHC II mit 61 Geräten + 29 Hue, 38 Automationen, Pixel 8 Pro mit Android 16.1 Beta

☝️ gerne mitmachen! Info SHC Generation, Smartphone und Betriebssystem hilft häufig bei der Lösung von Problemen. Einfach im Profil bei "Persönliche Informationen" in der "Signatur" eintragen.

Stefan71242
Vice President of the Homies

Hallo @sebastian, auf
{{shc_api}}/climate/schedule/roomClimateControl_hz_11/b3a8492a-edf4-498c-966c-68f11debf223

bekomme ich "nur" das zurück:

{
    "scheduleData": [],
    "hasFreeScheduleSlots": true
}

Die Räume stehen alle auf Automatisch mit jeweils einem Heizplan.

Hier kann ich scheinbar (statt der ScheduleID) alles anhängen
, was ich will, denn auch das bringt das mit 200 OK das gleiche Ergebnis:
GET /climate/schedule/roomClimateControl_hz_1/testwort
SHC II mit 159 Komponenten, 18 Szenarien, 65 Automationen, 6 Zustände, Stromausfallwächter, Schlüsselschalter Alarm, Briefkasteneinwurferkennung, 3 fest verbaute Tablets für BSH als BHS-Zentralen, Freeware Windows-BSH-Software: https://www.smart-home-center.info



Rechtswidrigen Inhalt melden