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

Nighthawk

#150
Hallo Damian,

vielen Dank für die neuen Funktionen!
Ich versuche gerade die Verdunstung mit icon_ring darzustellen, leider wird das icon  welches ich in den SVG Ordner eingepflegt habe nur manchmal und dann meistens anders als der Wert und die Einheit eingefärbt. Mache ich hier etwas falsch, oder ist das icon dafür nicht geeignet?

{package ui_Table;
  $SHOWNOSTATE=1;
  $ATTRIBUTESFIRST =  1;
  $TC{1..8}="align='center'";
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("weather_sun",[Wetter:fc0_sun],0,100,0,180,"%",130,undef,1,[Wetter:fc0_uv],0,20,180,270,"UV",undef,1)|
icon_ring2("weather_rain_light",[Wetter:fc0_chOfRainDay],0,10,180,270,"%",130,undef,1,[Wetterg:fc0_rain],0,10,180,270,"mm",undef,1)|
icon_ring ("evaporation",[Wetter:fc0_evapor],undef,undef,undef,undef,"mm",undef,130)
icon_ring ("sani_solar",[Wetter:fc0_rad],undef,undef,undef,undef,"W/m²",undef,130) |
icon_ring ("weather_frost",[Wetter:fc0_frost],undef,undef,undef,undef,"%",undef,130)


Damian

Dein Icon ist bereits eingefärbt, die SVG-Icons, die man selbst einfärbt, müssen schwarze Farbe haben. Dann hast du keine min, max-Grenzen für die Werte definiert und keine Farbzuordnung, siehe: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Farbskalierte_Anzeige_eines_Icons_mit_einem_Zahlenwert_mit_Hilfe_der_universellen_SVG-Funktion_icon_ring

Ich habe das Icon und die Definition angepasst:

icon_ring ("evaporation2",[Wetter:fc0_evapor],0,10,270,180,"mm",undef,130)

Die Obergrenze 10 musst du ggf. anpassen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF


Damian

Ich habe die Standardhöhe der icon_bar-Funktion nun auf 80 75 gesetzt (siehe Zeile 2). Ab einer Höhe von 80 75-Pixel gibt es genug Platz um die Angaben untereinander zu schreiben, das geschieht nun automatisch - diese werden dann auch zentriert. Möchte man das bisherige Verhalten erreichen, so muss man bei den icon_bar-Funktionen den Parameter $height mit 60 angeben (siehe Zeile 1)

Bei der bar-Funktion (ohne Icon) ist die Standardhöhe bei 60 geblieben (siehe Zeile 3). Hier werden die Angaben jetzt auch untereinander geschrieben, da genügen Platz da ist.  Wenn man die Höhe unter 50 angibt, dann werden die Angaben nebeneinander geschrieben (siehe Zeile 4) - wie bisher.

Neuer Version: https://svn.fhem.de/trac/browser/trunk/fhem/FHEM?order=date&desc=1
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Robothaler

Hallo Damian,

ich finde die neuen SVG-Funktionen echt genial!
Meine Pool-Steuerung habe ich schon weitestgehend mit den neuen Funktionen visualisiert.

Der PH- und Redox-Wert wird aktuell mit der icon_ring-Funktion dargestellt, leider kann ich da aber keinen "optimalen" Grenzbereich einstellen.

Bedeutet, dass ich gerne einen Wertebereich für den PH-Wert von 6,8-7,2 eingeben möchte.
In diesem Bereich sollten die Werte grün sein und alles was darunter oder darüber liegt sollte rot eingefärbt werden.

Kann ich das mit den aktuellen Funktionen umsetzen?
Bisher habe ich da keine Möglichkeit entdeckt.

Grüße,
Robothaler

cwagner

Meine Idee des "Max"-Mitnehmers realisiere ich aktuell ja über die ring2-Funktion. Eine Variante ist, dass ich den Max-Wert in der Funktion durch den jeweiligen Maximal-Wert setze und somit steht der Ring immer im Verhältnis zum (Tages-)Höchstwert.
Aus der analogen Welt kenne ich den Höchstwert-Mitnehmer (z.B.) bei Druckanzeigen. Das habe ich mal visualisiert...

Christian
PI 2B+/3B+ Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

Robothaler

Eigentlich gibt es ja zwei Grenzwerte die dargestellt werden sollten.
Die Darstellung sollte ja für den Laien leicht verständlich sein, da bietet sich halt die farbliche Eingrenzung sehr gut an.

So wie auf einem Monometer da sieht man auch ganz gut ob die Werte im grünen Bereich sind.

Damian

Man kann mit einer eigenen Color-Funktion den Farbbereich scharf abgrenzen. Das funktioniert dann so:

defmod di_pool DOIF ##
attr di_pool uiTable { package ui_Table;;\
  sub phcolor {\
    my ($ph)=@_;;\
    if ($ph < 6.8 or $ph > 7.2) {\
      return (0);;\
    } else {\
      return (120);;\
    }\
  }\
}\
icon_mring("Icon_Fisch",[pool:ph],5,9,undef,undef,"PH",1,undef,\&phcolor)


Auch einen gelben Übergangsbereich bei 6.8 bzw. 7.2 könntest du auf diese Art und Weise realisieren.

Eine Unter- oder Obergrenze könntest du (beides gleichzeitig geht nicht), wie gerade von Christian vorgeschlagen mit icon_ring2 realisieren.

Die Wassertropfen habe ich als SVG-Grafik nicht gefunden :(
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Robothaler

Ich bin beeindruckt, wie schnell du Lösungsvorschläge lieferst! 👍🏻

Deinen Vorschlag muss ich mir genauer ansehen. Damit kann ich auch bei anderen Werten die Farbe besser abgrenzen. z.B. Bei meinen Stellmotoren.

Für den PH- und Redox-Wert ist das schonmal besser als jetzt.

Vielen Dank schonmal. 

PS: Das Tropfen-SVG ist im FHEM-Standard zu finden. Name = ,,humidity"

Damian

Zitat von: Robothaler am 20 März 2021, 21:27:47
Ich bin beeindruckt, wie schnell du Lösungsvorschläge lieferst!

Wie wäre mit (ist noch nicht offiziell) :)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Robothaler

Das wäre genial! 👍🏻

Hammer wie du das aus dem Hut zauberst!

xenos1984

Zitat von: Damian am 20 März 2021, 21:52:07
Wie wäre mit (ist noch nicht offiziell) :)

Wenn der pH-Wert im roten Bereich ist, muss der Fisch aber kopfüber an der Oberfläche treiben! :D

cwagner

Zitat von: Damian am 20 März 2021, 21:52:07
Wie wäre mit (ist noch nicht offiziell) :)

Ey, super, das bietet viele weitere Anwendungsoptionen.
Das Bild "aus dem Hut zaubern" ist hier wirklich angebracht: Wie auf der Bühne, "noch ein buntes Tuch, noch ein buntes Tuch und noch eines, und wieder eines..."


Christian
PI 2B+/3B+ Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

Damian

Zitat von: xenos1984 am 20 März 2021, 23:57:40
Wenn der pH-Wert im roten Bereich ist, muss der Fisch aber kopfüber an der Oberfläche treiben! :D

Den kann man doch per Icon-Rotation drehen - ok, dann läuft aber das Wasser aus dem Aquarium :)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Zitat von: cwagner am 21 März 2021, 07:54:34
Ey, super, das bietet viele weitere Anwendungsoptionen.

Ich muss schauen, wie ich es geschickt in das bestehende Ring-Ökosystem einbaue - ich habe da aber schon Ideen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF