
Interfejs API Smart Device Management (SDM) obsługuje wszystkie modele termostatów Google Nest. Te urządzenia zwracają typ urządzenia THERMOSTAT:
sdm.devices.types.THERMOSTAT
Cechy
Z tą grupą są powiązane te cechy, polecenia lub zdarzenia:
Cecha | Opis | Polecenia |
---|---|---|
Połączenia | Ta cecha należy do każdego urządzenia, które ma informacje o połączeniu. | |
Fan | Ta cecha należy do każdego urządzenia, które ma system umożliwiający sterowanie 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 dowolnego urządzenia i zawiera informacje o nim. | |
Ustawienia | Ta cecha należy do dowolnego urządzenia i 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ą przekazywać informacje o 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ń TERMOSTAT, które obsługują ustawianie docelowej temperatury i zakresu temperatury. | SetHeat SetCool SetRange |
Brak atrybutu w odpowiedzi GET oznacza, że atrybut lub funkcja są obecnie niedostępne 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, obróć urządzenie w układTemperatura . Temperatura otoczenia jest mierzona na urządzeniu.
Aby odczytać wilgotność otoczenia termostatu, użyj widokuWilgotność w orientacji poziomej. wilgotność otoczenia mierzona na urządzeniu;
Skala temperatury
Urządzenie Google Nest Thermostat może wyświetlać temperaturę w stopniach Celsjusza lub Fahrenheita, ale nie można ustawić skali za pomocą interfejsu SDM API. Aby określić skalę temperatury ustawioną przez użytkownika, użyj widokuUstawienia w orientacji poziomej.
Zmień tryb
Tryb termostatu jest zarządzany przez 2 różne cechy: ThermostatMode i ThermostatEco.
Tryby standardowe
Aby zmienić tryb termostatu na HEAT, COOL lub HEATCOOL, użyj polecenia SetMode atrybutu ThermostatMode.
Można go też użyć, aby wyłączyć tryb termostatu. Nie można go użyć do włączenia trybu Eco.Aby na przykład zmienić jeden ze standardowych trybów termostatu:
POST /enterprises/project-id /devices/device-id :executeCommand { "command" : "sdm.devices.commands.ThermostatMode.SetMode
", "params" : { "mode" : "HEAT" } }
{}
Tryb eko
Aby włączyć tryb eko, użyj MANUAL_ECO jako trybu w ramach polecenia SetMode atrybutu ThermostatEco:
POST /enterprises/project-id /devices/device-id :executeCommand { "command" : "sdm.devices.commands.ThermostatEco.SetMode
", "params" : { "mode" : "MANUAL_ECO" } }
{}
To polecenie wpływa na inne cechy w zależności od bieżącego stanu trybu Eco lub wprowadzonych zmian:
- Jeśli tryb Eco jest WYŁĄCZONY, tryb termostatu zostanie domyślnie ustawiony na ostatni tryb standardowy (Ogrzewanie, Chłodzenie, Ogrzewanie/Chłodzenie lub WYŁĄCZONY), który był aktywny.
- Jeśli tryb eko to MANUAL_ECO:
- Polecenia dotyczące ThermostatTemperatureSetpoint w trybie portretowym są odrzucane.
- Wartości progów temperatury nie są zwracane przez interfejs ThermostatTemperatureSetpoint w trybie poziomym.
Zmienianie ustawień temperatury
Ustawienia temperatury można zmieniać tylko wtedy, gdy termostat jest w trybie Ogrzewanie, Chłodzenie lub Ogrzewanie/Chłodzenie, a dozwolone ustawienia odpowiadają bieżącemu trybowi termostatu. Punktów ustawień temperatury nie można zmieniać, gdy tryb jest wyłączony lub gdy tryb Eco jest ustawiony na MANUAL_ECO.
Przed zmianą wartości punktu odniesienia temperatury termostat musi być w trybie odpowiadającym wywoływanemu poleceniu. Polecenie i pola do zmiany wartości punktu regulacji różnią się w zależności od trybu termostatu.
Na przykład, aby wydać polecenie SetHeat, termostat musi najpierw znajdować się w trybie ogrzewania:
Tryb | Polecenie | Pola |
---|---|---|
HEAT | SetHeat | heatCelsius |
CHŁODNE | SetCool | coolCelsius |
HEATCOOL | SetRange | heatCelsius , coolCelsius |
Pamiętaj, że polecenia dotyczące punktu odniesienia przyjmują jako parametr tylko stopnie Celsjusza, ale 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 HEAT, użyj polecenia SetHeat atrybutu ThermostatTemperatureSetpoint:
POST /enterprises/project-id /devices/device-id :executeCommand { "command" : "sdm.devices.commands.ThermostatTemperatureSetpoint.SetHeat
", "params" : { "heatCelsius" : 22.0 } }
{}
Punkty odniesienia trybu Eko
Wartości heatCelsius
i coolCelsius
zwracane przez atrybuty ThermostatEco są ustawiane przez użytkownika i nie można ich zmienić za pomocą interfejsu SDM API.
Włączanie i wyłączanie wentylatora
Jeśli termostat obsługuje wentylator, możesz go włączyć lub wyłączyć za pomocą polecenia SetTimer w atrybucie Fan. Podczas włączania możesz określić czas działania wentylatora w sekundach.
Aby na przykład włączyć wentylator na godzinę:
POST /enterprises/project-id /devices/device-id :executeCommand { "command" : "sdm.devices.commands.Fan.SetTimer
", "params" : { "timerMode" : "ON", "duration" : "3600s" } }
{}
Jeśli pole duration
zostanie pominięte, wentylator będzie działać przez domyślny czas, czyli 15 minut.
Sprawdzanie połączenia z urządzeniem
Jeśli urządzenie nie odpowiada na polecenia lub nie wysyła zdarzeń albo jeśli w interfejsie API pojawiają się błędy związane z tym urządzeniem, użyj atrybutuŁączność , aby sprawdzić, czy urządzenie jest offline. Sprawdź połączenie urządzenia z internetem i upewnij się, że usługa Nest działa prawidłowo.
Jeśli masz włączone zdarzenia, powinno do Ciebie dotrzeć zdarzenie związane z zasobem, które wskazuje, że urządzenie jest offline:
{ "eventId" : "7bfa9f08-b07a-4839-bf2f-3c64b2b40660", "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 " ] }
reagować na zdarzenia dotyczące urządzenia,
Każda zmiana w polu cechy powoduje wygenerowanie zdarzenia.
Jeśli stan klimatyzacji w termostacie zmieni się na HEATING (Ogrzewanie), otrzymasz na przykład takie zdarzenie resourceUpdate
:
{ "eventId" : "bb46ea3e-e674-4d45-a5da-1eb163bc2b3e", "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 chcesz w jakiś sposób na nie reagować w ramach integracji.
Czas zdarzeń
Pamiętaj, że zdarzenie zmiany stanu klimatyzacji może nie być przesyłane w tym samym czasie co zdarzenia zmiany trybu termostatu.
Czasami występuje na przykład opóźnienie w uruchomieniu trybu ogrzewania lub chłodzenia termostatu, aby chronić system HVAC. W tym scenariuszu zmiana trybu termostatu może początkowo wysłać tylko zdarzenia ThermostatMode i ThermostatTemperatureSetpoint , a zmiana atrybutu ThermostatHvac zostanie wysłana później jako osobne zdarzenie, gdy system się włączy. Jeśli nie było opóźnienia w włączaniu systemu HVAC, wszystkie 3 zdarzenia zostałyby wysłane w tym samym czasie.
Błędy
W związku z tym urządzeniem mogą zostać zwrócone 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 poleceniu. |
Polecenie niedozwolone w bieżącym trybie termostatu. | FAILED_PRECONDITION |
Niektóre modele termostatów nie obsługują zmiany trybu Eco, gdy tryb termostatu jest wyłączony, zgodnie z ThermostatMode w układach pionowych. Przed zmianą trybu Eco termostat musi zostać przełączony na tryb GRZEJ, CHŁODZ lub GRZEJ/CHŁODZ. |
Wentylator termostatu niedostępny. | FAILED_PRECONDITION |
Termostat nie ma możliwości sterowania wentylatorem. W przypadku tego urządzenia nie można używać funkcji i komend związanych z fanami. |
Polecenie niedozwolone, gdy termostat jest w trybie MANUAL_ECO. | FAILED_PRECONDITION |
Gdy termostat jest w ręcznym trybie eko, nie można ustawić punktu regulacji temperatury. |
Pełną listę kodów błędów interfejsu API znajdziesz w przewodniku po kodach błędów interfejsu API.