Все модели термостатов Google Nest поддерживаются в Smart Device Management (SDM) API. Устройства, которые возвращают тип THERMOSTAT:
sdm.devices.types.THERMOSTAT
Функции
Справочные материалы
С этой группой связаны следующие характеристики, команды и события:
| Трейт | Описание | Команды |
|---|---|---|
| Подключение | Эта функция есть у любого устройства, которое может подключаться к сети. | |
| Фан | Этот признак относится к любому устройству, которое может управлять вентилятором. | SetTimer |
| Влажность | Эта характеристика относится к любому устройству с датчиком влажности. | |
| Информация | Этот признак относится к любому устройству, если речь идет об информации, связанной с устройством. | |
| Настройки | Этот признак относится к любому устройству, для которого можно задать настройки. | |
| Температура | Эта функция есть у любого устройства с датчиком температуры. | |
| ThermostatEco | Этот признак относится к устройствам типа THERMOSTAT, которые поддерживают экорежимы. | SetMode |
| ThermostatHvac | Этот трейт относится к термостатам, которые могут сообщать информацию о системе климат-контроля. | |
| ThermostatMode | Этот параметр относится к устройствам типа THERMOSTAT, которые поддерживают разные режимы работы термостата. | SetMode |
| ThermostatTemperatureSetpoint | Этот параметр относится к устройствам типа THERMOSTAT, которые поддерживают установку целевой температуры и диапазона температур. | SetHeat SetCool SetRange |
JSON
Если в ответе GET нет какого-либо признака, это означает, что признак или функция в настоящее время недоступны для устройства. Подробнее о типах устройств…
{
"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
}
}
}Температура и влажность
Чтобы получить данные о температуре в помещении, используйте функциюTemperature . Температура окружающей среды измеряется на устройстве.
Чтобы получить данные о влажности воздуха, используйте функциюHumidity . Влажность воздуха измеряется на устройстве.
Температурная шкала
Google Nest Thermostat может показывать температуру в градусах Цельсия или Фаренгейта, но шкалу нельзя задать с помощью SDM API. Чтобы определить, какая шкала температуры выбрана пользователем, используйте свойствоSettings .
Как изменить режим
Режим термостата управляется двумя разными характеристиками:ThermostatMode иThermostatEco.
Стандартные режимы
Чтобы изменить режим термостата на HEAT, COOL или HEATCOOL, используйте команду SetMode из черты ThermostatMode.
Эту команду также можно использовать, чтобы перевести термостат в режим OFF (Выключено). Она не позволяет включить экорежим.Например, чтобы изменить один из стандартных режимов термостата:
Запрос
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.ThermostatMode.SetMode",
"params" : {
"mode" : "HEAT"
}
}
Ответ
{}
Экорежим
Чтобы включить экорежим, используйте MANUAL_ECO в качестве режима с командой SetMode из черты ThermostatEco:
Запрос
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.ThermostatEco.SetMode",
"params" : {
"mode" : "MANUAL_ECO"
}
}
Ответ
{}
Эта команда влияет на другие характеристики в зависимости от текущего статуса или изменений режима экономии энергии:
- Если экорежим отключен, термостат перейдет в последний активный стандартный режим (обогрев, охлаждение, обогрев/охлаждение или выключено).
- Если для параметра Eco mode задано значение MANUAL_ECO:
- Команды для ThermostatTemperatureSetpoint отклоняются.
- Значения целевой температуры не возвращаются с помощью свойства ThermostatTemperatureSetpoint .
Изменять нужную температуру.
Заданные температуры можно менять, только когда термостат находится в режиме обогрева, охлаждения или обогрева/охлаждения. Допустимые значения зависят от текущего режима. Уставки температуры нельзя изменить, если режим выключен или если экорежим задан как MANUAL_ECO.
Перед тем как менять заданные значения температуры, термостат должен быть в режиме, соответствующем вызываемой команде. Команда и поля для изменения заданных значений зависят от режима термостата.
Например, чтобы выполнить команду SetHeat, термостат должен быть в режиме обогрева:
| Режим | Команда | Поля |
|---|---|---|
| ОТОПЛЕНИЕ | SetHeat | heatCelsius |
| COOL | SetCool | coolCelsius |
| HEATCOOL | SetRange | heatCelsius, coolCelsius |
Обратите внимание, что в качестве параметра для команд задания температуры можно использовать только градусы Цельсия, хотя термостат Google Nest может показывать температуру в градусах Цельсия или Фаренгейта.
Например, чтобы изменить нужную температуру, когда термостат находится в режиме обогрева, используйте команду SetHeat из трейта ThermostatTemperatureSetpoint:
Запрос
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.ThermostatTemperatureSetpoint.SetHeat",
"params" : {
"heatCelsius" : 22.0
}
}
Ответ
{}
Уставки экорежима
Значения heatCelsius и coolCelsius, возвращаемые признаком ThermostatEco, задаются пользователем и не могут быть изменены через SDM API.
включать и выключать вентилятор;
Если термостат поддерживает вентилятор, используйте команду SetTimer из черты "Вентилятор", чтобы включить или выключить его. При включении можно указать время работы вентилятора в секундах.
Например, чтобы включить вентилятор на час, выполните следующие действия:
Запрос
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.Fan.SetTimer",
"params" : {
"timerMode" : "ON",
"duration" : "3600s"
}
}
Ответ
{}
Если поле duration не указано, вентилятор будет работать 15 минут.
Проверьте подключение устройства
Если устройство не реагирует на команды или не отправляет события, а также если вы получаете от API ошибки, связанные с устройством, используйте признакConnectivity , чтобы проверить подключение устройства и убедиться, что оно не находится в статусе OFFLINE. Проверьте подключение устройства к интернету и убедитесь, что сервис Nest работает.
Если у вас включены события, вы также должны были получить событие ресурса, указывающее, что устройство перешло в офлайн-режим:
Полезная нагрузка
{
"eventId" : "40c9e741-591d-475e-b8b9-81c783c96cc8",
"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"
]
}реагировать на события на устройстве;
Любое изменение поля признака приводит к созданию события.
Например, вы получите следующее событие resourceUpdate, если статус климат-контроля термостата изменится на HEATING (Обогрев):
Полезная нагрузка
{
"eventId" : "94599ca7-1774-41e1-aa53-604a04c99058",
"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"
]
}События активируются для всех характеристик, связанных с этим типом устройства. Включите события, если вам нужно реагировать на них в рамках интеграции.
Время событий
Обратите внимание, что событие изменения статуса системы отопления, вентиляции и кондиционирования воздуха может быть доставлено не одновременно с событиями изменения режима термостата.
Например, иногда режим обогрева или охлаждения термостата включается с задержкой, чтобы защитить систему отопления, вентиляции и кондиционирования воздуха. В этом случае при изменении режима термостата сначала могут отправляться события только для изменений признаков ThermostatMode и ThermostatTemperatureSetpoint , а изменение признака ThermostatHvac будет отправлено позже как отдельное событие, когда система будет включена. Если бы не было задержки при включении системы климат-контроля, все три события были бы отправлены одновременно.
Ошибки
В отношении этого устройства могут быть возвращены следующие коды ошибок:
| Сообщение об ошибке | Доход от клика | Устранение неполадок |
|---|---|---|
| Значение параметра "Охлаждение" должно быть больше значения параметра "Нагрев". | INVALID_ARGUMENT |
Убедитесь, что значение поля heatCelsius меньше значения поля coolCelsius в вашей команде. |
| Команда не разрешена в текущем режиме термостата. | FAILED_PRECONDITION |
Некоторые модели термостатов не поддерживают изменение экорежима, когда термостат выключен, согласно ThermostatMode . Чтобы изменить экорежим, сначала нужно переключить термостат в режим обогрева, охлаждения или обогрева/охлаждения. |
| Вентилятор термостата недоступен. | FAILED_PRECONDITION |
У термостата нет функции вентилятора. Для этого устройства нельзя использовать черты и команды, связанные с вентилятором. |
| Команда недоступна, когда термостат находится в режиме MANUAL_ECO. | FAILED_PRECONDITION |
Если термостат работает в экономичном режиме, задать целевую температуру нельзя. |
Полный список кодов ошибок API приведен в Справочнике по кодам ошибок API.