Alle Google Nest Thermostat Modelle werden in der Smart Device Management (SDM) API unterstützt. Diese Geräte geben den Gerätetyp THERMOSTAT zurück:
sdm.devices.types.THERMOSTAT
Merkmale
Referenz
Die folgenden Merkmale, Befehle oder Ereignisse beziehen sich auf diese Gruppe:
| Merkmal | Beschreibung | Befehle |
|---|---|---|
| Konnektivität | Dieses Merkmal gehört zu allen Geräten, die Informationen zur Konnektivität haben. | |
| Lüfter | Dieses Merkmal gehört zu allen Geräten, die die Systemfunktion zur Steuerung des Lüfters haben. | SetTimer |
| Luftfeuchtigkeit | Dieses Merkmal gehört zu allen Geräten, die einen Sensor zur Messung der Luftfeuchtigkeit haben. | |
| Info | Dieses Merkmal gehört zu allen Geräten, die gerätebezogene Informationen haben. | |
| Einstellungen | Dieses Merkmal gehört zu allen Geräten, die Informationen zu gerätebezogenen Einstellungen haben. | |
| Temperatur | Dieses Merkmal gehört zu allen Geräten, die einen Sensor zur Messung der Temperatur haben. | |
| ThermostatEco | Dieses Merkmal gehört zu Gerätetypen von THERMOSTAT, die den Eco-Modus unterstützen. | SetMode |
| ThermostatHvac | Dieses Merkmal gehört zu Gerätetypen von THERMOSTAT, die HLK-Details melden können. | |
| ThermostatMode | Dieses Merkmal gehört zu Gerätetypen von THERMOSTAT, die verschiedene Thermostatmodi unterstützen. | SetMode |
| ThermostatTemperatureSetpoint | Dieses Merkmal gehört zu Gerätetypen von THERMOSTAT, die das Festlegen der Zieltemperatur und des Temperaturbereichs unterstützen. | SetHeat SetCool SetRange |
JSON
Wenn ein Merkmal in einer GET-Antwort fehlt, ist das Merkmal oder Funktion derzeit nicht für das Gerät verfügbar. Weitere Informationen finden Sie 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 das Merkmal Temperature, um die Umgebungstemperatur des Thermostats zu lesen. Die Umgebungstemperatur wird am Gerät gemessen.
Verwenden Sie das Merkmal Humidity, um die Umgebungsfeuchtigkeit des Thermostats zu lesen. Die Umgebungsfeuchtigkeit wird am Gerät gemessen.
Temperaturskala
Der Google Nest Thermostat kann die Temperatur in Grad Celsius oder Fahrenheit anzeigen, die Skala kann jedoch nicht über die SDM API festgelegt werden. Verwenden Sie das Merkmal Settings, um die vom Nutzer aktuell festgelegte Temperaturskala zu ermitteln.
Modus ändern
Der Modus des Thermostats wird über zwei verschiedene Merkmale verwaltet: ThermostatMode und ThermostatEco.
Standardmodi
Verwenden Sie den Befehl SetMode des Merkmals ThermostatMode, um den Thermostatmodus in HEIZUNG, KÜHLEN oder HEIZUNGKÜHLEN zu ändern.
Mit diesem Befehl kann der Thermostatmodus auch auf AUS gestellt werden. 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
Verwenden Sie MANUAL_ECO als Modus mit dem SetMode Befehl des Merkmals ThermostatEco, um den Eco-Modus zu aktivieren:
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 des Eco-Modus auf andere Merkmale aus:
- Wenn der Eco-Modus AUS ist, wird der Thermostatmodus standardmäßig auf den letzten aktiven Standardmodus (HEIZUNG, KÜHLEN, HEIZUNGKÜHLEN oder AUS) zurückgesetzt.
- Wenn der Eco-Modus MANUAL_ECO ist:
- Befehle für das MerkmalThermostatTemperatureSetpoint werden abgelehnt.
- Temperatursollwerte werden vom Merkmal ThermostatTemperatureSetpoint nicht zurückgegeben.
Temperatursollwerte ändern
Temperatursollwerte können nur geändert werden, wenn sich der Thermostat im Modus HEIZUNG, KÜHLEN oder HEIZUNGKÜHLEN befindet. Die zulässigen Sollwerte entsprechen dem aktuellen Modus des Thermostats. Temperatursollwerte können nicht geändert werden, wenn der Modus AUS ist oder wenn 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 können. Der Befehl und die Felder zum Ändern der Sollwerte variieren je nach Thermostat modus.
Wenn Sie beispielsweise den Befehl SetHeat ausgeben möchten, muss sich der Thermostat zuerst im Modus HEIZUNG befinden:
| Modus | Befehl | Feld(er) |
|---|---|---|
| HEIZUNG | SetHeat | heatCelsius |
| COOL | SetCool | coolCelsius |
| HEIZUNGKÜHLEN | SetRange | heatCelsius, coolCelsius |
Die Sollwertbefehle akzeptieren nur Grad Celsius als Parameter, obwohl der Google Nest Thermostat die Temperatur in Grad Celsius oder Fahrenheit anzeigen kann.
Wenn Sie beispielsweise den Temperatursollwert ändern möchten, wenn sich der Thermostat im Modus HEIZUNG befindet, verwenden Sie den SetHeat Befehl des Merkmals ThermostatTemperatureSetpoint:
Anfrage
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.ThermostatTemperatureSetpoint.SetHeat",
"params" : {
"heatCelsius" : 22.0
}
}
Antwort
{}
Sollwerte für den Eco-Modus
Die von 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, verwenden Sie den Befehl SetTimer des Merkmals Fan, um ihn ein- oder auszuschalten. Beim Einschalten können Sie die Laufzeit des Lüfters in Sekunden angeben.
So lassen Sie den Lüfter beispielsweise eine Stunde lang laufen:
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ätekonnektivität prüfen
Wenn das Gerät nicht auf Befehle reagiert oder keine Ereignisse sendet oder Sie Fehler von der API im Zusammenhang mit dem Gerät erhalten, verwenden Sie das Merkmal Connectivity, um die Konnektivität des Geräts auf den Status OFFLINE zu prüfen. Prüfen Sie die Internetverbindung des Geräts und stellen Sie sicher, dass 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" : "6ac04910-dab8-40c0-8d16-63645e9b801c",
"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 Merkmalfeld generiert ein Ereignis.
Sie erhalten beispielsweise das folgende resourceUpdate-Ereignis, wenn sich der HLK-Status des Thermostats in HEIZUNG geändert hat:
Nutzlast
{
"eventId" : "1dc5ae6d-7334-4a71-8bb1-3e50d452a322",
"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 Merkmale ausgelöst, die mit diesem Gerätetyp verknüpft sind. Aktivieren Sie Ereignisse, wenn Sie im Rahmen einer Integration auf sie reagieren müssen.
Zeitangaben für Ereignisse
Ein Ereignis für eine Änderung des HLK-Status wird möglicherweise nicht gleichzeitig mit Ereignissen für eine Änderung des Thermostatmodus ausgeliefert.
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 Fall werden beim Ändern des Thermostatmodus möglicherweise zuerst nur Ereignisse für ThermostatMode und ThermostatTemperatureSetpoint Merkmalsänderungen gesendet. Die Änderung des ThermostatHvac Merkmals wird später als separates Ereignis gesendet, sobald das System tatsächlich eingeschaltet wird. Wenn es keine Verzögerung beim Einschalten des HLK-Systems gab, werden alle drei Ereignisse gleichzeitig gesendet.
Fehler
Die folgenden Fehlercodes können im Zusammenhang mit diesem Gerät 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 als das Feld coolCelsius ist. |
| Befehl ist im aktuellen Thermostatmodus nicht zulässig. | FAILED_PRECONDITION |
Bei einigen Thermostatmodellen kann der Eco-Modus nicht geändert werden, wenn der Thermostatmodus gemäß dem MerkmalThermostatMode auf AUS gestellt ist. Der Thermostatmodus muss in HEIZUNG, KÜHLEN oder HEIZUNGKÜHLEN geändert werden, bevor der Eco-Modus geändert werden kann. |
| Thermostatlüfter nicht verfügbar. | FAILED_PRECONDITION |
Der Thermostat hat keine Lüfterfunktion. Lüfterbezogene Merkmale und Befehle können für dieses Gerät nicht verwendet werden. |
| Befehl ist nicht zulässig, wenn sich der Thermostat im Modus MANUAL_ECO 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 finden Sie in der API-Fehlercode-Referenz.