Termostat

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:

CechyOpisPolecenia
PołączeniaTa cecha należy do każdego urządzenia, które ma informacje o łączności.
FanTa 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.
InformacjeTa cecha należy do każdego urządzenia, które przekazuje informacje o urządzeniu.
UstawieniaTa cecha należy do każdego urządzenia, które zawiera informacje o ustawieniach urządzenia.
TemperaturaTa cecha należy do każdego urządzenia, które ma czujnik do pomiaru temperatury.
ThermostatEcoTa cecha należy do typów urządzeń THERMOSTAT, które obsługują tryby ECO.SetMode
ThermostatHvacTa cecha należy do typów urządzeń THERMOSTAT, które mogą zgłaszać szczegóły dotyczące HVAC.
ThermostatModeTa cecha należy do typów urządzeń THERMOSTAT, które obsługują różne tryby termostatu.SetMode
ThermostatTemperatureSetpointTa 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:

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 heatCelsiuscoolCelsius 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 ThermostatModeThermostatTemperatureSetpoint , 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.