neue svg-Funktionen: icon_ring, icon_bar, cylinder_bars, icon_ring2

Begonnen von Damian, 30 Januar 2021, 20:03:18

Vorheriges Thema - Nächstes Thema

xenos1984

Zitat von: Damian am 23 Februar 2021, 21:17:43
Mit der Korrektur des LinearGradienten funktioniert jetzt wieder mein altes Wandtablet :)

Perfekt! Und ich kann es jetzt über das RSS-Modul auf mein TFT-Display schieben :)

jkriegl

@Damian: Habe Deine gepostete Version genommen.
Im list ist bei mir zusätzlich:
VERSION    23810 2021-02-23 20:14:35
Internals:
   CFGFN     
   DEF        ###
   FUUID      603633d4-f33f-9f96-551c-39efe6767b7842d3
   MODEL      FHEM
   NAME       di_ui_test
   NOTIFYDEV  global
   NR         131
   NTFY_ORDER 50-di_ui_test
   STATE      initialized
   TYPE       DOIF
   VERSION    23810 2021-02-23 20:14:35
   READINGS:
     2021-02-24 12:09:08   cmd             0
     2021-02-24 12:09:08   mode            enabled
     2021-02-24 12:09:08   state           initialized
   Regex:
     accu:
   condition:
   do:
     0:
   helper:
     DEVFILTER  ^global$
     NOTIFYDEV  global
     globalinit 1
     last_timer 0
     sleeptimer -1
   uiTable:
     package    package ui_Table;
     table:
       0:
         0:
           0:
             0          package ui_Table;style(wer_hzt("a b c"))
     tc:
     td:
       0:
     tr:
Attributes:
   room       1.5 uiTest
   uiTable    {package ui_Table;
sub wer_hzt {my ($str)=@_;
my @words=split / /,$str;
return($words[2]);}
}

style(wer_hzt("a b c"))

2021.02.24 12:21:39 3: trigger system change: attr di_ui_test uitable {package ui_table;
sub wer_hzt {my ($str)=@_;
my @words=split / /,$str;
return($words[2]);}
}

style(wer_hzt("a b c")) : Unknown command sub, try help.
Unknown command my, try help.
Unknown command return($words[2]), try help.
Unknown command }
}

style(wer_hzt("a, try help.
2021.02.24 12:21:39 3: system return value: Unknown command sub, try help.
Unknown command my, try help.
Unknown command return($words[2]), try help.
Unknown command }
}

style(wer_hzt("a, try help.

Muss wohl damit leben, attr device uiTable macht man nicht so oft. Das Ergebnis ist ja richtig oder ich löse das ohne sub.
Das verbose zieht nicht, hat das Log einen anderen Ursprung?

Auch mal von mir: Vielen Dank für Deine tolle Arbeit!

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

Damian

Irgendwie kann ich das alles nicht glauben. Vielleicht ist da ein Zeichen drin, was ich nicht erkennen kann.

Versuch mal die Raw-Definition ohne Änderung über das Pluszeichen zu übernehmen:

defmod di_ui_hz DOIF ###
attr di_ui_hz room 1.5 uiTest
attr di_ui_hz uiTable {package ui_Table;;\
sub wer_hzt {my ($str)=@_;;\
my @words=split / /,$str;;\
return($words[2]);;}\
}\
\
style(wer_hzt([vhk:wer]))


Wann kommt die Meldung? Bei der Definition oder beim Trigger?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

xenos1984

Kann es sein, dass irgendwo in der Definition ein Leerzeichen hinter einem \ versteckt ist? In dem Fall würde der \ nämlich das Leerzeichen escapen und nicht den Zeilenumbruch, und FHEM interpretiert die nächste Zeile als eigenes Kommando, dass es nicht kennt (my, sub...).

jkriegl

Log kommt auf Editor-Fenster ok und attr <device> usw
mit "+" ausgeführt  und einmal  uiTable geöffnet, ok, attr ...
2021.02.24 19:24:21 1: PERL WARNING: Use of uninitialized value $text in concatenation (.) or string at ./FHEM/98_DOIF.pm line 4147.
2021.02.24 19:24:21 3: di_ui_hz:Warning in DOIF_RegisterCell:package ui_Table;.style(wer_hzt(::ReadingValDoIf($hash,'vhk','wer')))
2021.02.24 19:24:21 3: trigger system change: attr di_ui_hz uitable {package ui_table;
sub wer_hzt {my ($str)=@_;
my @words=split / /,$str;
return($words[2]);}
}

style(wer_hzt([vhk:wer])) : Unknown command sub, try help.
Unknown command my, try help.
Unknown command return($words[2]), try help.
Unknown command }
}

style(wer_hzt([vhk:wer])), try help.
2021.02.24 19:24:21 3: system return value: Unknown command sub, try help.
Unknown command my, try help.
Unknown command return($words[2]), try help.
Unknown command }
}

style(wer_hzt([vhk:wer])), try help.
2021.02.24 19:24:41 3: di_ui_hz:Warning in DOIF_RegisterEvalAll:package ui_Table;::DOIF_Widget($hash,$reg,'di_ui_hz_uiTable_c_0_0_0_0',style(wer_hzt(::ReadingValDoIf($hash,'vhk','wer'))),"")
2021.02.24 19:24:46 3: di_ui_hz:Warning in DOIF_RegisterEvalAll:package ui_Table;::DOIF_Widget($hash,$reg,'di_ui_hz_uiTable_c_0_0_0_0',style(wer_hzt(::ReadingValDoIf($hash,'vhk','wer'))),"")
2021.02.24 19:28:56 3: di_ui_hz:Warning in DOIF_RegisterEvalAll:package ui_Table;::DOIF_Widget($hash,$reg,'di_ui_hz_uiTable_c_0_0_0_0',style(wer_hzt(::ReadingValDoIf($hash,'vhk','wer'))),"")
2021.02.24 19:29:26 3: di_ui_hz:Warning in DOIF_RegisterCell:package ui_Table;.style(wer_hzt(::ReadingValDoIf($hash,'vhk','wer')))
2021.02.24 19:29:26 3: trigger system change: attr di_ui_hz uitable {package ui_table;
sub wer_hzt {my ($str)=@_;
my @words=split / /,$str;
return($words[2]);}
}

style(wer_hzt([vhk:wer])) : Unknown command sub, try help.
Unknown command my, try help.
Unknown command return($words[2]), try help.
Unknown command }
}

style(wer_hzt([vhk:wer])), try help.
2021.02.24 19:29:26 3: system return value: Unknown command sub, try help.
Unknown command my, try help.
Unknown command return($words[2]), try help.
Unknown command }
}

style(wer_hzt([vhk:wer])), try help.
2021.02.24 19:29:26 3: di_ui_hz:Warning in DOIF_RegisterEvalAll:package ui_Table;::DOIF_Widget($hash,$reg,'di_ui_hz_uiTable_c_0_0_0_0',style(wer_hzt(::ReadingValDoIf($hash,'vhk','wer'))),"")
Rpi 3, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly

Damian

Sehr merkwürdig?

Die Meldung kommt mir unbekannt vor: trigger system change

Sie kommt nicht von DOIF.

Dann musst du dich an das Problem herantasten:

Anfangen kannst du damit:

defmod di_ui_hz DOIF ###
attr di_ui_hz room 1.5 uiTest
attr di_ui_hz uiTable {package ui_Table;;\
sub my_test_sub {\
my ($str)=@_;;\
return($str);;\
}\
}\
\
style(my_test_sub([vhk:wer]))


Zu bedenken ist auch, dass alle DOIF-Module mit gleichem ui_Table-Raum arbeiten, dh. wenn du in irgend einem anderen DOIF die gleiche Funktion definierst, so wird die ursprüngliche überschrieben.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

jkriegl

Ich glaube, daß "changelog" der Verursacher ist.
Mit inactive setzen ist Ruhe.
Danke für Eure Hilfe.
Rpi 3, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly

jkriegl

Habe icon_ring2 vollgepumpt und $unit1/2 für andere Zwecke missbraucht.
Die Farbe entspricht natürlich der entsprechenden Ringfarbe.
Kann man die $unit-Farbe ev. manipulieren? Im Beispiel z.B. "auto*" oder "18:48"
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 06 März 2021, 19:09:51
Habe icon_ring2 vollgepumpt und $unit1/2 für andere Zwecke missbraucht.
Die Farbe entspricht natürlich der entsprechenden Ringfarbe.
Kann man die $unit-Farbe ev. manipulieren? Im Beispiel z.B. "auto*" oder "18:48"

leider nein, weil es als Einheit zum Wert gedacht ist, hat es die gleiche Farbe, wie der Wert selbst.

PS Die Breite der bar-Funktion kannst du anpassen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Zitat von: Damian am 06 März 2021, 19:36:19
leider nein, weil es als Einheit zum Wert gedacht ist, hat es die gleiche Farbe, wie der Wert selbst.

jetzt, doch :)

der Parameter $decfont hat neues Argument erhalten

$decfont: "<Anzahl der Nachkommastellen>, <Schrift SVG-Attribute Wert>,<Schrift SVG-Attribute Einheit>"

Wenn einem die Farbe, die Größe oder sonst etwas bei der Einheit (unit) nicht passt, der kann es demnächst anpassen.

Bsp.:

defmod di_icon_ring2 DOIF ##
attr di_icon_ring2 uiTable {package ui_Table;;\
\
"Strom"|icon_ring2("sani_solar",[zaehler:l-Produktion],0,3.6,0,120,"PV kW",120,undef,undef,[zaehler:l-Bezug,0],0,1,120,0,"Netz kW",undef,undef)\
"Strom"|icon_ring2("sani_solar",[zaehler:l-Produktion],0,3.6,0,120,"PV kW",120,undef,"1,,font-size:7px;;fill:white",[zaehler:l-Bezug,0],0,1,120,0,"Netz kW",undef,"1,,font-size:7px;;fill:white")

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

jkriegl

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

Damian

man kann jetzt beim icon_ring2 die Farbe des Icons auch vom zweiten Wert einstellen

Syntax:

"<iconname>\@colorVal2"

"<iconname>\@colorVal1" entspricht "<iconname>" wie bisher.

Natürlich bleibt die allgemeine FHEM-Syntax für Farbgebung von Icons weiterhin bestehen.

Beispiel:

icon_ring2([zaehler:l-Produktion] > 0 ? "sani_solar\@colorVal1":"fa_bolt\@colorVal2",[zaehler:l-Produktion],0,3.6,20,120,"PV kW",150,undef,"1,,font-size:50%",[zaehler:l-Bezug,0],0,2,120,0,"Netz kW",undef,"1,,font-size:50%")


Das Icon färbt sich mit der Farbe des Solarertrags, wenn Ertrag vorhanden, sonst wird ein anderes Symbol mit Farbe des Strombezugs angezeigt.

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

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