Probleme mit Chart und Shutter

Begonnen von accessburn, 27 Juni 2017, 10:26:22

Vorheriges Thema - Nächstes Thema

accessburn

<div class="normal fullsize" data-type="chart" data-cfg-device="1"
data-logdevice='["FileLog_LaCrosse_1B","FileLog_MAX_1339d8"]'

data-columnspec='["4:LaCrosse_1B.temperature","FileLog_MAX_1339d8:state:0::$val=($val=~\\x22opened\\x22?1:0)"]'
data-yticks="[[0,"closed"],[1,"opened"]]"

data-style='["ftui l1dot","ftui l4fill"]' data-ptype='["quadraticSmooth"]' data-uaxis='["primary"]'
data-legend='["Wohnzimmer","Fenster"]' data-yunit="&deg;C" data-minvalue="-10" data-maxvalue="45"
data-daysago_start="0" data-daysago_end="-1" data-crosshair="true" data-xticks="auto"
data-showlegend="false" data-nofulldays="true" data-cursorgroup="1" data-scrollgroup="1"></div>


Kann mal bitte jemand drüber schauen?
Die Temperatur vom LaCrosse geht Problemlos, aber als ich den Fenstershutter hinzugefügt habe passierte nicht viel. Ich denke es wird an columnspec und yticks liegen.

Das schreibt der Shutter ins Log:
Zitat2017-06-27_10:13:07 MAX_1339d8 battery: ok
2017-06-27_10:13:07 MAX_1339d8 onoff: 1
2017-06-27_10:13:07 MAX_1339d8 opened
2017-06-27_10:13:07 MAX_1339d8 RSSI: -40


Grüße aus Ffm,
Toby
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

eki

Ändere mal die Zeile

data-yticks="[[0,"closed"],[1,"opened"]]"

nach

data-yticks='[[0,"closed"],[1,"opened"]]'

(mit verschachtelten " kommt das System nicht klar)

accessburn

Sieht lustig aus jetzt :-)

Siehe Anhang:
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

eki

na ja, Du machst Die Temperatur und den Fensterstatus auf die gleiche Achse. Das bedeutet, dass der Fensterstatus, der ja zwischen 0 und 1 liegt, nur einen geringen Platz einnimmt (die Ganze Achse soll ja laut Deinen Angaben von -10 bis +45 anzeigen.
Wenn Du statt:

data-uaxis='["primary"]'


data-uaxis='["primary","secondary"]'


setzt, dann sollte es besser aussehen.

Und wo wir schon dabei sind, macht meines Erachtens "quadraticSmooth" für die Fenster Status Darstellung auch nicht so richtig viel Sinn, da würde ich mal "steps" vorschlagen. Außerdem noch data-minvalue_sec und data-maxvalue_sec auf 0 und 1

accessburn

Oha,
komplizierter als ich dachte.
Im Anhang deine Änderungsvorschläge, die ich hoffentlich richtig umgesetzt habe. Sieht schlecht aus zumal nun auch der Cursor keine Temperatur mehr anzeigt.
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

eki

Bitte poste Deine Definition, sonst kann ich da wenig beitragen.

accessburn

Sorry, kopiert und vergessen einzufügen  ;D

<div class="normal fullsize" data-type="chart" data-cfg-device="1"
data-logdevice='["FileLog_LaCrosse_1B","FileLog_MAX_1339d8"]'
data-columnspec='["4:LaCrosse_1B.temperature","FileLog_MAX_1339d8:state:0::$val=($val=~\\x22opened\\x22?1:0)"]'
data-style='["ftui l3fill","ftui l4fill"]' data-ptype='["steps"]' data-uaxis='["primary","secondary"]'
data-legend='["Wohnzimmer","Fenster"]' data-yunit="&deg;C" data-minvalue="-10" data-maxvalue="45"
data-yticks='[[0,"closed"],[1,"opened"]]' data-daysago_start="0" data-daysago_end="-1"
data-crosshair="true" data-xticks="auto" data-showlegend="false" data-nofulldays="true" data-cursorgroup="1" data-scrollgroup="1"
data-minvalue_sec="0" data-maxvalue_sec="1"></div>
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

eki

nachdem Du die Geschichte mit dem Fensterstatus auf die sekundäre Achse verlegt hast, musst Du auch das Mapping für die sekundäre Achse festlegen also statt:

data-yticks='[[0,"closed"],[1,"opened"]]'


data-yticks_sec='[[0,"closed"],[1,"opened"]]'

accessburn

ach du großer Gott was ein Aufwand :-)

Temperatur ist wieder wie vorher, jedoch fehlt nach wie vor das Fenster selbst  :'(
Bei 10:15 Uhr etwa war die Tür offen, jedoch sieht man davon nix im chart.
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

eki

Tja, mühsam ernährt sich das Eichhörnchen. Aber die Flexibilität hat halt auch ihren Preis (was nicht heißen soll, dass ich das Ganze nicht hätte intuitiver machen könnnen ;)).

Ich habe mir Deine Spec und den Output noch mal angeschaut. Da ist noch was in der Columnspec falsch (sieh auch das Wiki zu FHEM Plots, die Columnspec hat prinzipiell die gleiche Syntax wie die normalen FHEM Plots). Das Beispiel im Chart Wiki bezieht sich auf das DBLog und da ist die Syntax anders als bei File Logs.

Wenn Du folgendes machst:

data-columnspec='["4:LaCrosse_1B.temperature","4:MAX_1339d8.onoff:0::$val=($val=~\\x22opened\\x22?1:0)"]'

könnte es klappen.

accessburn

Danke eki fürs ansehen. Das macht durchaus Sinn was du mir geschickt hast. Ich hab die "4:" vergessen und mich auf das Log direkt bezogen und nicht auf das Fenster selbst. Dennoch bleibt das chart frei von Fensterkontakt :-)
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

eki

Ja, ich bin irgendwie nicht richtig bei der Sache (kommt davon wenn man zu viel gleichzeitigt macht).

Wenn das Filter so gesetzt ist wie ich es vorgeschlagen habe, dann werden ja aus dem gesamten Log die Zeilen herausgefiltert welche "MAX_1339d8 onoff" enthalten und dann die 4. Spalte (Trenner ist " ") als Plotwert genommen. Dort steht dann ja schon eine 1 oder 0 (nehme ich jedenfalls nach Deinem Beispiel an). Du musst also das Umrechnen in der Columnspec weglassen (in der Anzeige wird das dann durch data-yticks_sec auf open und closed gemappt).

data-columnspec='["4:LaCrosse_1B.temperature","4:MAX_1339d8.onoff:0"]'

accessburn

So ganz verstehe ich das mit dem onoff nicht. das "closed", "opened" oder "closed (rf-error)" steht in der Zeile unter onoff.
Die 1 oder 0 hinter onoff ist nicht der Fensterstatus.

Sollte ich falsch liegen, ignorier mich einfach :D
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

eki

Ich kenne leider die Max logs nicht. Meine Annahme war, dass mit jeder Statusänderung mehrere Einträge ins Log kommen und dass die Zeile mit inoffiziell den Status als Zahl darstellt und die Zeile mit opened eben den Status im Klartext. Für die Plots könntest Du in dem Fall beide Varianten nehmen. Entweder Du machst aus dem Klartext durch die komplizierte Anweisung im Columnspec erst Zahlen, oder Du nimmst die Zahlen direkt (so wie ich das vorgeschlagen habe). Wenn Du die andere Variante nehmen willst, musst Du aber im Filterte der Columnspec das .onoff weglassen und eine 3 an den Anfang setzen (der Werr steht in den Zeilen dann ja an der 3. Stelle)

accessburn

Ja leider steht in der 3 der eigentliche Status. Das onoff ist (so weit ich weiß) nur der Zustand des Schlafmodus in den das Ding fällt.
Diverse Spielereien, genau auf diese Variante halfen leider nichts.

Aktuell ist das spec so:
Zitat3:MAX_1339d8:0::$val=($val=~\\x22opened\\x22?1:0)
3, da opened in der dritten Zeile steht und das ".onoff" raus.
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

eki

die 3 (erster durch ':' getrennter Wert inder Columnspec) Steht für die Spalte und nicht für die Zeile, sollte aber passen.
Das Problem dabei ist das Filter (also das was als nächstes nach der Spalte kommt (zweiter durch ':' getrennter Wert in der Columnspec). Hier filterst Du nach allen Zeilen, die 'MAX_1339d8' enthalten, das sind aber alle Zeilen. Dadurch wird Dir die Abfrage bei FHEM, die widget_chart.js aus den Inputs zusammenbaut, alles zurückliefern was in der 3 Spalte steht, also auch "battery:", "onoff:" etc. Das erzeugt zusätzliche Punkte im Graphen, für die kein Wert zugewiesen ist (Details zur Spec siehe https://wiki.fhem.de/wiki/Creating_Plots).
Was Du also bräuchtest, ist ein Filter, das nur die Zeilen mit 'opened', 'closed', 'tilted' heraus filtert. Probier es mal damit:

3:MAX_1339d8.(opened|closed|tilted):0:$fld[2]=$fld[2]=~\\x22opened\\x22?1:0

accessburn

Keine Veränderung.

Seit der letzten Anpassung stehen im Log nur noch der tatsächliche Status.
Mit 0 oder 1 war der Status des Shutters nicht angegen, sondern nur so:

Zitat017-06-27_12:03:56 MAX_1339d8 opened
2017-06-27_12:04:01 MAX_1339d8 opened (rf error)
2017-06-27_13:34:27 MAX_1339d8 opened
2017-06-27_18:38:51 MAX_1339d8 closed
2017-06-27_18:38:57 MAX_1339d8 closed (rf error)
2017-06-27_18:46:46 MAX_1339d8 opened
2017-06-27_18:46:49 MAX_1339d8 opened (rf error)
2017-06-27_19:28:48 MAX_1339d8 opened
2017-06-28_11:21:56 MAX_1339d8 closed
2017-06-28_11:21:59 MAX_1339d8 opened
2017-06-28_11:22:04 MAX_1339d8 opened (rf error)
2017-06-28_12:14:21 MAX_1339d8 opened
2017-06-29_14:53:49 MAX_1339d8 closed
2017-06-29_14:53:55 MAX_1339d8 closed (rf error)
2017-06-29_15:50:43 MAX_1339d8 closed
2017-06-29_16:38:29 MAX_1339d8 opened
2017-06-29_16:38:32 MAX_1339d8 opened (rf error)
2017-06-29_16:49:52 MAX_1339d8 opened
2017-06-29_22:05:05 MAX_1339d8 closed
2017-06-29_22:05:09 MAX_1339d8 closed (rf error)
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

eki

#17
Also, ich habe jetzt mal mit folgender Chart Definition und Deinem Logfile Ausschnitt getestet:


<div data-type="chart"
data-logdevice="FileLog_BMP180"
data-columnspec='["3:MAX_1339d8.(opened|closed|tilted):0:$fld[2]=$fld[2]=~\\x22opened\\x22?1:0"]'
data-style="ftui l4fill"
data-ptype="steps"
data-legend="Fenster AUF/ZU"
data-yticks='[[0,"closed"],[1,"opened"]]'
data-minvalue="0"
data-maxvalue="1.1"
data-nofulldays="true"
data-daysago_start="8"
data-daysago_end="6"
data-xticks="auto"
data-cursorgroup="1"
data-scrollgroup="1"
</div>


und dabei kam bei mir das angehängte Ergebnis raus.

Bitte prüfe mal, ob Du die letzte widget_chart.js Version aus
https://forum.fhem.de/index.php?action=dlattach;topic=48450.0;attach=77282 verwendest.

accessburn

#18
Okay, hatte 2.5 drauf.
jetzt hab ich die alte gekillt, die neue draufgespielt, Rechte und Besitzer angepasst, neu gestartet und erhalte ein "widget_chart:1 Unexpected token"

Was hab ich denn nun wieder verbockt?


EDIT: Nachdem ich erneut ein Update laufen gelassen habe ging es wohl nun.

Jedoch nun eine andere Frage dazu. Es ist Sommer, das Fenster ist sein 2 Tagen gekippt, im Log steht als letzter Eintrag "offen", aber dieser Status wird im Chart nicht beibehalten. Es wird als offen angezeigt vor zwei tagen, dann aber nicht mehr. Das heißt es ist auch weiterhin offen heute, das Chart sagt aber quasi "zu". Gibts da einen Lösungsvorschlag?
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

eki

Falls ich Dich richtig verstehe, hat das Fenster seinen Status lange nicht geändert, und weil das letzte Log nicht heute ist, zeigt das Chart den Default Wert an. Ich sehe 2 Möglichkeiten:

1. Dafür sorgen, dass zumindest 1 mal am Tage ein Eintrag ins Logfile passiert (siehe z.B. Commandref und event-min-interval)
2. durch LogProxy die Information, die das Chart aus FHEM erhält, nach vorne extrapolieren (siehe https://wiki.fhem.de/wiki/LogProxy)

accessburn

Also soweit ich sagen kann geht der Kontakt nach der Statusänderung in den Ruhemodus und hat keinen default mehr. Es zählt quasi nur das letzte Reading. Deine Vorschläge funktionieren bestimmt, jedoch übersteigt das definitiv meinen Wissensstand. Wobei 1. auch nicht zum ziel führt nehme ich an. Es müsste dann schon eine Permanente Abfrage kommen was auch nicht sinn und zweck der Sache wäre :'(
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole