В моей самописной IoT-системе все MQTT-топики дублируются в MySQL. Это удобно: есть история, можно строить графики, делать аналитику. Но возник вопрос: как отправлять уведомления (например, на почту) при срабатывании датчиков — не плодя кучу скриптов под каждый случай?
Решение, которое я сейчас тестирую, оказалось простым, надёжным и легко расширяемым.
Поскольку вся телеметрия уже попадает в таблицу sensor_data, почему бы не использовать её же и для уведомлений?
Я завёл специальный «служебный» топик:
zigbee2mqtt/_alerts/email
Он не отображается в интерфейсе (потому что начинается с подчёркивания), но в него можно писать любые сообщения. А отдельный скрипт раз в несколько минут проверяет, появились ли там новые записи — и отправляет их на почту.
sensor_data:INSERT INTO sensor_data (topic, value)
VALUES ('zigbee2mqtt/_alerts/email', '{"subject":"Протечка!","body":"Вода в ванной!"}');
zigbee2mqtt/_alerts/email,Всё. Никаких MQTT-подписок, никаких костылей под каждый датчик.
_alerts/telegram, _alerts/webhook и т.д."to" или ограничь частоту срабатывания на уровне логики.
Пока у меня всё работает через локальный sendmail, но в будущем планирую:
А вы как решаете задачу уведомлений в своих IoT-проектах? Пишите в комментарии — интересно сравнить подходы.
P.S. Код скрипта и примеры SQL/Python — в следующей части. Следите за обновлениями!
Комментарии
Пока нет комментариев. Будьте первым!