FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: CottonIJo am 07 Juni 2020, 23:00:11

Titel: [gelöst] FTUI chart, binäre Darstellung eines Fensterkontakts
Beitrag von: CottonIJo am 07 Juni 2020, 23:00:11
Hallo,
ich habe ein Problem mit der Syntax der binären Darstellung von Signalen im ftui.
so habe ich das html file definiert

                    <div data-type="chart"
                        data-logdevice='["FileLog_10_EG_Toilette_Fenster_Sensor"]'
                        data-columnspec='["10_EG_Toilette_Fenster_Sensor::$val=($fld[2])"]'
                        data-style='["ftui l2"]'
                        data-ptype='["steps"]'
                        data-uaxis='["primary"]'
                        data-legend='["open-closed"]'
                        data-showlegend='["true"]'
                        data-legendpos='["right","top"]'
                        data-yunit=""
                        data-ytext="Status"
                        data-minvalue="-0.1"
                        data-maxvalue="1.1"
                        data-yunit_sec="%"
                        data-ytext_sec=""
                        data-height="350"
                        data-yticks='[[0,"closed"],[1,"open"]]'
                        data-minvalue_sec=""
                        data-maxvalue_sec=""
                        data-nofulldays="true"
                        data-daysago_start="0"
                        data-daysago_end="0"
                        data-cursorgroup="1"
                        data-scrollgroup="1"
                        data-xticks="auto">
                    </div>   


und so steht es im Logfile


2020-06-01_00:19:01 10_EG_Toilette_Fenster_Sensor alive: yes
2020-06-01_00:19:01 10_EG_Toilette_Fenster_Sensor battery: ok
2020-06-01_00:19:01 10_EG_Toilette_Fenster_Sensor contact: closed (to VCCU)
2020-06-01_00:19:01 10_EG_Toilette_Fenster_Sensor sabotageError: off
2020-06-01_00:19:01 10_EG_Toilette_Fenster_Sensor closed
2020-06-01_00:19:01 10_EG_Toilette_Fenster_Sensor Batt_timestamp_Toilette_Fenster_Sensor: 2020-06-01 00:19:01
2020-06-01_01:16:19 10_EG_Toilette_Fenster_Sensor alive: yes
2020-06-01_01:16:19 10_EG_Toilette_Fenster_Sensor battery: ok
2020-06-01_01:16:19 10_EG_Toilette_Fenster_Sensor contact: closed (to VCCU)
2020-06-01_01:16:19 10_EG_Toilette_Fenster_Sensor sabotageError: off
2020-06-01_01:16:19 10_EG_Toilette_Fenster_Sensor closed
2020-06-01_01:16:19 10_EG_Toilette_Fenster_Sensor Batt_timestamp_Toilette_Fenster_Sensor: 2020-06-01 01:16:19
2020-06-01_02:07:37 10_EG_Toilette_Fenster_Sensor alive: yes
2020-06-01_02:07:37 10_EG_Toilette_Fenster_Sensor battery: ok
2020-06-01_02:07:37 10_EG_Toilette_Fenster_Sensor contact: closed (to VCCU)
2020-06-01_02:07:37 10_EG_Toilette_Fenster_Sensor sabotageError: off
2020-06-01_02:07:37 10_EG_Toilette_Fenster_Sensor closed
2020-06-01_02:07:37 10_EG_Toilette_Fenster_Sensor Batt_timestamp_Toilette_Fenster_Sensor: 2020-06-01 02:07:37
2020-06-01_03:02:16 10_EG_Toilette_Fenster_Sensor alive: yes
2020-06-01_03:02:16 10_EG_Toilette_Fenster_Sensor battery: ok
2020-06-01_03:02:16 10_EG_Toilette_Fenster_Sensor contact: closed (to VCCU)
2020-06-01_03:02:16 10_EG_Toilette_Fenster_Sensor sabotageError: off
2020-06-01_03:02:16 10_EG_Toilette_Fenster_Sensor closed
2020-06-01_03:02:16 10_EG_Toilette_Fenster_Sensor Batt_timestamp_Toilette_Fenster_Sensor: 2020-06-01 03:02:16
2020-06-01_03:57:04 10_EG_Toilette_Fenster_Sensor alive: yes
2020-06-01_03:57:04 10_EG_Toilette_Fenster_Sensor battery: ok
2020-06-01_03:57:04 10_EG_Toilette_Fenster_Sensor contact: closed (to VCCU)
2020-06-01_03:57:04 10_EG_Toilette_Fenster_Sensor sabotageError: off
2020-06-01_03:57:04 10_EG_Toilette_Fenster_Sensor closed
2020-06-01_03:57:04 10_EG_Toilette_Fenster_Sensor Batt_timestamp_Toilette_Fenster_Sensor: 2020-06-01 03:57:04
2020-06-01_04:57:11 10_EG_Toilette_Fenster_Sensor alive: yes
2020-06-01_04:57:11 10_EG_Toilette_Fenster_Sensor battery: ok
2020-06-01_04:57:11 10_EG_Toilette_Fenster_Sensor contact: closed (to VCCU)
2020-06-01_04:57:11 10_EG_Toilette_Fenster_Sensor sabotageError: off
2020-06-01_04:57:11 10_EG_Toilette_Fenster_Sensor closed
2020-06-01_04:57:11 10_EG_Toilette_Fenster_Sensor Batt_timestamp_Toilette_Fenster_Sensor: 2020-06-01 04:57:11


Leider wird keine Signallinie gezeichnet, wie muss es richtig im html file heißen?

Grüße Joachim
Titel: Antw:FTUI chart, binäre Darstellung eines Fensterkontakts
Beitrag von: CottonIJo am 09 Juni 2020, 16:32:13
noch mal nach oben geholt, keiner eine Idee?
Titel: Antw:FTUI chart, binäre Darstellung eines Fensterkontakts
Beitrag von: eki am 10 Juni 2020, 11:07:30
Schau Dir mal das FTUI Chart Wiki an, da ist am Ende ein Beispiel zu genau dem Thema. Grundsätzlich musst Du dafür sorgen dass aus den Texten (open, closed, ...) erst mal Zahlen werden, das Chart braucht intern immer Zahlen zu malen der Graphen. Danach kannst Du durch entsprechende Beschriftung der Achsen (data-yticks) wieder dafür sorgen, dass es dann wieder wie Zustände aussieht.
Vergleiche mal data-columnspec und data-yticks aus dem Wiki mit Deiner Definition.
Titel: Antw:FTUI chart, binäre Darstellung eines Fensterkontakts
Beitrag von: CottonIJo am 10 Juni 2020, 18:57:12
Hallo eki,

das Beispiel aus dem wiki war meine Vorlage, nur, im Filelog wird es halt deutlich anders abgelegt als in dem Beispiel des wikis.
Ich denke, data-yticks='[[0,"closed"],[1,"open"]]' funktioniert, auch weil im Filelog "closed" und "open" verwendet wird.

Bei data-columnspec wird es schon komplizierter, verwende ich
data-columnspec='["10_EG_Toilette_Fenster_Sensor:0::$fld[3]=($fld[3]=~\\x22open\\x22?1:0)"]'
bekomme ich ein Bild wie im Anhang

das kann aber nicht richtig sein, weil auf dem screenshot zum Heizkörperventil zu sehen ist (siehe screenshot), wann das Fenster auf ist, immer dann, wenn "desired temp" auf 8grd Celsius geht.
Das gibt der screenshot vom Fenstersensor nicht wieder. Auch kann doch ($fld[3] nicht richtig sein, da "open", "closed" in Spalte 2 im Filelog steht (Zählbeginn bei 0)

Verwende ich data-columnspec='["10_EG_Toilette_Fenster_Sensor:0::$fld[2]=($fld[2]=~\\x22open\\x22?1:0)"]', bekomme ich aber das gleiche Bild. (bin verwirrt)

Ich kann mit der Zeichen, Zahlen, Buchstabenkombination ... =~\\x22open\\x22?1:0) nichts anfangen, was bedeutet diese?
Konkret gefragt, wie muss data columnspec lauten wenn ich aus dem Filelog die Zeilen "2020-06-01_01:16:19 10_EG_Toilette_Fenster_Sensor closed" und "2020-06-01_01:16:19 10_EG_Toilette_Fenster_Sensor open" auswerten möchte? (siehe auch Anfangsthread)

Grüße Joachim
Titel: Antw:FTUI chart, binäre Darstellung eines Fensterkontakts
Beitrag von: eki am 10 Juni 2020, 19:45:53
Das Entscheidende ist data-columnspec die Syntax für FileLog sieht folgendermaßen aus (kann man auch hier  https://wiki.fhem.de/wiki/Plots_erzeugen (https://wiki.fhem.de/wiki/Plots_erzeugen) und bei der Commandref zu FileLog get nachlesen  https://fhem.de/commandref.html#FileLogget (https://fhem.de/commandref.html#FileLogget)). Die Columnspec besteht aus Parametern, die durch : getrennt sind. Bei FileLog muss da am Anfang immer eine Zahl stehen, die angibt, in welcher ,,Spalte" (durch Leerzeichen getrennt) innerhalb einer Zeile der eigentliche Wert steht (müsste bei Dir die 3 sein, weil die erste ,,Spalte" das Datum und die Zeit enthält, die Zweite den Namen des Gerätes und die Dritte closed etc). Danach kommt der erste : und dann eine regular Expression, die aus allen Zeilen im File diejenigen herausfiltert, um die es beim Plot gehen soll. Dann wieder ein : und ein möglicher Default Wert, danach eine mögliche Funktion, die den herausgefilterten Wert irgendwie umwandelt. Hier ist (blöderweise, habe ich nicht erfunden) zu beachten, dass  es eine Möglichkeit gibt nochmal auf die einzelnen Spalten mit $fld[index] zuzugreifen, hier aber das Ganze mit 0 und nicht mit 1 beginnt.

Bei Dir müsste das ungefähr so aussehen:


data-columnspec='["3:10_EG_Toilette_Fenster_Sensor.(open|closed):0:$fld[2]=($fld[2]=~\\x22open\\x22?1:0)"]'


Die \\x22 entsprechen dem ASCII Zeichen mit dem Hexcode 22 also nichts anderes als dem Zeichen " (weil die Anführungszeichen schon für andere Zwecke verwendet werden, muss man die Inneren so maskieren). Die Formel bedeutet also nichts anderes als "wenn der Wert in der 3. Spalte "open" ist liefere 1 zurück ansonsten 0. Ich habe bei der Filterregexp noch ausschließlich auf die Zeilen gefiltert, die Ein Zeichen (der.) nach dem Devicenamen entweder "open" oder "closed" enthalten, sonst würden relativ viele 0 Werte mit geplottet werden, das kannst Du aber auch weglassen.
Titel: Antw:FTUI chart, binäre Darstellung eines Fensterkontakts
Beitrag von: CottonIJo am 10 Juni 2020, 22:54:20
Hallo eki,

danke für die sehr umfangreiche Erklärung und Hinweise, sehr hilfreich um die Syntax etwas besser zu verstehen.
Dein Vorschlag für data-columnspec ist ein Volltreffer, siehe screenshot. Damit kann ich jetzt weiterarbeiten.