FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: gestein am 19 November 2022, 20:19:33

Titel: [gelöst] uiTable, html und Readings?
Beitrag von: gestein am 19 November 2022, 20:19:33
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
Titel: Antw:uiTable, html und Readings?
Beitrag von: Damian am 20 November 2022, 09:42:37
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.
Titel: Antw:uiTable, html und Readings?
Beitrag 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
Titel: Antw:uiTable, html und Readings?
Beitrag von: Damian am 20 November 2022, 10:34:52
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
Titel: Antw:uiTable, html und Readings?
Beitrag von: gestein am 22 November 2022, 18:49:10
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;
}
Titel: Antw:uiTable, html und Readings?
Beitrag von: Damian am 22 November 2022, 19:28:58
Indem du die Werte an deine Funktion übergibst, wenn sie triggern.

FormatOverview([$SELF:logdev],...)|
Titel: Antw:uiTable, html und Readings?
Beitrag von: gestein am 23 November 2022, 22:00:58
Danke für den Hinweis.
Das scheint zu klappen.

Lg, Gerhard