Уведомления умного дома
Открыли входную дверь, сработал датчик протечки, постирала машинка — про такие события хочется узнавать сразу, а не когда пол уже мокрый. Notifly легко подключить и к Home Assistant, и напрямую к MQTT — своя push-инфраструктура без чужих облаков.
Home Assistant: REST-команда
Заголовок раздела «Home Assistant: REST-команда»Опишите Notifly как rest_command в configuration.yaml — и вызывайте её из
любой автоматизации:
rest_command: notifly: url: "https://your-notifly.example.com/message?token=AGdjfk_L.dKe8q" method: POST content_type: "application/json" payload: '{"title": "{{ title }}", "message": "{{ message }}", "priority": {{ priority }}}'Автоматизация «открыли входную дверь»:
- alias: "Notifly: открыли входную дверь" trigger: - platform: state entity_id: binary_sensor.front_door to: "on" action: - service: rest_command.notifly data: title: "🚪 Входная дверь открыта" message: "Время: {{ now().strftime('%H:%M') }}" priority: 7Датчик протечки — уже с максимальным приоритетом, чтобы прошло даже в DND:
- alias: "Notifly: протечка воды" trigger: - platform: state entity_id: binary_sensor.leak_kitchen to: "on" action: - service: rest_command.notifly data: title: "💧 Протечка на кухне!" message: "Датчик сработал — перекройте воду." priority: 10Стиральная машина закончила (по падению энергопотребления):
- alias: "Notifly: стирка закончена" trigger: - platform: numeric_state entity_id: sensor.washer_power below: 5 for: "00:03:00" condition: - condition: state entity_id: input_boolean.washer_running state: "on" action: - service: rest_command.notifly data: title: "🧺 Стирка закончена" message: "Можно развешивать." priority: 5 - service: input_boolean.turn_off target: entity_id: input_boolean.washer_runningHome Assistant: shell_command
Заголовок раздела «Home Assistant: shell_command»Если хочется переиспользовать общий wrapper, зовите notifly-send через
shell_command (скрипт должен быть доступен пользователю, под которым работает HA):
shell_command: notifly: '/usr/local/bin/notifly-send "{{ title }}" "{{ message }}" {{ priority }}'MQTT-мост: топик → push
Заголовок раздела «MQTT-мост: топик → push»Нет Home Assistant, но есть MQTT-брокер (Zigbee2MQTT, ESPHome, самоделки на ESP32)? Небольшой подписчик превращает сообщения топика в push:
#!/usr/bin/env bash# /usr/local/bin/notifly-mqtt — мост MQTT → Notiflyset -euset -a; source /etc/notifly.env; set +a
# Слушаем нужные топики. -v выводит "топик payload".mosquitto_sub -h 192.168.1.10 -t 'home/#' -v | while read -r TOPIC PAYLOAD; do case "$TOPIC" in home/door/front) [[ "$PAYLOAD" == *'"contact":false'* ]] && \ notifly-send "🚪 Входная дверь открыта" "" 7 ;; home/leak/*) [[ "$PAYLOAD" == *'"water_leak":true'* ]] && \ notifly-send "💧 Протечка: $TOPIC" "Перекройте воду!" 10 ;; home/washer/done) notifly-send "🧺 Стирка закончена" "$PAYLOAD" 5 ;; esacdoneДержим мост живым через systemd — /etc/systemd/system/notifly-mqtt.service:
[Unit]Description=Notifly MQTT bridgeAfter=network-online.target
[Service]ExecStart=/usr/local/bin/notifly-mqttRestart=alwaysRestartSec=5
[Install]WantedBy=multi-user.targetsudo systemctl enable --now notifly-mqttWindows: PowerShell для локальных событий
Заголовок раздела «Windows: PowerShell для локальных событий»Если контроллер умного дома — на Windows (например, скрипт опрашивает API хаба),
шлём push той же функцией Send-Notifly:
# фрагмент опроса состояния двериif ($door.state -eq "open" -and $prev -eq "closed") { Send-Notifly -Title "🚪 Входная дверь открыта" ` -Message "Время: $((Get-Date).ToString('HH:mm'))" -Priority 7}- Свой push без чужого облака. События дома идут в вашу инфраструктуру.
- Приоритеты по важности. Протечка — 10 (проходит DND), дверь — 7, стирка — 5 (см. приоритеты).
- Единая точка. Телефон, ноутбук, планшет получают одно и то же уведомление одновременно.
Что улучшить дальше
Заголовок раздела «Что улучшить дальше»- Слать снимок с камеры у двери через дополнительные поля.
- Разные каналы для «дома» и «дачи», чтобы делить push по адресам.
- Связать с мониторингом: если хаб умного дома молчит — отдельный алерт, что сама система отвалилась.