Hauptmenü

uiTable - neue Funktionen

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

Vorheriges Thema - Nächstes Thema

Damian

siehe https://forum.fhem.de/index.php/topic,12605.msg795076.html#msg795076

Nach dem Auspacken aus der Zip-Datein ins /opt/fhem/www/images/fhemSVG kopieren.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Reinerlein

Hi Damian,

danke für den Hinweis.
Ich habe das jetzt in den Ordner fhemSVG kopiert:
root@fhem:/opt/fhem/www/images/fhemSVG# ll
.
.
-rw-r--r-- 1 998 dialout 1427 Sep 28  2017 fa__508.svg
.
.
root@fhem:/opt/fhem/www/images/fhemSVG#

Allerdings werden die Icons immer noch nicht angezeigt... fehlt noch ein Verweis oder so?

Grüße
Reinerlein

ComputerZOO

Zitat von: Reinerlein am 11 Juni 2020, 14:07:01
...Allerdings werden die Icons immer noch nicht angezeigt... fehlt noch ein Verweis oder so?

Einmal im betreffenden WEB-Device
set <WEB-DEVICE> rereadicons ausführen.

Reinerlein

Hallo ComputerZOO,

danke für den Hinweis, das war es... jetzt klappt es...

Grüße
Reinerlein

Geronimoo

Hallo in die Runde,

ich habe ein Problem mit der Positionierung eines PopUps via PUP().
wie kann ich das PopUp zentriert auf dem Bildschirm darstellen? Bei mir wird es immer unten rechts in der ecke geöffnet.

schon mal danke für die Hilfe.

Ellert

Die Positionierung festzulegen ist in PUP nicht vorgesehen.

Per

Zitat von: Damian am 31 Dezember 2019, 17:47:10Deine FUNC_-Funktion solltest du anders benennen (ohne FUNC am Anfang) ansonsten musst du :: davorstellen
Kann ich auch auf Funktionen in myUtils zugreifen? Oder geht das nur mit IMPORT und einer separaten Datei?

Damian

Zitat von: Per am 04 Februar 2021, 09:57:33
Kann ich auch auf Funktionen in myUtils zugreifen? Oder geht das nur mit IMPORT und einer separaten Datei?

Du kannst auf alle Funktionen in FHEM zugreifen.  :: voranstellen, wenn sie aus main kommen,  also auch für myUtils, wenn du sie nicht im Package ui_Table definiert hast.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Per

Komisch, nachdem ich es mit einer "alten" Funktion versucht habe, wurden auch die neu angelegten fehlerfrei genommen. K.A., warum.

Damian

Zitat von: Per am 05 Februar 2021, 00:01:56
Komisch, nachdem ich es mit einer "alten" Funktion versucht habe, wurden auch die neu angelegten fehlerfrei genommen. K.A., warum.

Dazu brauche ich genaue Daten mit list.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Per

Ich schiebe gleich mal noch eine Frage hinterher: kann man die UIs aktualisieren, ohne die Definition oder das Attribut uiTable selbst zu aktualisieren? Hintergrund: mittels einer FOR-Schleife lasse ich mir eine variable Anzahl von Geräten anzeigen. Leider wird die korrekte Anzahl nur angezeigt, wenn ich o.a. Aktionen durchführe. Dann allerdings automatisch in allen offenen Anzeigen wie gewünscht.
Selbst ein set xxx initialize reicht nicht.

Damian

Zitat von: Per am 05 Februar 2021, 10:39:57
Ich schiebe gleich mal noch eine Frage hinterher: kann man die UIs aktualisieren, ohne die Definition oder das Attribut uiTable selbst zu aktualisieren? Hintergrund: mittels einer FOR-Schleife lasse ich mir eine variable Anzahl von Geräten anzeigen. Leider wird die korrekte Anzahl nur angezeigt, wenn ich o.a. Aktionen durchführe. Dann allerdings automatisch in allen offenen Anzeigen wie gewünscht.
Selbst ein set xxx initialize reicht nicht.

Das UI funktioniert beim DOIF ereignisgesteuert. Das heißt, jedes Symbol muss einen Trigger beinhalten. Das geschieht, indem man bei den UI-DOIF-Funktionen ein Reading in der DOIF-Notation angibt [:]. In HTML wird ja dann nicht die ganze UI-Table neu gezeichnet, sondern nur das entsprechende Symbol. Alles andere, wäre eine "billige" Lösung die unnötig Resourcen verbrauchen würde - das wollen wir :)




Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Per

Nachvollziehbar. Dann muss ich mir einen anderen Weg einfallen lassen.

thorte

Hi,

ich bin derzeit auch mit der FOR-Schleife zur dynamischen Anzeige von Geräte am testen und mir fehlt ebenfalls die Möglichkeit, in der Tabelle Geräte dynamisch anzuzeigen.

Anwendungsbeispiel: Alle Geräte listen, bei denen die Batterie leer ist.
Vorteil der FOR-Schleife: Wenn alle Batterien gut sind, wird keine Zeile eingeblendet (habe ich mit einer einzelnen Zeile entsprechend dem Beispiel noch nicht geschafft.

Funktioniert prinzipiell wunderbar, wenn als Array eine perl-Funktion DefSpec2Array oder AggrDoIF verwendet wird. Um ein Ereignis zu generieren, war jetzt meine Idee, ein DOIFReadings zu setzen, in dem die Geräte kommasepariert stehen, und dieses Reading via "split" wieder in einen Array zu konvertieren.

Fazit: Funktioniert, wenn ich das Reading via ReadingsVal hole - dann fehlt mir allerdings der Trigger. Versuche ich, den Inhalt via [$SELF:Reading] zu übergeben, kommt in der FOR-Schleife nichts an.

Beispiel (mit Battery; ok, damit ein paar Geräte in der Liste stehen):

defmod di.Test.uiTable DOIF ##
attr di.Test.uiTable DOIF_Readings battery:[@".*":battery:"ok"]
attr di.Test.uiTable event_Readings html:{ fhem "get $SELF html" }
attr di.Test.uiTable room Test
attr di.Test.uiTable uiTable FOR(split(",",ReadingsVal("$SELF","battery","")),"Batterie Test"|"$_")\
FOR(split(",",[$SELF:battery]),"Batterie Test"|"$_")


@Damian: Hast Du einen Tip für mich?

Gruß Thorsten


Damian

Der FOR-Befehl impliziert eine Schleife, er ist für eine flexible Definition gedacht, die aber wiederum statisch ist. Eine Änderung der Tabelle ist nur mit der Änderung des Attributes möglich - also mit der Änderung der Konfiguration.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF