Hauptmenü

neue svg-Funktion: card

Begonnen von Damian, 04 April 2021, 12:58:15

Vorheriges Thema - Nächstes Thema

Damian

#75
Zitat von: jkriegl am 18 April 2021, 14:43:20
ungünstig, weil beim Sprit 3-Nachkommastellen (z.B. 1.468) nicht reinpassen.
Und wenn jemand von 0 - 60 anzeigen will und im Ring eine Nachkommastelle angegeben ist, ist die Skalierung 0.0 15.0 .. 60.0

Es passen ungefähr so viele Stellen wie in den Ring hineinpassen und umgekehrt. Selbst für Sprit würden drei Nachkommastellen passen, auch wenn die dritte Stelle mit 9 keine zusätzliche Information darstellt.

Ich will nur sagen, dass ich keine neue Syntax für die Formatierung der Achsen einführen möchte - die Attribute platzen langsam aus allen Nähten.

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Neue Version eingecheckt.

Ich habe den Graphen etwas nach rechts verschoben, damit passen auch fünfstellige Skalenbeschriftungen, das sollte ausreichen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Was mir noch aufgefallen ist. Nach dem Update nicht wundern. Am Anfang wird die vollständige y-Skalierung (min-max) angezeigt, erst wenn ein Minimum und ein Maximum mit Minimum ungleich Maximum feststeht, greift die automatische Skalierung.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

jkriegl

Habe ein Problem mit den min-Werten. Fällt bei unterschiedlichem colx (1, 2, 12, col) auf.
Es handelt sich um eine Pumpe, mal standby mal running. Vermutlich müssten weitere events erzeugt werden, weil die running-Zeit zu kurz ist und der min-Wert verloren geht.

Anmerkungen:
Die Zeitskalierung ist jetzt schlechter lesbar, besser war s. #71
Die zusätzliche Zeitangabe unter dem ring hat zusätzlich nur Sek. Könnte da man nicht auch etwas anderes unterbringen.

Wenn ein user in der y-Beschreibung z.B. 0 bis 60 haben möchte, dann sollte dort nicht 0.0 bis 60.0 angezeigt werden. (Klar == Nachkommastellen aus ring-Wert)

Rpi 3, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly

Damian

Zitat von: jkriegl am 19 April 2021, 13:56:24
Habe ein Problem mit den min-Werten. Fällt bei unterschiedlichem colx (1, 2, 12, col) auf.
Es handelt sich um eine Pumpe, mal standby mal running. Vermutlich müssten weitere events erzeugt werden, weil die running-Zeit zu kurz ist und der min-Wert verloren geht.

Anmerkungen:
Die Zeitskalierung ist jetzt schlechter lesbar, besser war s. #71
Die zusätzliche Zeitangabe unter dem ring hat zusätzlich nur Sek. Könnte da man nicht auch etwas anderes unterbringen.

Wenn ein user in der y-Beschreibung z.B. 0 bis 60 haben möchte, dann sollte dort nicht 0.0 bis 60.0 angezeigt werden. (Klar == Nachkommastellen aus ring-Wert)

An der Zeitskalierung arbeite ich noch, weil mir die nicht gefällt.

Die Auflösung des Graphen ist halt nicht hoch, deswegen können je nach Zeitintervall nicht alle Details angezeigt werden - das ist klar. Die automatische Skalierung soll immer funktionieren, daher braucht man eine bestimmte Genauigkeit, beim Luftdruck wird bei kleinen Schwankungen mehrfach die gleiche Zahl auf der Y-Achse angezeigt, weil ich dort keine Nachkommastellen definiert habe - das ist das andere Extremum.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

jkriegl

#80
In der Tat, durch mehr events (event-min-interval:120, erste Versuche mit 10 Min) wird auch der min-Wert gespeichert.
Man sieht das am Weiterschieben der Zeitachse.
Der aktuelle Wert müsste auch gespeichert werden, insbesondere falls kein event kommt. (im nächsten slot?)
Edit: inzwischen haben auch die andern cards korrekte min-Werte.
Rpi 3, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly

Damian

Zitat von: jkriegl am 19 April 2021, 20:17:48
In der Tat, durch mehr events (event-min-interval:120, erste Versuche mit 10 Min) wird auch der min-Wert gespeichert.
Man sieht das am Weiterschieben der Zeitachse.
Der aktuelle Wert müsste auch gespeichert werden, insbesondere falls kein event kommt. (im nächsten slot?)
Edit: inzwischen haben auch die andern cards korrekte min-Werte.

In der aktuellen Version hatte ich eingebaut, dass im Slot der höchste positive Wert bzw. der niedrigste negative Wert des Slots gespeichert wird. Das hat aber den Nachteil, (im Gegensatz vom vorherigen Verfahren, wo der letzte Wert gespeichert wurde), dass die Werte, die sich stochastisch betrachtet am längsten halten, nämlich die letzten des Slots, untergehen. Das erklärt deine Beobachtung. Ich werde das vorherige Verhalten wieder einbauen. 
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Ich teste gerade Zeitachsen. Bei Stundenangaben, die sich durch 6 teilen lassen (6,12,18,24..) wird die Skalierung mit vollen Stunden, die mitwandern, angezeigt, sonst mit festen Zeitangaben mit größeren Abständen.

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

#83
Neue Version eingecheckt:

-neue Zeitskalierung, wie bereits beschrieben
-Nachkommastellen auf der Y-Achse nur bei automatischer Skalierung
-steps auch explizit definierbar, siehe Parameter $prop: insb. Definition des Sprit-Preises der Beispieldefinition

https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Anzeige_eines_Werteverlaufs_und_des_aktuellen_Wertes_mit_Hilfe_der_SVG-Funktion_card
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

jkriegl

#84
Bei negativen collect-Wert und attr <device> uiTable bekommt man
2021.04.21 12:29:25 1: PERL WARNING: Bareword found where operator expected at (eval 4882) line 2, near "'error Illegal division by zero at ./FHEM/98_DOIF.pm line 4383.
in expression: card(::ReadingValDoIf($hash,'Astro"
  (Might be a runaway multi-line '' string starting on line 1)

card([Astro:MoonAlt:col12],undef,"weather_moon_phases_4",0,90,110,20,undef,undef,0,100)
Mit setreading MoonAlt positiv gesetzt dann ok.
Edit: Früheres Beispiel aus #50
Edit-2: MoonAlt ist jetzt 0 - es klappt.
Rpi 3, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly

Damian

Neue Version eingecheckt:

- diverse Sonderfälle werden berücksichtigt
- Layout etwas verfeinert.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

So langsam kann ich keine Plots mehr sehen :)

Aktuelles Layout, siehe Anhang.

Als nächstes sollen die gesammelten Werte einen Neustart des Systems überleben.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Anwendungsbeispiel Heiztherme: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Visualisierung_und_Steuerung:_Heiztherme

Auf die echten Daten muss ich noch 24 Stunden warten - "Ergebnis der Beispieldefinition in der Webansicht" wird noch aktualisiert ;)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF