Найти в Дзене
SAV LABS

Контроль аварий в умном доме Home Assistant. Часть 2

В продолжение предыдущей статьи, наконец-то дадим возможность хозяину отключить крики и сообщения от HA, причем двумя способами - нажатием на физическую кнопку и нажатием кнопки на дашборде. Почему решил сделать отдельной статьей про кнопки - вопрос вопросный. Покурив эти ваши интернеты, понял, что особо просто не будет... В-общем, начнем... Физическую кнопку я подключил давненько как и все предыдущие ZigBee-устройства типа датчиков (вроде упоминал ее в какой-то статье). Она имеет три положения сработки - разовое нажатие, двойное нажатие и удержание. Для отключения аварии решил использовать удержание - для одинарного и двойного нажатий другую функцию найду, да и случайно не отключишь. Но, как я понял у разных кнопок (разных производителей) могут быть разные команды на "выходе"... Проэкспериментировав с обработкой команд с примеров, понял, что нужно сделать тест именно для своей кнопки... В NodeRed создал тестовый поток, чтобы послушать что именно передается от кнопки... В поток добавля
Оглавление

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

Реальная (физическая) кнопка

Физическую кнопку я подключил давненько как и все предыдущие ZigBee-устройства типа датчиков (вроде упоминал ее в какой-то статье). Она имеет три положения сработки - разовое нажатие, двойное нажатие и удержание. Для отключения аварии решил использовать удержание - для одинарного и двойного нажатий другую функцию найду, да и случайно не отключишь. Но, как я понял у разных кнопок (разных производителей) могут быть разные команды на "выходе"... Проэкспериментировав с обработкой команд с примеров, понял, что нужно сделать тест именно для своей кнопки... В NodeRed создал тестовый поток, чтобы послушать что именно передается от кнопки... В поток добавляем ноды: "events: all" (получим все события HA) и "switch" (отфильтруем сообщения именно от нашей кнопки). Ну и ноды "debug", для того чтобы увидеть приходящие команды...

Важно

Фишка в том, что нужно знать id устройства (на последнем скриншоте выше вы можете его увидеть)... Фиг вы его найдете так просто... Заходим в Настройки -> Устройства, ищем свою кнопку и жмякаем по ней - id вы найдете в конце URL-ссылки!!!

-2

Латна, идем дальше... Смотрим, какие команды мы получаем при разных вариантах нажатия кнопки, для чего создал еще один тестовый поток... У кого-то "single", "double", "long" и т.п. У кого-то при одиночном нажатии выдается команда "toggle"... В-общем, ловим свои... Их можно найти в окне отладки... У меня это получились команды "remote_button_short_press" (одиночное нажатие), "remote_button_double_press" (двойное нажатие) и "remote_button_long_press" (удержание более трех секунд).

<<< Подборка статей на этом канале про Home Assistant >>>

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

Виртуальная кнопка

Теперь добавим на дашборд виртуальную кнопку, при нажатии которой тоже будут сбрасываться аварии. Переходим в "Настройки -> Интеграции" на закладку "Вспомогательное" и нажимаем кнопку "Создать вспомогательный объект". Выбираем объект "Кнопка", обзываем ее и выбираем подходящую иконку. Чтобы она у нас заработала в итоге, в configurations.yaml добавляем строчку input_button:

На закладке "Общее" на дашборде (в моем случае) входим в редактирование (карандаш в правом верхнем углу) и нажимаем кнопку "Добавить карточку", где выбираем "Button Card", так же как в статье про кнопку титана. Визуальный редактор у меня почему-то не поддерживается, поэтому код вписывал ручками. После сохранения кнопка появится на закладке.

Далее идем в NodeRed и в нашем потоке "Протечка в туалете" добавляем ноду "events: state" с обработкой нажатия кнопки. От кнопки не приходит сообщение типа "press" или "on"/"off", а приходит временная метка. Как таковое время нажатия нам не нужно, поэтому просто проверяем, что пришло "не пустое" сообщение и отправляем все на ноду остановки цикла в потоке "Протечка в туалете".

Послесловие

Можно, канешна, все эти шаги повторить в других потоках протечки и задымления, но решил просто скопировать ноды из полученного потока, исправив лишь то, что касается датчиков, сообщений и т.п., так как они все отличаются только этим... Возможно потом вообще объединю все "протечки" в один поток, но это не точно... Есть еще мысля сделать один поток для обработки нажатий кнопок, чтобы не дублировать постоянно... Тоже подумаю и, если сделаю, расскажу в следующих статьях, поэтому

Ставьте лайки, оставляйте комментарии, страница в VK, подписывайтесь на канал, присоединяйтесь в Telegram чтобы ничего не пропустить!

Поддержите канал донатом

#умныйдом #календарь #HA #HomeAssistant #сделайсам #минипк #неттоп #nettop #HACS #nodered #node-red #nodered #dwainsdashboard #dwains #dashboard #планшет #ibeacon #bluetooth #ssl #защита #визуализация #3D #ping #мониторинг #звук #авария #контроль