FHEM Warnung bei geöffneten Fenster

In meinem letzten Blogeintrag habe ich darüber berichtet, das ich neue Sensoren gekauft habe. Diese sind nun angebracht. Nun dachte ich mir das ich in meiner Oberfläche alles einfach stupide anzeigen lasse. Jedoch artete es schnell aus, das es unübersichtlich wurde:

Senosren_Kontakt_All

Nun gebrauchen werde ich das, aber in der Übersichtsseite ist es echt Sinnfrei. Daher habe ich Überlegungen angestellt, was ich überhaupt benötige. Ich will das ich beim Verlassen des Hauses weis, das noch ein Fenster offen ist. Dies muss aber direkt ersichtlich sein, so dass ich nicht erst alle Menüs durchsuchen soll. Ich brauche keine Icons oder ähnliches. Dann ist mir die Idee gekommen, dies einfach als Hinweistext auszugeben. In aktueller Form sieht dies wie folgt im Dashboard aus:

Dashboard_Fehm_v2

Dazu gab es aber noch ein paar Arbeiten. Bei Fhem gibt es kein definiertes Steuerelement dazu, daher musste ich mir selbst ein Skript in einer myUtils.pm (wie man eine unter Fhem anlegt könnt Ihr hier lesen) abgespeichert habe.

Das Skript

Ich habe alles in einem Skript hinterlegt, klar kann ich das auch parameterisieren, aber die Warscheinlichkeit das ich in den nächsten Jahren neue Fenster oder Türen einbauen werde, halte ich für relativ gering.

Das Skript ist in Perl geschrieben und sieht wie folgt aus:

In der variable $list befinen sich mit Komma separiert die Geärte (die Namen mit denen die In FHEM bekannt sind), welche abgefragt werden sollen. Des weiteren wird in der foreach Schleife der jeweilige Status abgefragt, ist dieser auf “opened” (das ist der Status für geöffnet aus dem Reading des Sensors) dann wird der Alias Name des Geräts ermittelt und zu einer Liste hinzugefügt. Der Aliasnamem ist in der Regel eine Benutzerfreundlicherer Name als der Gerätename selbst.

Nachfolgend wird dann der Hinweistext in HTML Form zusammengestellt. Wenn alles geschlossen ist (somit keine Aliase vorhanden), dann wird ein grüner Hinweistext ausgegeben. Ist jedoch ein Fenster geöffnet dann erscheint ein Roter Hinweistext mit der Auflistung der Fenster (wie im Screenshot oben zu sehen).

Die Zeile ‘fhem “set fensterStatusMsg”.$text’ ist wichtig um die Ausgabe auf dem Dummygerät.

Die Funktion alleine bringt ja nichts, daher muss ich zusehen wie ich das auch entsprechend Anzeige. Ich habe gelernt das ein Dummy Device auch Texte annehmen kann. Somit erstelle ich also eins mit Namen “fensterStatusMsg”

Nun muss nur noch alles miteinander verbunden werden. Ich habe mich dafür entschieden die Daten periodisch abzuholen und somit einen Timerjob erstellt dazu.

Damit wird alle 20 Sekunden der Aufruf ausgeführt. Beim ersten Aufruf ist der Meldungstext im Dummy Device gesetzt. Nun fehlt nur noch das übertragen in das Webfrontend.

Einbindung im Webfrontend

Im Webfrontend habe ich die Meldung wie folgt eingebunden

Schon ist es fertig und ich bekomme die Meldungen komplett Problemlos angezeigt und auch so das ich sofort sehen kann, ob und welche(s) Fenster geöffnet sind.