[gelöst] uiTable, html und Readings?

Begonnen von gestein, 19 November 2022, 20:19:33

Vorheriges Thema - Nächstes Thema

gestein

Hallo,

ich habe ein DOIF für eine Übersicht über alle log-Files mit 2 Cards.
In einer Card möchte ich gerne eine Übersicht (nur Text) und in einer Card ein Diagramm.

Daher habe ich im Attribut "uiTable" folgende Einträge (erstmals nur testweise):
{sub FormatOverview {
  my $FormatString="<table>";
 
  $FormatString="<tr><td><b>Übersicht FileLogs</b><br><br></td></tr>";
  $FormatString.="<tr><td>Anzahl Log-Devices:</td><td>712</td></tr>";
  $FormatString.="<tr><td>Anzahl Log-Files insgesamt:</td><td>713</td></tr>";
  $FormatString.="<tr><td>Gesamtgrößte der Log-Files:</td><td>714</td></tr>";

  $FormatString.="<tr><td>noch frei:</td><td>Bytes, %</td></tr>";
  $FormatString.="</table>";
  return $FormatString;
}
}

FormatOverview()|
cylinder_bars("Monat",0,15,"m³",undef,undef,undef,1,[Wasserverbrauch:jan],30,"Januar",[Wasserverbrauch:feb],220,"Februar",[Wasserverbrauch:mrz],180,"März",[Wasserverbrauch:apr],30,"April",[Wasserverbrauch:mai],220,"Mai",[Wasserverbrauch:jun],180,"Juni",[Wasserverbrauch:jul],30,"Juli",[Wasserverbrauch:aug],220,"August",[Wasserverbrauch:sep],180,"September",[Wasserverbrauch:okt],30,"Oktober",[Wasserverbrauch:nov],220,"November",[Wasserverbrauch:dez],180,"Dezember")


Prinzipiell läuft das auch. Aber wie bekomme ich die Werte der Readings für z.B. "Anzahl Log-Devices" in den html-Code?
Das wäre eigentlich ein Reading im DOIF selbst.
Allerdings können sich der Werte der einzelnen Readings ja auch ändern bzw. werden sie erst danach in einer FOR-Schleife berechnet.

Danke im Voraus
lg, Gerhard

Damian

Warum baust du "zu Fuß" eine eigene Tabelle, wenn uiTable, wie der Name schon sagt, selbst eine Tabelle darstellt?

Man kann in uiTable auch eigene Readings mit $SELF angeben.

Statt FormatOverview()| kann du direkt die Tabellenzellen angeben:

"übersicht FileLogs"<
"Anzahl Log-Devices: "|[$SELF:logdev,712]
"Anzahl Log-Files: "|[$SELF:Log-Files,713]
"Gesamtgrößte der Log-Files: "|[$SELF:Log-Files,714]<


Dafür braucht man selbst keinen HTML-Code zu basteln.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

gestein

#2
Hallo,

So einfach? Cool. Danke, daran hätte ich nicht gedacht.

Die Tabelle in der Tabelle hatte ich gemacht, damit die Zahlen bündig untereinander stehen.

zwei Fragen bitte noch:
Kann man die uiTable auch zur Laufzeit ändern (Zeile weg oder dazu)?
Oder überhaupt die Tabelle zur Laufzeit erstellen/löschen?

Da gab es schon mal eine Diskussion, aber die finde ich nicht.

Gerade wieder gefunden.

Danke, lg, Gerhard

Damian

Zitat von: gestein am 20 November 2022, 10:22:36
Hallo,

So einfach? Cool. Danke, daran hätte ich nicht gedacht.

Die Tabelle in der Tabelle hatte ich gemacht, damit die Zahlen bündig untereinander stehen.

zwei Fragen bitte noch:
Kann man die uiTable auch zur Laufzeit ändern (Zeile weg oder dazu)?
Oder überhaupt die Tabelle zur Laufzeit erstellen/löschen?

Da gab es schon mal eine Diskussion, aber die finde ich nicht.

Gerade wieder gefunden.

Danke, lg, Gerhard

Die Besonderheit ist hier das Zeichen "<" am Ende der Zeile, das beendet eine Tabelle und beginnt eine neue.

siehe weitere Infos hier: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Tabellendefinition_mit_Berechnungen
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

gestein

Hallo,

ja, das kenne ich.
Mir schwebt aber so eine Übersicht vor wie als Bild im Anhang.
Da müsste ich eine Tabelle in der Tabelle machen, das klappt ja auch schon gut.

Aber wie kann ich in dem html-Code den Wert eines Readings übergeben, so dass der Wert dann auch aktualisiert wird?
Wenn der Code aufgerufen wird, ist das Reading anscheinend noch "0".

Danke, lg, Gerhard

p.s.: So habe ich es mal probiert:
sub FormatOverview {
  my $FormatString="<table>";
 
  $FormatString="<tr><td><b>Übersicht FileLogs</b><br><br></td></tr>";
  $FormatString.="<tr><td>#Log-Devices:</td><td>".DOIF::get_Reading("LogDev",0)."</td></tr>";
  $FormatString.="<tr><td>#Log-Files insgesamt:</td><td>".DOIF::get_Reading("LogFiles",0)."</td></tr>";
  $FormatString.="<tr><td>Gesamtgrößte der Log-Files:</td><td>[$SELF:LogFileSizeTotal,102]</td></tr>";

  $FormatString.="<tr><td>noch frei:</td><td>Bytes, %</td></tr>";
  $FormatString.="</table>";
  return $FormatString;
}

Damian

Indem du die Werte an deine Funktion übergibst, wenn sie triggern.

FormatOverview([$SELF:logdev],...)|
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

gestein

Danke für den Hinweis.
Das scheint zu klappen.

Lg, Gerhard