Датчики
В УДЯ можно передавать цифровые и бинарные датчики, есть несколько способов сделать это:
Один датчик - одно устройство¶
При выборе поддерживаемых объектов в доменах 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
смотрите в списке поддерживаемых датчиков
Пример
Выбор класса бинарного датчика¶
Некоторые интеграции создают бинарные датчики с пустым или неверным атрибутом device_class
. Такие датчики автоматически обнаружены не будут.
Вы можете самостоятельно задать атрибут device_class
через параметр объекта Отображать как
в Настройки
→ Устройства и объекты
→ Объекты
Особенности бинарных датчиков в УДЯ¶
В УДЯ не передаётся текущее состояние бинарного датчика, а передаются только события/изменения его состояния.
Из этого следует несколько особенностей:
- Для отображения "статуса" в УДЯ датчик должен поменять своё состояние в Home Assistant (например открыть дверь или нажать кнопку)
- Алиса не будет произносить в каком состоянии сейчас находится датчик
Перезагрузка Home Assistant приводит к отображению "прочерков" у бинарных датчиков в списке устройств в приложении Дом с Алисой. Это известная проблема на стороне УДЯ.