FTUI Neue Version chart_widget

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

Vorheriges Thema - Nächstes Thema

Tobias

Hi eki,
kommt die auch über das normale Update von setstate´s Repository mit rein? Oder hast du ein eigenes? Oder muss ich immer die aktuellste Version von hier kopieren?
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

eki

Normalerweise übernimmt setstate das in das standard repository.

eki


eki

Zitat von: oniT am 02 Februar 2016, 20:32:05
Hallo,

gibt es auch schon eine Möglichkeit ein Kreisdiagramm darzustellen?

Danke,

Gruß
Tino

Die Möglichkeit gibt es jetzt (siehe https://forum.fhem.de/index.php/topic,48450.msg401006.html#msg401006 und https://wiki.fhem.de/wiki/FTUI_Widget_Chart

till24

Hallo zusammen,

ich möchte gerne den Status eines Xiaomi Fensterkontaktes als Diagramm bzw. Graph darstellen. Die "Messwerte" habe ich über logdb (sqlite) abgespeichert. Andere Daten (z. B. Temperaturen) lassen sich darstellen.
Die Device ID lautet: "XMI_158d000130XXXX" (die letzten vier Stellen habe ich ersetzt)

Wenn ich meine sqlite DB manuell abfrage bekomme ich folgendes Ergebnis:

select * from HISTORY where DEVICE="XMI_158d000130XXXX" oder by TIMESTAMP

2017-05-14 08:30:33|XMI_158d000130XXXX|XIAOMISMARTHOME_DEVICE|close|state|close|
2017-05-14 09:30:53|XMI_158d000130XXXX|XIAOMISMARTHOME_DEVICE|close|state|close|
2017-05-14 10:31:12|XMI_158d000130XXXX|XIAOMISMARTHOME_DEVICE|close|state|close|
2017-05-14 11:14:00|XMI_158d000130XXXX|XIAOMISMARTHOME_DEVICE|open|state|open|
2017-05-14 11:36:45|XMI_158d000130XXXX|XIAOMISMARTHOME_DEVICE|open|state|open|
2017-05-14 12:10:47|XMI_158d000130XXXX|XIAOMISMARTHOME_DEVICE|close|state|close|


Mit folgendem Code rufe ich das Diagramm auf:

<div data-type="chart"
data-device="XMI_158d000130XXXX"
data-logdevice="logdb"
data-logfile="HISTORY"
data-columnspec="XMI_158d000130XXXX:state:0::$val=($val=~\\x22open\\x22?1:0)"
data-style="ftui l4fill"
data-ptype="steps"
data-yticks='[[0,"geschlossen"],[1,"offen"]]'
data-legend="Fenster AUF/ZU"
data-minvalue="0"
data-maxvalue="1.1"
data-nofulldays="true"
data-daysago_start="1"
data-daysago_end="-1"
data-cursorgroup="1"
data-scrollgroup="1"
class="fullsize">
</div>


Leider bleibt das Diagramm jedoch leer. Könnt ihr mir helfen, wie ich es gefüllt bekomme?

eki

Es gibt mehrer Möglichkeiten für die columnspec:

1. als Array Element:
data-columnspec='["XMI_158d000130XXXX:state:0::$val=($val=~\\x22open\\x22?1:0)"]'

2. als String:
data-columnspec="XMI_158d000130XXXX:state:0::$val=($val=~\x22open\x22?1:0)"

Wenn man den Parameter als Array Element übergibt, dann wird irgendwie der erste \ vom \\ von javastript entfernt, wenn man nur einen String übergibt, dann nicht. Ich werde mal schauen ob ich da im Chart widget eine Korrektur einbauen kann.

till24

..super, danke dir! mit nur einem "\" geht es dann..

dadoc

Hi Eki,
sorry, aber ich muss mal mit einer ganz dummen Frage kommen. Ich habe eine Logfile, in der ich u.a. die Werte
Wasser
  und
Wassersensor
habe.

Und ich schaffe es nicht, data-columnspec auf "Wasser" zu beschränken, d.h. es holt sich auch immer die Werte von "Wassersensor".
Ich habe
data-columnspec='["4:Pool.Wasser:"]'
versucht, mit Elementen aus meinem überschaubaren Regex-Vorrat anzureichern, z.B. mit "Wasser$" oder "Wasser\b" - ohne Erfolg. In meinem Verständnis hätte es ja ausreichen müssen, den Doppelpunkt nach "Wasser" einzusetzen.
Mit den Backslashvarianten (wie "Wasser\b") bekomme ich fhem sogar zuverlässig zum chrashen, soweit ich das auf die Schnelle beurteilen kann:
[Tue May 30 17:32:31 2017] fhem.pl: Argument "["4" isn't numeric in subtraction (-) at ./FHEM/92_FileLog.pm line 705, <GEN116> line 15.
<h1>Software error:</h1>
<pre>Trailing \ in regex m/Pool.Wasser\/ at ./FHEM/92_FileLog.pm line 754, <GEN116> line 16.
</pre>
<p>
For help, please send mail to this site's webmaster, giving this error message
and the time and date of the error.

</p>
[Tue May 30 17:32:31 2017] fhem.pl: Trailing \ in regex m/Pool.Wasser\/ at ./FHEM/92_FileLog.pm line 754, <GEN116> line 16.


Wie kriege ich denn die Werte nur für Wasser ins Diagramm?
Danke & Grüße
Martin
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

eki

#173
Hallo Martin,

hast Du ein paar Beispielzeilen aus Deinem Logfile.

Grundsätzlich sind die Doppelpunkte erst mal für die Trennung der Felder für fhem für die plot get Funktion da. Falls Du für das Filter (2. durch : getrenntes Feld in der Columnspec) auch noch einen ":" am End haben willst, musst Du den maskieren, damit fhem da nicht durcheinander kommt (ja, man kann mit ungünstigen columnspecs fhem zum Absturz bringen :-/). Was Du versuchen könntest ist data-columnspec='["4:Pool.Wasser\\x3a:"]' (x3a ist der ASCII Code für einen ':')

dadoc

So sieht ein kpl. Datensatz im Log aus:
2017-05-30_16:08:43 Pool Wassersensor: -6.54 V
2017-05-30_16:08:43 Pool Grr: 99.38 mV
2017-05-30_16:08:43 Pool Kesseldruck: -398.08 mBar
2017-05-30_16:08:43 Pool Brr: 2.88 mV
2017-05-30_16:08:43 Pool CPU_Temp: 49.07 C
2017-05-30_16:08:43 Pool Redox: 707.00 mV
2017-05-30_16:08:43 Pool pH: 7.23 pH
2017-05-30_16:08:43 Pool Wasser: 24.06 C
2017-05-30_16:08:43 Pool Luft: 20.44 C
2017-05-30_16:08:43 Pool n.a.: 0.00 C
2017-05-30_16:08:43 Pool n.a.: 0.00 C
2017-05-30_16:08:43 Pool n.a.: 0.00 C
2017-05-30_16:08:43 Pool n.a.: 0.00 C
2017-05-30_16:08:43 Pool n.a.: 0.00 C
2017-05-30_16:08:43 Pool n.a.: 0.00 C
2017-05-30_16:08:43 Pool Polaritaet: 0.00 --
2017-05-30_16:08:43 Pool Zelle: 0.00 --
2017-05-30_16:08:43 Pool ph-: 0.00 --
2017-05-30_16:08:43 Pool Pumpe: 0.00 --
2017-05-30_16:08:43 Pool Hilfsrelais: 0.00 --
2017-05-30_16:08:43 Pool n.a.: 0.00 --
2017-05-30_16:08:43 Pool n.a.: 0.00 --
2017-05-30_16:08:43 Pool HilfsrelaisStand: 1.00 --
2017-05-30_16:08:43 Pool Wasserstand: 1.00 --
2017-05-30_16:08:43 Pool TASTER2: 0.00 --
2017-05-30_16:08:43 Pool TASTER3: 0.00 --
2017-05-30_16:08:43 Pool TASTER4: 0.00 --
2017-05-30_16:08:43 Pool n.a.: 0.00 --
2017-05-30_16:08:43 Pool n.a.: 0.00 --
2017-05-30_16:08:43 Pool n.a.: 0.00 --
2017-05-30_16:08:43 Pool n.a.: 0.00 --
2017-05-30_16:08:43 Pool n.a.: 0.00 --
2017-05-30_16:08:43 Pool n.a.: 0.00 --
2017-05-30_16:08:43 Pool n.a.: 0.00 --
2017-05-30_16:08:43 Pool n.a.: 0.00 --
2017-05-30_16:08:43 Pool Cl_Rest: 66.30 %
2017-05-30_16:08:43 Pool pH-_Rest: 81.70 %
2017-05-30_16:08:43 Pool pH+_Rest: 100.00 %
2017-05-30_16:08:43 Pool Cl_consumption: 0.00 g
2017-05-30_16:08:43 Pool pH-_consumption: 2.00 ml
2017-05-30_16:08:43 Pool pH+_consumption: 0.00 ml
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

eki

Dann versuchs es mal mit der angegebenen Columnspec mit \\x3a

dadoc

Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

Mike081

Hallo

ich kämpfe schon ein paar Tage mit einem "gestapelten" Diagramm. In der Anleitung steht nämlich, dass wenn man hinter einen Linientyp ein :<num> setzt (also z.B. "lines:1"), wobei <num> für eine ganze Zahl steht, dann wird der jeweilige Graph auf den Graph mit der Nummer <num> gestapelt (also auf den Graphen oben drauf gesetzt).

leider funktionier es nicht bei mir.

anbei Code-Snippet:

data-logdevice='["FileLog_PM_Waschmaschine_Pwr","FileLog_CUL_EM_5","FileLog_CUL_EM_6","FileLog_WZlightdummy","FileLog_KHlightdummy"]'
  data-columnspec='["3:WM_AktuellerVerbrauch:","8:5MIN:","8:5MIN:","3:WZlightdummy","3:KHlightdummy"]'
data-style='["ftui l2fill","ftui l1fill","ftui l0fill","ftui 13fill","ftui 14fill"]'
data-ptype='["lines","lines:1","steps","steps","steps"]'
data-uaxis='["primary","primary","primary","primary","primary"]'


danke für Eure Hilfe!

eki

Die Nummerierung der <num> Werte fängt bei 0 an. Wenn Du also den zweiten Graphen auf den ersten in der Liste stapeln willst sollte dort "lines:0" stehen. So wie es bei Dir steht, wird der zweite Graph (der mit der Nummer 1 da bei 0 angefangen wird) auf sich selbst gestapelt, was natürlich keinen großen Sinn macht.
Wie sieht denn Dein Chart mit der aktuellen Definition aus?

Mike081

Hallo Eki,

danke für Deine Hilfe!
leider funktioniert es noch nicht - nun werden nämlich SZ Rechner und WZ TV SET überhaupt nicht gezeigt.

  data-columnspec='["3:WM_AktuellerVerbrauch:","8:5MIN:","8:5MIN:","3:WZlightdummy","3:KHlightdummy"]'
data-style='["ftui l2fill","ftui l1fill","ftui l0fill","ftui l3fill","ftui l4fill"]'
data-ptype='["steps","steps:0","steps:1","steps","steps"]'
data-uaxis='["primary","primary","primary","primary","primary"]'
        data-legend='["BZ Waschmaschine","SZ Rechner","WZ TV SET","WZ light","KH light"]'