У меня десятки Zigbee-датчиков (движения, открытия, влажности), и я устал гадать, когда какая батарейка сядет. Решил автоматизировать проверку: раз в день скрипт смотрит в базу данных и сообщает, если заряд ниже 20%. Можно конечно их в отдельную базу данных и выводить в панели управления iot системы. Но я задолбался ее делать теперь буду максимально просто делать, все равно велосипед не создам лучше чем Homeassistent, только время потрачу ) мне проще по емаилу получить данные про устройства. Кстати если вы используете HA то там просто подписываетесь на топик battery и получаете данные с оповещением. Но я вроде как свою тему делаю )
mqtt_to_mysql.py) подписывается на zigbee2mqtt/# и сохраняет данные в MariaDB.sensor_data с полями: topic, value, timestamp.door_sensor) шлют JSON вида:
{"battery":100,"contact":false,"linkquality":255,...}
zigbee2mqtt/door_sensor/battery.Выполнили в MariaDB:
SELECT topic, value FROM sensor_data WHERE topic LIKE '%door_sensor%';
Увидели строки:
zigbee2mqtt/door_sensor → {"battery":100,...}
zigbee2mqtt/door_sensor/battery → 100
Значит, можно читать значение напрямую из топика .../battery — без парсинга JSON.
Система запрещает ставить pip-пакеты глобально, поэтому:
python3 -m venv /home/mazzick/venv /home/mazzick/venv/bin/pip install PyMySQL
Скрипт делает следующее:
zigbee2mqtt/%/battery с значением ≤20./home/mazzick/low_battery_alert.txt.Сам код скрипта я уже вставил в заметку отдельно — здесь только логика.
Добавили задание в cron:
crontab -e
И вставили строку:
0 9 * * * /home/mazzick/check_battery.py >> /home/mazzick/battery_check.log 2>&1
Теперь каждый день в 9:00 скрипт проверяет батарейки и обновляет файл-статус.
На Raspberry Pi по умолчанию нет SMTP-сервера. Чтобы не настраивать Postfix или ssmtp, решили начать с простого — файла. Позже можно легко заменить запись в файл на отправку в Telegram/email, не трогая остальную логику.
Теперь я вижу состояние всех батареек, просто выполнив:
cat /home/mazzick/low_battery_alert.txt
А если захочу — подключу этот файл к Home Assistant, веб-панели или Telegram-боту. Главное — система работает автономно, без облаков и лишних зависимостей.
наброски скриптов. в файл точно сохраняют, мне еще надо смтп настроить, но есть вариант через смпт яндекса, надо только пароль для приложений. потом доделаю, но вроде уже рабочий вариант.
Комментарии
Пока нет комментариев. Будьте первым!