FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: gestein am 23 Februar 2022, 16:59:11

Titel: uiTable-Elemente zur Darstellung des state
Beitrag von: gestein am 23 Februar 2022, 16:59:11
Hallo,

ich habe schon seit einiger Zeit ein Device, dass mir die Größe meiner fhem-Installation (samt Backup und logs) anzeigt.
Nun habe ich gelesen, dass man die uiTable-Elemente zur Darstellung des state verwenden kann.

Flugs mal ein "cylinder_bars" eingefügt. Klappt super und schaut gut aus - etwas groß, aber das ist wahrscheinlich eine Sache der Einstellungen.
Dann wollte ich noch die Farbe des Textes je nach Wert verändern, so wie hier https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Farbskalierte_Feuchtigkeitsanzeige_mit_Hilfe_der_Funktion_hum (https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Farbskalierte_Feuchtigkeitsanzeige_mit_Hilfe_der_Funktion_hum)
Also noch ein "" eingefügt.

Aber das klappt leider nicht. Angezeigt wird "font-weight:bold;color:#5CE6CA".

Was mache ich falsch? Muss ich die html-Codes selbst dazufügen?
Ist das so beabsichtigt?

Danke, lg, Gerhard


defmod TE.FolderSize CustomReadings
attr TE.FolderSize alias FHEM Folder Size
attr TE.FolderSize comment https://mayach.de/fhem-ordnergroesse/
attr TE.FolderSize event-min-interval .*:3600
attr TE.FolderSize event-on-change-reading .*
attr TE.FolderSize icon it_remote_folder
attr TE.FolderSize interval 600
attr TE.FolderSize readingDefinitions fhem_used:qx(df -t ext4 | grep -e root | cut -d ' ' -f14 | cut -d '%' -f1 2>&1),kernel:qx(uname -r 2>&1),fhem_folder_size:qx(du -mc /opt/fhem | grep -e total -e insgesamt| cut -d 't' -f1 2>&1| cut -d 'i' -f1 2>&1),fhem_log_folder_size:qx(du -mc /opt/fhem/log | grep -e total -e insgesamt| cut -d 't' -f1 2>&1| cut -d 'i' -f1 2>&1),fhem_backup_folder_size:qx(du -mc /opt/fhem/backup | grep -e total -e insgesamt| cut -d 't' -f1 2>&1| cut -d 'i' -f1 2>&1)
attr TE.FolderSize room Zentrale,backup
attr TE.FolderSize stateFormat {ui_Table::hum(ReadingsVal("$name","fhem_used",0)).\
ui_Table::cylinder_bars("",0,50,"GB",undef,undef,undef,1,ReadingsVal("$name","fhem_backup_folder_size","0")/1000,30,"fhem_backup_folder",ReadingsVal("$name","fhem_folder_size","0")/1000,220,"fhem_folder",ReadingsVal("$name","fhem_log_folder_size","0")/1000,180,"fhem_log_folder")}
Titel: Antw:uiTable-Elemente zur Darstellung des state
Beitrag von: Damian am 23 Februar 2022, 19:24:09
Die Farbe des Textes entspricht der Farbe des Balkens.

Sie muss an den markierten Stellen angegeben werden:

Zitatui_Table::cylinder_bars("",0,50,"GB",undef,undef,undef,1,ReadingsVal("$name","fhem_backup_folder_size","0")/1000,30,"fhem_backup_folder",ReadingsVal("$name","fhem_folder_size","0")/1000,220,"fhem_folder",ReadingsVal("$name","fhem_log_folder_size","0")/1000,180,"fhem_log_folder")}
statt der 30 kannst du z. B. eine Funktion angeben, die dir zum Readingwert einen Farbwert (also eine Zahl) zwischen 0 und 360 liefert.

Für Feuchte habe ich z. B. intern eine Funktion hum_hue definiert, der Aufruf sieht dann so aus.

hum_hue(ReadingsVal("$name","fhem_backup_folder_size","0")/1000)

Titel: Antw:uiTable-Elemente zur Darstellung des state
Beitrag von: gestein am 23 Februar 2022, 22:27:55
Hallo Damian,

Danke. Das versuche ich auch mal.

Ich dachte aber, dass der Aufruf von ,,ui_Table::hum(ReadingsVal("$name","fhem_used",0))" schon den vollen html-Code für die farbige Darstellung wie in Deinem Beispiel bringt.
Wenn ich das richtig verstehe, dann bringt ui_Table::hum aber nur einen css-Style für die Farbe. Richtig?

Das Einbinden als html-Code wäre dann wie folgt:
{"<text style=\"".ui_Table::hum(ReadingsVal("$name","fhem_used",0))."\">".ReadingsVal("$name","fhem_used",0)."% ".
ui_Table::cylinder_bars("",0,50,"GB",undef,undef,undef,1,ReadingsVal("$name","fhem_backup_folder_size","0")/1000,30,"fhem_backup_folder",ReadingsVal("$name","fhem_folder_size","0")/1000 ,220,"fhem_folder",ReadingsVal("$name","fhem_log_folder_size","0")/1000,180,"fhem_log_folder")}


Zumindest zeigt es den Text in der/einer Farbe an.

Dann probiere ich mal ein paar Funktionen von Dir durch.
Macht echt Spaß.
Und wahrscheinlich kann man das auch nur mit einem DOIF lösen - ohne CustomReadings.

Lg, Gerhard
Titel: Antw:uiTable-Elemente zur Darstellung des state
Beitrag von: Damian am 23 Februar 2022, 22:39:09
Es hängt davon ab, welchen Text du einfärben willst. Ich ging von der Beschreibung der Balken aus und deren Farbe wird einfach durch Zahlen definiert (siehe color-Parameter). Bei der Überschrift (Header) ist keine Einfärbungsoption explizit programmiert.

Cylinder ist als SVG-Element programmiert.
Titel: Antw:uiTable-Elemente zur Darstellung des state
Beitrag von: gestein am 25 Februar 2022, 15:24:24
Hallo,

Danke, das funktioniert nun soweit.

Ich habe nun ein anderes Widget versucht, da das besser zur Darstellung passt: cylinder

https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#3d-Balkendarstellung_mehrerer_Zahlenwerten_mit_Hilfe_der_universellen_SVG-Funktion_cylinder (https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#3d-Balkendarstellung_mehrerer_Zahlenwerten_mit_Hilfe_der_universellen_SVG-Funktion_cylinder)
Das Beispiel aus dem Wiki ist schnell angepasst, aber leider wird im Diagramm nur ein Wert graphisch dargestellt - obwohl ich zwei angebe.
defmod TE.FolderSize CustomReadings
attr TE.FolderSize alias FHEM Folder Size
attr TE.FolderSize comment https://mayach.de/fhem-ordnergroesse/\
https://forum.fhem.de/index.php/topic,126404.msg1210151.html#msg1210151\
ring(ReadingsVal("$name","fhem_used",0),0,100,30,90,"%","100,1",undef,)\
ui_Table::cylinder_bars("",0,50,"GB",undef,undef,undef,1,ReadingsVal("$name","fhem_backup_folder_size","0")/1000,30,"fhem_backup_folder",ReadingsVal("$name","fhem_folder_size","0")/1000 ,220,"fhem_folder",ReadingsVal("$name","fhem_log_folder_size","0")/1000,180,"fhem_log_folder")\

attr TE.FolderSize event-min-interval .*:3600
attr TE.FolderSize event-on-change-reading .*
attr TE.FolderSize icon it_remote_folder
attr TE.FolderSize interval 600
attr TE.FolderSize readingDefinitions total_free:qx(df -t ext4 | grep -e root | cut -d ' ' -f11 | cut -d '%' -f1 2>&1),total_size:qx(df -t ext4 | grep -e root | cut -d ' ' -f8 | cut -d '%' -f1 2>&1),total_used:qx(df -t ext4 | grep -e root | cut -d ' ' -f9 | cut -d '%' -f1 2>&1),fhem_used:qx(df -t ext4 | grep -e root | cut -d ' ' -f14 | cut -d '%' -f1 2>&1),kernel:qx(uname -r 2>&1),fhem_folder_size:qx(du -mc /opt/fhem | grep -e total -e insgesamt| cut -d 't' -f1 2>&1| cut -d 'i' -f1 2>&1),fhem_log_folder_size:qx(du -mc /opt/fhem/log | grep -e total -e insgesamt| cut -d 't' -f1 2>&1| cut -d 'i' -f1 2>&1),fhem_backup_folder_size:qx(du -mc /opt/fhem/backup | grep -e total -e insgesamt| cut -d 't' -f1 2>&1| cut -d 'i' -f1 2>&1)
attr TE.FolderSize room Zentrale,backup
attr TE.FolderSize stateFormat {"<text style=\"".ui_Table::hum(100-ReadingsVal("$name","fhem_used",0))."\">".ReadingsVal("$name","fhem_used",0)."% belegt ".\
ui_Table::cylinder("",0,ReadingsVal("$name","total_size","0")/1000000,"GByte",undef,undef,undef,1,ReadingsVal("$name","fhem_backup_folder_size","0")/1000,"30.100.70","backup_folder",ReadingsVal("$name","fhem_log_folder_size","0")/1000,"60.100.70","log_folder")}


Wenn ich nur einen Wert angebe, dann wird der Balken richtig gezeichnet.
Wenn ich aber zwei (egal in welcher Reihenfolge) angebe, dann wird nur der zweite richtig dargestellt.
Die Zahlenwerte erscheinen richtig, nur im Diagramm wird nichts gezeichnet.

Könnte das bitte wer ausprobieren?
Ich finde den Fehler einfach nicht.

Danke im Voraus
lg, Gerhard
Titel: Antw:uiTable-Elemente zur Darstellung des state
Beitrag von: gestein am 30 März 2022, 21:19:22
Hallo Damian,

Hast Du Dir da vielleicht mal was anschauen können?
Bediene ich das falsch?

Lg, Gerhard
Titel: Antw:uiTable-Elemente zur Darstellung des state
Beitrag von: Damian am 01 April 2022, 20:07:24
Du musst die Reihenfolge der Readings und der passenden Farben geschickt wählen, weil sich die Zylinder überlappen.

mit

{package ui_Table}
cylinder("",0,33,"GByte",undef,undef,undef,1,22,"30.100.70","backup_folder",11,"60.100.70","log_folder")


sieht es wie im Anhang aus.

Die Werte 33, 22 und 11 entsprechen deinen Readingsangaben.
Titel: Antw:uiTable-Elemente zur Darstellung des state
Beitrag von: gestein am 01 April 2022, 21:39:29
Danke für die Erklärung.
D.h., die Werte werden nicht gestapelt - schade.

Wäre es vielleicht möglich das zu implementieren?

Danke im Voraus, lg, Gerhard
Titel: Antw:uiTable-Elemente zur Darstellung des state
Beitrag von: Damian am 01 April 2022, 22:32:40
Ich habe zur Zeit noch andere Baustellen, daher wenig Zeit dafür.

Du kannst beide Werte zusammenaddieren, dann ist die sichtbare Differenz der eigentliche Wert.
Titel: Antw:uiTable-Elemente zur Darstellung des state
Beitrag von: gestein am 02 April 2022, 09:28:57
An das Summieren dachte ich auch.
Dann stimmen zumindest die Höhen der Säulen.
Aber die Zahlen stimmen dann halt nicht mehr.

Vielleicht hast Du ja irgendwann mal eine ruhige Minute 😉
Ist ja zum Glück nicht lebenswichtig.

Danke, Lg, Gerhard
Titel: Antw:uiTable-Elemente zur Darstellung des state
Beitrag von: Damian am 29 Juni 2022, 19:00:17
siehe: https://forum.fhem.de/index.php/topic,128224.msg1226435.html#msg1226435
Titel: Antw:uiTable-Elemente zur Darstellung des state
Beitrag von: gestein am 01 Juli 2022, 13:43:24
Hallo Damian,

Vielen Dank für den Hinweis und natürlich für die Implementierung.
Habe upgedatet und es funktioniert.

Tolle Arbeit!
Lg, Gerhard