gplot des optischen Tür-/Fensterkontaktes gibt falsche Daten

Begonnen von wilkens, 31 Oktober 2015, 10:43:17

Vorheriges Thema - Nächstes Thema

wilkens

Hallo,

ich habe einen optischen Tür-/Fensterkontakt im Einsatz (HM-Sec-SCo).
Ein gplot soll mir die Zustände (open/close) grafisch darstellen.
Scheinbar sendet der Fensterkontakt aber jede Stunde ein Update. Dies ändert die Anzeige des gplot.

Hier ein Beispiel:
Am 29.10.2015 wurde das Fenster um 07:28:04 geöffnet. Der Zustand ändert von closed auf open.
Zu folgenden Uhrzeiten wird das open erneut geloggt:
07:33:14
08:25:01
09:24:01
10:19:27...
Das geht in etwa jede Stunde so, bis das Fenster wieder geschlossen wird.
Im gplot sieht es dann so aus, als wäre das Fenster  zu jeder Stunde kurz geschlossen worden.

Hier ein Auszug aus dem Log (FileLog_EG.sz.TK.Fenster):

2015-10-29_06:32:45 EG.sz.TK.Fenster alive: yes
2015-10-29_06:32:45 EG.sz.TK.Fenster battery: ok
2015-10-29_06:32:45 EG.sz.TK.Fenster contact: closed (to broadcast)
2015-10-29_06:32:45 EG.sz.TK.Fenster sabotageError: off
[b]2015-10-29_06:32:45 EG.sz.TK.Fenster closed[/b]
2015-10-29_07:28:04 EG.sz.TK.Fenster battery: ok
2015-10-29_07:28:04 EG.sz.TK.Fenster contact: open (to broadcast)
[b]2015-10-29_07:28:04 EG.sz.TK.Fenster open[/b]
2015-10-29_07:28:04 EG.sz.TK.Fenster trigDst_broadcast: noConfig
2015-10-29_07:28:04 EG.sz.TK.Fenster trigger_cnt: 185
2015-10-29_07:33:14 EG.sz.TK.Fenster alive: yes
2015-10-29_07:33:14 EG.sz.TK.Fenster battery: ok
2015-10-29_07:33:14 EG.sz.TK.Fenster contact: open (to broadcast)
2015-10-29_07:33:14 EG.sz.TK.Fenster sabotageError: off
[b]2015-10-29_07:33:14 EG.sz.TK.Fenster open[/b]
2015-10-29_08:25:01 EG.sz.TK.Fenster alive: yes
2015-10-29_08:25:01 EG.sz.TK.Fenster battery: ok
2015-10-29_08:25:01 EG.sz.TK.Fenster contact: open (to broadcast)
2015-10-29_08:25:01 EG.sz.TK.Fenster sabotageError: off
[b]2015-10-29_08:25:01 EG.sz.TK.Fenster open[/b]
2015-10-29_09:24:01 EG.sz.TK.Fenster alive: yes
2015-10-29_09:24:01 EG.sz.TK.Fenster battery: ok
2015-10-29_09:24:01 EG.sz.TK.Fenster contact: open (to broadcast)
2015-10-29_09:24:01 EG.sz.TK.Fenster sabotageError: off
[b]2015-10-29_09:24:01 EG.sz.TK.Fenster open[/b]
2015-10-29_10:19:27 EG.sz.TK.Fenster alive: yes
2015-10-29_10:19:27 EG.sz.TK.Fenster battery: ok
2015-10-29_10:19:27 EG.sz.TK.Fenster contact: open (to broadcast)
2015-10-29_10:19:27 EG.sz.TK.Fenster sabotageError: off
[b]2015-10-29_10:19:27 EG.sz.TK.Fenster open[/b]


Dies ist die gplot-Datei (SVG_FileLog_EG.sz.TK.Fenster_1.gplot)

# Created by FHEM/98_SVG.pm, 2015-10-29 22:00:43
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 'Fenster Schlafzimmer'
set ytics ("Zu" 0, "Ok" 0.8, "Auf" 1)
set y2tics ("Zu" 0, "Ok" 0.8, "Auf" 1)
set grid
set ylabel ""
set y2label ""
set yrange [-0.1:1.1]
set y2range [-0.1:1.1]

#FileLog_EG.sz.TK.Fenster 3:EG.sz.TK.Fenster:0:$fld[2]=~"open"?1:0
#FileLog_EG.sz.TK.Fenster 4:EG.sz.TK.Fenster:0:$fld[2]=~"ok"?0:0.8

plot "<IN>" using 1:2 axes x1y2 title 'Fenster' ls l1 lw 2 with steps,\
     "<IN>" using 1:2 axes x1y2 title 'Batterie' ls l2 lw 1 with steps


Ein screenshot des gplots hängt an.
Mein FHEM Release ist : 5.6

Ich habe mir die Informationen zum erstellen des plots aus diversen Foreneinträgen zusammenkopiert.
Folgendes aus dem gplot verstehe ich auch nicht wirklich:
#FileLog_EG.sz.TK.Fenster 3:EG.sz.TK.Fenster:0:$fld[2]=~"open"?1:0
#FileLog_EG.sz.TK.Fenster 4:EG.sz.TK.Fenster:0:$fld[2]=~"ok"?0:0.8

Daher wäre ein wenig Hilfe toll.
Wie bekomme ich den plot sauber dargestellt?

krikan


wilkens

#2
Danke für die schnelle Antwort krikan,

ich hatte auch den ersten Plot schon mit dem Editor erstellt.
Im "SVG_FileLog_EG.sz.TK.Fenster_1.gplot" hatte ich anschließend nur ein paar Änderungen und Tests gemacht.

Ich habe mir den von dir angegebenen Link mal angeschaut und nachgebaut.
Dadurch habe ich zwar meine Temperaturkurve verloren, aber die Fehlersuche geht erst Mal vor.

Zuerst habe ich in der Datei  "SVG_FileLog_EG.sz.TK.Fenster_1.gplot" alles gelöscht und gespeichert.
Dann habe ich alle Daten wie im Beispiel über den Editor eingetragen und auch das Attribut geschrieben.

Mein "SVG_FileLog_EG.sz.TK.Fenster_1.gplot" sieht danach nun so aus:

# Created by FHEM/98_SVG.pm, 2015-10-31 11:31:46
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 'Fenster Schlafzimmer'
set ytics ("open" 1, "closed" 0)
set y2tics ("open" 1, "closed" 0)
set grid
set ylabel ""
set y2label "Status"
set yrange [-0.1:1.1]
set y2range [-0.1:1.1]

#FileLog_EG.sz.TK.Fenster 3:EG.sz.TK.Fenster:0:$fld[2]=~"open"?1:0

plot "<IN>" using 1:2 axes x1y2 title 'Fenster' ls l1 lw 2 with steps


Das Attribut "title" des "SVG_FileLog_EG.sz.TK.Fenster_1.gplot"  beinhaltet folgendes:

sprintf("Fenster Schlafzimmer %s at %s",$data{currval1}=~"1"?'open':'closed',$data{currdate1} =~ m/_(\d\d:\d\d)/?$1:"")

Eine Änderung, ob mit oder ohne diesem Attribut, kann ich nicht feststellen.

Allerdings ist mein Problem noch da. Screenshot hängt an.

Ich denke das hängt irgendwie mit der stündlichen Aktualisierung zusammen. Jede Stunde wird etwas ins Log geschrieben, auch wenn es keine Änderung gab.
Ich habe bei dem Fensterkontakt (EG.sz.TK.Fenster) mal event-on-change-reading state gesetzt.
Vielleicht werden dann nur noch Änderungen ins Log geschrieben. Jetzt muss ich wohl erst Mal ein paar Stunden beobachten.

Falls du oder irgendwer noch eine Idee hat, woran das liegen kann, dann gern her damit.

stromer-12

Du wertest alles aus deinem Log aus und jede Zeile die kein "open" im fld[2] hat wird als "closed" bewertet. Du musst deine Auswertung eingrenzen.
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

wilkens

Guter Hinweis,
ich werte nun aus dem Log die Zeile "EG.sz.TK.Fenster.contact" statt  "EG.sz.TK.Fenster.*"  aus. Dies ist dann der Wert $fld[3].
Dann funktioniert es.

Mein "SVG_FileLog_EG.sz.TK.Fenster_1.gplot" sieht danach nun so aus:

# Created by FHEM/98_SVG.pm, 2015-10-31 12:49:30
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 'Fenster Schlafzimmer'
set ytics ("open" 1, "closed" 0)
set y2tics ("open" 1, "closed" 0)
set grid
set ylabel ""
set y2label "Status"
set yrange [-0.1:1.1]
set y2range [-0.1:1.1]

#FileLog_EG.sz.TK.Fenster 4:EG.sz.TK.Fenster.contact\x3a:0:$fld[3]=~"open"?1:0

plot "<IN>" using 1:2 axes x1y2 title 'Fenster' ls l1 lw 2 with steps


Ein screenshot zum korrekten gplot hängt an, falls jemand mal das gleiche Problem hat.

Vielen Dank für die schnellen Tipps.