Wszystkie modele termostatów Google Nest są obsługiwane w interfejsie Smart Device Management (SDM) API. Te urządzenia zwracają typ urządzenia THERMOSTAT:
sdm.devices.types.THERMOSTAT
Cechy
Dokumentacja
Z tą grupą są powiązane te cechy, polecenia i zdarzenia:
| Cechy | Opis | Polecenia |
|---|---|---|
| Połączenia | Ta cecha należy do każdego urządzenia, które ma informacje o łączności. | |
| Fan | Ta cecha należy do każdego urządzenia, które ma możliwość sterowania wentylatorem. | SetTimer |
| Wilgotność | Ta cecha należy do każdego urządzenia, które ma czujnik do pomiaru wilgotności. | |
| Informacje | Ta cecha należy do każdego urządzenia, które przekazuje informacje o urządzeniu. | |
| Ustawienia | Ta cecha należy do każdego urządzenia, które zawiera informacje o ustawieniach urządzenia. | |
| Temperatura | Ta cecha należy do każdego urządzenia, które ma czujnik do pomiaru temperatury. | |
| ThermostatEco | Ta cecha należy do typów urządzeń THERMOSTAT, które obsługują tryby ECO. | SetMode |
| ThermostatHvac | Ta cecha należy do typów urządzeń THERMOSTAT, które mogą zgłaszać szczegóły dotyczące HVAC. | |
| ThermostatMode | Ta cecha należy do typów urządzeń THERMOSTAT, które obsługują różne tryby termostatu. | SetMode |
| ThermostatTemperatureSetpoint | Ta cecha należy do typów urządzeń THERMOSTAT, które obsługują ustawianie temperatury docelowej i zakresu temperatur. | SetHeat SetCool SetRange |
JSON
Brak cechy w odpowiedzi GET oznacza, że cecha lub funkcja jest obecnie niedostępna na urządzeniu. Więcej informacji znajdziesz w sekcji Typy urządzeń.
{
"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
}
}
}Temperatura i wilgotność
Aby odczytać temperaturę otoczenia termostatu, użyj cechy Temperature . Temperatura otoczenia jest mierzona na urządzeniu.
Aby odczytać wilgotność otoczenia termostatu, użyj cechy Humidity . Wilgotność otoczenia jest mierzona na urządzeniu.
Skala temperatury
Termostat Google Nest może wyświetlać temperaturę w stopniach Celsjusza lub Fahrenheita, ale skali nie można ustawić za pomocą interfejsu SDM API. Aby określić skalę temperatury ustawioną obecnie przez użytkownika, użyj cechySettings .
Zmiana trybu
Trybem termostatu zarządzają 2 różne cechy:ThermostatMode iThermostatEco.
Tryby standardowe
Aby zmienić tryb termostatu na HEAT, COOL lub HEATCOOL, użyj polecenia SetMode cechy ThermostatMode.
Tego polecenia można też użyć do wyłączenia termostatu. Nie można go użyć do włączenia trybu Eko.Aby na przykład zmienić jeden ze standardowych trybów termostatu:
Żądanie
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.ThermostatMode.SetMode",
"params" : {
"mode" : "HEAT"
}
}
Odpowiedź
{}
Tryb Eco
Aby włączyć tryb Eko, użyj wartości MANUAL_ECO jako trybu w poleceniu SetMode cechy ThermostatEco:
Żądanie
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.ThermostatEco.SetMode",
"params" : {
"mode" : "MANUAL_ECO"
}
}
Odpowiedź
{}
To polecenie wpływa na inne cechy w zależności od bieżącego stanu trybu Eco lub zmian w nim:
- Jeśli tryb Eko jest WYŁĄCZONY, termostat domyślnie przełączy się na ostatni aktywny tryb standardowy (OGRZEWANIE, CHŁODZENIE, OGRZEWANIE/CHŁODZENIE lub WYŁĄCZONY).
- Jeśli tryb eko to MANUAL_ECO:
- Polecenia dotyczące cechy ThermostatTemperatureSetpoint są odrzucane.
- Ustawienia temperatury nie są zwracane przez cechę ThermostatTemperatureSetpoint .
Zmienianie nastawy temperatury
Nastawę temperatury można zmienić tylko wtedy, gdy termostat jest w trybie OGRZEWANIE, CHŁODZENIE lub OGRZEWANIE/CHŁODZENIE, a dozwolone nastawy odpowiadają bieżącemu trybowi termostatu. Wartości zadane temperatury nie można zmienić, gdy tryb jest wyłączony lub gdy tryb ekonomiczny jest ustawiony na MANUAL_ECO.
Przed zmianą ustawień temperatury termostat musi być w trybie odpowiadającym wywoływanemu poleceniu. Polecenie i pola służące do zmiany nastawy zależą od trybu termostatu.
Na przykład, aby wydać polecenie SetHeat termostat musi być najpierw w trybie ogrzewania:
| Tryb | Polecenie | Pola |
|---|---|---|
| HEAT | SetHeat | heatCelsius |
| COOL | SetCool | coolCelsius |
| HEATCOOL | SetRange | heatCelsius, coolCelsius |
Pamiętaj, że polecenia punktu nastawy przyjmują jako parametr tylko stopnie Celsjusza, chociaż termostat Google Nest może wyświetlać temperaturę w stopniach Celsjusza lub Fahrenheita.
Aby na przykład zmienić ustawienie temperatury, gdy termostat jest w trybie GRZANIE, użyj polecenia SetHeat cechy ThermostatTemperatureSetpoint:
Żądanie
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.ThermostatTemperatureSetpoint.SetHeat",
"params" : {
"heatCelsius" : 22.0
}
}
Odpowiedź
{}
Wartości zadane trybu eko
Wartości zadane heatCelsius i coolCelsius zwracane przez cechę ThermostatEco są ustawiane przez użytkownika i nie można ich zmienić za pomocą interfejsu SDM API.
włączać i wyłączać wentylator,
Jeśli termostat obsługuje wentylator, użyj polecenia SetTimer cechy Fan, aby go włączyć lub wyłączyć. Podczas włączania możesz określić czas, przez jaki ma działać wentylator, w sekundach.
Aby na przykład włączyć wentylator na godzinę:
Żądanie
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.Fan.SetTimer",
"params" : {
"timerMode" : "ON",
"duration" : "3600s"
}
}
Odpowiedź
{}
Jeśli pole duration zostanie pominięte, wentylator będzie działać przez domyślny czas 15 minut.
Sprawdzanie połączenia urządzenia
Jeśli urządzenie nie odpowiada na polecenia lub nie wysyła zdarzeń albo otrzymujesz z interfejsu API błędy związane z urządzeniem, użyj cechyConnectivity , aby sprawdzić stan połączenia urządzenia i określić, czy jest ono OFFLINE. Sprawdź połączenie urządzenia z internetem i upewnij się, że usługa Nest działa.
Jeśli masz włączone zdarzenia, powinien do Ciebie dotrzeć e-mail ze zdarzeniem zasobu informujący o tym, że urządzenie jest offline:
Ładunek
{
"eventId" : "b3ed4021-d07f-4924-80f4-2121f18ae71d",
"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"
]
}Reagowanie na zdarzenia dotyczące urządzenia
Każda zmiana w polu atrybutu generuje zdarzenie.
Na przykład, jeśli stan HVAC termostatu zmieni się na HEATING, otrzymasz to zdarzenie:resourceUpdate
Ładunek
{
"eventId" : "53fb05e2-ae9e-4665-984f-0f62cfebda62",
"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"
]
}Zdarzenia są wywoływane dla wszystkich cech powiązanych z tym typem urządzenia. Włącz zdarzenia, jeśli w ramach integracji chcesz na nie reagować.
Czas zdarzeń
Pamiętaj, że zdarzenie zmiany stanu HVAC może nie zostać dostarczone w tym samym czasie co zdarzenia zmiany trybu termostatu.
Na przykład czasami opóźnia się włączenie trybu ogrzewania lub chłodzenia termostatu, aby chronić system HVAC. W takim przypadku zmiana trybu termostatu może początkowo wysyłać tylko zdarzenia dotyczące zmian cech ThermostatMode i ThermostatTemperatureSetpoint , a zmiana cechy ThermostatHvac będzie wysyłana później jako osobne zdarzenie, gdy system zostanie włączony. Jeśli nie było opóźnienia w łączeniu systemu ogrzewania/wentylacji/klimatyzacji, wszystkie 3 zdarzenia zostałyby wysłane w tym samym czasie.
Błędy
W związku z tym urządzeniem mogą być zwracane te kody błędów:
| Komunikat o błędzie | RPC | Rozwiązywanie problemów |
|---|---|---|
| Wartość chłodzenia musi być większa niż wartość ogrzewania. | INVALID_ARGUMENT |
Upewnij się, że pole heatCelsius jest mniejsze niż pole coolCelsius w Twoim poleceniu. |
| Polecenie niedozwolone w bieżącym trybie termostatu. | FAILED_PRECONDITION |
Niektóre modele termostatów nie obsługują zmiany trybu Eko, gdy termostat jest wyłączony, zgodnie z cechą ThermostatMode . Przed zmianą trybu Eko należy zmienić tryb termostatu na GRZANIE, CHŁODZENIE lub GRZANIE/CHŁODZENIE. |
| Wentylator termostatu jest niedostępny. | FAILED_PRECONDITION |
Termostat nie ma funkcji wentylatora. W przypadku tego urządzenia nie można używać cech i poleceń związanych z wentylatorem. |
| Polecenie jest niedozwolone, gdy termostat jest w trybie MANUAL_ECO. | FAILED_PRECONDITION |
Gdy termostat jest w ręcznym trybie eko, nie można ustawić temperatury docelowej. |
Pełną listę kodów błędów interfejsu API znajdziesz w dokumentacji kodów błędów interfejsu API.