Alle Google Nest Thermostat-Modelle werden von der Smart Device Management API unterstützt. Diese Geräte geben den Gerätetyp THERMOSTAT zurück:
sdm.devices.types.THERMOSTAT
Eigenschaften
Referenz
Die folgenden Merkmale, Befehle oder Ereignisse sind mit dieser Gruppe verknüpft:
Merkmal | Beschreibung | Befehle |
---|---|---|
Konnektivität | Dieses Attribut gehört zu jedem Gerät mit Verbindungsinformationen. | |
Fan | Diese Eigenschaft gilt für alle Geräte, bei denen der Lüfter vom System gesteuert werden kann. | SetTimer |
Luftfeuchtigkeit | Dieses Attribut gehört zu jedem Gerät mit einem Sensor zur Messung der Luftfeuchtigkeit. | |
Info | Dieser Trait gehört zu jedem Gerät, auf dem gerätebezogene Informationen verfügbar sind. | |
Einstellungen | Diese Eigenschaft gehört zu jedem Gerät und enthält gerätebezogene Einstellungsinformationen. | |
Temperatur | Diese Eigenschaft gehört zu jedem Gerät mit einem Temperatursensor. | |
ThermostatEco | Diese Eigenschaft gehört zu den Gerätetypen von THERMOSTAT, die ECO-Modi unterstützen. | SetMode |
ThermostatHvac | Diese Eigenschaft gehört zu Gerätetypen vom Typ THERMOSTAT, die Details zur HLK-Anlage melden können. | |
ThermostatMode | Diese Eigenschaft gehört zu Gerätetypen vom Typ THERMOSTAT, die verschiedene Thermostatmodi unterstützen. | SetMode |
ThermostatTemperatureSetpoint | Diese Eigenschaft gehört zu Gerätetypen vom Typ THERMOSTAT, die die Einstellung der Zieltemperatur und des Temperaturbereichs unterstützen. | SetHeat SetCool SetRange |
JSON
Wenn ein Attribut in einer GET-Antwort nicht vorhanden ist, ist das Attribut oder die Funktion derzeit nicht für das Gerät verfügbar. Weitere Informationen findest du unter Gerätetypen.
{ "type" : "sdm.devices.types.THERMOSTAT", "traits" : { "sdm.devices.traits.Connectivity" : { "status" : "ONLINE" }, "sdm.devices.traits.Fan" : { "timerMode" : "ON", "timerTimeout" : "2019-05-10T03:22:54Z" }, "sdm.devices.traits.Humidity" : { "ambientHumidityPercent" : 35.0 }, "sdm.devices.traits.Info" : { "customName" : "My device" }, "sdm.devices.traits.Settings" : { "temperatureScale" : "CELSIUS" }, "sdm.devices.traits.Temperature" : { "ambientTemperatureCelsius" : 23.0 }, "sdm.devices.traits.ThermostatEco" : { "availableModes" : ["MANUAL_ECO", "OFF"], "mode" : "MANUAL_ECO", "heatCelsius" : 20.0, "coolCelsius" : 22.0 }, "sdm.devices.traits.ThermostatHvac" : { "status" : "HEATING" }, "sdm.devices.traits.ThermostatMode" : { "availableModes" : ["HEAT", "COOL", "HEATCOOL", "OFF"], "mode" : "COOL" }, "sdm.devices.traits.ThermostatTemperatureSetpoint" : { "heatCelsius" : 20.0, "coolCelsius" : 22.0 } } }
Temperatur und Luftfeuchtigkeit
Verwenden Sie den AttributTemperature , um die Umgebungstemperatur des Thermostats abzurufen. Die Umgebungstemperatur wird am Gerät gemessen.
Verwenden Sie das AttributLuftfeuchtigkeit , um die Luftfeuchtigkeit des Thermostats abzurufen. Die Umgebungsfeuchtigkeit wird am Gerät gemessen.
Temperaturskala
Der Google Nest Thermostat kann die Temperatur entweder in Grad Celsius oder Fahrenheit anzeigen, aber die Waage kann nicht über die SDM API eingestellt werden. Um die vom Nutzer derzeit festgelegte Temperaturskala zu ermitteln, verwenden Sie das AttributEinstellungen .
Modus ändern
Der Modus des Thermostats wird durch zwei verschiedene Eigenschaften verwaltet: ThermostatModus und ThermostatEco.
Standardmodi
Verwenden Sie den Befehl SetMode der Eigenschaft „ThermostatMode“, um den Thermostatmodus in „HEAT“, „COOL“ oder „HEATCOOL“ zu ändern.
Mit diesem Befehl können Sie auch den Modus des Thermostats auf „Aus“ stellen. Der Eco-Modus kann damit nicht aktiviert werden.So ändern Sie beispielsweise einen der Standardmodi des Thermostats:
Anfrage
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.ThermostatMode.SetMode
",
"params" : {
"mode" : "HEAT"
}
}
Antwort
{}
Eco-Modus
Wenn Sie den Eco-Modus aktivieren möchten, verwenden Sie den Befehl SetMode des Attributs „ThermostatEco“ und geben Sie „MANUAL_ECO“ als Modus an:
Anfrage
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.ThermostatEco.SetMode
",
"params" : {
"mode" : "MANUAL_ECO"
}
}
Antwort
{}
Dieser Befehl wirkt sich je nach aktuellem Status oder Änderungen am Eco-Modus auf andere Eigenschaften aus:
- Wenn der Eco-Modus deaktiviert ist, wird der Thermostatmodus standardmäßig auf den zuletzt aktiven Standardmodus (HEIZUNG, KÜHLUNG, HEIZUNG/KÜHLUNG oder AUS) zurückgesetzt.
- Wenn der Eco-Modus „MANUAL_ECO“ ist:
- Befehle für das Attribut ThermostatTemperatureSetpoint werden abgelehnt.
- Temperatursollwerte werden nicht vom Attribut ThermostatTemperatureSetpoint zurückgegeben.
Temperatursollwerte ändern
Temperatursollwerte können nur geändert werden, wenn sich der Thermostat im Modus „HEIZEN“, „KÜHLEN“ oder „HEIZEN/KÜHLEN“ befindet und die zulässigen Sollwerte dem aktuellen Modus des Thermostats entsprechen. Die Temperatursollwerte können nicht geändert werden, wenn der Modus deaktiviert ist oder der Eco-Modus auf „MANUAL_ECO“ eingestellt ist.
Der Thermostat muss sich im Modus befinden, der dem aufgerufenen Befehl entspricht, bevor die Temperatursollwerte geändert werden. Der Befehl und die Felder zum Ändern der Sollwerte variieren je nach Thermostatmodus.
Wenn Sie beispielsweise den Befehl „SetHeat“ ausführen möchten, muss sich der Thermostat zuerst im Heizmodus befinden:
Modus | Befehl | Feld(er) |
---|---|---|
HEIZUNG | SetHeat | heatCelsius |
KÜHLEN | SetCool | coolCelsius |
HEATCOOL | SetRange | heatCelsius , coolCelsius |
Beachte, dass die Sollwertbefehle als Parameter nur Grad in Celsius annehmen. Der Google Nest Thermostat kann die Temperatur aber entweder in Grad Celsius oder Fahrenheit anzeigen.
Wenn Sie beispielsweise den Temperatursollwert ändern möchten, wenn sich der Thermostat im Modus „HEIZEN“ befindet, verwenden Sie den Befehl SetHeat der Eigenschaft „ThermostatTemperatureSetpoint“:
Anfrage
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.ThermostatTemperatureSetpoint.SetHeat
",
"params" : {
"heatCelsius" : 22.0
}
}
Antwort
{}
Sollwerte im Eco-Modus
Die vom Attribut „ThermostatEco“ zurückgegebenen Sollwerte heatCelsius
und coolCelsius
werden vom Nutzer festgelegt und können nicht über die SDM API geändert werden.
Lüfter ein- oder ausschalten
Wenn der Thermostat einen Lüfter unterstützt, kannst du ihn mit dem Befehl SetTimer der Eigenschaft „Lüfter“ ein- oder ausschalten. Beim Einschalten kannst du die Dauer in Sekunden angeben, die der Lüfter laufen soll.
So legen Sie beispielsweise fest, dass der Lüfter eine Stunde lang laufen soll:
Anfrage
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.Fan.SetTimer
",
"params" : {
"timerMode" : "ON",
"duration" : "3600s"
}
}
Antwort
{}
Wenn das Feld duration
nicht angegeben wird, läuft der Lüfter standardmäßig 15 Minuten lang.
Geräteverbindung prüfen
Wenn das Gerät nicht auf Befehle reagiert oder Ereignisse sendet oder du Fehlermeldungen von der API im Zusammenhang mit dem Gerät erhältst, verwende das TraitKonnektivität , um die Verbindung des Geräts auf einen OFFLINE-Status zu prüfen. Prüfen Sie, ob das Gerät mit dem Internet verbunden ist und ob der Nest-Dienst aktiv ist.
Wenn Sie Ereignisse aktiviert haben, sollten Sie auch ein Ressourcenereignis erhalten haben, das angibt, dass das Gerät offline ist:
Nutzlast
{
"eventId" : "366dcbfb-2b0d-4c8c-9ad9-2ff7434f1dc7",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : {
"name" : "enterprises/project-id/devices/device-id",
"traits" : {
"sdm.devices.traits.Connectivity
" : {
"status" : "OFFLINE"
}
}
},
"userId": "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [
"enterprises/project-id/devices/device-id"
]
}
Auf Geräteereignisse reagieren
Jede Änderung an einem Merkmalsfeld generiert ein Ereignis.
Wenn sich der HLK-Status des Thermostats beispielsweise in „HEIZUNG“ ändert, erhalten Sie das folgende resourceUpdate
-Ereignis:
Nutzlast
{
"eventId" : "1e9d0340-7543-4a6f-b498-7c12a77f0b27",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : {
"name" : "enterprises/project-id/devices/device-id",
"traits" : {
"sdm.devices.traits.ThermostatHvac
" : {
"status" : "HEATING"
}
}
},
"userId": "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [
"enterprises/project-id/devices/device-id"
]
}
Ereignisse werden für alle Traits ausgelöst, die mit diesem Gerätetyp verknüpft sind. Aktivieren Sie Ereignisse, wenn Sie in einer Integration auf sie reagieren müssen.
Zeitangaben für Ereignisse
Beachten Sie, dass ein Ereignis für eine Änderung des HLK-Status möglicherweise nicht gleichzeitig mit Ereignissen für eine Änderung des Thermostatmodus gesendet wird.
Manchmal gibt es beispielsweise eine Verzögerung beim Starten des Heiz- oder Kühlmodus eines Thermostats, um das HLK-System zu schützen. In diesem Szenario werden beim Ändern des Thermostatmodus möglicherweise nur anfänglich Ereignisse für die Änderungen der Eigenschaften ThermostatMode und ThermostatTemperatureSetpoint gesendet. Die Änderung der Eigenschaft ThermostatHvac wird später als separates Ereignis gesendet, sobald das System tatsächlich eingeschaltet wird. Wenn das HLK-System ohne Verzögerung eingeschaltet wird, werden alle drei Ereignisse gleichzeitig gesendet.
Fehler
Für dieses Gerät können die folgenden Fehlercodes zurückgegeben werden:
Fehlermeldung | RPC | Fehlerbehebung |
---|---|---|
Der Kühlwert muss größer als der Heizwert sein. | INVALID_ARGUMENT |
Achten Sie darauf, dass das Feld heatCelsius in Ihrem Befehl kleiner ist als das Feld coolCelsius . |
Befehl ist im aktuellen Thermostatmodus nicht zulässig. | FAILED_PRECONDITION |
Laut der Eigenschaft Thermostatmodus kann bei einigen Thermostatmodellen der Eco-Modus nicht geändert werden, wenn der Thermostatmodus ausgeschaltet ist. Der Thermostatmodus muss auf „HEIZEN“, „KÜHLEN“ oder „HEIZEN/KÜHLEN“ gestellt sein, bevor der Eco-Modus geändert werden kann. |
Lüfter des Thermostats nicht verfügbar. | FAILED_PRECONDITION |
Der Thermostat hat keine Lüfterfunktion. Lüfterbezogene Traits und Befehle können für dieses Gerät nicht verwendet werden. |
Befehl nicht zulässig, wenn sich der Thermostat im MANUAL_ECO-Modus befindet. | FAILED_PRECONDITION |
Der Temperatursollwert kann nicht festgelegt werden, wenn sich der Thermostat im manuellen Eco-Modus befindet. |
Eine vollständige Liste der API-Fehlercodes findest du in der API-Fehlercode-Referenz.