Перейти к содержимому

Уведомления умного дома

Открыли входную дверь, сработал датчик протечки, постирала машинка — про такие события хочется узнавать сразу, а не когда пол уже мокрый. Notifly легко подключить и к Home Assistant, и напрямую к MQTT — своя push-инфраструктура без чужих облаков.

Опишите Notifly как rest_command в configuration.yaml — и вызывайте её из любой автоматизации:

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 }}}'

Автоматизация «открыли входную дверь»:

automations.yaml
- 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_running

Если хочется переиспользовать общий wrapper, зовите notifly-send через shell_command (скрипт должен быть доступен пользователю, под которым работает HA):

configuration.yaml
shell_command:
notifly: '/usr/local/bin/notifly-send "{{ title }}" "{{ message }}" {{ priority }}'

Нет Home Assistant, но есть MQTT-брокер (Zigbee2MQTT, ESPHome, самоделки на ESP32)? Небольшой подписчик превращает сообщения топика в push:

#!/usr/bin/env bash
# /usr/local/bin/notifly-mqtt — мост MQTT → Notifly
set -eu
set -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
;;
esac
done

Держим мост живым через systemd — /etc/systemd/system/notifly-mqtt.service:

[Unit]
Description=Notifly MQTT bridge
After=network-online.target
[Service]
ExecStart=/usr/local/bin/notifly-mqtt
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Окно терминала
sudo systemctl enable --now notifly-mqtt

Если контроллер умного дома — на 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 по адресам.
  • Связать с мониторингом: если хаб умного дома молчит — отдельный алерт, что сама система отвалилась.