Autor Thema: neue svg-Funktionen: icon_ring, icon_bar, cylinder_bars, icon_ring2  (Gelesen 4686 mal)

Offline xenos1984

  • Full Member
  • ***
  • Beiträge: 339
Antw:neue svg-Funktionen: icon_ring, icon_bar, cylinder_bars, icon_ring2
« Antwort #120 am: 20 Februar 2021, 12:04:39 »
Sieht gut aus, vor allem mit icon_ring2 :)

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8068
Antw:neue svg-Funktionen: icon_ring, icon_bar, cylinder_bars, icon_ring2
« Antwort #121 am: 20 Februar 2021, 12:21:51 »
Ich habe mal wieder fertig!

Neue Version eingecheckt:

https://svn.fhem.de/trac/browser/trunk/fhem/FHEM?order=date&desc=1

Dokumentation im Wiki folgt ...
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-Web, THRESHOLD, FHEM-Befehl: IF

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8068
Antw:neue svg-Funktionen: icon_ring, icon_bar, cylinder_bars, icon_ring2
« Antwort #122 am: 20 Februar 2021, 13:33:09 »
Dann wollen wir gleich mal die neuen Features auf die Probe stellen :)

defmod di_wind DOIF ##
attr di_wind uiTable {package ui_Table;;\
\
sub himmelsrichtung {\
my ($richtung)=@_;;\
my $element=int($richtung/22.5);;\
my @h=(qw"N NNO NO ONO O OSO SO SSO S SSW SW WSW W WNW NW NNW");;\
return($h[$element]);;\
}\
}\
icon_ring2(([Wind:Geschwindigkeit]>0 ? "wind":"no_wind").",1,0,0,".[Wind:Richtung],[Wind:Geschwindigkeit],0,50,120,0,"km/h",undef,undef,1,[Wind:Richtung],361,361,192,192,([Wind:Geschwindigkeit]>0?himmelsrichtung([Wind:Richtung]):"--"),undef,0)

Angezeigt wird: Windrichtung, Windstärke, Himmelsrichtung, bei keinem Wind, wird keine Windrichtung angezeigt.
« Letzte Änderung: 20 Februar 2021, 13:47:38 von Damian »
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-Web, THRESHOLD, FHEM-Befehl: IF
Gefällt mir Gefällt mir x 3 Liste anzeigen


Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8068
Antw:neue svg-Funktionen: icon_ring, icon_bar, cylinder_bars, icon_ring2
« Antwort #124 am: 20 Februar 2021, 22:40:59 »
Hier ein Beispiel für eine komprimierte Informationsdichte.

Neben Temperatur und Feuchtigkeit, kann man erkennen, ob Fenster im Zimmer offen ist und ob gerade geheizt wird. Was rot bedeutet, kann man ohne Worte erkennen.

defmod Heizung DOIF ##
attr Heizung uiTable {\
  package ui_Table;;\
  $SHOWNOSTATE=1;;\
  $ATTRIBUTESFIRST =  1;;\
  $TC{1..4}="align='center'";;\
}\
\
DEF TPL_raum (icon_temp_hum_ring([$1_Fenster:state] eq "closed" ? ([H_$1:state] eq "off" ? "fts_window_1w\@white":"fts_window_1w\@Darkorange"):([H_$1:state] eq "off" ? "fts_window_1w_open\@lime":"fts_window_1w_open\@red"),[TH_$1_HM:measured-temp],[TH_$1_HM:humidity],undef,undef,130))\
\
style("DG","Darkorange")|"DG_Zi."|""|""|""\
""|TPL_raum (DG)\
style("1. GE","Darkorange")|"Bad"|"Kind Ost"|"Kind West"|""\
""|TPL_raum (Bad)|TPL_raum (Kz_o)|TPL_raum (Kz_w)\
style("Erdge.","Darkorange")|"Wohnzi."|"Küche"|""|""\
""|TPL_raum (WZ)|TPL_raum (Kueche)\
style("Keller","Darkorange")|"Schlafzi."|"Werkzi."|""|""\
""|TPL_raum (Keller)|TPL_raum (AKeller)
« Letzte Änderung: 20 Februar 2021, 23:02:16 von Damian »
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-Web, THRESHOLD, FHEM-Befehl: IF
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline cwagner

  • Sr. Member
  • ****
  • Beiträge: 644
Antw:neue svg-Funktionen: icon_ring, icon_bar, cylinder_bars, icon_ring2
« Antwort #125 am: 21 Februar 2021, 15:04:49 »
Dann wollen wir gleich mal die neuen Features auf die Probe stellen :)

Da muss nun mein 20zeiliges DOIF in Rente, mit dem ich bisher die Windrichtung ausschließlich als Kürzel dargestellt habe. Wirklich super gelöst und mit dem Pfeil so viel intuitiver.

Jetzt fehlt mir eigentlich nur noch ein "Mitnehmer" auf dem Kreis, der Min/Max zum Beispiel der Windstärke markiert. :-) Klar, das muss dann beim Datumswechsel zurückgesetzt werden.

Herzliche Grüße


Christian
« Letzte Änderung: 21 Februar 2021, 15:55:10 von cwagner »
Raspi 2B+3B: Raspbian 9.11,Perl v5.28.1, FHEM 5.9. 270 Entities in DbLog  für Heizung mit FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HM (CUL), 1-Wire (FT232RL & DS2480B), EnOcean (TCM EPS3), MQTT2. Im Einsatz u.a. DOIF, PID20, Threshold, OWX NewGen; Micropelt IRTV, Volkszähler

Offline xenos1984

  • Full Member
  • ***
  • Beiträge: 339
Antw:neue svg-Funktionen: icon_ring, icon_bar, cylinder_bars, icon_ring2
« Antwort #126 am: 21 Februar 2021, 18:58:17 »
Sehr schön! Meine Wetteranzeige ist auch ausgebaut :)
Informativ Informativ x 1 Liste anzeigen

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8068
Antw:neue svg-Funktionen: icon_ring, icon_bar, cylinder_bars, icon_ring2
« Antwort #127 am: 21 Februar 2021, 19:09:47 »
Sehr schön! Meine Wetteranzeige ist auch ausgebaut :)

Schön zu sehen, dass die neuen Funktionen gute Anwendungsmöglichkeiten finden.

Mit über Null Grad scheint dort im Norden auch schon Frühling anzukommen ;)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-Web, THRESHOLD, FHEM-Befehl: IF

Offline xenos1984

  • Full Member
  • ***
  • Beiträge: 339
Antw:neue svg-Funktionen: icon_ring, icon_bar, cylinder_bars, icon_ring2
« Antwort #128 am: 22 Februar 2021, 23:09:39 »
Mit über Null Grad scheint dort im Norden auch schon Frühling anzukommen ;)

Das muss noch nichts heißen - heute Abend sind es schon wieder -6,8°C :D Manchmal liegt der Schnee bis April.

Mir ist gerade noch ein kleiner, aber entscheidender Fehler an zwei Stellen aufgefallen:

4757   $out.= '<linearGradient id="grad_stroke3" x1="1" y1="0" x2="0" y2="0"><stop offset="0" style="stop-color:rgb(80,80,80); stop-opacity:0.6"/>\
4758   <stop offset="1" style="stop-color:rgb(48,48,48); stop-opacity:0.8"/><linearGradient>';

4911   $out.= '<linearGradient id="grad_stroke3" x1="1" y1="0" x2="0" y2="0"><stop offset="0" style="stop-color:rgb(80,80,80); stop-opacity:0.6"/>\
4912   <stop offset="1" style="stop-color:rgb(48,48,48); stop-opacity:0.8"/><linearGradient>';

Beim schließenden Tag </linearGradient> fehlt der Schrägstrich. Firefox scheint sich innerhalb einer HTML-Seite (= im HTML-Modus) nicht zu beschweren, wohl aber, wenn man die SVG für sich alleine (= XML-Modus) anzeigen möchte, und auch librsvg verschluckt sich daran. Leztere mag auch die Größenangabe nicht, und nimmt stur die Werte aus der viewBox stattdessen:

4751   $out.= sprintf('<svg xmlns="http://www.w3.org/2000/svg" viewBox="10 0 63 58 " style="width:%dpx; height:%dpx;">',$size/100*63,$size/100*58);

4902   $out.= sprintf('<svg xmlns="http://www.w3.org/2000/svg" viewBox="10 0 63 57 " style="width:%dpx; height:%dpx;">',$size/100*63,$size/100*57);

Damit hat die mit librsvg konvertierte Grafik immer die Maße 63 * 57 Pixel. Damit dagegen geht es:

4751   $out.= sprintf('<svg xmlns="http://www.w3.org/2000/svg" viewBox="10 0 63 58 " width="%dpx" height="%dpx">',$size/100*63,$size/100*58);

4902   $out.= sprintf('<svg xmlns="http://www.w3.org/2000/svg" viewBox="10 0 63 57 " width="%dpx" height="%dpx">',$size/100*63,$size/100*57);

Das sollte auch die SVG-konforme Skalierungsmethode sein. librsvg wird vom RSS-Modul benutzt, um SVG nach PNG zu konvertieren.

Nachtrag: Das style-Attribut zur Größenangabe braucht man doch noch (zusätzlich), um die Größe auch im FHEMWEB Frontend richtig zu bekommen...
« Letzte Änderung: 23 Februar 2021, 07:33:30 von xenos1984 »

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8068
Antw:neue svg-Funktionen: icon_ring, icon_bar, cylinder_bars, icon_ring2
« Antwort #129 am: 23 Februar 2021, 13:09:33 »
Danke für den Tipp.

Ich werde es heute Abend beheben.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-Web, THRESHOLD, FHEM-Befehl: IF

Offline jkriegl

  • Full Member
  • ***
  • Beiträge: 254
Antw:neue svg-Funktionen: icon_ring, icon_bar, cylinder_bars, icon_ring2
« Antwort #130 am: 23 Februar 2021, 17:25:10 »
Benutze ein sub und bekomme bei attr der uiTable log-Eintragungen, obwohl alles richtig funktioniert und verbose=2 ist.
In [vhk:Wer] steht z.B. "eco 17.0 Therme" (od. Solar, keiner)
Muss ich noch etwas einstellen?
2021.02.23 17:11:21 3: system return value: Unknown command sub, try help.
Unknown command my, try help.
Unknown command return($words[2]), try help.
Unknown command }
}

icon_ring((wer_hzt([vhk:wer])eq"solar"?"sani_solar_temp\@yellow":(wer_hzt([vhk:wer])eq"therme"?"sani_boiler_temp\@darkorange":"")),(wer_hzt([vhk:wer])eq"keiner"?"keiner":([var:wert])),20,60,120,0,"vl",1,120)

style(wer_hzt([vhk:wer])), try help.
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]);;}\
}\
\
icon_ring((wer_hzt([vhk:Wer])eq"Solar"?"sani_solar_temp\@yellow":(wer_hzt([vhk:Wer])eq"Therme"?"sani_boiler_temp\@Darkorange":"")),(wer_hzt([vhk:Wer])eq"keiner"?"keiner":([Var:Wert])),20,60,120,0,"VL",1,120)\
\
style(wer_hzt([vhk:Wer]))
attr di_ui_hz verbose 2
Rpi 3, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8068
Antw:neue svg-Funktionen: icon_ring, icon_bar, cylinder_bars, icon_ring2
« Antwort #131 am: 23 Februar 2021, 19:01:37 »
Ich sehe keinen Fehler.

Bei mir wird korrekterweise eine Tabelle mit "c" angezeigt:

Internals:
   CFGFN     
   DEF        ###
   FUUID      603541cd-f33f-c0d4-848f-ceb782fc33184505
   MODEL      FHEM
   NAME       di_ui_hz
   NOTIFYDEV  global
   NR         6186
   NTFY_ORDER 50-di_ui_hz
   STATE      initialized
   TYPE       DOIF
   READINGS:
     2021-02-23 18:56:29   cmd             0
     2021-02-23 18:56:29   mode            enabled
     2021-02-23 18:56:29   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"))
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-Web, THRESHOLD, FHEM-Befehl: IF

Offline jkriegl

  • Full Member
  • ***
  • Beiträge: 254
Antw:neue svg-Funktionen: icon_ring, icon_bar, cylinder_bars, icon_ring2
« Antwort #132 am: 23 Februar 2021, 19:44:09 »
Es geht um den Eintrag im Log, der unschön ist.
Der Rückgabewert wird bei mir auch korrekt angezeigt.
Rpi 3, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8068
Antw:neue svg-Funktionen: icon_ring, icon_bar, cylinder_bars, icon_ring2
« Antwort #133 am: 23 Februar 2021, 20:51:58 »
Es geht um den Eintrag im Log, der unschön ist.
Der Rückgabewert wird bei mir auch korrekt angezeigt.

Bei mir kommt kein Eintrag im Log bei der geposteten Definition von mir.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-Web, THRESHOLD, FHEM-Befehl: IF

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 8068
Antw:neue svg-Funktionen: icon_ring, icon_bar, cylinder_bars, icon_ring2
« Antwort #134 am: 23 Februar 2021, 21:17:43 »
Danke für den Tipp.

Ich werde es heute Abend beheben.

Korrigierte Version eingecheckt:

https://svn.fhem.de/trac/browser/trunk/fhem/FHEM?order=date&desc=1

Mit der Korrektur des LinearGradienten funktioniert jetzt wieder mein altes Wandtablet :)
« Letzte Änderung: 23 Februar 2021, 21:21:46 von Damian »
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-Web, THRESHOLD, FHEM-Befehl: IF