Howto: Mit FHEM Push-Nachrichten aufs iPhone schicken
Mit einem kostengünstigen Raspberry Pi (Affiliate-Link), der darauf installierten Software FHEM und entsprechender Aktoren/Sensoren lassen sich viele Abläufe in den eigenen vier Wänden automatisieren und überwachen. Spannend wird es gerade dann, wenn verschiedene Services miteinander verknüpft werden. So lassen sich vordefinierte Ereignisse, wie die unter einen Schwellwert fallende Außentemperatur, welche per Temperatursensor (Affiliate-Link) auf der Terrasse übermittelt wird, in sekundenschnelle als Push-Nachricht aufs iPhone schicken. Was man dazu alles benötigt und wie das im Detail funktioniert, wird in nachfolgendem Howto ausführlich erklärt.
Sensor in FHEM anlernen
Das hier gewählte Beispiel setzt einen vorkonfigurierten FHEM-Server (FHEM-Server auf dem Raspberry Pi in einer Stunde einrichten) sowie einen damit gekoppelten HMLan-Adapter (Affiliate-Link) (HMLan-Adapter am FHEM-Server einrichten) voraus. Es wird außerdem ein Temperatursensor benötigt, dessen Informationen ausgewertet und als Trigger für die Benachrichtigungen genutzt werden können. Hier bietet sich der Homematic Temperatur-/Feuchtesensor EQ3 76923 (Affiliate-Link) (Bild links) an, welcher bequem an der Hauswand befestigt werden kann. Alternativ kann natürlich auch die Homematic Wetterstation HM-WDS-OC3 (Affiliate-Link) genutzt werden, welche neben Temperatur und Luftfeuchte auch noch Informationen zu Niederschlag, Windrichtung, Windgeschwindigkeit und Sonneneinstrahlung/Helligkeit übermittelt. Vorstellbar wäre hier also bspw. eine Warnung bei Regenbeginn, um das frisch geputzte Auto noch rechtzeitig in die Garage verfrachten zu können.
Gekoppelt wird der gewünschte Homematic-Sensor, wie jeder andere Homematic-Adapter auch, direkt im Weboberfläche des FHEM-Servers über den Kommandozeilenbefehl:
set HMLAN1 hmPairForSec 60
Mit einem anschließenden Druck auf die Enter-Taste ist der HMLan-Adapter ab jetzt für 60 Sekunden bereit für neue Geräteanmeldungen. Wer statt HMLAN1 einen anderen Namen vergeben hat, muss den Eintrag entsprechend anpassen.
Mit einem kurzen Tastendruck am Homematic Temperatursensor (Affiliate-Link) (Bild links, rot markiert) wird der Anlernvorgang ausgeführt und der Sensor sollte einige Sekunden später als neues Device in FHEM im Ordner “CUL_HM” auftauchen. Der standardmäßig vergebene Name kann dann noch geändert werden durch:
rename standardname TE.Temperatur
Dann noch dem Raum Terrasse zuweisen:
attr TE.Temperatur room Terrasse
Ab sofort sollte der Sensor etwa alle drei Minuten die aktuelle Temperatur und Luftfeuchte an die FHEM-Zentrale übermitteln und alle ermittelten Daten direkt auch in eine Logdatei schreiben, welche als Diagramm ausgewertet werden kann.
Push-Service (Prowl) einrichten
Für die Benachrichtigung auf dem iPhone soll der Dienst Prowl genutzt werden. Ein kostenfreier Account kann unter https://www.prowlapp.com/register.php angelegt werden. Dazu ist lediglich ein Benutzername und Passwort notwendig, die eigene E-Mail-Adresse kann weiterhin optional angegeben werden. Sollte das Passwort später einmal verschusselt werden, kann unter Angabe der hinterlegten Email ein neues Kennwort beantragt werden. Ich empfehle daher die eigene E-Mail-Adresse an dieser Stelle zu hinterlegen.
Ist man dann auf der Prowl-Seite eingeloggt, kann unter dem Reiter API Keys beim Punkt Generate a new API key ein neuer persönlicher Schlüssel erstellt werden. Danach befindet sich der neue Schlüssel unter Current API keys, welcher später in FHEM benötigt wird und deshalb an dieser Stelle herauskopiert werden sollte.
Damit die später definierten Push-Nachrichten auf dem iPhone (Affiliate-Link) auch ankommen, wird die kostenpflichtige App Prowl: Growl Client (App-Store-Link) auf dem iPhone installiert.
Ist die App installiert und hat man sich mit den vorher vergebenen Nutzerdaten eingeloggt, ist die Konfiguration auf dem iPhone an dieser Stelle bereits abgeschlossen und es kann mit der Konfiguration auf dem FHEM-Server selbst losgehen.
Auf dem FHEM-Server muss das ProwlScript, das Gegenstück zur Prowl-App auf dem iPhone, installiert werden. In diesem Beispiel wird ein RPI verwendet, auf welchen per Terminal zugegriffen wird (die IP muss natürlich jeder selbst anpassen):
ssh pi@192.168.177.56
Ist man eingeloggt, wird das offizielle Prowl-Script in den entsprechenden scripts-Ordner des RPI heruntergeladen:
sudo wget -P /opt/fhem/scripts/ http://www.prowlapp.com/static/prowl.pl
Jetzt muss noch die Dateiberechtigung angepasst werden:
sudo chmod 755 /opt/fhem/scripts/prowl.pl
Danach kann das Terminal geschlossen werden.
FHEM-Station bereit machen
Es muss jetzt die Config-Datei namens 99_myUtils.pm bearbeitet werden. Sofern schon eigene Scripte in FHEM eingebunden sind, existiert diese Datei bereits und ist in der FHEM-Seitenleiste unter “Edit files” 99_myUtils.pm (siehe Bild links) aufzufinden.
Ist der Eintrag nicht vorhanden, kann man die Datei mit einem kleinen Umweg erzeugen. Dazu wählt man erstmal die fhem.cfg aus und speichert den Inhalt ohne Änderung mit dem Button “Save as” und der Angabe des Namens 99_myUtils.pm ab.
Daraufhin sollte nun unter “Edit files” die Datei “99_myUtils.pm” zu finden sein. Datei öffnen und den dortigen Inhalt löschen, welcher im vorherigen Schritt von der fhem.cfg übernommen wurde. War die Datei bereits ohne den obigen Umweg vorhanden, lässt man den Inhalt natürlich unberührt.
Folgender Inhalt muss dann in jedem Fall in der Datei 99_Utils.pm ergänzt werden:
### Notifications über Prowl auf dem RPi versenden ###
sub prowl
{
my $subject = $_[0];
my $event = $_[1];
my $priority = $_[2];
my $ret = “”;
$ret .= system(“wget -q -O /dev/null ‘http://api.prowlapp.com/publicapi/add?apikey=b34d02d47be440ea5ede28311446c380c6da3869&application=Wuerzburgbude&event=$event&priority=$priority&description=$subject'”);
$ret =~ s,[r
]*,,g;
Log 1, “prowl returned: $ret”;
}
Der Api-Key (oben fett markiert) muss durch den persönlichen Prowl-Schlüssel ausgetauscht werden. Der Eintrag Wuerzburgbude (oben ebenfalls fett markiert) kann durch einen geeigneten Namen geändert werden. Dieser wird dann bei jeder Benachrichtigung angezeigt, sollt also einen sprechenden Namen erhalten. Nach der Anpassung wird die Datei mit dem Button “Save 99_myUtils.pm” abgespeichert.
FHEM-Config mit Push-Benachrichtigungen füttern
Was jetzt noch fehlt, sind die Benachrichtigungsmeldungen in der fhem.cfg.
Nachfolgendes Beispiel schickt sofort einen Warnhinweis an das iPhone, wenn die Termperatur unter 3 Grad fällt und erst wieder eine Entwarnung, wenn die Temperatur wieder über 5 Grad angestiegen ist. Hierzu wird ein Dummy namens TE.TempIndicator genutzt, welcher immer nur die Benachrichtung triggert, wenn sich sein Status ändert (attr TE.TempIndicator event-on-change-reading state). Dadurch wird bewirkt, dass immer nur beim erstmaligen Unter- bzw. Überschreiten der Schwellwerte eine Nachricht abgeschickt wird und nicht wenn die Temperatur noch weiter unter 3 Grad sinkt bzw. über 5 Grad steigt.
# Dummy
define TE.TempIndicator dummy
attr TE.TempIndicator event-on-change-reading state
attr TE.TempIndicator room Terrasse
#TE.TempIndicator
define TETempIndicatorToCold notify TE.Temperatur:temperature.* {fhem(“set TE.TempIndicator cold”) if (ReadingsVal(“TE.Temperatur”,”temperature”,””) < 3)}
define TETempIndicatorToNormal notify TE.Temperatur:temperature.* {fhem(“set TE.TempIndicator normal”) if (ReadingsVal(“TE.Temperatur”,”temperature”,””) >= 5)}
#Prowl Notify
define TETempIndicatorToColdNotify notify TE.TempIndicator:cold {prowl(“Es ist kälter als 3 °CnAchtung Glättegefahr”,”Terrasse”,”1″)}
define TETempIndicatorToNormalNotify notify TE.TempIndicator:normal {prowl(“Es ist wärmer als 4 °CnKeine Glättegefahr mehr”,”Terrasse”,”1″)}
(Anmerkung: Die Zeichenfolge n bewirkt bei obigen Prowl-Notifications einen Zeilenumbruch an der entsprechenden Stelle und ist nicht zwingend notwendig.)
Jetzt noch mit “Save fhem.cfg” alles speichern und den FHEM-Server am besten mit dem Kommandobefehl shutdown restart neustarten. Danach kann Prowl auf Funktionstüchtigkeit getestet werden, indem in der Kommandozeile der Befehl set TE.TempIndicator cold bzw. set TE.TempIndicator normal eingegeben und mit der Enter-Taste bestätigt wird. Daraufhin sollte am iPhone die entsprechende Benachrichtigung in Sekundenschnelle eintrudeln (siehe Bild).
Aus meinem täglichen Leben
Hat man die recht komplizierte Einrichtung von Prowl erstmal überstanden, kann die bestehende Konfiguration durch relativ einfache Prowl-Notifications in der fhem.cfg erweitert werden, was aus meiner Sicht einen super Mehrwert mit sich bringt. So habe ich z.B. ein Notify eingerichtet, welches mich darüber informiert, dass die Wohnungstür geöffnet wurde, ohne dass eine berechtigte Person (Smartphone-Erkennung per WLan bzw. Bluetooth) anwesend ist. Dieser Notify ist bis jetzt glücklicherweise nur bei Tests ausgelöst worden :). So lassen sich neben eher trivialen Dingen wie obiger Mitteilung bei Temperaturveränderung ohne große Mühe auch sicherheitsrelevante Notifications absetzen, um z.B. auch mitzuteilen, sobald ein Fenster bei Abwesenheit gekippt oder geöffnet wurde oder der Bewegungsmelder (Affiliate-Link) in der Garage angeschlagen hat, obwohl niemand Zuhause ist. Sicherheitsservices, für die Alarmanlagenherstellern oftmals hohe monatliche Gebühren veranschlagen.
Insgesamt ist Prowl und die Einbindung in FHEM schon recht mächtig, bedenkt man, dass einfach jedes Event als Trigger für eine Benachrichtigung dienen kann und die Push-Mitteilungen im Schnitt nicht länger als eine Sekunde auf sich warten lassen, bis sie auf dem Display angezeigt werden (schnelle Internetverbindung vorausgesetzt). Zudem ist es auch möglich mit Hilfe mehrerer Prowl-Accounts und hinterlegter ProwlScript-Einträge in der 99_myUtils.pm eine Vielzahl von Notifications an unterschiedliche iPhones oder iPads verschicken zu lassen. Wer interessante Einsatzzwecke für Prowl-Notifcations mit FHEM ausgemacht hat, ist gerne eingeladen diese über die Kommentarfunktion zu teilen. Als Anregung sind mal einige mögliche Sensoren aufgelistet.
Wie man Pushmitteilungen mit Pushover anstatt mit Prowl ausführen kann, wird im Nachfolgeartikel Howto: Mit FHEM Push-Nachrichten aufs iPhone schicken (Update) beschrieben.
7 Kommentare
Hallo, erstmal Danke für die Anleitung. Beim Versuch die 99_myUtils.pm zu speichern bekomme ich diese Fehlermeldung:
Unrecognized character \xE2; marked by <– HERE after my $ret = <– HERE near column 11 at ./FHEM/99_myUtils.pm line 8.
Was mache ich falsch ?
Gruß Holgi
Wahrscheinlich wurden die Anführungszeichen “umformatiert” oder es wurde fälschlicherweise ein Zeilenumbruch eingefügt. Bitte mal kontrollieren…
Danke für die guten Artikel zum praktischen Einsatz von FHEM. Ich habe mir hier schon einige Anregungen geholt. Deine Lösung oben lässt sich übrigens mit Einsatz des Threshold-Moduls noch einfacher und flexibler gestalten.
ich stehe auf dem schlauch. wo bitte soll ein button save as denn zu finden sein?
ok – habe es schon gefunden. die datei ist aus sicherheitsgründen gesperrt gewesen.
Wozu wird denn die Datei /opt/fhem/scripts/prowl.pl benötigt?
Ich sehe keinen weiteren Verweis auf dieses Skript.
Hallo , ich habe es hinbekommen über Telegram Nachrichten aufs Handy zu bekommen. nun möchte ich mittels der App Tasker bei bestimmten Meldungen bestimmte Aktionen ausführen. das ist mir bisher nicht gelungen.