Window Open in in FHT Plot anzeigen

Begonnen von slor, 28 November 2013, 16:42:49

Vorheriges Thema - Nächstes Thema

slor

Hallo zusammen,

ich habe die fht.gplot Datei wie folgt angepasst um im Plot anzuzeigen, ob das Fenster offen ist und wenn ja, wie lange.
Leider haut das nicht so richtig hin.
Die Bescheibung sehe ich, die Temperatur und den Actor auch, aber nichts wenn das Fenster auf ist.
Der Satus Open wird korrect ins logfile geschrieben.

Hier die Gplot Datei:
############################
# Display the measured temp and the actuator.
# Corresponding FileLog definition:
# define <filelogname> FileLog /var/log/fhem/fht-%Y.log <fhtname>

set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set ytics nomirror
set y2tics
#set ytics
set title '<L1>'
set grid xtics y2tics

set y2label "Temperature in C"
set ylabel "Actuator (%)"

#FileLog 4:measured:0:
#FileLog 4:actuator.*[0-9]+%:0:int
#FileLog 4:Window:0:$fld[3]=~"Open"?1:0


plot \
  "< awk '/measured/{print $1, $4}' <IN>"\
     using 1:2 axes x1y2 title 'Measured temperature' with lines,\
  "< awk '/actuator/ {print $1, $4+0}' <IN>"\
     using 1:2 axes x1y1 title 'Actuator (%)' with lines\
  "< awk '/Window/{print $1, $4==\"Open\"? 1 : 0; }' <IN>"\
        using 1:2 title 'Open/Closed' with impulses

slor

Noch eine Verständnisfrage: ziehen im Nachhinein geänderte .gplot Dateien überhaupt in den Plots? Oder muss ich das neu definieren?

Gibt es eine andere Möglichkeit den Fenster Kontakt im FHT Plot abzubilden? Im Forum habe ich dazu nichts konkretes gefunden... Evlt. bin ich zu blöd zum suchen...? Oder bin ich der einzige, der das braucht?

Danke,
Sebastian

rudolfkoenig

Aenderungen an der .gplot Datei werden beim naechsten "malen" der Plots wirksam.

Es ist vermutlich hilfreich etwas Geschichte mitzukriegen:
- in der ersten Version (plotmode gnuplot) wurden die Grafiken direkt von gnuplot gerendert, und als .png angezeigt.
- in der zweiten Version (plotmode gnuplot-scroll) kamen die #FileLog Direktiven dazu, damit zoom/scroll funktioniert. Gemalt wurde weiterhin von gnuplot, allerdings der Input ('<awk...') wird ignoriert/ersetzt.
- in der dritten Version (plotmode SVG, default!) wird die .gplot Datei vom SVG Modul interpretiert, gnuplot wird nicht mehr verwendet. Es wird nur eine Untermenge der .gplot Syntax implementiert, siehe auch http://fhem.de/commandref.html#gnuplot-syntax. impulses ist mWn nicht implementiert.

Fuer Anfaenger empfehle ich den Plot-Editor, um Stolperfallen zu vermeiden.

Ich vermute, dass in diesem Fall in der entsprechenden Spalte das gesuchte Wort (Open) nicht vorkommt


Rohan

Hallo Sebastian,

poste doch mal einen Ausschnitt der Log-Datei, in dem die Open/Close-Meldungen drin sind. Bitte in "Code"-Klammern (Raute/Sharp-Zeichen oben überm Editor-Fenster).

Eine andere Frage: Evtl. siehst du nur noch nichts, weil sich der Zustand des Fensters noch nicht geändert hat. "Geplottet" wird nämlich erst ab Zustandsänderung (Problem "Plottabriss" => siehe Wiki unter diesem Stichwort).

Gruß
Thomas
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor

slor

Danke für die Aufschlussreichen Antworten!
Ich habe es dennoch nicht hinbekommen. Ich habe einfach mal auf Close getriggert, da das ja ständig gelogged wird.
Ich hätte gerne einen schönen blauen Hintergrund, wenn das Fenster auf ist. In meinem Szenario wenn es zu ist um schneller Ergebnisse zu bekommen und nicht immer den Fenstersensor zu auf und zu machen zu müssen. (Geht so schlecht remote)

Hier mal ein Ausschnitt aus dem Logfile:
2013-12-02_15:13:17 Schlafzimmer actuator: 0%
2013-12-02_15:13:18 Schlafzimmer measured-temp: 19.4
2013-12-02_15:13:18 Schlafzimmer temperature: 19.4
2013-12-02_15:13:18 Schlafzimmer ack: 0
2013-12-02_15:13:18 Schlafzimmer battery: ok
2013-12-02_15:13:18 Schlafzimmer lowtemp: ok
2013-12-02_15:13:18 Schlafzimmer window: closed
2013-12-02_15:13:18 Schlafzimmer windowsensor: ok
2013-12-02_15:13:18 Schlafzimmer warnings: none
2013-12-02_15:13:18 Schlafzimmer ack: 0
2013-12-02_15:13:19 Schlafzimmer end-xmit: 0


.gplot Sieht mittlerweile so aus:
# Created by FHEM/98_SVG.pm, 2013-12-02 14:39:03
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<L1>'
set ytics nomirror
set y2tics
set grid y2tics
set ylabel "Actuator (%)"
set y2label "Temperature in C"
set yrange [0:100]
set y2range [0:25]
set y3range [0:20]

#FileLog 4:Schlafzimmer.measured-temp\x3a::
#FileLog 4:Schlafzimmer.actuator\x3a::int
#FileLog 4:Schlafzimmer.window\x3a::"~Closed"

plot "<IN>" using 1:2 axes x1y2 title 'Measured temperature' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Actuator (%)' ls l1 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y3 title 'Open/Closed' ls l2fill lw 1 with histeps


Mit der Yrange habe ich versucht den blauen Balken auf 20 Grad höhe einzublenden, wenn Status "Close"
Das geht bestimmt besser, mal davon abgesehen, dass es aktuell nicht funktioniert und das Plot komisch aussehen lässt.

Danke für Eure Hilfe! Meine Lernkurfe ist aktuell ziemlich steil :-)

jostmario

Hallo

bist du da weitergekommen ?
suche auch grad ne Möglichkeit Fenster Offenzeit im Plot darzustellen.

Gruß Josty
Raspberry Pi  ---  HM-LAN ---  8X HM_HM_CC_RT_DN --- OWL+USB Strommesser    UVR1611

Rohan

Hi,

als Ansatz mal eine Plot-Datei, mit der ich den offen/zu-Zustand meiner Haustüre plotte:

set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title 'Haustüre'
set ytics ("Zu" 0, "Auf" 1)
set y2tics ("Ok" 0.8)
set grid
set ylabel "Haustüre"
set y2label "Batterie"
set yrange [-0.1:1.1]
set y2range [-0.1:1.1]

#FileLog 3:EG.HaustuerOffen.*:0:$fld[2]=~"open"?1:0
#FileLog 4:EG.HaustuerOffen.*:0:$fld[2]=~"ok"?0:0.8

plot "<IN>" using 1:2 axes x1y2 title 'Türe' ls l0 lw 1 with steps,\
     "<IN>" using 1:2 axes x1y2 title 'Batterie' ls l1 lw 1 with steps


Vlt. hilft es ja.

Gruß
Thomas
Fhem auf Mini-ITX mit Celeron 2-Core, HMLAN (> 55 Devices), CUL (FS20 und EM), RFXtrx 433E, Arduino (einige DS18B20), RPi mit 1-Wire (DS2423 für S0-Signale, DS18B20+), RPi/Arduino mit MQ-5 und MQ-9 (CO- und CNG/LPG-Sensor), CO-20 IAQ Sensor

ToM_ToM

Hallo Rohan,

ich habe deinen Beitrag als Anstatz genommen und wollte jetzt meine Fensteröffnungszeiten darstellen.
Funktioniert soweit auch super. Aber wie bekomme ich es hin, dass der Balken durchgängig auf 1 ist, solange das Fenster geöffnet ist?

Viele Grüße

Thomas
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

JCH2k

#8
Dazu musst du die regular expression so schreiben, dass sie nur noch auf Zeilen mit dem Tür/Fenster-Zustand zutrifft, sonst wertet FHEM auch die Zeilen aus, in denen weder opened noch closed drin steht, und wendet hier den Standardwert (closed) an (weil $fld[2]=~"opened" nicht wahr ist, es steht ja nicht "opened" in der 3. spalte!).

Ich hab das so gemacht:
set ytics ("Offen" 1, "Zu" 0)
set y2tics
set grid
set ylabel "Zustand"
set y2label ""

#FileLog_kloFenster 3:kloFenster\s(opened|closed)::$fld[2]=~"opened"?1:0

plot "<IN>" using 1:2 axes x1y2 title 'Klofenster' ls l0 lw 1 with lines


Also als Regexp: "kloFenster\s(opened|closed)", das \s ist ein leerzeichen und dann entweder opened oder closed (das | bedeutet entweder/oder).

Du musst halt noch die beiden Zustände ersetzen, je nachdem, wie sie bei dir heißen. Und vergiss nicht, auf groß- und Kleinschreibung zu achten.