Термостат

Все модели термостатов Google Nest поддерживаются в API управления интеллектуальными устройствами (SDM). Для следующих устройств возвращается тип устройства THERMOSTAT:

sdm.devices.types.THERMOSTAT

Черты

Ссылка

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

Черта Описание Команды
Подключение Эта характеристика присуща любому устройству, обладающему информацией о подключении.
Вентилятор Эта особенность присуща любому устройству, обладающему возможностью управления вентилятором. SetTimer
Влажность Эта особенность присуща любому устройству, оснащенному датчиком для измерения влажности.
Информация Эта характеристика присуща любому устройству, предоставляющему информацию, связанную с устройством.
Настройки Эта функция доступна для любого устройства и содержит информацию о настройках, связанных с устройством.
Температура Эта особенность присуща любому устройству, оснащенному датчиком для измерения температуры.
ТермостатЭко Эта особенность характерна для термостатов, поддерживающих режим ECO. SetMode
Термостат системы отопления, вентиляции и кондиционирования Эта характеристика присуща термостатам, способным передавать подробные сведения о системе отопления, вентиляции и кондиционирования воздуха (ОВК).
Режим термостата Эта особенность характерна для типов термостатов, поддерживающих различные режимы работы. SetMode
ТермостатУстановленная температура Эта функция характерна для термостатов, поддерживающих установку целевой температуры и температурного диапазона. 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. Чтобы определить шкалу температуры, установленную в данный момент пользователем, используйте...Настройки черта.

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

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

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

Чтобы изменить режим работы термостата на ОБОГРЕВ, ОХЛАЖДЕНИЕ или ОБОГРЕВ ОХЛАЖДЕНИЕ, используйте команду SetMode в трейте ThermostatMode.

Эта команда также может использоваться для выключения режима работы термостата. Она не может использоваться для включения экономичного режима.

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

Запрос

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 установлен в положение MANUAL_ECO.

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

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

Режим Командование Поле(а)
НАГРЕВАТЬ SetHeat heatCelsius
ПРОХЛАДНЫЙ SetCool coolCelsius
ТЕПЛОХОХЛАД 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, задаются пользователем и не могут быть изменены через 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, связанные с устройством, используйте...Подключение Функция проверки подключения устройства к интернету для определения статуса OFFLINE. Проверьте подключение устройства к интернету и убедитесь, что служба Nest запущена.

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

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

{
  "eventId" : "6ac04910-dab8-40c0-8d16-63645e9b801c",
  "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 :

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

{
  "eventId" : "1dc5ae6d-7334-4a71-8bb1-3e50d452a322",
  "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"
  ]
}

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

Хронология событий

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

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

Ошибки

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

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

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