Термостат

Все модели термостатов Google Nest поддерживаются API управления интеллектуальными устройствами (SDM). Эти устройства возвращают тип устройства ТЕРМОСТАТ:

sdm.devices.types.THERMOSTAT

Черты

Ссылка

К этой группе относятся следующие черты, команды или события:

Черта Описание Команды
Связность Эта характеристика присуща любому устройству, имеющему информацию о подключении.
Вентилятор Эта характеристика присуща любому устройству, имеющему системную возможность управления вентилятором. УстановитьТаймер
Влажность Эта характеристика присуща любому устройству, имеющему датчик для измерения влажности.
Информация Эта черта присуща любому устройству для получения информации, связанной с устройством.
Настройки Эта характеристика относится к любому устройству и касается информации о настройках устройства.
Температура Эта характеристика присуща любому устройству, имеющему датчик для измерения температуры.
ТермостатЭко Данная характеристика свойственна типам устройств ТЕРМОСТАТ, поддерживающим ЭКО-режимы. Установить режим
ТермостатHVAC Эта характеристика относится к типу устройств ТЕРМОСТАТ, которые могут предоставлять данные о системах отопления, вентиляции и кондиционирования воздуха.
Режим термостата Эта характеристика свойственна типам устройств ТЕРМОСТАТ, которые поддерживают различные режимы термостата. Установить режим
Заданная температура термостата Эта характеристика относится к типу устройств ТЕРМОСТАТ, которые поддерживают установку целевой температуры и диапазона температур. 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
    }
  }
}

Температура и влажность

Чтобы прочитать температуру окружающей среды термостата, используйтеТемпература Характеристика. Температура окружающей среды измеряется на устройстве.

Чтобы прочитать показания влажности окружающей среды термостата, используйтеВлажность Характеристика. Влажность окружающей среды измеряется на устройстве.

Температурная шкала

Термостат Google Nest может отображать температуру как в градусах Цельсия, так и в градусах Фаренгейта, но шкалу нельзя настроить через API SDM. Чтобы определить текущую шкалу температуры, установленную пользователем, используйтеНастройки черта.

Изменить режим

Режим термостата управляется двумя различными характеристиками:Режим термостата иТермостатЭко.

Стандартные режимы

Чтобы изменить режим термостата на HEAT, COOL или HEATCOOL, используйте команду SetMode свойства ThermostatMode.

Эту команду также можно использовать для выключения термостата. Её нельзя использовать для включения режима Eco.

Например, чтобы изменить один из стандартных режимов термостата:

Запрос

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.ThermostatMode.SetMode",
  "params" : {
    "mode" : "HEAT"
  }
}

Ответ

{}

Эко-режим

Чтобы включить режим Eco, используйте MANUAL_ECO в качестве режима с командой SetMode свойства ThermostatEco:

Запрос

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.ThermostatEco.SetMode",
  "params" : {
    "mode" : "MANUAL_ECO"
  }
}

Ответ

{}

Эта команда влияет на другие характеристики в зависимости от текущего состояния или изменений в режиме Eco:

Измените заданные значения температуры

Уставки температуры можно изменять только в режимах HEAT, COOL или HEATCOOL, при этом допустимые уставки соответствуют текущему режиму термостата. Уставки температуры невозможно изменить, если термостат выключен или для режима Eco установлено значение MANUAL_ECO.

Перед изменением уставок температуры термостат должен находиться в режиме, соответствующем вызываемой команде. Команда и поле(я) для изменения уставок различаются в зависимости от режима термостата.

Например, чтобы выдать команду SetHeat, термостат сначала должен находиться в режиме HEAT:

Режим Команда Поле(я)
НАГРЕВАТЬ SetHeat heatCelsius
ПРОХЛАДНЫЙ SetCool coolCelsius
HEATCOOL SetRange heatCelsius , coolCelsius

Обратите внимание, что команды задания значений принимают в качестве параметра только градусы Цельсия, хотя термостат Google Nest может отображать температуру как в градусах Цельсия, так и в градусах Фаренгейта.

Например, чтобы изменить заданное значение температуры, когда термостат находится в режиме HEAT, используйте команду SetHeat свойства ThermostatTemperatureSetpoint:

Запрос

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.ThermostatTemperatureSetpoint.SetHeat",
  "params" : {
    "heatCelsius" : 22.0
  }
}

Ответ

{}

Уставки эко-режима

Уставки heatCelsius и coolCelsius , возвращаемые признаком ThermostatEco, устанавливаются пользователем и не могут быть изменены через API SDM.

Включить или выключить вентилятор

Если термостат поддерживает вентилятор, используйте команду SetTimer трейта Fan для его включения или выключения. При включении можно указать продолжительность работы вентилятора в секундах.

Например, чтобы вентилятор работал в течение часа:

Запрос

POST /enterprises/project-id/devices/device-id:executeCommand
{
  "command" : "sdm.devices.commands.Fan.SetTimer",
  "params" : {
    "timerMode" : "ON",
    "duration" : "3600s"
  }
}

Ответ

{}

Если поле duration не заполнено, вентилятор будет работать в течение времени по умолчанию — 15 минут.

Проверьте подключение устройства

Если устройство не отвечает на команды или не отправляет события, или вы получаете ошибки от API, связанного с устройством, используйтеСвязность Проверьте подключение устройства к Интернету и убедитесь, что сервис Nest доступен.

Если у вас включены события, вы также должны были получить событие ресурса, указывающее на то, что устройство перешло в автономный режим:

Полезная нагрузка

{
  "eventId" : "31a9759c-21a6-47d7-acbc-8e854f1000a7",
  "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 , если статус термостата HVAC изменился на HEATING:

Полезная нагрузка

{
  "eventId" : "20388ec2-1a03-4eba-b2fc-aa30616108be",
  "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"
  ]
}

События инициируются для всех характеристик, связанных с этим типом устройства. Включите события, если вам необходимо каким-либо образом на них отреагировать в рамках интеграции.

Хронометраж событий

Обратите внимание, что событие об изменении состояния системы отопления, вентиляции и кондиционирования воздуха может не быть доставлено одновременно с событиями об изменении режима термостата.

Например, иногда термостат задерживает запуск режима обогрева или охлаждения для защиты системы отопления, вентиляции и кондиционирования воздуха. В этом случае изменение режима работы термостата может изначально отправлять события только для Режим термостата и Заданная температура термостата изменения черт характера, с ТермостатHVAC Изменение характеристик отправляется позже как отдельное событие после фактического включения системы. Если бы не было задержки при включении системы отопления, вентиляции и кондиционирования воздуха, все три события были бы отправлены одновременно.

Ошибки

В отношении данного устройства могут быть возвращены следующие коды ошибок:

Сообщение об ошибке RPC Поиск неисправностей
Значение холода должно быть больше значения тепла. INVALID_ARGUMENT Убедитесь, что поле heatCelsius меньше поля coolCelsius в вашей команде.
Команда не разрешена в текущем режиме термостата. FAILED_PRECONDITION Некоторые модели термостатов не поддерживают изменение режима Eco, когда режим термостата выключен, согласно Режим термостата Перед изменением режима Eco необходимо изменить режим термостата на HEAT, COOL или HEATCOOL.
Вентилятор термостата недоступен. FAILED_PRECONDITION Термостат не поддерживает функцию вентилятора. Функции и команды, связанные с вентилятором, не могут быть использованы для этого устройства.
Команда не допускается, когда термостат находится в режиме MANUAL_ECO. FAILED_PRECONDITION Заданное значение температуры невозможно задать, если термостат находится в ручном режиме Eco.

Полный список кодов ошибок API см. в Справочнике кодов ошибок API.