38. Бинарные сенсоры в Home Assistant.
В более ранних материалах уже упоминался такой вид объектов как бинарные (или двоичные) сенсоры. В этой статье познакомимся с ними поближе. Для начала важно уяснить три ключевых момента. Два из которых следуют из самого названия этого вида объектов.
В окне создания всё предельно ясно названо, и зная логику работы бинарника, всё создаётся в пару кликов.
Что где указывать?
Бинарный (или двоичный) - имеющий всего 2 возможных состояния, и имеющий возможность находиться только в одном из них в каждый момент времени.
Сенсор - устройство отображающее состояние любого другого объекта. Т.е. он ничего не включает и не выключает, ничем не может управлять или отображать какие-либо текстовые или цифровые данные (градусы, минуты, ватты и т.д.).
Это виртуальное устройство, а не физическое.
Проще говоря, это сущность, показывающая включено ли что-то сейчас или выключено.
Бинарные сенсоры могут быть очень хорошим инструментом для отображения статусов обычных "не умных" устройств.
Как и многие другие виды сущностей в Home Assistant, эти объекты можно создавать вручную, набросав некий код и сохранив его в файл конфигурации системы. После перезапуска новый сенсор будет готов к работе.
Однако, в связи с удобством работы с графическим интерфейсом, в ХА добавлена возможность создания таких сенсоров и без написания кода.
Далее рассмотрим оба варианта с их плюсами и минусами.
Для новичков немного теории перед практикой.
Допустим есть умная розетка, в которую подключен телевизор.
Как узнать что телевизор во включенном состоянии?
Розетки для умного дома лучше всего брать с энергомониторингом. Тогда можно будет "видеть" происходит ли потребление энергии на этой розетки или нет. Если телек выключен, то показания мощности будут на нуле. И соответственно если включен, примут какое-то значение выше нуля. НО!
Следует учитывать что каждое устройство работает по разному. Некоторые, даже в спящем режиме могут брать какой-то небольшой процент мощности. Поэтому рекомендуется предварительно изучить показания тех устройств, на основе которых будет создаваться новое виртуальное устройство.
В итоге создаётся новый сенсор, на основе показаний уже имеющегося. А именно - сенсора мощности умной розетки. Если мощность в розетке выше значения Х - сенсор включен, если ниже - выключен. Называем новый сенсор телевизором и вуаля - теперь система "знает" работает ли телек в данный момент или нет.
В итоге можно уже делать и виртуальные кнопки для управления устройствами и видеть их статус, и автоматизации основанные на статусах этих устройств и т.д.
Практика.
Не будем отходить от концепта "от простого к сложному", и начнём с создания бинарного сенсора в интерфейсе.
Заходим сюда -> . Или же: Настройки -> Устройства и службы -> Вспомогательное. Нажимаем на создание вспомогательного элемента и выбираем "Пороговое значение".
В окне создания всё предельно ясно названо, и зная логику работы бинарника, всё создаётся в пару кликов.
Что где указывать?
Для начала следует понять логику работы подобного бинарного сенсора. Он всегда в положении OFF, кроме тех случаев, которые совпадают с условиями в нём записанных.
Допустим необходимо чтобы бинарник принимал значение ON при показаниях нужного сенсора от 10 выше и OFF от 6 и ниже. Тогда указываем:
Верхний предел = 8
Гистерезис = 2
Допустим необходимо чтобы бинарник принимал значение ON при показаниях 3,5 и ниже, и OFF при 8,5 и выше:
Нижний предел = 6
Гистерезис = 2,5
Как рассчитать?
Используем верхний предел, если надо, чтобы бинарный сенсор был во включенном положении, когда значение исходного сенсора выше указанного в этой строке.
Используем нижний предел, если надо чтобы сенсор был во включенном положении, когда значение исходного сенсора ниже указанного в этой строке.
Предел это среднее арифметическое двух значений.
Гистерезис это положительная (без знака) между пределом и одним из значений.
Алгебра седьмой класс:
U = верхняя точка переключения.
L = более низкая точка переключения.
Предел = (L+U)/2
Гистерезис = U - предел (или предел - L).
Минусы данного способа:
- Нельзя (на данный момент) использовать любые другие исходные данные, кроме численных.
- Проблематично поделиться кодом данного сенсора, только если найти в системе файл сенсоров скопировать его оттуда. Однако всегда можно зайти в настройки созданного бинарника и скопировать значения оттуда.
Плюсы:
- Создание и редактирование в интерфейсе, а не в коде YAML.
Рассмотрим теперь пример с ручным созданием сенсора.
Для начала стоит помнить что самодельные бинарники создаются на платформе Template. Поэтому создавать новый сенсор следует по адресу, на который ссылается основной конфигурационный файл configuration.yaml.
Если брать тот же пример с телевизором, то код будет выглядеть примерно так:
- binary_sensor:
- name: "Телек"
state: >
{{ states('sensor.rozetka_telek_power')|float(0) > 10}}
При значении сенсора мощности в 10 ватт и выше, бинарник будет в состоянии ON.
Однако использование шаблонов позволяет создавать бинарники, основанные на статусе нескольких устройств. В том числе абсолютно разных сущностей.
Пример более сложного сенсора:
binary_sensor:
- platform: threshold
name: Your Name Here
entity_id: sensor.your_sensor_here
lower: 75
upper: 75
hysteresis: 5
Этот бинарник уже использует другую платформу, поэтому должен быть сохранён в файле домена бинарных сенсоров, а не домена Template.
Минусы данного способа:
- Знать и понимать код, или хотя бы не бояться его писать.
- Необходимость помнить в каком файле что записано. И следить за новостями в обновлениях, иногда меняют синтаксис и сущности перестают работать.
Плюсы:
- Максимальная гибкость при создании и редактировании.
Какой из двух способов использовать зависит конечно же от поставленной задачи и преследуемой цели.
Комментарии
Отправить комментарий