Hauptmenü

neue svg-Funktion: card

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

Vorheriges Thema - Nächstes Thema

Damian

#180
Meine aktuelle todo-Liste ist erst mal abgearbeitet. :)

Es gibt jetzt auch die Möglichkeit mehrere Werte mit gleicher Einheit darzustellen. Hierbei wird die Skalierung über alle Werte errechnet. Dadurch ist die Vergleichbarkeit der Wertverläufe gegeben.

Syntax:

card (<Array von Sensoren>,$header,$icon,$min,$max,$minColor,$maxColor,<Array der Einheiten>,$func,$decfont,$prop,$model,$lightness)

Es können auch mehr als zwei Sensoren angegeben werden (sinnvoll mit Halbringen) oder in Kombination mit einem weiteren Wert über collect2.

Beispiel:
defmod Sprit DOIF ##
attr Sprit uiTable {package ui_Table;;}\
"Standard"|card([[Tankstelle:SuperE5:col24],[Tankstelle:Diesel:col24]],"Sprit","fuel","1.20","1.60",120,0,["E5","Diesel"],undef,"2",",,1",undef,undef)\
"ohne Skalierung"|card([[Tankstelle:SuperE5:col24],[Tankstelle:Diesel:col24]],"Sprit","fuel","1.20","1.60",120,0,["E5","Diesel"],undef,"2",",1,1",undef,undef)\
"mit Halbringen"|card([[Tankstelle:SuperE5:col24],[Tankstelle:Diesel:col24]],"Sprit","fuel","1.20","1.60",120,0,["E5","Diesel"],undef,"2",",,1,,,1",undef,undef)


Natürlich können ebenso alle anderen Dinge mit gleicher Einheit auf diese Weise sinnvoll gegenübergestellt werden, wie z. B. Temperaturen, Energie usw.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Hier ein Beispiel mit drei Werten. Die Daten müssen noch gesammelt werden.

defmod PV DOIF {}
attr PV DOIF_Readings l_Eigenv: [zaehler:l-Produktion]-[zaehler:l-Lieferung],\
Eigenv:[zaehler:Produktion]-[zaehler:Lieferung],\
l_Verbrauch: [zaehler:l-Bezug,0]+[$SELF:l_Eigenv,0],\
Verbrauch:[zaehler:Bezug]+[$SELF:Eigenv],\
l_Bezug:-[zaehler:l-Bezug]
attr PV event-on-change-reading .*
attr PV uiTable {\
package ui_Table;;\
$SHOWNOSTATE=1;;\
$TC{0..1}="align='center'";;\
}\
\
cylinder("Leistung ",-2,3.6,"kW",145,undef,undef,1,-[zaehler:l-Bezug:d1],0,"Bezug",[zaehler:l-Produktion:d1],60,"Produktion",[$SELF:l_Eigenv:d1],30,"Eigenverb.")|\
cylinder("Energie",-20,30,"kWh",145,undef,undef,1,-[zaehler:Bezug:d1],0,"Bezug",[zaehler:Produktion:d1],60,"Produktion",[$SELF:Eigenv:d1],30,"Eigenverb.")<\
\
card([[zaehler:l-Produktion:col],[$SELF:l_Eigenv:col],[$SELF:l_Bezug:col]],undef,"fa_bolt\@silver",-2,3.6,0,90,["Solar","Eigenv.","Bezug"],undef,"2","157,1,1,,,1,190")
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

kumue

#182
Super Arbeit. Danke und Daumen hoch !

##############################
Eine Frage noch...
Die Werte für den zweiten Sensor $min2,$max2,$minColor2,$maxColor2 (siehe #179) kann ich wohl in der aktuellen Version nicht definieren...oder ?

Damian

Zitat von: kumue am 06 Juni 2021, 10:25:25
Super Arbeit. Danke und Daumen hoch !

##############################
Eine Frage noch...
Die Werte für den zweiten Sensor $min2,$max2,$minColor2,$maxColor2 (siehe #179) kann ich wohl in der aktuellen Version nicht definieren...oder ?

Doch:

ZitatEs können auch mehr als zwei Sensoren angegeben werden (sinnvoll mit Halbringen) oder in Kombination mit einem weiteren Wert über collect2.

Das heißt, die letzte Version beinhaltet alles, was bisher hier gepostet wurde. Wenn ich meine Tests beendet habe, werde ich sie einchecken.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Die Energieanzeige sieht jetzt so aus:
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

xenos1984

Zitat von: Damian am 24 Mai 2021, 22:16:01
-Skalierbarkeit der Grafik, Breite der Karte einstellbar

Danke, damit hast du meinen Wunsch nach Breite / Höhe erfüllt :)

Damian

#186
Die neue Version hat meine Tests bestanden. Sie wurde eingecheckt. Doku wurde angepasst:

https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Anzeige_eines_Werteverlaufs_und_des_aktuellen_Wertes_mit_Hilfe_der_SVG-Funktion_card

Es sind zwei drei weitere Beispiele hinzugekommen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

jkriegl

#187
Die Möglichkeiten mit DOIF/uiTable (hier card) sind inzwischen sehr umfangreich und komplex.
Z. B. kann man in einem svg von mehreren Tankstellen den aktuellen Preis, das Minimum, das Maximum und wann am Preis geschraubt wurde darstellen (als Folge, wann droht eine Preisänderung).
Schön wäre es, wenn man die einzelnen Graphen der jeweiligen Tanke zuordnen könnte.
Mit $colorRef kann man noch Anpassungen bei den Farben vornehmen. Wenn ich das Beispiel PV richtig verstehe funktioniert diese Anpassung innerhalb eines Bereiches. Alle Tanken haben in etwa die gleiche Spanne.
Weitere Beispiele könnten Raumtemperauren, Heizkörpereinstellungen usw. sein.
Edit: die Definition dazu ist mehr als einfach.
Rpi 3, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly

Damian

So würde die card-Funktion mit Farbzuordnung aussehen:
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

#189
neue Version zum Ausprobieren:

-Algorithmus zum Speichern der Werte wurde verbessert
-Bei Halbringen können einfarbige Graphen gezeichnet werden

Bei der Einheit-Beschriftung kann jetzt kommagetrennt eine Farbe als Text oder als Hex-Angabe angegeben werden.

Beispiele:
card([[zaehler:l-Produktion:col],[$SELF:l_Eigenv:col],[$SELF:l_Bezug:col]],"kW","fa_bolt\@silver",-3.6,3.6,0,90,["Solar,yellow","Eigen.,lime","Bezug,red"],[(-1,0,0,30,1,60,3.6,90)],"2","167,,1,,1,1",",,1,6")
oder

card([[zaehler:l-Produktion:col],[$SELF:l_Eigenv:col],[$SELF:l_Bezug:col]],"kW","fa_bolt\@silver",-3.6,3.6,0,90,["Solar,white","Eigen.,silver","Bezug,gray"],[(-1,0,0,30,1,60,3.6,90)],"2","167,,1,,1,1",",,1,6")

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

Damian

Wie gut der neue Algorithmus funktioniert, sieht man an der Gegenüberstellung einer Normalauflösung 72 Slots und einer doppelt so hohen mit 144. Alle Nuancen sind zu erkennen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

juergen012

@jkriegl
habe versucht, deine Ansicht der Spritpreise nachzubauen..soo einfach ist das für mich nicht. Wäre schön, wenn Du deine Konfiguration posten würdest.
Beste Grüße
Jürgen K.
Fhem unter Proxmox

jkriegl

@Jürgen
card([[Sprit:Allg-e10:col6], [Sprit:HEM-e10:col6], [Sprit:JET-e10:col6], [Sprit:V-M-e10:col6]],"E10","fuel",[Sprit:e10min],[Sprit:e10min]+.1,120,0,["Allg","HEM","JET","V-M"],undef,"3","165,1,1,,,1,233")
min/max (Sprit:e10min) kannst Du auch card überlassen, ist ein userReading min((ReadingsVal($name,"Allg-e10",0), ReadingsVal...), abgerundet. Die Preise stammen von Tankerkönig.
Rpi 3, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly

juergen012

Fhem unter Proxmox

Damian

#194
Jetzt geht auch card mit ring2 mit festen Farben:
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF