Termostat

Wszystkie modele Google Nest Thermostat 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łączeniaTen stan należy do każdego urządzenia, które ma informacje o łączności.
FanTa cecha dotyczy każdego urządzenia, które ma możliwość sterowania wentylatorem.SetTimer
WilgotnośćTa cecha dotyczy każdego urządzenia, które ma czujnik do pomiaru wilgotności.
InformacjeTen atrybut należy do każdego urządzenia i zawiera informacje dotyczące urządzenia.
UstawieniaTen atrybut należy do każdego urządzenia i zawiera informacje o ustawieniach urządzenia.
TemperaturaTa cecha należy do każdego urządzenia, które ma czujnik do pomiaru temperatury.
ThermostatEcoTen atrybut należy do typów urządzeń THERMOSTAT, które obsługują tryby ECO.SetMode
ThermostatHvacTen atrybut należy do typów urządzeń THERMOSTAT, które mogą zgłaszać szczegóły HVAC.
ThermostatModeTen atrybut należy do typów urządzeń THERMOSTAT, które obsługują różne tryby termostatu.SetMode
ThermostatTemperatureSetpointTen atrybut 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 nie jest obecnie dostę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 cechyTemperature . Temperatura otoczenia jest mierzona na urządzeniu.

Aby odczytać wilgotność otoczenia termostatu, użyj cechyHumidity . 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

Tryb termostatu jest zarządzany przez 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 trybu MANUAL_ECO z poleceniem 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. Nie można zmieniać wartości zadanych temperatury, 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.

Aby na przykład wydać polecenie SetHeat , termostat musi najpierw być 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 Wentylator, 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ć łączność 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, powinno do Ciebie dotrzeć zdarzenie zasobu informujące, że urządzenie jest offline:

Ładunek

{
  "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"
  ]
}

Reagowanie na zdarzenia dotyczące urządzenia

Każda zmiana w polu cechy generuje zdarzenie. Jeśli na przykład stan HVAC termostatu zmieni się na HEATING, otrzymasz to zdarzenie resourceUpdate:

Ładunek

{
  "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"
  ]
}

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 włączenie trybu ogrzewania lub chłodzenia termostatu jest opóźnione, aby chronić system ogrzewania, wentylacji i klimatyzacji. W takiej sytuacji 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 przypadku tego urządzenia 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 jest 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 atrybutem 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.