binary sensor что это

Делаем систему контроля и управления доступом (СКУД) для умного дома

Введение

Как это работает: на входной двери размещён датчик открытия, который по протоколу Zigbee сообщает серверу умного дома, что кто-то зашёл в квартиру. Срабатывает сигнализация в «тихом режиме» (событие «triggered» во встроенной интеграции; это никак не проявляется, но идёт обратный отсчёт до запуска сирены). Если за указанное в настройках время не снять блокировку (через ввод кода или NFC-меткой), запустится сирена и световая индикация.

Из чего собрано:

ESP32 WROOM DevKit v1 (в теории можно заменить любой ESP, изменив конфиг под неё)

RFID/NFC модуль PN532

Соединительные провода (6 штук)

Напечатанный на 3D-принтере корпус

Xiaomi Gateway 2 (который с локальным управлением) я планирую использовать как динамик и световую индикацию

Датчик открытия двери от Aqara

Опционально можно добавить люстру, LED-ленты, умные колонки и любые другие устройства на ваш вкус, цвет и возможности автоматизаций Home Assistant.

ESP32 WROOM DevKit v1 (30 контактов) RFID/NFC модуль PN532. Китайцы скопировали версию от Elechouse.

Корпус мне напечатал друг, у которого есть 3D-принтер. Хаб и датчики от Xiaomi вынесем за скобки. Остальные элементы покупались на Aliexpress и суммарно обошлись мне в 600 рублей.

Подключение и настройка ESP

Включенный режим I2C и подключенные соединительные провода

Распиновка для 30-контактной ESP-32

Подключаем модуль следующим образом (слева ESP, справа PN532):

PN532 подключенная к ESP-32

На следующем этапе нам нужно установить аддон ESPHome и настроить нашу ESP-32. Подробно расписывать базовые моменты не буду, рекомендую следовать данному видео:

Остановлюсь лишь на итоговом конфиге:

Обратите внимание на блоки spi и pn532_spi, где мы указывает контакты подключения. В блоке switch я задействовал светодиод на плате (им можно мигать, например, при поднесении валидной метки), а в блоке binary_sensor создал сущность для Home Assistant (при поднесении карты с указанным uid сенсор переходит в статус true; uid карты можно найти в логах вашей ESP в аддоне ESPHome). Как показали опыты, можно читать RFID-метки, банковские карты и тройку. NFC в моём телефоне нет, но скорее всего и он будет работать.

Компилируем прошивку и выгружаем её на ESP. Проверяем, что всё работает, открыв логи и поднеся к считывателю RFID-метку. Её uid должен отобразиться в логе:

Со стороны ESP всё готово, теперь нужно настроить автоматизации в Home Assistan

Подключение сигнализации в Home Assistant

Код для разблокировки я вынес в отдельный файл secrets.yaml. Почитать, как он устроен, можно тут.

Поскольку мы тестируем нашу СКУД, arming_time (время до включения режима охраны, за которое вы успеете выйти из квартиры и закрыть дверь) и delay_time (время после срабатывания датчика двери, через которое запустится сирена) зададим как 5 и 10 секунд соответственно. Сохраняем, перезагружаем Home Assistant.

Далее создаём карточку сигнализации в Lovelace, добавив код в нужное вам место ui-lovelace.yaml

В entity указываем название объекта, который создался после подключения alarm_control_panel. В states можно указать, какие кнопки будут в карточке: я оставил только «Охрана (не дома)».

Автоматизация

Чтобы связать NFC-метки с нашим умным домом, потребуется создать 5 автоматизаций:

Срабатывание сигнализации (запускается, когда мы заходим в квартиру)

Включение режима охраны (прикладываем метку и уходим из дома)

Отключение режима охраны (прикладываем метку, когда пришли домой)

Срабатывание сигнализации

В качестве триггера используется датчик открытия двери. Когда дверь открывается при условии, что включен режим охраны, запускается наша автоматизация. В блоке с действиями я задал мигание шлюзом Xiaomi и диодом на ESP-32. Вы можете использовать любые другие действия.

Включение режима охраны

Отключение режима охраны

В этой автоматизации в качестве триггера снова используется RFID-метка. Условием является включенный или включающийся режим охраны. Последний предусмотрен на случай, если собрались уходить из дома, приложили карточку и вспомнили про включенный утюг. При валидной метке коротко включается диод на ESP и зелёная подсветка на шлюзе.

Читайте также:  fuyunohanashi что за аниме

Включение сирены

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

Отключение сирены

От «отключения режима охраны» отличается лишь условием по статусу alarm_control_panel.ha_alarm (здесь triggered) и отключением сирены или другой индикации.

Красивая обёртка

Наверное, очевидно, что две платы без какого-либо корпуса выглядят не очень красиво и безопасно. Я попросил другая спроектировать и напечатать под них корпус. Цвет выбрали белый, чтобы подходил под будущий интерьер. Уже после печати я понял, что белый корпус не гасит свет диодов на ESP, поэтому их можно использовать в автоматизациях. Даже синий диод в условиях коридора должен быть виден.

Основа, на которую ложатся платы, и прищепка (слева) для того, чтобы закрепить PN532 К ESP подключается кабель питания, поэтому она не должна болтаться внутри корпуса.

Ух, наконец-то закончил. Спасибо, что дочитали до конца. Надеюсь, что этот гайд помог вам!

Если возникнут какие-то вопросы, задавайте в комментариях. Постараюсь ответить.

Источник

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

Пример 1

Пример 2

Кнопку удобно вывести на панель lovelace для быстрого доступа.

Пример 3

В примере 2 есть недостаток в действии 4, при окончании обнаружения движения до окончания таймера отключение освещения произойдет раньше, чем ожидается, т.к. состояния устройств будут соответствовать условиям. Решить проблему перекрестных таймеров можно создав свой таймер, по которому будет происходить отключение освещения. В файле configuration.yaml описываем таймер, время отключения 180 секунд:

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

Действие 2. При отключении выключателя автоматики если был запущен таймер отключения, то он отменяется.

Действие 4. При отключении освещения с выключателя если был запущен таймер отключения, то он отменяется.

Действие 5. При обнаружении движения включается освещение, если выключатель автоматики on и освещение на данный момент выключено.

Действие 6. При обнаружении движения происходит отмена таймера отключения при его активном текущем состоянии.

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

Пакеты

После перезагрузки Home Assistant дополнительные компоненты и автоматизации будут доступны в системе.

Источник

Template Binary Sensor

To enable Template Binary Sensors in your installation, add the following to your configuration.yaml file:

Configuration Variables

( map ) (Required) List of your sensors.

( string ) (Optional) Name to use in the frontend.

( string | list ) (Optional) Add a list of entity IDs so the sensor only reacts to state changes of these entities. This will reduce the number of times the sensor will try to update its state.

( device_class ) (Optional) The type/class of the sensor to set the icon in the frontend.

Default value: None

( template ) (Required) Defines a template to set the state of the sensor.

Considerations

If you are using the state of a platform that takes extra time to load, the Template Binary Sensor may get an unknown state during startup. This results in error messages in your log file until that platform has completed loading. If you use is_state() function in your template, you can avoid this situation. For example, you would replace < < states.switch.source.state == 'on' >> with this equivalent that returns true / false and never gives an unknown result: < < is_state('switch.source', 'on') >>

Читайте также:  при какой температуре хранятся консервы рыбные

Examples

In this section you find some real life examples of how to use this sensor.

Sensor Threshold

This example indicates true if a sensor is above a given threshold. Assuming a sensor of furnace that provides a current reading for the fan motor, we can determine if the furnace is running by checking that it is over some threshold:

Switch as Sensor

Some movement sensors and door/window sensors will appear as a switch. By using a Template Binary Sensor, the switch can be displayed as a binary sensors. The original switch can then be hidden by customizing.

Combining Multiple Sensors, and Using entity_id

This example combines multiple CO sensors into a single overall status. When using templates with binary sensors, you need to return true or false explicitly. entity_id is used to limit which sensors are being monitored to update the state, making computing this sensor far more efficient.

Washing Machine Running

Is Anyone Home?

This example is determining if anyone is home based on the combination of device tracking and motion sensors. It’s extremely useful if you have kids/baby sitter/grand parents who might still be in your house that aren’t represented by a trackable device in home assistant. This is providing a composite of WiFi based device tracking and Z-Wave multisensor presence sensors.

Источник

Добавляем сенсоры устройств онлайн, строим новые автоматизации

Мы настроили умный дом, обзавелись массой устройств, но некоторые из них требуют особого внимания.

Добавляем: Редактируем configuration.yaml

Пинговать будем устройства, которые находятся в нашей wifi сети. Нужно указать ip-адрес устройства, присвоить имя, указать интервал сканирования в секундах. Перезагружаем НА, переходим в инструменты разработчика, находим в объектах новый сенсор OnePlus

Редактируем customize.yaml, добавляем иконки для устройств. Масса иконок доступна здесь. После создания новых сенсоров, добавляем на Dashboard, получаем список

Теперь мы видим какие устройства сейчас онлайн

Для наглядности (по желанию) использования устройств я добавил в sensors.yaml платформу history_stats

После этого появляются дополнительные возможности для автоматизации.

Например: когда я поднимаюсь в квартиру, то телефон появляется в wifi сети, Gateway трезвонит, что пришел «папа», все меня встречают.

Или же можете получать уведомления, что iPad работает больше определенного времени. Здесь вступает в бой ваша фантазия.

Источник

Home Assistant: немного о шаблонах

Тема шаблонов (Templates) в HA всегда вызывает много вопросов, причем порой и у пользователей системы со стажем. Здесь я хочу собрать некоторое кол-во примеров с комментариями, которые помогут лучше понять принцип работы и синтаксис темплейтов.

Для погружения в тему, начать стоит как всегда с изучения официальной документации, а так же руководства на шаблонизатор Jinja2, именно его под капотом использует HA.
Шаблоны можно применять во множестве мест, начиная от объектов (например, создав собственный sensor или switch) и заканчивая скриптами, автоматизациями и интерфейсом lovelace. С их помощью можно получать необходимые данные из объектов (сущностей) — стейты и атрибуты, при необходимости модифицировать их, а так же реализовывать всевозможную логику (переменные, циклы, проверки и т.д.). Это по-настоящему мощный инструмент, открывающий массу возможностей.

Один из главных инструментов для работы с шаблонами находится в разделе «Панель разработчика» — «Шаблоны» (/developer-tools/template), здесь можно в он-лайн режиме проверить корректность составленного шаблона и оценить его результат. Не забывайте про него, это сохранит множество времени и нервов при отладке сложных конструкций, а так же поможет лучше понять как все это работает.

Коротко про синтаксис

Обратите внимание на оформление, в шаблонах могут использоваться строки с разным обрамлением:

Читайте также:  с какими болезнями можно сдавать кровь

По умолчанию, каждая строка шаблона на выходе будет оканчиваться символом новой строки «\n».
Причем даже те строки, которые ничего не выводят (например, объявление переменной — <% set a = 123 %>).
Об этом необходимо помнить и учитывать при составлении темплейта.
К примеру, если шаблон используется для вывода чего-либо на экран, можно потратить уйму времени в борьбе с лишними пустыми строками на выходе.
Для управления этим поведением в jinja2 существует специальный механизм:

Помимо этого, стоит уделить время ресурсу yaml-multiline.info, на котором можно наглядно разобраться с вопросом форматирования и переноса строк в YAML’е (символы |, > и т.д.), это бывает полезно при форматировании многострочных шаблонов.

Отдельно стоит упомянуть о том, какие операторы можно использовать в шаблонах.
Полную информацию об этом стоит искать в документации на jinja, а вкратце это:

Помимо этого, в выражениях можно использовать фильтры jinja и HA, передавая значения в них через символ «|».
Пример: ((states(‘sensor.0x158d0003230618_pressure’) | float) / 1.333) | round(2)

Важные моменты в документации, на которые стоит обратить особое внимание:

Примеры

Сенсоры и их атрибуты

С помощью шаблонов можно создавать как бинарные (on\off), так и обычные сенсоры:

В примерах выше используются простые выражения (Expressions) с использованием встроенных в HA функций is_state() и state_attr(). С полным перечнем функций и правилами их применения лучше всего ознакомится в документации.

Более интересный пример:

Здесь в качестве стейта (state) сенсора date_formatted будет выведен результат выражения
<< as_timestamp(states('sensor.date_time_iso')) | timestamp_custom('%d.%m.%Y') >> и дополнительно, в виде атрибута — день недели, получаемый с помощью ряда операций.

В качестве значения сенсора можно использовать произвольный текст, в этом примере в зависимости от состояния датчика двери (геркона) в стейт будет записан текст «Открыта» или «Закрыта» (речь про дверь):

Более комплексный пример:

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

Или меняя иконку сенсора в зависимости от различных условий:

Switches

В выключателях так же есть возможность использовать шаблоны.
Например, можно создать выключатель телевизора с разными действиями на включение и выключение:

Скрипты и автоматизации

Самое широкое применение шаблоны встречают в скриптах и автоматизациях.

Скрипт для запуска уборки роботом-пылесосом конкретной комнаты (в интерфейсе input_select.room_to_vacuum это выпадающий список с комнатами):

Автоматизация, меняющая мощность работы робота-пылесоса:

Оповещение о произошедшей ошибке.
С помощью шаблона можно получить текст ошибки из атрибута error:

Автоматизация меняющая яркость лампы по двойному клику на кнопку (по кругу):

Плавное включение света в заданное в интерфейсе HA время (будильник):

Постепенное увеличение громкости:

Изменение громкости у выбранного из выпадающего списка источника:

Отправка оповещений о приходе или уходе из дома:

В примере выше сообщение будет выглядеть примерно так — «Александр скорее всего вне дома.»
Шаблон соберется в одну строку, т.к. перед ним указан символ «>», означающий замену символов новой строки на пробелы.

Еще одно оповещение, на этот раз о температуре в комнате (холодно или жарко):

Команда для телеграм-бота, возвращающая имена находящихся дома:

Здесь, в отличии от предыдущего примера, перед шаблоном указан символ «|», означающий сохранение всех переносов строк в шаблоне. Лишняя пустая строка из вывода убрана с помощью конструкции «<%-«.

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

Здесь, в зависимости от стейта сенсора weather.gismeteo (sunny, rainy, snowy и т.д.) отправляется картинка соответствующая текущей погоде (картинки подготовлены заранее).

Я постарался собрать здесь как можно более разнообразные примеры использования шаблонов в HA, но т.к. эта тема невероятно обширная, получилось это у меня слабо… =)
В будущем я надеюсь дополнить заметку другими интересными (с разных точек зрения) примерами.

Источник

Сказочный портал