FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: freetz am 27 November 2016, 08:06:33

Titel: Chart-Widget: min-/max-value berechnen lassen?
Beitrag von: freetz am 27 November 2016, 08:06:33
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.
Titel: Antw:Chart-Widget: min-/max-value berechnen lassen?
Beitrag von: Christian72D am 22 Februar 2017, 16:44:22
Für was steht "floor" und "ceil"?
Titel: Antw:Chart-Widget: min-/max-value berechnen lassen?
Beitrag von: freetz am 22 Februar 2017, 16:49:56
Das sind Perl-Funktionen für den jeweils auf- bzw. abgerundeten Integer-Wert einer Fließkommazahl.
Titel: Antw:Chart-Widget: min-/max-value berechnen lassen?
Beitrag von: eki am 23 Februar 2017, 12:50:47
Sollte nicht so schwierig sein, bei der automatischen Einteilung der Ticks mache ich ja so was ähnliches schon. Ich schau mal.
Titel: Antw:Chart-Widget: min-/max-value berechnen lassen?
Beitrag von: Thyraz am 23 Februar 2017, 13:13:58
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.
Titel: Antw:Chart-Widget: min-/max-value berechnen lassen?
Beitrag von: eki am 23 Februar 2017, 13:26:13
Das sollte da genauso gehe. Ist aber nicht unbedingt sehr intuitiv/nutzerfreundlich.
Titel: Antw:Chart-Widget: min-/max-value berechnen lassen?
Beitrag von: Thyraz am 23 Februar 2017, 13:31:38
Stimmt, aber recht flexibel. ;)
Titel: Antw:Chart-Widget: min-/max-value berechnen lassen?
Beitrag von: freetz am 24 Februar 2017, 21:05:54
Danke Euch für die Tipps und Hinweise, das mit dem erweitertenn Array werde ich mal ausprobieren!

Gruß,

F.