Термостат

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

sdm.devices.types.THERMOSTAT

Черты

Ссылка

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

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

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

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

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

Чтобы изменить режим термостата на 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"
  }
}

Ответ

{}

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

  • Если экономичный режим ВЫКЛ, режим термостата по умолчанию будет соответствовать последнему стандартному режиму (НАГРЕВ, ОХЛАЖДЕНИЕ, НАГРЕВ ОХЛАЖДЕНИЕ или ВЫКЛ), который был активен.
  • Если экономичный режим MANUAL_ECO:

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

Уставки температуры можно изменить только тогда, когда термостат находится в режимах НАГРЕВ, ОХЛАЖДЕНИЕ или НАГРЕВ ОХЛАЖДЕНИЕ, а разрешенные уставки соответствуют текущему режиму термостата. Заданные значения температуры невозможно изменить, если режим ВЫКЛ или когда для экономичного режима установлено значение MANUAL_ECO.

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

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

Режим Команда Поле(а)
НАГРЕВАТЬ SetHeat heatCelsius
ПРОХЛАДНЫЙ УстановитьCool coolCelsius
ОХЛАЖДЕНИЕ 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, задаются пользователем и не могут быть изменены через SDM API.

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

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

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

Запрос

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

Ответ

{}

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

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

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

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

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

{
  "eventId" : "366dcbfb-2b0d-4c8c-9ad9-2ff7434f1dc7",
  "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" : "1e9d0340-7543-4a6f-b498-7c12a77f0b27",
  "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 не может доставляться одновременно с событиями изменения режима термостата.

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

Ошибки

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

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

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