
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
Attribute
Referenz
Die folgenden Merkmale, Befehle oder Ereignisse sind mit dieser Gruppe verknüpft:
Attribut | Beschreibung | Befehle |
---|---|---|
Konnektivität | Dieses Merkmal gehört zu allen Geräten, die Konnektivitätsinformationen haben. | |
Lüfter | Dieses Merkmal gehört zu allen Geräten, die das System zur Steuerung des Lüfters haben. | SetTimer |
Luftfeuchtigkeit | Dieses Merkmal gehört zu allen Geräten, die über einen Sensor zur Messung der Luftfeuchtigkeit verfügen. | |
Info | Dieses Merkmal gehört zu jedem Gerät für gerätebezogene Informationen. | |
Einstellungen | Dieses Merkmal gehört zu jedem Gerät, das Informationen zu gerätebezogenen Einstellungen enthält. | |
Temperatur | Dieses Merkmal gehört zu allen Geräten, die über einen Sensor zur Messung der Temperatur verfügen. | |
ThermostatEco | Dieses Merkmal gehört zu Gerätetypen von THERMOSTAT, die ECO-Modi unterstützen. | SetMode |
ThermostatHvac | Dieses Attribut gehört zu Gerätetypen des Typs THERMOSTAT, die HLK-Details melden können. | |
ThermostatMode | Dieses Attribut gehört zu Gerätetypen des Typs THERMOSTAT, die verschiedene Thermostatmodi unterstützen. | SetMode |
ThermostatTemperatureSetpoint | Dieses Attribut 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, bedeutet das, dass das Merkmal oder die Funktion derzeit nicht für das Gerät verfügbar ist. 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
Verwende dasTemperature -Trait, um die Umgebungstemperatur des Thermostats zu lesen. Die Umgebungstemperatur wird am Gerät gemessen.
Verwende dasHumidity -Trait, 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. Verwende dasSettings -Trait, um die vom Nutzer aktuell festgelegte Temperaturskala zu ermitteln.
Modus ändern
Der Modus des Thermostats wird durch zwei verschiedene Merkmale verwaltet: ThermostatMode und ThermostatEco.
Standardmodi
Wenn Sie den Thermostatmodus auf HEAT, COOL oder HEATCOOL ändern möchten, verwenden Sie den Befehl SetMode des ThermostatMode-Traits.
Mit diesem Befehl kann auch der Modus des Thermostats auf AUS gestellt werden. Er kann nicht verwendet werden, um den Eco-Modus zu aktivieren.So ändern Sie beispielsweise einen der Standardthermostatmodi:
Anfrage
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.ThermostatMode.SetMode
",
"params" : {
"mode" : "HEAT"
}
}
Antwort
{}
Eco-Modus
Wenn du den Eco-Modus aktivieren möchtest, verwende MANUAL_ECO als Modus mit dem Befehl SetMode des ThermostatEco-Trait:
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 Öko-Modus auf andere Merkmale aus:
- Wenn der Eco-Modus deaktiviert ist, wird der Thermostatmodus standardmäßig auf den zuletzt aktiven Standardmodus (HEIZEN, KÜHLEN, HEIZEN/KÜHLEN oder AUS) zurückgesetzt.
- Wenn der Eco-Modus MANUAL_ECO ist:
- Befehle für das ThermostatTemperatureSetpoint -Trait werden abgelehnt.
- Sollwerte für die Temperatur werden nicht vom ThermostatTemperatureSetpoint -Trait zurückgegeben.
Temperatursollwerte ändern
Temperatursollwerte können nur geändert werden, wenn sich der Thermostat im Modus HEIZEN, KÜHLEN oder HEIZENKÜHLEN befindet. Die zulässigen Sollwerte entsprechen dem aktuellen Modus des Thermostats. Temperatursollwerte können nicht geändert werden, wenn der Modus OFF ist oder der Eco-Modus auf MANUAL_ECO eingestellt ist.
Der Thermostat muss sich in dem Modus befinden, der dem aufgerufenen Befehl entspricht, bevor die Temperatur-Sollwerte geändert werden. Der Befehl und die Felder zum Ändern der Sollwerte variieren je nach Thermostatmodus.
Wenn Sie beispielsweise den Befehl SetHeat ausgeben möchten, muss sich der Thermostat zuerst im HEIZMODUS befinden:
Modus | Befehl | Feld(er) |
---|---|---|
HEIZUNG | SetHeat | heatCelsius |
KÜHL | SetCool | coolCelsius |
HEATCOOL | 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 HEIZEN-Modus befindet, verwenden Sie den Befehl SetHeat des Traits „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 der ThermostatEco-Eigenschaft 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 des Fan-Traits ein- oder ausschalten. Beim Einschalten kannst du die Zeit in Sekunden angeben, die der Lüfter laufen soll.
Wenn der Lüfter beispielsweise eine Stunde lang laufen soll, sag:
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
fehlt, läuft der Lüfter standardmäßig 15 Minuten lang.
Geräteverbindung prüfen
Wenn das Gerät nicht auf Befehle reagiert oder keine Ereignisse sendet oder Sie API-Fehler im Zusammenhang mit dem Gerät erhalten, verwenden Sie dasConnectivity -Trait, um die Verbindung des Geräts auf den Status OFFLINE zu prüfen. Prüfe die Internetverbindung des Geräts und vergewissere dich, dass der Nest-Dienst verfügbar ist.
Wenn Sie Ereignisse aktiviert haben, sollten Sie auch ein Ressourcenereignis erhalten haben, das angibt, dass das Gerät offline gegangen ist:
Nutzlast
{
"eventId" : "c10c1ae5-2bf3-434b-a77f-42a2b94f689b",
"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 Attributfeld löst ein Ereignis aus.
Wenn sich der HLK-Status des Thermostats beispielsweise in HEATING geändert hat, erhalten Sie das folgende resourceUpdate
-Ereignis:
Nutzlast
{
"eventId" : "880ace18-f08a-4703-8d46-ddba8a7c9542",
"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 mit diesem Gerätetyp verknüpften Eigenschaften ausgelöst. Ereignisse aktivieren, wenn Sie im Rahmen einer Integration auf Ereignisse 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 gesendet.
Manchmal verzögert sich der Start des Heiz- oder Kühlmodus eines Thermostats, um die HLK-Anlage zu schützen. In diesem Fall werden beim Ändern des Thermostatmodus möglicherweise zuerst nur Ereignisse für ThermostatMode - und ThermostatTemperatureSetpoint -Trait-Änderungen gesendet. Die ThermostatHvac -Trait-Änderung wird später als separates Ereignis gesendet, sobald das System tatsächlich eingeschaltet wird. Wenn das HLK-System ohne Verzögerung eingeschaltet wurde, werden alle drei Ereignisse gleichzeitig gesendet.
Fehler
Die folgenden Fehlercodes können in Bezug auf dieses Gerät zurückgegeben werden:
Fehlermeldung | RPC | Fehlerbehebung |
---|---|---|
Der Wert für „Kühlen“ muss größer sein als der Wert für „Heizen“. | INVALID_ARGUMENT |
Achten Sie darauf, dass das Feld heatCelsius in Ihrem Befehl kleiner ist als das Feld coolCelsius . |
Der 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 ThermostatMode -Trait auf „Aus“ eingestellt ist. Der Thermostatmodus muss auf HEIZEN, KÜHLEN oder HEIZENKÜHLEN geändert werden, bevor der Eco-Modus geändert werden kann. |
Der Thermostatlüfter ist nicht verfügbar. | FAILED_PRECONDITION |
Der Thermostat hat keine Lüfterfunktion. Fanbezogene Attribute und Befehle können für dieses Gerät nicht verwendet werden. |
Befehl nicht zulässig, wenn sich der Thermostat im Modus MANUAL_ECO befindet. | FAILED_PRECONDITION |
Der Sollwert für die Temperatur kann nicht eingestellt werden, wenn sich der Thermostat im manuellen Eco-Modus befindet. |
Eine vollständige Liste der API-Fehlercodes finden Sie in der API-Fehlercode-Referenz.