Seite 1 von 1
Nachkommazahl in time series in Prozent anzeigen
Verfasst: 20. Okt 2024 12:41
von hermann59
Ich habe ein Balkonkraftwerk "Anker Solix 2 E1600 Pro" mit Speicher, deren aktuelle Werte ich per solix2mqtt aus der anker cloud in meinen MQTT-Broker übertragen lasse. In MQTT kommt ein Akku-Ladestand als Nachkommazahl (z.B. "0.56" für 56%) an. Diesen Wert habe ich als Channel des Things definiert und ihm ein Item zugeordnet. Das Item enthält den korrekten Wert (z. b. 0.56) und wird auch in Prozenz (z. B. 56%) angezeigt.
Nun möchte ich den Verlauf der Speicherladung in einem chart visualisieren. Was muss ich tun, damit die y-Achse Werte zwischen 0 und 100% und nicht Werte zwischen 0 und 1 anzeigt?
Screenshot.jpg
Re: Nachkommazahl in time series in Prozent anzeigen
Verfasst: 20. Okt 2024 15:34
von udo1toni
Du musst das Item korrekt definieren

Das Zauberwort lautet QuantityType.
Vorausgesetzt, Du verwendest eine aktuelle Version OH4.x, kannst Du im number Channel über die unit angeben, wie der Wert hereinkommt (ich vermute mal, dass Du unit=ONE angeben musst, müsste man aber ausprobieren)
Im Item musst Du ebenfalls die unit angeben, und dafür muss das Item vom Typ Number:Dimensionless sein. Ist das der Fall, so kannst Du in den Metadaten des Items den Parameter unit auf "%" setzen. Außerdem kannst Du, ebenfalls in den Metadaten, das stateDescription pattern auf "%.1f %%" festlegen. Es kann sein, dass Du ohne Verlust der alten Daten davon kommst, weil der Wert eh schon im passenden Format gespeichert ist, vielleicht sind die alten Werte aber auch um den Faktor 100 verkehrt, dann musst Du die Persistence Daten manuell löschen (nachträgliches Bearbeiten der historischen Daten ist - abhängig von der verwendeten Persistence - beschwerlich bis unmöglich.)
Re: Nachkommazahl in time series in Prozent anzeigen
Verfasst: 20. Okt 2024 16:58
von hermann59
Hallo Udo,
danke für den Hinweis. Das hatte ich auch schon probiert. Dann wird aber aus "total_battery_power": "0.12" in json (was eben bedeutet 12%) der Wert 0,12% im item. Das item soll aber den Wert 12% haben. Der Wert 0,12 ist ja eigentlich korrekt, nur die Darstellung im chart ist falsch.
Re: Nachkommazahl in time series in Prozent anzeigen
Verfasst: 20. Okt 2024 18:54
von udo1toni
Wie gesagt, die unit muss passend gesetzt werden. Notfalls kann man auch mit anderen Einheiten tricksen, aber eigentlich sollte es auch direkt gehen, nur muss die Einheit an allen Stellen korrekt angegeben werden.
Re: Nachkommazahl in time series in Prozent anzeigen
Verfasst: 21. Okt 2024 00:16
von hermann59
Egal, welchen QuantityType, welche unit und stateDescription ich auch verwende im channel/item: Entweder wird der Wert "0.25" aus dem json (bedeutet 25%) entweder im Item als 25% und dann im chart als 0.25 angezeigt oder schon der Wert im Item ist falsch (0,25%).
Ich gebe es auf. Für so einen Mist den ganzen Sonntag zu investieren ist es mir nicht wert.
Re: Nachkommazahl in time series in Prozent anzeigen
Verfasst: 21. Okt 2024 07:13
von mike69
Manchmal ist das so, das aktuelle Projekt kostete mich 3 Tage.
Das ist ein Hobby, und Hobbies können auch mal Zeit in Anspruch nehmen.
Und es gibt User,die verbrennen richtig Zeit um uns Nulpen zu helfen. Hobby eben...
Gruß
Re: Nachkommazahl in time series in Prozent anzeigen
Verfasst: 21. Okt 2024 16:18
von Harka
Moin,
wenn Udos Lösung wirklich nicht zum Erfolg führt kannst Du als PlanB noch den Wert gleich am Eingang mittels Transformation mit 100 Multiplizieren. Beispiel - ist aber abhängig von Deiner sonstigen Konfiguration. Außerdem können im Folgenden falsche Werte erscheinen.
Besser Channel neu anlegen als Number und mit
Unit Of Measurement und hoffen
Re: Nachkommazahl in time series in Prozent anzeigen
Verfasst: 21. Okt 2024 19:46
von udo1toni
Ich habe das bei mir heute nachvollzogen und kann bestätigen, dass der Wert tatsächlich nicht korrekt umgesetzt wird. Daher wird der Weg der Incoming Value Transformation tatsächlich der korrekte Weg sein, wie von Harka beschrieben (dafür muss allerdings Java Script Scripting als Addon installiert sein) oder auch so:
Aus dem Kopf, weil gerade nicht vor meinem System. Kann auch sein, dass man auch hier parsen muss:
Code: Alles auswählen
transformationPattern: DSL: | Float.parseFloat(input) * 100
Die DSL steht bis incl. OH4.x immer zur Verfügung, sie wird erst in OH5 optional werden (wenn ich mich korrekt erinnere)
Re: Nachkommazahl in time series in Prozent anzeigen
Verfasst: 6. Nov 2024 13:34
von hermann59
Ich habe jetzt einen zweiten Channel angelegt mit "Incoming Value Transformations"
Code: Alles auswählen
JSONPATH:$.solarbank_info.total_battery_power ∩ JS: | parseFloat(input)*100
und anschließend damit ein neues Item eingeführt, welches ich nur für die graphische Darstellung verwende.
Nicht besonders schön, aber es geht.