Hauptmenü

uiTable - neue Funktionen

Begonnen von Damian, 06 Dezember 2019, 22:24:21

Vorheriges Thema - Nächstes Thema

Per

Vllt ließe sich das mit einen set Befehl neu zeichnen?  So oft nutzt man es ja nicht, dass man es unbedingt vollautomatisch braucht.

Damian

#121
Zitat von: Per am 18 Februar 2021, 22:20:20
Vllt ließe sich das mit einen set Befehl neu zeichnen?  So oft nutzt man es ja nicht, dass man es unbedingt vollautomatisch braucht.

Mit Neuzeichnen ist es nicht getan. Bei uiTable handelt es sich um eine statische Tabelle, die per Konfiguration geändert wird. Eine Änderung des uiTable-Attributs bedeutet eine Änderung des Systems (rotes Fragezeichen), dazu wird die vorherige Definition bereinigt, Trigger gelöscht, ein aufwändiger Parser wird durchlaufen, Trigger müssen erkannt werden und neu aufgesetzt etc.
Dynamische Anzeigen kann man innerhalb einer Tabellenzelle realisieren, siehe: https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg#Visualisierung:_offene_Fenster
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

thorte

All right.

WorkAround: Habe es jetzt über eine dynamische Anzeige innerhalb einer Tabellenzelle realisiert, indem ich über ein DOIF_Readings eine Tabellendefinition erzeuge, die ich dann mittels dem uiTable-Attribut in der Tabelle anzeige. Als Beispiel für eine Tabelle "Batterie niedrig / Batterie ok":


defmod di.Test.uiTable DOIF ##
attr di.Test.uiTable DOIF_Readings Info_BatteryLow:[@".*":battery:"low"],\
Info_BatteryOk:[@".*":battery:"ok"],\
\
my_html:{\
  my $ret = "";;\
  my @devs = split(",",[$SELF:Info_BatteryLow]);;\
  $_ = "<tr><td>Batterie niedrig</td><td>".getFullName("$_")."</td></tr>" foreach @devs;;\
  $ret = $ret.join("",@devs);;  \
\
  my @devs = split(",",[$SELF:Info_BatteryOk]);;\
  $_ = "<tr><td>Batterie ok</td><td>".getFullName("$_")."</td></tr>" foreach @devs;;\
  $ret = $ret.join("",@devs);;  \
\
  length($ret) < 5 ? return "keine Meldungen" : return "<table> $ret </table>";;\
}
attr di.Test.uiTable event_Readings html:{ fhem "get $SELF html" }
attr di.Test.uiTable room Test
attr di.Test.uiTable uiTable [$SELF:my_html]


Werde an dieser Stelle mal weiterbasteln. Mal schauen, ob es sich bewährt.

Gruß Thorsten

Damian

Zitat von: thorte am 20 Februar 2021, 12:55:56
All right.

WorkAround: Habe es jetzt über eine dynamische Anzeige innerhalb einer Tabellenzelle realisiert, indem ich über ein DOIF_Readings eine Tabellendefinition erzeuge, die ich dann mittels dem uiTable-Attribut in der Tabelle anzeige. Als Beispiel für eine Tabelle "Batterie niedrig / Batterie ok":


defmod di.Test.uiTable DOIF ##
attr di.Test.uiTable DOIF_Readings Info_BatteryLow:[@".*":battery:"low"],\
Info_BatteryOk:[@".*":battery:"ok"],\
\
my_html:{\
  my $ret = "";;\
  my @devs = split(",",[$SELF:Info_BatteryLow]);;\
  $_ = "<tr><td>Batterie niedrig</td><td>".getFullName("$_")."</td></tr>" foreach @devs;;\
  $ret = $ret.join("",@devs);;  \
\
  my @devs = split(",",[$SELF:Info_BatteryOk]);;\
  $_ = "<tr><td>Batterie ok</td><td>".getFullName("$_")."</td></tr>" foreach @devs;;\
  $ret = $ret.join("",@devs);;  \
\
  length($ret) < 5 ? return "keine Meldungen" : return "<table> $ret </table>";;\
}
attr di.Test.uiTable event_Readings html:{ fhem "get $SELF html" }
attr di.Test.uiTable room Test
attr di.Test.uiTable uiTable [$SELF:my_html]


Werde an dieser Stelle mal weiterbasteln. Mal schauen, ob es sich bewährt.

Gruß Thorsten

Für dynamische Listen schau dir mal das Modul readingsGroup an.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

JudgeDredd

Hallo Zusammen,

für meine Anzeige wäre es schön, wenn die Cylinder-Funktion auch horizontal darstellt werden könnte.
Leider habe ich diesbezüglich nichts gefunden. Habe ich es übersehen oder ist das nicht möglich ?

Bitte nicht als Wunsch verstehen, wenn es nicht geht, dann ist es halt so.
Ich möchte nicht, das hier irgendwer Arbeit investiert für einen einzelnen Wunsch.

Gruß,
JudgeDredd
Router: Eigenbau (pfSense)
FHEM: Proxmox (DELL R720) | Debian 12 (VM)

Damian

Zitat von: JudgeDredd am 07 Mai 2021, 18:04:58
Hallo Zusammen,

für meine Anzeige wäre es schön, wenn die Cylinder-Funktion auch horizontal darstellt werden könnte.
Leider habe ich diesbezüglich nichts gefunden. Habe ich es übersehen oder ist das nicht möglich ?

Bitte nicht als Wunsch verstehen, wenn es nicht geht, dann ist es halt so.
Ich möchte nicht, das hier irgendwer Arbeit investiert für einen einzelnen Wunsch.

Gruß,
JudgeDredd

Wie hättest du es gern?
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

JudgeDredd

Zitat von: Damian am 07 Mai 2021, 18:10:25
Wie hättest du es gern?
Och, die Grafik find ich schon schick, so wie sie ist. Nur eben horizontal.
Also Links "0" und rechts die "100".

Aber wie gesagt, ich kann auch mit der aktuellen vertikalen Situation leben.
Ich dachte nur, das man es schon jetzt mittels Parameter konfigurieren könnte.

Gruß,
JudgeDredd
Router: Eigenbau (pfSense)
FHEM: Proxmox (DELL R720) | Debian 12 (VM)

Damian

Ein Balken oder mehrere?
Balken ineinander oder neben einander? (siehe bars-Funktion)
Mit Beschriftungen oder ohne?
Mit Hintergrund oder ohne?

Einen waagerechten Balken mit einer Zahl, der in eine Zeile hineinpasst könnte ich mir ebenso vorstellen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

JudgeDredd

Zitat von: Damian am 07 Mai 2021, 19:56:55
Ein Balken oder mehrere?
Balken ineinander oder neben einander? (siehe bars-Funktion)
Mit Beschriftungen oder ohne?
Mit Hintergrund oder ohne?

Einen waagerechten Balken mit einer Zahl, der in eine Zeile hineinpasst könnte ich mir ebenso vorstellen.
Mit einem waagrechten Balken, der in eine Zeile passt wäre mir am meisten geholfen.

Aber wenn Du wirklich was machen möchtest, dann vielleicht so, das möglichst viele was davon haben.
Designtechnisch bin ich allerdings voll der Krüppel  :o Daher überlasse ich die Beschriftungen voll Deiner Inspiration.

Gruß,
JudgeDredd
Router: Eigenbau (pfSense)
FHEM: Proxmox (DELL R720) | Debian 12 (VM)

Damian

Zitat von: JudgeDredd am 07 Mai 2021, 20:11:36
Mit einem waagrechten Balken, der in eine Zeile passt wäre mir am meisten geholfen.

Aber wenn Du wirklich was machen möchtest, dann vielleicht so, das möglichst viele was davon haben.
Designtechnisch bin ich allerdings voll der Krüppel  :o Daher überlasse ich die Beschriftungen voll Deiner Inspiration.

Gruß,
JudgeDredd

Zuerst muss ich aber meine aktuelle Baustelle fertigstellen - card-Funktion
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

JudgeDredd

Zitat von: Damian am 07 Mai 2021, 20:39:15
Zuerst muss ich aber meine aktuelle Baustelle fertigstellen - card-Funktion
Du bist der einzige der über Deine Freizeit bestimmen sollte.
Wenn es irgendwann soweit sein sollte, dann bekomme ich das ja bestimmt mit.
Router: Eigenbau (pfSense)
FHEM: Proxmox (DELL R720) | Debian 12 (VM)

KyleK

Hallo,

ich heute in das Thema uiTable eingestiegen und war sehr überrascht wie einfach und schnell man schöne Dashboard-Grafiken bekommt.
Funktioniert klasse.

Über eine kuriose Sache bin ich gestolpert:
In all meinen uiTable-Definitionen nutze ich $SHOWNOSTATE=1;, aber bei einigen Devices schien dies keinen Effekt zu haben.
Der state ("initialized") wurde trotzdem angezeigt.
Durch einen dummen Zufall glaube ich herausgefunden zu haben warum das so ist: Wenn der device-Name Punkte enthält, dann funktioniert das obige Flag scheinbar nicht. Wenn ich mein Device di_ui_TVOC nenne, dann wird der state nicht angezeigt.
Benenne ich es in di.ui.TVOC um, dann ist der state wieder da.

Muss ich mein FHEM-Device Namensschema anpassen, oder kann das im Modul gefixt werden?

Viele Grüße,
Frank
FHEM on Raspberry Pi 3B+
CUL868
7x MAX! Thermostat, 8x MAX! Fensterkontakte
Conbee II + deConz, TradFri Lampen, Osram Smart+ Steckdosen

Damian

Ich vermute, dass das Problem auf der JS-Seite ist. Die Mechanismen dort müsste ich mir erstmal genauer anschauen, weil ich bisher dort keine Finger im Spiel hatte.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ellert

#133
doif.js berücksichtigt https://wiki.fhem.de/wiki/Ger%C3%A4tename#Restriktionen

Wenn nur der Inhalt von state stört könnte man ihn mit &nbsp; überschreiben.

Damian

Ich würde einfach laut Namenskonvention alle Punkte in Devicenamen gegen Unterstriche ersetzen, dann ist man auf der sicheren Seite.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF