Hallo zusammen,
bisher habe ich meine Homematic Komponenten über ein FileLog visualisiert.
Internals:
DEF FileLog_HM_TuerStatus_Terasse:SVG_FileLog_HM_TuerStatus_Terasse_1:CURRENT
GPLOTFILE SVG_FileLog_HM_TuerStatus_Terasse_1
LOGDEVICE FileLog_HM_TuerStatus_Terasse
LOGFILE CURRENT
NAME SVG_FileLog_HM_TuerStatus_Terasse_1
NOTIFYDEV global
NR 77
STATE initialized
TYPE SVG
Attributes:
group Terassentür
room Z_System->Komponenten
title sprintf("Terassentür %s um %s",$data{currval1}=~"1"?'offen':'geschlossen',$data{currdate1} =~ m/_(\d\d:\d\d)/?$1:"")
mit folgender gplot-Datei:
# Created by FHEM/98_SVG.pm, 2018-07-20 13:52:20
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 '<TL>'
set ytics ("open" 1, "closed" 0)
set y2tics ("open" 1, "closed" 0)
set grid
set ylabel ""
set y2label "Ststus"
set yrange [0:1.1]
set y2range [0:1.1]
#FileLog_HM_TuerStatus_Terasse 3:HM_TuerStatus_Terasse.*::$fld[2]=~"open"?1:$fld[2]=~"closed"?0:""
plot "<IN>" using 1:2 axes x1y2 title 'Terasse' ls l0fill lw 0.2 with steps
Das File Log dazu sah so aus:
2018-01-05_21:35:15 HM_TuerStatus_Terasse closed
2018-01-05_21:35:15 HM_TuerStatus_Terasse trigDst_broadcast: noConfig
2018-01-05_21:35:15 HM_TuerStatus_Terasse trigger_cnt: 8
2018-01-05_21:35:16 HM_TuerStatus_Terasse battery: ok
2018-01-05_21:35:16 HM_TuerStatus_Terasse contact: open (to broadcast)
2018-01-05_21:35:16 HM_TuerStatus_Terasse open
und der processes Output war:
get FileLog_HM_TuerStatus_Terasse CURRENT INT 2018-08-03_00:00:00 2018-08-03_23:59:59 3:HM_TuerStatus_Terasse.*::$fld[2]=~"open"?1:$fld[2]=~"closed"?0:""
2018-08-03_00:44:00 1
2018-08-03_01:35:22 1
2018-08-03_02:29:20 1
2018-08-03_03:26:20 1
2018-08-03_04:24:45 1
2018-08-03_05:22:41 1
2018-08-03_05:59:40 0
2018-08-03_05:59:40 1
2018-08-03_06:19:32 1
2018-08-03_06:38:21 0
2018-08-03_06:38:22 1
2018-08-03_07:12:54 1
2018-08-03_07:15:33 0
2018-08-03_07:15:34 1
2018-08-03_08:09:22 1
2018-08-03_09:09:07 1
2018-08-03_10:03:27 1
2018-08-03_11:01:08 1
#3:HM_TuerStatus_Terasse.*::$fld[2]=~"open"?1:$fld[2]=~"closed"?0:""
Jetzt habe ich das auf DBLog umstellen wollen. Die Datenbank Einträge sehen dann so aus:
| 2018-08-03 10:20:02 | HM_TuerStatus_Terasse | CUL_HM | addLog | state | open |
das SVG-File:
Internals:
CFGFN
DEF DbLog:SVG_DbLog_2:HISTORY
GPLOTFILE SVG_DbLog_2
LOGDEVICE DbLog
LOGFILE HISTORY
NAME SVG_DbLog_2
NOTIFYDEV global
NR 37370
STATE initialized
TYPE SVG
Attributes:
mit der folgenden gplot-Datei:
# Created by FHEM/98_SVG.pm, 2018-08-03 11:29:53
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 'TERASSENTÜR'
set ytics ("open" 1, "closed" 0)
set y2tics
set grid ytics
set ylabel "Status"
set y2label ""
#DbLog HM_TuerStatus_Terasse:state
plot "<IN>" using 1:2 axes x1y1 title 'State' ls l0 lw 0.2 with steps
Der Processed Input ist dann:
get DbLog HISTORY INT 2018-08-03_00:00:00 2018-08-03_23:59:59 HM_TuerStatus_Terasse:state
2018-08-03_00:44:00 open
2018-08-03_01:35:22 open
2018-08-03_02:29:20 open
2018-08-03_03:26:20 open
2018-08-03_04:24:45 open
2018-08-03_05:22:41 open
2018-08-03_05:59:40 closed
2018-08-03_05:59:40 open
2018-08-03_06:19:32 open
2018-08-03_06:38:21 closed
2018-08-03_06:38:22 open
2018-08-03_07:12:54 open
2018-08-03_07:15:33 closed
2018-08-03_07:15:34 open
2018-08-03_08:09:22 open
2018-08-03_09:09:07 open
2018-08-03_10:03:27 open
2018-08-03_10:20:02 open
#HM_TuerStatus_Terasse:state:::
Nun endlich meine Frage:
Wie bekomme ich das mapping auf 0,1 wieder hin?
So dass ich wieder einen graph darüber erstellen kann.
in einer plotdatei
#DbLog <SPEC3>:door:::$val=($val=~'open'?1:0)
Den Teil <SPEC3>:door musst du durch entsprechende Readingnamen ersetzen, dürfte der Teil aus deiem Filelog-Beispiel sein.
Ok, ich habe das Problem zwar lösenn können, durch ändern der Zeitle:
#DbLog HM_TuerStatus_Terasse:state
zu
#DbLog HM_TuerStatus_Terasse:state:::$val=($val=~"open"?1:0)
aber diese Änderung gehen immer verloren, wenn ich mit dem gplot-Editor die Datei bearbeite.
Ist das bekannt?
Zitat von: kadettilac89 am 03 August 2018, 11:56:23
in einer plotdatei
#DbLog <SPEC3>:door:::$val=($val=~'open'?1:0)
Den Teil <SPEC3>:door musst du durch entsprechende Readingnamen ersetzen, dürfte der Teil aus deiem Filelog-Beispiel sein.
Danke das war die Lösung..
Bleibt nur die Frage, ob das korrekt ist, dass die Änderungen immer verloren gehen, wenn man den gplot-Editor benutzt.
Zitat von: DarkT am 03 August 2018, 12:12:01
Bleibt nur die Frage, ob das korrekt ist, dass die Änderungen immer verloren gehen, wenn man den gplot-Editor benutzt.
Ich denke der Editor sollte speichern. Ich nutze den Editor nicht da ich generische Parameter in meinen Plots habe <SPEC3> in dem Fall. Das geht, oder ging früher nicht mit dem Plot editor. Ich editiere die Dateien direkt aber was ich mir vorstellen könnte ...
- Plotdatei ist nur lesbar aber Fhem-User hat keine Schreibberechtigung. ... Linux-OS-Level
- Es ist ein Fehler in der Definition und darum speichert der Editor nicht. Hast du mal in Log geschaut, steht da was drin?
ZitatBleibt nur die Frage, ob das korrekt ist, dass die Änderungen immer verloren gehen, wenn man den gplot-Editor benutzt.
Im Plot-Editor gibt es kein Feld in dem man eigene Regex gestalten kann die in der Plotdatei mit integriert werden und meines Wissens gehen dann solche "eigenen" Änderungen verloren wenn der Ploteditor das plotfile neu schreibt.
Da müßte m.M. nach der Ploteditor erweitert werden. Dieser Code kommt aus dem SVG-Modul.
Grüße
Heiko
???
geht doch, siehe Anhang.
Eintrag:
IT_00FF0F0FFF:state:::$val=($val=~'on'?0.2:0)
Ah :)
Dann ist es aber wahrscheinlich nur möglich wenn DbLogType = History ist, also der Inhalt der Current Tabelle nicht als Dropdown ausgewertet wird.
Denn dann geht es beim Speichern schief.
Zitat von: DS_Starter am 03 August 2018, 13:00:55
Ah :)
Dann ist es aber wahrscheinlich nur möglich wenn DbLogType = History ist, also der Inhalt der Current Tabelle nicht als Dropdown ausgewertet wird.
Denn dann geht es beim Speichern schief.
Stimmt ich habe tatsächlich im Editor eine DropDown-Liste und keine Eingabebox. Danke für den Hinweis
Zitat von: DS_Starter am 03 August 2018, 13:00:55
Dann ist es aber wahrscheinlich nur möglich wenn DbLogType = History ist, also der Inhalt der Current Tabelle nicht als Dropdown ausgewertet wird.
Denn dann geht es beim Speichern schief.
so schauts aus!
Hab ich seinerzeit auch lange gebraucht das zu checken. :)
Vielleicht liest Rudi mit und ergänzt den Editor bei Gelegenheit, damit es auch im Falle der Current-Table Auswertung mit der eigenen Regex-Ergänzung klappt.