Chart-Widget: min-/max-value berechnen lassen?

Begonnen von freetz, 27 November 2016, 08:06:33

Vorheriges Thema - Nächstes Thema

freetz

Hallo zusammen,

erst einmal ein großes Lob an eki: das Chart-Widget ist echt klasse!
Ich bin fast davor, die "klassische" FHEM-Ansicht gar nicht mehr zu benötigen, allerdings fehlt mir bei der Umsetzung der Graphen eine Funktionalität: Bei yticks bzw. min-/max-value bekomme ich bei der Einstellung "auto" zwar korrekt eine Skala, die die Bandbreite abdeckt, allerdings sehen gerade bei kürzeren Zeiträumen und geringen Veränderungen (wie jetzt gerade bei der Außentemperatur) die Ausschläge sehr extrem aus, auch wenn sie nur ein halbes Grad betragen. Auf der anderen Seite wäre es nicht sinnvoll, die Extrema fest einzutragen (also z.B. -15 und +40), weil dann geringere Veränderungen auf kleineren Bildschirmen gar nicht mehr auffallen.

In FHEM verwende ich dafür Perl-Code wie diesen hier:
{"[".(floor((minNum($data{min1},$data{min4})-.1)/5)*5).":".(ceil((maxNum($data{max1},$data{max4})+.1)/5)*5)."]"}

Damit bekomme ich für die Datenreihen 1 und 4 (in meinem Fall die Innen- und Außentemperatur) eine Temperaturskala, die bei dem jeweils nächstniedrigen bzw. -höheren Vielfachen von 5 anfängt bzw. aufhört, also z.B. bei Temperaturschwankungen von 17 bis 21 Grad wäre die Skala von 15 bis 25 Grad, bei -2 bis +19 von -5 bis +20 Grad usw.

Meine Frage wäre, ob sich so etwas auch für das Chart-Widget umsetzen ließe? Es muss (kann?) dann ja nicht die gleiche Perl-Funktion sein, aber vielleicht wäre ein Weg über Javascript denkbar? Oder man könnte die Skala dynamisch unter FHEM in einem Dummy generieren lassen und das Chart-Widget zieht sich die Skala aus einem Reading?

Würde mich sehr freuen, wenn es da eine (für die Programmierer nicht zu aufwändige) Lösung gäbe :)...

Viele Grüße,

F.
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

Christian72D


freetz

Das sind Perl-Funktionen für den jeweils auf- bzw. abgerundeten Integer-Wert einer Fließkommazahl.
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

eki

Sollte nicht so schwierig sein, bei der automatischen Einteilung der Ticks mache ich ja so was ähnliches schon. Ich schau mal.

Thyraz

#4
Man kann sowas aber an sich schon durch Übergabe eines Arrays an Werten für data-minvalue und data-manvalue ererichen, oder?
Zumindest beim Simplechart Widget hab ich das mal genutzt und die Doku für die zwei Widgets sieht in diesem Teil sehr ähnlich aus...


edit: Erkärung von setstate dazu:
Zitat
So könnte eine Sommer/Winter Umschaltung aussehen. Wenn ein Wert im Graph größer als der erste Max-Wert ist, wird im Array der nächst höhere Max-Wert probiert, bis der Graph-Wert wieder innerhalb von Max liegt.
Bei minvalue ebenso, aber in die andere Richtung.
data-maxvalue aufsteigend angeben, data-minvalue absteigend


data-minvalue="[10,-25]"
data-maxvalue="[15,35]"


Könnte man dann so ausbauen:

data-minvalue="[20,15,10,5,0,-5,-10,-15]"
data-maxvalue="[5,10,15,25,30,35,40]"


Hab ich aber mit dem Chart Widget noch nicht getestet.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

eki

Das sollte da genauso gehe. Ist aber nicht unbedingt sehr intuitiv/nutzerfreundlich.

Thyraz

Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

freetz

Danke Euch für die Tipps und Hinweise, das mit dem erweitertenn Array werde ich mal ausprobieren!

Gruß,

F.
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan