Термостат

Все модели термостатов 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:

Изменять нужную температуру.

Заданные температуры можно менять, только когда термостат находится в режиме обогрева, охлаждения или обогрева/охлаждения. Допустимые значения зависят от текущего режима. Уставки температуры нельзя изменить, если режим выключен или если экорежим задан как 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.