FHEM: Temperatur-Warnung mit Push-Benachrichtigung auf dem Handy

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Durchschnitt: 5,00 von 51 Stimme(n)) - Fehler: Nicht angemeldet!
Loading...
Hat Dir dieser Tipp geholfen? 7 Leser haben sich bedankt! Danke sagen!

Wenn man seinen FHEM Server mit Temperatursensoren ausstattet, kann FHEM nicht nur auf die Innen- und Außentemperatur reagieren, sondern auch Warnungen ausgeben: Überwacht man so zum Beispiel die Temperatur von Kühlschrank und Tiefkühlfach, kann man feststellen, falls es dort zu warm wird. So merkt man dann schnell, wenn die Kühlschrank-Tür nicht richtig geschlossen wurde oder der Kühlschrank nicht mehr richtig funktioniert.

In unserem Beispiel läuft FHEM auf einem Raspberry Pi – angeschlossen sind mehrere Funk-Thermometer-Sensoren (das können zum Beispiel die günstigen LaCrosse-Sensoren sein, die auf 868 MHz mit dem JeeLink zusammenarbeiten oder die Sensoren aus einer Funk-Wetterstation, die auch mit dem 433 MHz CUL funktionieren).

Temperatur in FHEM


 

Kühlschrank-Überwachung: Warnung, wenn zu warm

define TempKuehlschrankKuecheDummy dummy
attr TempKuehlschrankKuecheDummy event-on-change-reading state

define TempKuehlschrankKueche notify LaCrosse_2A:temperature:.* { if(ReadingsVal("LaCrosse_2A","temperature","") > 9) { fhem("set TempKuehlschrankKuecheDummy zuwarm") } else { fhem("set TempKuehlschrankKuecheDummy ok") }}

define TempKuehlschrankKuecheAlert notify TempKuehlschrankKuecheDummy:zuwarm { fhem("set myMPD playfile temperatur-kuehlschrank-kueche.mp3 ;; set Push message Achtung, der Kühlchrank in der Küche ist zu warm: ".ReadingsVal("LaCrosse_2A","temperature","")."°C! | Temperatur-Warnung") }

Wie man Daten (z.B. ein neuer Define, Attribute oder Änderungen) in FHEM eingibt und was man beachten muss, zeigen wir in diesem Artikel!

In diesem Beispiel definieren wir zunächst den Dummy “TempKuehlschrankKuecheDummy”, dem wir später einen Wert zuweisen. Als nächstes definieren wir einen Notify “TempKuehlschrankKueche”, der bei Änderungen der Temperatur des Sensors “LaCrosse_2A” reagiert: Zunächst wird geprüft, ob die Temperatur über oder unter dem angegebenen Wert von 9° C liegt: Wenn ja, wird der Dummy “TempKuehlschrankKuecheDummy” auf “zuwarm” gesetzt, andernfalls wieder auf “ok”


;.

Als letztes definieren wir wieder einen Notify, der den Wert des Dummys abfragt: Steht dieser auf “zuwarm”, reagiert er und sp


ielt einen Ton ab und sendet eine Push-Nachricht auf Handy und Tablet.

» Tipp: Ton-Ausgabe mit FHEM

» Tipp: Kostenlose Push-Nachrichten mit FHEM

Der Umweg über einen Dummy, den wir bei einer geänderten Temperatur auf “zuwarm” setzen, ist nicht zwingend nötig: Man kann stattdessen direkt in dem zweiten “Define” die Sprach-Ausgabe machen und den Code so deutlich verkürzen:

define TempKuehlschrankKueche notify LaCrosse_2A:temperature:.* { if(ReadingsVal("LaCrosse_2A","temperature","") > 9) { fhem("set myMPD playfile temperatur-kuehlschrank-kueche.mp3 ;; set Push message Achtung, der Kühlchrank in der Küche ist zu warm: ".ReadingsVal("LaCrosse_2A","temperature","")."°C! | Temperatur-Warnung") }}

Das hat aber den Nachteil, dass jetzt bei jeder Temperatur-Änderung der Wert geprüft wird und eine Ausgabe gemacht wird: Also bei 9.1°, bei 9.2°, 9.3°… Um das etwas weniger nervig zu gestalten hilft der Umweg über den Dummy. Dadurch gibt es nur eine Meldung, bis die Temperatur wieder abfällt und erst danach wieder die 9° Grenze übersteigt.

 

Wohnzimmer-Überwachung: Warnung, wenn zu kalt

Mit der Wohnzimmer-Überwachung lässt sich eine Warnung ausgeben, wenn an kalten Tagen die Fenster oder Türen zu lange geöffnet sind. Außerdem lässt sich so die Heizungssteuerung regeln, damit ab einer bestimmten Temperatur die Heizung eingeschaltet wird.

define TempWohnzimmerDummy dummy
attr TempWohnzimmerDummy event-on-change-reading state

define TempWohnzimmer notify FBDECT_16:temperature:.* { my $wztemp = ReadingsVal("FBDECT_16","temperature","") ;; $wztemp  =~ m/(\d+)(\.)(\d*)/ ;; $wztemp = "$1.$3" ;; if($wztemp < 28) { fhem("set TempWohnzimmerDummy zukalt") } else { fhem("set TempWohnzimmerDummy ok") }}

define TempWohnzimmerAlert notify TempWohnzimmerDummy:zukalt { fhem("set myMPD playfile temperatur-wohnzimmer-18-grad.mp3 ;; set Push message Achtung, die Temperatur im Wohnzimmer beträgt unter 18°C! | WZ Temperatur-Warnung") }

Diese Steuerung funktioniert genau wie das Beispiel mit dem Temperatursensor im Kühlschrank, der Dummy “TempWohnzimmerDummy” wird hier aller dings bei einem Wert unter 18°C auf “zukalt” anstatt auf “zuwarm” gesetzt.

Eine Besonderheit ist hier allerdings die “Regular Expression”, mit der die Temperaturwerte gefiltert werden: Als Thermometer wird hier keiner der üblichen Temperatur-Sensoren genutzt, sondern die Smart-Home Funktion einer schaltbaren Fritz Dect 200 Steckdose: Diese erkennt ebenfalls die Temperatur, liefert aber statt einem einfachen Zahlwert wie “18.5” den Wert “18.5 C (measured)” zurück. Die Regular Expression “$wztemp =~ m/(\d+)(\.)(\d*)/” übernimmt aus diesem Wert die Zahlen vor und nach dem Punkt in $1 und $3 und gibt diese an die IF-Abfrage in FHEM weiter.




Das könnte Sie auch interessieren:



FHEM: Temperatur-Warnung mit Push-Benachrichtigung auf dem Handy
© Computerhilfen.de