FHEM: Anzahl geöffneter Fenster anzeigen

In meiner Wohnung habe ich FHEM schon seit einigen Jahren im Einsatz. Als ich vor einem halben Jahr angefangen habe mir ein Tablet UI für FHEM zu bauen wollte ich mir unter anderem auch anzeigen lassen wie viele Fenster gerade in meiner Wohnung geöffnet sind. Das ist vor allem praktisch wenn man die Wohnung verlassen möchte und auf einem Blick sehen will ob alle Fenster geschlossen sind.

Im FHEM Forum bin ich dann auf einen Interessanten Beitrag gestoßen: Fenstersymbol mit Anzahl offener Fenster als Kreis
Wie ich das ganze dann bei meiner FHEM Installation umgesetzt habe möchte ich dir jetzt Schritt für Schritt zeigen!

Hardware Empfehlung

HomeMatic Funk-Heizkörperthermostat
HomeMatic Funk-Wandthermostat, Aufputzmontage

Letzte Aktualisierung am 20.06.2019 / WERBUNG / Affiliate Links / Bilder von der Amazon Product Advertising API

HowTo: Anzahl offener Fenster in FHEM anzeigen

Im ersten Schritt habe ich alle Fensterkontakte einer eigene Gruppe hinzugefügt. In meinem Fall habe ich diese Gruppe „Fensterkontakt“ genannt. Außerdem habe ich ihnen noch ein User Reading mit der Bezeichnung „windowState“ verpasst. Das habe ich mit folgendem Befehl gelöst:

attr <DEVICE NAME> userReadings windowState { ReadingsVal("<DEVICE NAME>","state",0) }

Den Platzhalter <DEVICE NAME> musst Du mit dem Namen des Fensterkontaktes ersetzten!

In meinem Fall hat der Fensterkontakt in der Küche die Bezeichnung KU.Fenster. Der entsprechende Befehl sieht bei mir daher so aus:

attr KU.Fenster userReadings windowState { ReadingsVal("KU.Fenster","state",0) }

Das soeben erstellte userReading erscheint erst sobald sich der Status des Fensterkontaktes das nächste Mal ändert. Ich habe daher das Fenster kurz geöffnet und wieder geschlossen und konnte danach das userReading sehen.

Nachdem ich das userReading bei allen Fensterkontakten hinzugefügt hatte habe ich unter dem Menüpunkt „Edit Files“ folgenden Code in die 99_myUtils.pm Datei hinzugefügt:

sub numberOfOpenWindows() {
my $openWindows = 0;
foreach my $windowName (devspec2array("group=Fensterkontakt")) { 
if (ReadingsVal($windowName, "windowState", "closed") ne "closed") {
$openWindows++;
}
}
return $openWindows;
}

Den Codeteil habe ich aus dem FHEM Foren Beitrag vom User Thyraz übernommen und lediglich den Namen der Gruppe abgeändert.

Wenn es bei Dir noch keine Datei mit dem Namen 99_myUtils.pm gibt empfehle ich Dir folgenden FHEM-Wiki Eintrag durchzulesen: 99 myUtils anlegen – FHEMWiki

Jetzt erstelle ich noch ein Dummy Device welches später die Anzahl der gerade geöffneten Fenster anzeigen soll.

define HOME.OpenWindows dummy

Und zu guter letzt auch noch ein Notify, welches auf den Status der Fenster reagiert, anschließend den Code aus unserer 99_myUtils.pm ausführt und danach das Ergebnis in unser zuvor erstelltes Dummy Device schreibt. Der entsprechende Befehl zum Erstellen des Notify schaut dann so aus:

define SYS.OpenWindows notify [A-Z].*.Fenster:(open|tilted|closed) { CommandSet(undef,'HOME.OpenWindows ' . numberOfOpenWindows()) }

Wenn die Fensterkontakte am Anfang immer gleich Beginnen, also zb. Fenster.Wohnzimmer, ist folgender Befehl zum Erstellen des Notify notwendig:

define SYS.OpenWindows notify Fenster.*:(open|tilted|closed) { CommandSet(undef,'HOME.OpenWindows ' . numberOfOpenWindows()) }

Zum Abschluss solltest Du die Konfiguration noch mit „Save Config“ abspeichern, damit die soeben durchgeführten Änderungen auch nach einem FHEM Neustart noch vorhanden sind.

Wenn jetzt Fenster geöffnet werden sollte sich der Status des Dummy’s (HOME.OpenWindows) ändern und die Anzahl der offenen Fenster anzeigen.

FHEM Anzahl offener Fenster anzeigen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.