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")}
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)
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
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.
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
Hallo Damian,
Hast Du Dir da vielleicht mal was anschauen können?
Bediene ich das falsch?
Lg, Gerhard
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.
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
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.
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
siehe: https://forum.fhem.de/index.php/topic,128224.msg1226435.html#msg1226435
Hallo Damian,
Vielen Dank für den Hinweis und natürlich für die Implementierung.
Habe upgedatet und es funktioniert.
Tolle Arbeit!
Lg, Gerhard