Ntfy

Aus FHEMWiki

📬 NTFY.sh: Push Nachrichten an iOS, Android, PC, Command-Line, E-Mail & Telefon

NTFY.sh bietet Push-Dienste auf iOS, Android, Console, E-Mail, ja sogar als Anruf auf ein Telefon an. Es ist damit ähnlich zu dem, was man mit PushOver, PushBullet oder auch Gotify anstellen kann, wobei NTFY auch Kriterien wie "Self-hosted" und echte "iOS-Pushnachrichten" erfüllt. Man kann damit von FHEM aus alle diese Kanäle mit einer Push-Nachricht erreichen. Die Nutzung ist extrem einfach, man setzt einen HTTP-Aufruf ab, um eine Push-Nachricht zu versenden. NTFY.sh betreibt sogar einen Gratis-Server, den man nutzen darf. Man kann den Server auch selber hosten, wenn man will.

Öffnet testweise diesen Link, dort tauchen die Nachrichten auch in der PWA (Webapp) auf: https://ntfy.sh/FreundlichenGruesseAnAlleFHEMNutzer

Anbindung per externem Modul

Es gibt ein FHEM-Device, mit dem man NTFY nutzen kann: fhem-ntfy

Schritte um fhem-ntfy einzurichten:

Das externe Device kann man wie folgt in FHEM einbinden:

update add https://rm.byterazor.de/upd-fhem-ntfy/controls_byterazor-fhem-ntfy.txt
update

Nachdem man das Modul in FHEM hat, sollte FHEM einmal neugestartet werden:

shutdown restart

Danach kann man ein Device anlegen:

defmod NTFY0 NTFY_CLIENT https://ntfy.sh
attr NTFY0 defaultPriority default
attr NTFY0 defaultTopic FreundlichenGruesseAnAlleFHEMNutzer
attr NTFY0 room Experimente

Senden einer Nachricht

mit einem curl-Befehl:

curl -d "Your message content here" \
    -H "Title: Bla" \
    https://ntfy.sh/FreundlichenGruesseAnAlleFHEMNutzer

Das Gleiche nur mit WGET:

wget --method=POST \
    --body-data="Your message content here" \
    --header="Title: Bla" \
    https://ntfy.sh/FreundlichenGruesseAnAlleFHEMNutzer -q -O -

Oder, wenn es ein reines HTTP-GET als Webhook sein soll:

https://ntfy.sh/FreundlichenGruesseAnAlleFHEMNutzer/publish?message=Your%20message%20content%20here&title=Bla

Oder aus FHEM an den Server eine Nachricht senden mit:

set NTFY0 publish @FreundlichenGruesseAnAlleFHEMNutzer Testnachricht!

Im Event-Log taucht dann folgendes auf, darauf kann man mit notify oder DOIF reagieren:

2024-10-29 19:01:16.714 NTFY_TOPIC NTFY0_FreundlichenGruesseAnAlleFHEMNutzer nrReceivedMessages: 7
2024-10-29 19:01:16.715 NTFY_CLIENT NTFY0 subscriptions: FreundlichenGruesseAnAlleFHEMNutzer
2024-10-29 19:01:16.715 NTFY_CLIENT NTFY0 nrReceivedMessages: 7
2024-10-29 19:01:16.715 NTFY_CLIENT NTFY0 lastReceivedTitle: Bla
2024-10-29 19:01:16.715 NTFY_CLIENT NTFY0 lastReceivedData: Your message content here
2024-10-29 19:01:16.715 NTFY_CLIENT NTFY0 lastReceivedRawMessage: {"id":"oU5iqrdSFoeY","time":1730224876,"expires":1730268076,"event":"message","topic":"FreundlichenGruesseAnAlleFHEMNutzer","title":"Bla","message":"Your message content here"}

Testen kannst man direkt gegen die bekannteste NTFY-Installation:

https://ntfy.sh/FreundlichenGruesseAnAlleFHEMNutzer
https://ntfy.sh/FreundlichenGruesseAnAlleFHEMNutzer/publish?message=Blubb&title=Bla

Anbindung per HTTPMOD und Websocket

Senden mit HTTPMOD

set NTFY message Title="mein Titel aus dem Set heraus" Meine Nachricht
set NTFY message Title="" Meine Nachricht ohne Titel
set NTFY message Title="✅ Emojis 🚀" 📝 Meine Nachricht mit Emojis 👾

Oder man hat nur den Titel im User-Attribut "Title", falls das Muster Title="irgendwas" nicht im Parameter der set Nachricht auftaucht:

set NTFY message Meine kurze Nachricht, Titel aus UserAttr Title genutzt

Empfangen mit Websocket

defmod NTFY_RECEIVE dummy
attr NTFY_RECEIVE userattr URL last_seen_max_age password username
attr NTFY_RECEIVE URL wss://ntfy.sh:443/FreundlichenGruesseAnAlleFHEMNutzer/ws
attr NTFY_RECEIVE alias NTFY_RECEIVE
attr NTFY_RECEIVE devStateIcon opened:general_ok@green:stop disconnected:rc_STOP@red:start
attr NTFY_RECEIVE eventMap /cmd connect:start/cmd disconnect:stop/
attr NTFY_RECEIVE group Experimente
attr NTFY_RECEIVE icon hue_filled_plug
attr NTFY_RECEIVE password superGeheimesPasswort
attr NTFY_RECEIVE readingList cmd
attr NTFY_RECEIVE setList cmd
attr NTFY_RECEIVE userReadings connect:cmd:.connect { DevIo_OpenDev($defs{$name}, 0) }
attr NTFY_RECEIVE username Torxgewinde
attr NTFY_RECEIVE verbose 1
attr NTFY_RECEIVE webCmd start:stop