CUxD Highcharts zeigt keine Charts von HmIP-Geräten an

Anbindung von FS20-Komponenten, ELV-Wetterstationen, EnOcean und DMX an HomeMatic

Moderator: Co-Administratoren

Antworten
Karamike
Beiträge: 6
Registriert: 19.12.2021, 12:22
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 2 Mal

CUxD Highcharts zeigt keine Charts von HmIP-Geräten an

Beitrag von Karamike » 19.12.2021, 17:15

Ja, ich weiß, dass ist der x-te Thread dazu. Ich habe diverse gelesen, aber nichts funktioniert. Was zum Schluss funktioniert hat, lässt mich auf einen Bug im Werte-Parser von Hicharts schließen... oder einen blöden Fehler von mir.

Grundlage ist ein frisches RaspberryMatic-System von vor ein paar Tagen:
  • RaspberryMatic 3.61.5.20211113
  • CUx-Daemon 2.6
  • CUxD-Highcharts 1.4.5
  • ein USB-Stick an einem USB-Port (mountet sich automatisch als /media/usb0)
Zwei Programme senden per Skript Werte an CUxD:

HmIP-Geräte

Code: Alles auswählen

object dp = dom.GetObject("$src$");
if (dp) {
dom.GetObject("CUxD.CUX2801001:1.POSTIT").State((dom.GetObject((dp.Channel()))).Address() #"."# dp.HssType() #";"#dp.Value());
}
Und der DutyCyle

Code: Alles auswählen

object o = dom.GetObject("DutyCycle");
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State(o.Name()#";"#o.Value());
... mit etwas Logik drumrum, damit sie auch getriggert werden.

Im CUxD-Setup steht u.a.:

Code: Alles auswählen

DEVLOGFILE=/tmp/devlog.txt
DEVLOGSIZE=0
DEVLOGMOVE=/media/usb0/cuxd/devlog
...
SUBSCRIBE-RF=1
...
LOGIT=0001DD89AADBC3

Im Filebrowser von CUxD erkennt man, dass /tmp/devlog.txt existiert und länger wird und nach Mitternacht tauchen auch Dateien in /media/usb0/cuxd/devlog auf.

Der Inhalt sieht ungefähr so aus

Code: Alles auswählen

2021-12-19T06:42:54 0001DD89AADBC3:6.POWER 0.000000
2021-12-19T06:43:00 DutyCycle 0.000000
2021-12-19T06:44:00 DutyCycle 0.000000
2021-12-19T06:45:00 DutyCycle 0.000000
2021-12-19T06:45:48 0001DD89AADBCC:6.POWER 0.000000
2021-12-19T06:46:00 DutyCycle 0.000000
...
Das heißt: Der CUxD bekommt Daten geliefert und speichert sie auch.... nur mit dem Charts...

Wenn man nun "menu.html" aufruft, kann man "0001DD89AADBCC:6.POWER" in den Datenreihen und im Navigator auswählen.

Das Ergebnis von
https://192.168.0.XXX/addons/cuxchart/? ... C3:6.POWER

sieht so aus:
chart_norm.png
Man erkennt: "1 Datenpunkte, 89 Werte" ... von "Invalid date" bis "Invalid date"
Ich nehme an, damit ist "1 Datenreihe, 89 Werte" gemeint.

Der Aufruf von https://192.168.0.XXX/addons/cuxchart/? ... C3:6.POWER sieht ähnlich aus.

Nur https://192.168.0.XXX/addons/cuxchart/?dp=DutyCycle gibt einen "normalen" Chart aus.
chart_dutycyle.png
Ein Unterschied fällt bei den Einträgen auf: die Sonderzeichen ":" und "." im Namen.... nach einigem Ausprobieren stand fest: Es ist der Punkt.

Ich habe mit SSH die Dateien aus /media/usb0/cuxd/devlog herausgeholt, ":6." durch ":6_" ersetzt und wieder zurückgespielt.

Die Einträge sehen jetzt so aus:

Code: Alles auswählen

2021-12-18T12:59:05 0001DD89AADBC3:6_POWER 26.830000
2021-12-18T13:01:50 0001DD89AADBC3:6_POWER 26.150000
https://192.168.0.XXX/addons/cuxchart/? ... C3:6_POWER

zeigt nun tatsächlich einen Chart (beachte: auch in der URL "." durch "_" ersetzt).
chart_name_mit_unterstrich.png

Ich habe dann versucht, im HmIP-Skript den "." durch "_" oder " " zu ersetzen. Das ging aber auch nicht, da der Befehl CUxD-Befehl "POSTIT" wohl ein bestimmtes Format verlangt. Auf jeden Fall beschwerte er sich im CUxD-Syslog:

Code: Alles auswählen

Dec 19 13:23:14 homematic-raspi daemon.err cuxd[872]: CUX2801001:1.POSTIT - '0001DD89AADBC3:6 POWER;0.000000' . separator missing!
Dec 19 13:34:30 homematic-raspi daemon.err cuxd[872]: CUX2801001:1.POSTIT - '0001DD89AADBC3:6 POWER;27.810000' . separator missing!
Dec 19 13:37:55 homematic-raspi daemon.err cuxd[872]: CUX2801001:1.POSTIT - '0001DD89AADBC3:6_POWER;0.000000' . separator missing!
Im nächsten Schritt habe ich dann "POSTIT" durch "LOGIT" ersetzt - das DutyCycle-Skript hatte sich ja auch nicht beschwert.
Dann noch "." -> "_". d.h.:

Code: Alles auswählen

object dp = dom.GetObject("$src$");
if (dp) {
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State((dom.GetObject((dp.Channel()))).Address() #"_"# dp.HssType() #";"#dp.Value());
}
Das CUxD-Log sieht jetzt folgendermaßen aus und erzeugt auch einen Chart.

Code: Alles auswählen

2021-12-19T15:38:20 0001DD89AADBCC:6_POWER 1.050000
2021-12-19T15:38:27 0001DD89AADBC3:6_POWER 25.810000
Die Legende lässt zu wünschen übrig. Aber meine Versuche mit Alias waren bisher nicht sehr erfolgreich.

Es bleibt also festzuhalten:

Selbst im Ursprungszustand (mit POSTIT und "." im Namen der Datenreihe) hat Hicharts den Eintrag erkannt ("1 Datenpunkte, 89 Werte") konnte aber Zeit und Wert nicht extrahieren => "Invalid date".
Erst wenn mit diversen Kniffen den Punkt aus dem Namen entfernt, funktioniert es.

Da ich nicht der Erste bin, der HmIP-Geräte darstellen will, muss ich irgendwas übersehen haben. Aber was?

Und falls jemand fragt: Ja, ich habe zwischendurch immer mal wieder "reset.html" ausgeführt.

Rosagallica
Beiträge: 75
Registriert: 22.07.2018, 15:54
System: CCU
Hat sich bedankt: 10 Mal
Danksagung erhalten: 5 Mal

Re: CUxD Highcharts zeigt keine Charts von HmIP-Geräten an

Beitrag von Rosagallica » 20.12.2021, 17:03

Diese Threads auch gesehen?
viewtopic.php?f=37&t=63149
In viewtopic.php?f=37&t=35303&p=600374#p600374 hatte ich meinen Weg aufgezeigt, wie es bei mir dann auch mit HmIP läuft.

Antworten

Zurück zu „CUxD“