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

Damian

ja, GUI ist nur die eine Sache, die nächste Stufe ist UI mit Automatisierung zu verbinden, auf einer Abstraktionsebene, die es einem erlaubt mit jeweils einer Definitionszeile neue Szenarien zu definieren, siehe https://wiki.fhem.de/wiki/DOIF/Automatisierung#Beschattungssteuerung_abh.C3.A4ngig_von_der_Zimmertemperatur_und_Sonneneinstrahlung_f.C3.BCr_mehrere_Szenarien_mit_Visualisierung
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

#46
Zitat von: Reinhart am 13 Februar 2021, 09:29:49
Super Danke, vor allem die vielen Beispieldefinitionen machen es wesentlich leichter und das Wiki ist schön übersichtlich gestaltet!

Ist eigentlich ein ganz schöner Umfang den du da realisiert hast, eigentlich deckt das jetzt alle Anwendungen aus Fhem ab!
Ich bin mitten drinnen und hübsche jetzt meine gesamten Ansichten in Fhem auf!

LG
Reinhart

Falls jemand nur in einem Device die Statuszeile mit Hilfe der SVG-Funktionen aufhübschen will, der kann das auch direkt über das devStateIcon-Attribut ohne eine DOIF/uiTable-Definition tun:

defmod Aussensensor CUL_WS 5
attr Aussensensor alias Aussen
attr Aussensensor devStateIcon {ui_Table::temp_hum_ring(ReadingsVal($name,"temperature",0),ReadingsVal($name,"humidity",0))}



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

Reinhart

#47
angeregt durch dein Beispiel mit dem Attribut "devStateIcon" habe ich das jetzt getestet.
Kann es sein, das ich hier die Ringstärke beim temp_ring nicht beeinflussen kann? Der ist nämlich zu dick, die vordefinierten "temp"  und "hum" passen nicht oder habe ich hier noch einen Parameter übersehen.

  {ui_Table::temp_ring(ReadingsVal($name,"Aussentemp",0),-10,30,100)}
 
  {ui_Table::icon_ring("temp_control",(ReadingsVal($name,"HKurve",0)),0,2,90,0,"Hc",1,100)}


LG
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

Damian

#48
ja, die Ringstärken sind bei allen Funktionen vordefiniert, die ist z. Zt. nicht veränderbar. ring-Funktionen mit einem Wert sind kleiner (80 Prozent), haben einen dickeren Ring (5 Pixel) und eine größere Zahl. ring-Funktionen mit zwei Werten oder mit einem Icon haben einen dünneren Ring von 2 Pixeln. Für ein einheitliches Aussehen würde ich immer den gleichen ring-Typ verwenden. Hier also bei Außentemperatur auch ein icon_ring einsetzen.

Edit: Bei icon_ring-Funktionen kann man beim icon-Parameter auch "" angeben, dann wird kein Icon dargestellt.

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

Reinhart

Zitat von: Damian am 13 Februar 2021, 20:23:37
Für ein einheitliches Aussehen würde ich immer den gleichen ring-Typ verwenden. Hier also bei Außentemperatur auch ein icon_ring einsetzen.

ah ja danke, das ist wohl der bessere und einfache Weg!

LG
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

Damian

#50
Ich habe jetzt eingebaut, dass wenn man bei icon_ring-Funktionen icon="" angibt, die Zahlen mittig dargestellt werden, hier der Vergleich:

icon_ring ("fuel",[Tankstelle:Diesel],1.10,1.30,120,0,"€",2)|
icon_ring ("",[Tankstelle:Diesel],1.10,1.30,120,0,"€",2)|
ring([Tankstelle:Diesel],1.10,1.30,120,0,"€",undef,undef,2)|
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

#51
Neue Version eingecheckt.

Angaben ohne Skalierung:

temp_hum_ring([Aussensensor:temperature],[Aussensensor:humidity])|
temp_ring([Aussensensor:temperature])|
icon_temp_ring("temp_outside",[Aussensensor:temperature])|
icon_temp_ring("",[Aussensensor:temperature])|
icon_temp_ring(" ",[Aussensensor:temperature])

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

cwagner

Diese Option finde ich super - in meinem Dashboard bringe ich nämlich inzwischen in einem Ring mehrere Infos mit unterschiedlichen Status unter, darunter auch "Pumpe ist aus" durch Verschwinden des Symbols Pumpe im Ring, dann rückt die Temperatur in die Mitte. Sehr schön!

Mein Screenshot zeigt das schon mal gezeigte, nun erweiterte Dashboard aus einer uiTable, von links:

Kesseltemperatur, hier ist gerade die Heizpumpe an und der rote Kreis wandert weiter nach unten, was der nächste Startpunkt für den Brenner ist (dann erscheint das Brenner-Symbol)
Daneben Vorlauf/Rücklauf in der Heizungsanlage (wir haben aktuell -14 Grad außen bei Super-Sonnenschein)
Die Rücklaufanhebung ist aus (kein Symbol), Speichertemperatur ist 27,8 Grad.
Warmwasserpumpe ist aus (kein Symbol), Warmwasser ist aber reichlich im oberen Segement des Speicher
Die Fußbodenheizung ist angelaufen, aber der "verschwundende" Ring zeigt: wir sind noch unter der Wunschtemperatur
Die Solarthermie ist angesprungen und erwärmt den Warmwasserspeicher (Symbol Wasser, bei Erwärmen des Rücklaufanhebungsspeichers Symbol Heizkörper), wenn sie nicht arbeitet, kein Symbol
Vorlauf/Rücklauf der Solarthermie im Anlauf (erst 2° Unterschied)
Die unteren Temperaturen in den beiden Schichtenspeichern für Warmwasser (22 Grad) und Rücklaufanhebung (23,5), weswegen sich das Steuerungs-DOIF entschieden hat, erst einmal dem Warmwasser-Vorrang zu folgen...


Christian
PI 2B+/5 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: cwagner am 14 Februar 2021, 10:22:55
Diese Option finde ich super - in meinem Dashboard bringe ich nämlich inzwischen in einem Ring mehrere Infos mit unterschiedlichen Status unter, darunter auch "Pumpe ist aus" durch Verschwinden des Symbols Pumpe im Ring, dann rückt die Temperatur in die Mitte. Sehr schön!

Mein Screenshot zeigt das schon mal gezeigte, nun erweiterte Dashboard aus einer uiTable, von links:

Kesseltemperatur, hier ist gerade die Heizpumpe an und der rote Kreis wandert weiter nach unten, was der nächste Startpunkt für den Brenner ist (dann erscheint das Brenner-Symbol)
Daneben Vorlauf/Rücklauf in der Heizungsanlage (wir haben aktuell -14 Grad außen bei Super-Sonnenschein)
Die Rücklaufanhebung ist aus (kein Symbol), Speichertemperatur ist 27,8 Grad.
Warmwasserpumpe ist aus (kein Symbol), Warmwasser ist aber reichlich im oberen Segement des Speicher
Die Fußbodenheizung ist angelaufen, aber der "verschwundende" Ring zeigt: wir sind noch unter der Wunschtemperatur
Die Solarthermie ist angesprungen und erwärmt den Warmwasserspeicher (Symbol Wasser, bei Erwärmen des Rücklaufanhebungsspeichers Symbol Heizkörper), wenn sie nicht arbeitet, kein Symbol
Vorlauf/Rücklauf der Solarthermie im Anlauf (erst 2° Unterschied)
Die unteren Temperaturen in den beiden Schichtenspeichern für Warmwasser (22 Grad) und Rücklaufanhebung (23,5), weswegen sich das Steuerungs-DOIF entschieden hat, erst einmal dem Warmwasser-Vorrang zu folgen...


Christian

Irgendwie fehlt bei dir der Hintergrund bei den icon-Funktionen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Reinhart

bei mir hat das Update offensichtlich nicht funktioniert.

98_DOIF.pm 23728 2021-02-12 20:56:22Z Damian $
habe noch diese Version!

LG
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

cwagner

#55
Die Icons geben die Betriebszustände an: Beispielsweise Kessel feuert (dann läuft in der Logik auch die Pumpe). Kessel feuert nicht, dann erscheint das Pumpensymbol. Wenn die Heizung nicht gebraucht wird, also auch die Pumpe aus ist, verschwindet dieses Symbol.

Das Dreiwege-Ventil wird umgeschaltet, wenn die Rücklauftemperatur unter der Temperatur der oberen Schicht des Speichers Rücklaufanhebung ist. Dann erscheint das Symbol bei RLA...

Die Heizung muss Warmwasser erzeugen, das Symbol Warmwasserpumpe erscheint.
Die Fußbodenheizung heizt, das Symbol FBH erscheint.

Die Solaranlage beschickt entweder die untere Schicht des Warmwasser-Speichers (Symbol Wasserhahn) oder die untere Schicht des Speichers für Rücklaufanhebung (Symbol Heizkörper) oder sie ist aus (kein Symbol).

Rot ist immer Wärmeeintrag/-bedarf, grün ist etwas läuft

PI 2B+/5 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

#56
So, ich habe jetzt alle Ringe gleichgezogen, sowohl die Ringstärke ist bei allen gleich, als auch die Größe bei 100 % Skalierung.

Bei der neuen cylinder_bars-Funktion habe ich weitere Optimierungen vorgenommen, wenn mehr als 4 Balken dargestellt werden sollen, dann wird die Legende mit Werten nebeneinander dargestellt. Damit wird die Grafik nicht beliebig in die Höhe gezogen.

Doku cylinder_bars: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Balkendarstellung_mehrerer_Zahlenwerten_mit_Hilfe_der_universellen_SVG-Funktion_cylinder_bars

aktuelle Version siehe: 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

Damian

Zitat von: cwagner am 14 Februar 2021, 11:18:29
Die Icons geben die Betriebszustände an: Beispielsweise Kessel feuert (dann läuft in der Logik auch die Pumpe). Kessel feuert nicht, dann erscheint das Pumpensymbol. Wenn die Heizung nicht gebraucht wird, also auch die Pumpe aus ist, verschwindet dieses Symbol.

Das Dreiwege-Ventil wird umgeschaltet, wenn die Rücklauftemperatur unter der Temperatur der oberen Schicht des Speichers Rücklaufanhebung ist. Dann erscheint das Symbol bei RLA...

Die Heizung muss Warmwasser erzeugen, das Symbol Warmwasserpumpe erscheint.
Die Fußbodenheizung heizt, das Symbol FBH erscheint.

Die Solaranlage beschickt entweder die untere Schicht des Warmwasser-Speichers (Symbol Wasserhahn) oder die untere Schicht des Speichers für Rücklaufanhebung (Symbol Heizkörper) oder sie ist aus (kein Symbol).

Rot ist immer Wärmeeintrag/-bedarf, grün ist etwas läuft

Danke für die Erklärung. Ich glaube wir haben uns missverstanden. Als Hintergrund meinte ich den grauen Hintergrund der Ringe in deiner Grafik. Teste bitte mal die aktuelle Version von heute.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

cwagner

Ah, da hast Du aber genau hingeschaut. In der Tat gibt es da noch zwei Unsauberkeiten: Ich benutzte # $Id: 98_DOIF.pm 23740 2021-02-14 11:23:37Z Damian $ und habe einen Restart gemacht.


  • Danach stelle ich zwei Dinge fest: Erstens sind der dritte und vierte Ring kleiner (da habe ich die Skalierung auf 110 mal rausgenommen). Hatte die auf etwa gleiche Größe durch Skalierung "getrimmt".
  • Der Hintergrund|Transparenz wird unterschiedlich behandelt. Habe mal f18 auf hellen Modus gestellt (siehe Screenshot)
Hier Die Definition der der 8 Ringe:
## Heizung
"DI_Brenner"|"  "|"DI_RLA"|"DI_Warmwasser"|"DI_FBH_Betrieb"|"DI_Solarthermie"|" "|"Speicher unten"
icon_temp_ring((([Switch_Heizkeller:Brenner]) eq "ON"?"sani_boiler_temp\@red":([SW_03_Heizpumpe]) eq "on"?"sani_pump\@red":""),[T_Heizung:temperature:d1],[Vorlauf:state],[Vorlauf:state]+25,110)|
ring2([T_Vorlauf:temperature],30,90,undef,undef,"°VL",120,\&temp_hue,1,[T_Ruecklauf:temperature],30,90,undef,undef,"°RL",\&temp_hue,1)|
icon_temp_ring(([SW_01_RL_Anhebung] eq "off"?"":"sani_return_temp\@red"),[T_RL_Anhebung:temperature:d1],10,80)|
icon_temp_ring(([SW_02_WW_Pumpe] eq "off"?"":"sani_water_cold\@red,1.1,-1,4"),[T_Warmwasser:temperature:d1],30,60)|
icon_temp_ring(([SW_04_FBH_Pumpe] eq "off"?"":"sani_floor_heating\@red"),[TF_Galerie:temperature:d1],[RR_Galerie]-15,[RR_Galerie]+5,110)|
## Solarthermie
icon_temp_ring((([DI_Solarthermie:state]) eq "Warmwasser"?"sani_water_tap\@green":([DI_Solarthermie:state]) eq "RLA"?"sani_heating\@green":""),[T_Kollektor:temperature:d1],-10,120)|
ring2([T_VL_Kollektor:temperature],10,120,undef,undef,"°VL",120,\&temp_hue,1,[T_RL_Kollektor:temperature],10,120,undef,undef,"°RL",\&temp_hue,1)|
ring2([T_Solarspeicher_1:temperature],10,60,undef,undef,"°WW",120,\&temp_hue,1,[T_Solarspeicher_2:temperature],10,100,undef,undef,"°RLA",\&temp_hue,1)


(Fußbodenheizung ist inzwischen aus)

Christian
PI 2B+/5 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

xenos1984

Zitat von: Damian am 14 Februar 2021, 10:31:39
Irgendwie fehlt bei dir der Hintergrund bei den icon-Funktionen.

Könnte man den vielleicht auch von der Farbe / Transparenz her ändern oder konfigurierbar machen, bzw. per CSS Stil setzen? Auf hellem Hintergrund sehen die dunklen Ringe eher suboptimal aus. Bei den Icons ist mir außerdem aufgefallen, dass manche unten abgeschnitten sind und teilweise nicht zentriert (z.B. beim Thermometer). Hier ein Beispiel:


{
ui_Table::icon_ring("temp_temperature",ReadingsNum($name,"temperature",0),-35,35,240,0,"°C",1,160) .
ui_Table::icon_ring("weather_humidity",ReadingsNum($name,"humidity",0),0,100,60,180,"%",0,160) .
ui_Table::icon_ring("weather_wind_speed",ReadingsNum($name,"wind_speed_ms",0),0,50,180,0,"m/s",1,160) .
ui_Table::icon_ring("weather_barometric_pressure",ReadingsNum($name,"pressure",0),950,1050,180,0,"hPa",0,160)
}