Termostat

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:

CechaOpisPolecenia
PołączeniaTa cecha należy do każdego urządzenia, które ma informacje o połączeniu.
FanTa 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.
InformacjeTa cecha należy do dowolnego urządzenia i zawiera informacje o nim.
UstawieniaTa cecha należy do dowolnego 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.
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ą przekazywać informacje o 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ń 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:

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 heatCelsiuscoolCelsius 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:

Ładunek
{
  "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:

Ładunek
{
  "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 ThermostatModeThermostatTemperatureSetpoint , 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.