Перейти к содержанию

Датчики

В УДЯ можно передавать цифровые и бинарные датчики, есть несколько способов сделать это:

Один датчик - одно устройство

При выборе поддерживаемых объектов в доменах sensor и binary_sensor в УДЯ будут созданы несколько независимых устройств:

Сборка несколько датчиков в одно устройство

В первом способе одно физическое устройство (датчик температуры/влажности) передавалась в УДЯ как несколько независимых устройств, и это в большинстве случаев неудобно.

Есть способ лучше! Мы можем объединить несколько независмых объектов в одно устройство через YAML конфигурацию.

В качестве примера возьмём этот же датчик температуры/влажности:

Он содержит несколько объектов, нам нужно выяснить их entity_id. В нашем примере это будут:

  • Температура: sensor.room_temperature
  • Влажность: sensor.room_humidity
  • Уровень заряда: sensor.room_meteo_battery_level

Так же для примера добавим ещё несколько датчиков из других физических устройств:

  • Уровень CO2: sensor.room_co2_level
  • Освещённость: sensor.room_illumination_lux

В Home Assistant нет объекта, на который мы могли бы добавить эти сенсоры. Поэтому в качестве объекта, из которого будут создано устройство в УДЯ, нужно выбрать любой существующий объект, возьмём для этих целей температуру (sensor.room_temperature).

configuration.yaml

yandex_smart_home:
  entity_config:
    sensor.room_temperature:
      name: Погода в комнате
      properties:
        - type: temperature
          entity: sensor.room_temperature
        - type: humidity
          entity: sensor.room_humidity
        - type: co2_level
          entity: sensor.room_co2_level
        - type: illumination
          entity: sensor.room_illumination_lux
        - type: battery_level
          entity: sensor.room_meteo_battery_level

Датчики, заданные в properties, обладают большим приоритетом над обнаруженными автоматически. По этой причине мы вручную добавили датчик temperature вверх списка. Если этого не сделать - он будет в конце (как автоматически обнаруженный для sensor.room_temperature).

Порядок датчиков в properties влияет на порядок отображения в УДЯ

В одном устройстве недопустимо использовать несколько датчиков с одним type

Значение type не всегда совпадает с device_class объекта. Возможные значения type: цифровые датчики, бинарные датчики

В объектах для передачи в УДЯ нужно выбрать только sensor.room_temperature.

Добавление датчиков к устройству

Некоторые устройства (термостат) уже содержат в своих атрибутах датчики, которые будет подхвачены автоматически. А некоторые, например, увлажнитель - наоборот, все датчики выносят в отдельные объекты.

В качестве примера используем увлажнитель Xiaomi, он состоит из объектов:

  • Непосредственно увлажнитель: humidifier.air_humidifier
  • Температура: sensor.air_humidifier_temperature
  • Влажность: sensor.air_humidifier_humidity
  • Уровень воды: sensor.air_humidifier_water_level

И дополнительно добавим к нему:

  • Потребляемый ток: switch.humidifer_socket, значение в атрибуте current_consumption

configuration.yaml

yandex_smart_home:
  entity_config:
    humidifier.air_humidifier:
      properties:
        - type: water_level
          entity: sensor.air_humidifier_water_level
        - type: temperature
          entity: sensor.air_humidifier_temperature
        - type: humidity
          entity: sensor.air_humidifier_humidity
        - type: power
          entity: switch.humidifer_socket
          attribute: current_consumption

Порядок датчиков в properties влияет на порядок отображения в УДЯ

В одном устройстве недопустимо использовать несколько датчиков с одним type

Значение type не всегда совпадает с device_class объекта. Возможные значения type: цифровые датчики, бинарные датчики

В объектах для передачи в УДЯ нужно выбрать только humidifier.air_humidifier.

Параметры датчиков

Раздел properties в entity_config является списком датчиков. Каждый датчик имеет один или несколько параметров:

Параметр Значение по умолчанию Описание
type Нет Тип датчика. Возможные значения: цифровые датчики, бинарные датчики (кроме button)
entity Объект, для которого
задаются properties
ID объекта, в котором содержится значение датчика (для цифровых - число, для бинарных - on/off)
attribute Нет Атрибут, в котором содержится значение датчика. Заполняется только если значение хранится не в состоянии объекта
unit_of_measurement Из атрибута объекта unit_of_measurement Единица измерения, в которой в HA находятся значения датчика (для конвертации значений)

Конвертация значений

Компонент автоматически конвертирует значения сенсоров из одних единиц измерения в другие на основании атрибута/параметра unit_of_measurement.

Атрибут содержит единицу измерения, в которой находится значение датчика в Home Assistant.

Если у объекта атрибут отсутствует (или неверный), его можно задать через параметр unit_of_measurement в properties.

Возможные значения unit_of_measurement смотрите в списке поддерживаемых датчиков

Пример

 yandex_smart_home:
   entity_config:
     humidifier.bedroom:
       properties:
         - type: tvoc
           attribute: total_volatile_organic_compounds
           unit_of_measurement: ppb  # для автоматической конвертации из миллиардных долей в мкг/м³

Выбор класса бинарного датчика

Некоторые интеграции создают бинарные датчики с пустым или неверным атрибутом device_class. Такие датчики автоматически обнаружены не будут.

Вы можете самостоятельно задать атрибут device_class через параметр объекта Отображать как в НастройкиУстройства и объектыОбъекты

Особенности бинарных датчиков в УДЯ

В УДЯ не передаётся текущее состояние бинарного датчика, а передаются только события/изменения его состояния.

Из этого следует несколько особенностей:

  1. Для отображения "статуса" в УДЯ датчик должен поменять своё состояние в Home Assistant (например открыть дверь или нажать кнопку)
  2. Алиса не будет произносить в каком состоянии сейчас находится датчик

Перезагрузка Home Assistant приводит к отображению "прочерков" у бинарных датчиков в списке устройств в приложении Дом с Алисой. Это известная проблема на стороне УДЯ.