FTUI Neue Version chart_widget

Begonnen von eki, 31 Januar 2016, 00:17:26

Vorheriges Thema - Nächstes Thema

eki

Bisher geht das nicht. Einige der Parameter können aus FHEM readings gefüllt werden (z.B. data-max_value). Wäre Dir geholfen, wenn man auch die Start- und Endwerte für die X-Achse aus Readings holen könnte?
Wenn ich Deine Frage richtig verstehe, dann möchtest Du alle Werte, die im Logfile sind im Chart sehen, falls nicht, musst Du mir das etwas genauer erklären.

romakrau

Danke für Deine Antwort. Ich dachte an die Möglichkeit aus dem Log-file das Anfangs- und das Enddatum der Einträge zu extrarieren und damit die Parameter daysago.... zu füllen. Zweck wäre ein selbstständig wachsendes Diagramm. Das mit den readings müsste ich mir mal anschauen. Hättest du vielleicht ein Beispiel, denn mit dem regex stehe ich noch etwas auf dem Kriegsfuss.
Gruß
Roman

eki

Das mit den Readings ist relativ einfach. Mal angenommen, es gäbe in FHEM ein Device mit Namen A und dieses Device hätte ein Reading B, in dem die Zahl 10 als Wert steht, dann könnte man data-maxvalue="A:B" setzen und das Chart würden den Maximalwert für die X-Achse entsprechend dem Reading setzen (aktuell eben 10). Im Fall der X-Achse könnte ich so etwas einbauen. In FHEM müssten dann Readings (userreading) gefüllt werden, die die entsprechenden Daten bereitstellen.
Für Deinen Fall könntest Du mal probieren, ob data-daysago_end="now" zumindest beim Ende das macht, was Du möchtest (der Anfang des Logfiles sollte sich ja nicht ändern).

romakrau

Das Logfile lässt sich ja dynamisch über die Periode verschieben. Ich habe z.B. Raumdaten je KW aufgezeichnet. So ist bei der aktuellen Datei das Ende immer now aber der Anfang ist now - n Tage. Mal schauen wie ich das vieleicht gereglt bekommen. Danke erstmal für deine Hilfe.

eki

OK, ich glaube ich habe es jetzt verstanden, denke ich. Du möchtest, dass der Inhalt des Charts quasi nach links heraus geschoben wird, wenn rechts neue Werte erscheinen (stimmt das?).
Das geht bisher nicht (mit now als daysago_end würde das Chart quasi immer weiter zusammen gestaucht, weil der Anfang ja fest bleibt), ich werde mir mal Gedanken machen (sollte kein allzu großer Aufwand sein, z.B. so wie  von Dir vorgeschlagen, "now - x", wobei x eigentlich dann alles sein kann, was relative Werte betrifft z.B. now - 3w wäre dann 3 wochen vor "jetzt" und das chart würde eine drei Wochen Periode "durchschieben") und das versuchen einzubauen.

romakrau

#530
Tja habe immer etwas Schwierigkeiten ich verstänlich zu machen. Links heraus schieben trifft es nicht ganz. Der Anfang sollte dem Datum des ersten Logfile Eintrages entsprechend. z.b. Erstes Datum 01.01.2020 (bleibt fix) Logfile wächst nach rechts bis now. Würde mch freuen wenn es klappt. Auf jeden Fall schon mal Dank für deine Anworten.
Gruß Roman

Nachtrag: Müsste grob gesprochen sowas wie daysago_start = now - erstes_datum_in logfile werden. Könnte vielleicht ein neuer Parameter werden?

eki

#531
Ich hab mir das noch mal angeschaut, es muss (hoffentlich) gar nichts am Code geändert werden (ich weiß eben auch nicht mehr alles auswendig obwohl ich das alles selbst verbrochen habe  :-\). Folgendes ist zu beachten:

1. Du musst data-device richtig setzen. Hier sollte das Device stehen, welches die Readings erzeugt (und ändert). Nur dann bekommt das Chart Events mit, die durch Änderungen der Readings von FHEM generiert werden und kann sich atualisieren, sprich weiterschieben.
2. Es gibt ja bereits Zeitangaben, die relativ zu "now" sind. Nämlich eigentlich fast alle Optionen für data-daysago... mit Außnahme der absoluten Zeitagaben als Zeitstring (z.B. "2013-08-13T00:00:00"). Wenn Du also z.B.
data-daysago_start="3h"
data-daysago_end="now"
setzt, dann zeigt das Chat die Zeit von vor 3 Stunden bis jetzt. Wenn immer sich das Reading ändert und ein neuer Wert des Readings ins Logfile geschrieben wird, dann erneuert sich das Chart automatisch und passt sich dann wieder auf die letzten 3 Stunden an. Wenn Du statt "3h" "3H" setzt, dann wird gerundet auf ganze Stunden, das Ganze wird dann nur einmal pro Stunde um eine ganze Stunde geschoben.
3. Wenn Du nicht willst, dass nur in ganzen Tagen gerechnet wird (und dann nur einmal am Tag geschoben wird), dann musst Du noch
data-nofulldays="true"
setzen.
Statt "h" kannst Du auch "d" "w" "m" und "y" setzen, dann sind die Zeitangaben eben in Tagen, Wochen, Monaten oder Jahren.

romakrau

Hallo Eki,
ist schon verstanden. Ich probiere es einfach noch etwas. Danke für die Antworten.
Gruß
Roman

Lichti

Hab mal den Parameter "data-xticks_round" auf "auto" gesetzt. Die Darstellung hiermit gefällt mir sehr gut.
Allerdings wird mit dieser Einstellung das Datum unten rechts mit der Zeit überschrieben.
Lasse ich "data-xticks_round" weg, passiert das nicht.

TWART016

#534
Hallo,

kann wir jemand sagen wie ich die roten Werte als Linie bekomme, also wie die anderen und nicht jeder Wert von unten nach oben führend und zurück?

Edit:
<div data-type="chart"
data-device="Xiaomi_AirPurifier3_slave"
data-logdevice="Xiaomi_AirPurifier3_slave_FileLog"
data-title="Xiaomi Air Purifier"
data-title_class="myWhite"
data-height="420px"
data-ptype="lines"
data-minvalue="15"
data-maxvalue="60"
data-minvalue_sec="0"
data-maxvalue_sec="40"
data-yunit=" °C / %"
data-yunit_sec=" µg/m³"
data-yticks="5"
data-yticks_sec="2"
data-xticks="120"
data-nofulldays="true"
data-daysago_start="-6H"
data-columnspec='["4:temperature","4:humidity","4:pm25","4:pm25_average"]'
data-uaxis='["primary","primary","secondary","secondary"]'
data-style='["ftui l0dot","ftui l1dot","ftui l2dot","ftui l3dot"]'
data-legend='["Temperature","Luftfeuchtigkeit","pm2.5","pm2.5 average"]'
data-cursorgroup="1"
data-crosshair="true"
data-showlegend="true"
data-show_both_axes="false"
class="fullsize"
></div>

amenomade

Zitat von: TWART016 am 23 April 2020, 22:38:52
Hallo,

kann wir jemand sagen wie ich die roten Werte als Linie bekomme, also wie die anderen und nicht jeder Wert von unten nach oben führend und zurück?

Edit:
<div data-type="chart"
data-device="Xiaomi_AirPurifier3_slave"
data-logdevice="Xiaomi_AirPurifier3_slave_FileLog"
data-title="Xiaomi Air Purifier"
data-title_class="myWhite"
data-height="420px"
data-ptype="lines"
data-minvalue="15"
data-maxvalue="60"
data-minvalue_sec="0"
data-maxvalue_sec="40"
data-yunit=" °C / %"
data-yunit_sec=" µg/m³"
data-yticks="5"
data-yticks_sec="2"
data-xticks="120"
data-nofulldays="true"
data-daysago_start="-6H"
data-columnspec='["4:temperature","4:humidity","4:pm25","4:pm25_average"]'
data-uaxis='["primary","primary","secondary","secondary"]'
data-style='["ftui l0dot","ftui l1dot","ftui l2dot","ftui l3dot"]'
data-legend='["Temperature","Luftfeuchtigkeit","pm2.5","pm2.5 average"]'
data-cursorgroup="1"
data-crosshair="true"
data-showlegend="true"
data-show_both_axes="false"
class="fullsize"
></div>

Wie sehen die Werte in der Log aus?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

TWART016

z.B.
2020-04-23_22:35:02 Xiaomi_AirPurifier3_slave speed: 390
2020-04-23_22:35:02 Xiaomi_AirPurifier3_slave pm25: 12
2020-04-23_22:35:02 Xiaomi_AirPurifier3_slave temperature: 23.5
2020-04-23_22:35:02 Xiaomi_AirPurifier3_slave humidity: 38
2020-04-23_22:30:02 Xiaomi_AirPurifier3_slave pm25_average: 1
2020-04-23_22:30:02 Xiaomi_AirPurifier3_slave speed: 390
2020-04-23_22:30:02 Xiaomi_AirPurifier3_slave pm25: 21
2020-04-23_22:30:02 Xiaomi_AirPurifier3_slave temperature: 23.5
2020-04-23_22:30:02 Xiaomi_AirPurifier3_slave humidity: 37
2020-04-23_22:25:02 Xiaomi_AirPurifier3_slave pm25_average: 1
2020-04-23_22:25:02 Xiaomi_AirPurifier3_slave speed: 388
2020-04-23_22:25:02 Xiaomi_AirPurifier3_slave pm25: 21
2020-04-23_22:25:02 Xiaomi_AirPurifier3_slave temperature: 23.5
2020-04-23_22:25:02 Xiaomi_AirPurifier3_slave humidity: 37
2020-04-23_22:20:02 Xiaomi_AirPurifier3_slave pm25_average: 1
2020-04-23_22:20:02 Xiaomi_AirPurifier3_slave speed: 390
2020-04-23_22:20:02 Xiaomi_AirPurifier3_slave pm25: 21
2020-04-23_22:20:02 Xiaomi_AirPurifier3_slave temperature: 23.5
2020-04-23_22:20:02 Xiaomi_AirPurifier3_slave humidity: 37
2020-04-23_22:15:02 Xiaomi_AirPurifier3_slave pm25_average: 1
2020-04-23_22:15:02 Xiaomi_AirPurifier3_slave speed: 390
2020-04-23_22:15:02 Xiaomi_AirPurifier3_slave pm25: 21
2020-04-23_22:15:02 Xiaomi_AirPurifier3_slave temperature: 23.5
2020-04-23_22:15:02 Xiaomi_AirPurifier3_slave humidity: 37
2020-04-23_22:10:02 Xiaomi_AirPurifier3_slave pm25_average: 1
2020-04-23_22:10:02 Xiaomi_AirPurifier3_slave speed: 389
2020-04-23_22:10:02 Xiaomi_AirPurifier3_slave pm25: 21
2020-04-23_22:10:02 Xiaomi_AirPurifier3_slave temperature: 23.5
2020-04-23_22:10:02 Xiaomi_AirPurifier3_slave humidity: 37
2020-04-23_22:05:02 Xiaomi_AirPurifier3_slave pm25_average: 1
2020-04-23_22:05:02 Xiaomi_AirPurifier3_slave speed: 389
2020-04-23_22:05:02 Xiaomi_AirPurifier3_slave pm25: 21
2020-04-23_22:05:02 Xiaomi_AirPurifier3_slave temperature: 23.5
2020-04-23_22:05:02 Xiaomi_AirPurifier3_slave humidity: 37
2020-04-23_22:00:20 Xiaomi_AirPurifier3_slave speed: 384
2020-04-23_21:58:31 Xiaomi_AirPurifier3_slave pm25_average: 1
2020-04-23_21:58:31 Xiaomi_AirPurifier3_slave speed: 0
2020-04-23_21:58:31 Xiaomi_AirPurifier3_slave pm25: 32
2020-04-23_21:58:31 Xiaomi_AirPurifier3_slave temperature: 23.5
2020-04-23_21:58:31 Xiaomi_AirPurifier3_slave humidity: 36
2020-04-23_21:53:31 Xiaomi_AirPurifier3_slave pm25_average: 1
2020-04-23_21:53:31 Xiaomi_AirPurifier3_slave speed: 0
2020-04-23_21:53:31 Xiaomi_AirPurifier3_slave pm25: 32
2020-04-23_21:53:31 Xiaomi_AirPurifier3_slave temperature: 23.5
2020-04-23_21:53:31 Xiaomi_AirPurifier3_slave humidity: 36
2020-04-23_21:48:31 Xiaomi_AirPurifier3_slave pm25_average: 1
2020-04-23_21:48:31 Xiaomi_AirPurifier3_slave speed: 0
2020-04-23_21:48:31 Xiaomi_AirPurifier3_slave pm25: 32
2020-04-23_21:48:31 Xiaomi_AirPurifier3_slave temperature: 23.5
2020-04-23_21:48:31 Xiaomi_AirPurifier3_slave humidity: 36
2020-04-23_21:43:31 Xiaomi_AirPurifier3_slave pm25_average: 1
2020-04-23_21:43:31 Xiaomi_AirPurifier3_slave speed: 0
2020-04-23_21:43:31 Xiaomi_AirPurifier3_slave pm25: 32
2020-04-23_21:43:31 Xiaomi_AirPurifier3_slave temperature: 23.5
2020-04-23_21:43:31 Xiaomi_AirPurifier3_slave humidity: 36
2020-04-23_21:38:31 Xiaomi_AirPurifier3_slave pm25_average: 1
2020-04-23_21:38:31 Xiaomi_AirPurifier3_slave speed: 0
2020-04-23_21:38:31 Xiaomi_AirPurifier3_slave pm25: 32
2020-04-23_21:38:31 Xiaomi_AirPurifier3_slave temperature: 23.5
2020-04-23_21:38:31 Xiaomi_AirPurifier3_slave humidity: 36
2020-04-23_21:33:31 Xiaomi_AirPurifier3_slave pm25_average: 1
2020-04-23_21:33:31 Xiaomi_AirPurifier3_slave speed: 0
2020-04-23_21:33:31 Xiaomi_AirPurifier3_slave pm25: 40
2020-04-23_21:33:31 Xiaomi_AirPurifier3_slave temperature: 23.5
2020-04-23_21:33:31 Xiaomi_AirPurifier3_slave humidity: 36
2020-04-23_21:28:31 Xiaomi_AirPurifier3_slave pm25_average: 1
2020-04-23_21:28:31 Xiaomi_AirPurifier3_slave speed: 0
2020-04-23_21:28:31 Xiaomi_AirPurifier3_slave pm25: 40
2020-04-23_21:28:31 Xiaomi_AirPurifier3_slave temperature: 23.5
2020-04-23_21:28:31 Xiaomi_AirPurifier3_slave humidity: 36
2020-04-23_21:23:31 Xiaomi_AirPurifier3_slave pm25_average: 1
2020-04-23_21:23:31 Xiaomi_AirPurifier3_slave speed: 0
2020-04-23_21:23:31 Xiaomi_AirPurifier3_slave pm25: 40
2020-04-23_21:23:31 Xiaomi_AirPurifier3_slave temperature: 23.5
2020-04-23_21:23:31 Xiaomi_AirPurifier3_slave humidity: 36



amenomade

Hmm komisch

Theoretisch kann data-ptype auch als Array definiert werden. Vielleicht kannst Du es probieren?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

TWART016

Zitat von: amenomade am 25 April 2020, 01:25:01
Hmm komisch

Theoretisch kann data-ptype auch als Array definiert werden. Vielleicht kannst Du es probieren?

Auch damit sieht es gleich aus
data-ptype='["lines","lines","lines","lines"]'

eki

Das hat mit dem Plottype gar nichts zu tun, sondern mit columnspec (habe ich auch schon mehrfach erklärt  ;))

In Deinem Logfile gibt es (mindestens) 2 Einträge, die den String "pm25" enthalten. Ein Teil der columnspec (nämlich der nach der Zahl und dem Device) gibt in Form einer regular Expression an, welche Teile aus dem Logfile heraus gefiltert werden sollen, um dann letztenlich die einzelnen Punkte zur Erstellung des Graphen zu erhalten.
Du hast für die rote Linie die regular Expression 'pm25' genommen. Damit werden aber alle Zeilen heraus gefiltert, die irgendwie pm25 enthaten, also auch die, die 'pm25_average' enthalten. So entsteht eine Liste, die immer abwechelnd die "wirklichen" pm25 Werte und die pm25_average Werte enthält, und die wird geplottet, was dazu führt, dass der Graph immer hin und herspringt.
Wenn Du das verhindern wllst, musst Du die regular expression so machen, dass wirklich nur die 'pm25:' Werte herausgefiltert werden. Das würde z.B. so gehen (das \x3a ist der Hexcode für den Doppelpunkt und der \ davor ist für die Maskierung des \ notwendig, eventuell geht statt '\\x3a' auch '\\:'), dann wird auf den Doppelpunkt mit gefiltert und pm25_average sollte für diesen Graphen weggefiltert werden:

data-columnspec='["4:temperature","4:humidity","4:pm25\\x3a","4:pm25_average"]'