Фирма Xiaomi сделала устройства умного дома доступными широким массам пользователей. Большой выбор различных датчиков, гуманные цены, стабильная работа, приятный дизайн и простота настройки позволяют закупать их датчики десятками. Конечно в этих условиях появляется логичное желание не пропустить момент, когда будет пора менять батарейки.
Кто-то выстраивает длинные портянки со списком устройств и уровнем их заряда в интерфейсе Home Assistant.
Кто-то тратит вечера, чтоб разобраться как настроить различные готовые решения.
Кто-то придумывает автоматизации на YAML.
Я с недавних пор пишу все свои автоматизации на Node-RED. И предлагаю угадать эту мелодию с четырёх нод (с).
Получаем все устройства из Home Assistant, у которых есть атрибут battery_level и его значение меньше 15.
Именно так хранится уровень заряда устройств Xioami, добавленых через компонент Xiaomi Gateway.
Значение заряда подбирайте как вам удобнее.
'Садится батарея: ' & $join(payload.attributes.friendly_name, ', ')
Датчики с несколькими показаниями (например температура и влажность) попадут в итоговое сообщение несколько раз, потому что Home Assistant считает их разными устройствами.
Последняя версия языка JSONata поддерживает функцию $distinct, которая отлично бы справилась с этой проблемой. Но мой Node-RED эту функцию не знает.
И теперь отправляем полученное сообщение в Telegram.
Название сервиса у вас может отличаться в засимости от ваших настроек компонента.
очень полезные статьи в связке ХА с НР. спасибо за труды 👍👍👍 хотелось бы продолжения именно в этой связке, а то по нодреду в основном с деконзом примеры. а теперь вопрос: при срабатывании этой автоматизации, то есть пришло сообщение в телеграм что батарея разрядилась, как понять какой именно девайс послал это сообщение?
Так в телеграм прийдёт сообщение: "Садится батарея: Балкон, Балкон, Машина, Машина"
Если имена у датчиков проставлены нормально. Их можно заполнить нажав на датчик, а затем на шестерёнку в интерфейсе HA.
все датчики в ХА прописаны. сообщение приходит без названия датчика. что я делаю не так?
Точно включен режим шаблона JSONata, где задаётся текст "садится батарея..."?
Добавьте перед этой нодой - debug, посмотреть что ХА в атрибутах возвращает.
ага. точно. не был включен
JSONata. поправил. всё получилось. спасибо огромное 👍👍👍
а куда необходимо вставить $distinct, чтоб не дублировались?
А ваш Node-RED эту функцию поддерживает? Сюда, если поддерживает:
Хочу сделать сообщение в телеграмм о утечке воды. Сообщение с датчиков "binary_sensor.water_leak_sensor_*" у меня получаются ("on"), а вот как послать свое сообщение, где будет friendly_name конкретного датчика, не понимаю. Может есть пример, как это сделать?
Идея отличная, но у меня эти датчики работают через Zigbee2MQTT (координатор), и соответственно battery это отдельный датчик, а не атрибут. Интересно, возможно ли такое же лаконичное решение в
Node-RED?