Robins Blog – Technik und Multimedia

Fhem: Behaglichkeitsgrafik für alle Räume erstellen

Es ist kalt, es ist Winter. Und ich möchte es schön behaglich haben. Behaglichkeit, das ist das Thema dieses Beitrags. Wäre es nicht schön, wenn man auf einem Blick sehen könnte, in welchem Raum es gerade Behaglich ist oder nicht? Alles was man dazu braucht, ist ein Thermosensor der auch Luftfeuchtigkeit und Temperaturen gleichzeitig messen kann. Ich nutze schon jahrelang die Thermosensoren TX 29 DTH.  Und natürlich und ein paar Zeilen Programmcode. Das Ergebnis ist ein Diagramm, welches auf der X-Achse die Temperatur zeigt und auf der Y-Achse die Luftfeuchtigkeit. In dem Diagramm ist eine Fläche gezeichnet, welche den Behaglichkeitsbereich markiert. Die kleinen farbigen Kreise sind die Knotenpunkte von Temperatur /Luftfeuchte der einzelnen Räume. In dem Beispiel zeige nur 3 Räume an, man kann die Liste beliebig erweitern. So sieht man auf einem Blick, ob der Raum behaglich ist oder nicht.

Der Programmcode ist nicht auf meinem Mist gewachsen, sondern habe ich aus einem Buch, welches sich auch mit Fhem befasst, Link unten in der Beschreibung. Fangen wir also an mit dem Programmcode.

Zunächst folgendes Skript anpassen und nach opt/fhem/www/gplot hochladen. Fett markierte Passagen mit Euren Sensoren anpassen und diese Datei behagl.gplot nennen.

set terminal png transparent size 400,340 crop
set xrange [15:28]
set yrange [0:100]
#PlotProxy Func:logProxy_xy2Plot([[19,39],[24.2,34],[22.2,67],[17.7,73],[19,39]])
#PlotProxy Func:logProxy_xy2Plot([[19.4,20],[25.5,17.5],[26.7,32],[24.5,60],[20.7,82],[17.2,86],[16,76],[17.2,38],[19.4,20]])
#PlotProxy Func:logProxy_xy2Plot([[ReadingsVal("12Thermo","temperature",0),ReadingsVal("12Thermo","humidity",0)]])
#PlotProxy Func:logProxy_xy2Plot([[ReadingsVal("05Thermo","temperature",0),ReadingsVal("05Thermo","humidity",0)]])
#PlotProxy Func:logProxy_xy2Plot([[ReadingsVal("04Thermo","temperature",0),ReadingsVal("04Thermo","humidity",0)]])

plot "" using 1:2 axes x1y1 title 'Behaglich' ls l1fill lw 1 with lines,"" using 1:2 axes x1y1 title 'Noch Behaglich' ls l5 lw 1 with lines, "" using 1:2 axes x1y1 title 'Wohnzimmer' ls l0 lw 1 with points, "" using 1:2 axes x1y1 title 'SZ' ls l2 lw 1 with points,"" using 1:2 axes x1y1 title 'Büro' ls l3 lw 1 with points

dann ein define machen für den plot:

defmod SVG_Behaglich SVG PlotProxy:behagl:CURRENT
defmod PlotProxy logProxy
attr PlotProxy room Unsorted

Fertig, Fragen wie immer in den Kommentaren.

Die mobile Version verlassen