[gelöst] -> [FUIP] Popup abhängig von STATE

Begonnen von matrois, 10 Januar 2020, 22:03:36

Vorheriges Thema - Nächstes Thema

matrois

Hallo zusammen,
ich habe mir ein View gebastelt bei dem eine einzelne Window-View Instanz anzeigt ob Fenster offen sind (rotes Fenster offen Symbol mit Anzahl der Fenster in der oberen rechten Ecke) oder ob alle Fenster geschlossen sind (grünes Fenster zu Symbol). Dazu gibt es ein dummy "fenster_offen" mit der Anzahl der offenen Fenster und ein Notify, welches bei Betätigung eines Fensters die Anzahl im Dummy aktualisiert. Außerdem habe ich eine Readingslist, die die Aliase der offenen Fenster anzeigt (rg_fenster_offen). In FUIP kann der Inhalt der Readingslist in einem Popup angezeigt werden, wenn man auf die zuerstgenannte WindowView Instanz klickt. Alles funktioniert prima.

Jetzt die Frage: ;-)

Ist es möglich, dass ich analog zu der Beschreibung hier https://wiki.fhem.de/wiki/FTUI_Widget_Popup unter "Popup öffnet abhängig von STATE" einschränke, dass ein Popup nur geöffnet wird, wenn im dummy_fenster überhaupt vermerkt ist, dass ein Fenster geöffnet ist? Soweit ich das sehe ist die Möglichkeit der Einschränkung von Popups noch nicht in FUIP enthalten, oder habe ich etwas übersehen?
Vielen Dank für eine kurze Rückmeldung.
FHEM: 5.9@docker@qnap | 5.9@raspberry pi III
IO: HMLAN | HMUART | Jeelink | MySensors
CUL_HM: CC-RT-DN | SEC-SCo | Sen-DB-PCB | TC-WM-W-EU
Module / Konfig: configdb | FHEMWEB | FRITZBOX | FileLog | HMinfo | IPCAM | SIP | Abfall | Tablet UI - FUIP | Sonoff/Tasmota

Thorsten Pferdekaemper

Hi,
kann es sein, dass damit (also mit der Beschreibung hinter Deinem Link) gemeint ist, dass das Popup automatisch öffnet? Das ist doch nicht das, was Du willst, oder?
Warum ist es so schlimm, wenn das Popup öffnet, wenn man auf das Symbol klickt, auch wenn keine Fenster offen sind? Das wäre doch eher die konsistentere Benutzererfahrung, oder?
Gruß,
   Thorsten
FUIP

matrois

Hallo,
nein, ich will nicht, dass sich das Popup automatisch öffnet. Falls das hinter der Funktion Popup öffnet abhängig von STATE (automatisch) gemeint ist will ich das nicht. Ich will, dass sich trotz klick auf das Widget kein (leeres) Popup öffnet, wenn kein Fenster geöffnet ist.
Viele Grüße,
Markus.
FHEM: 5.9@docker@qnap | 5.9@raspberry pi III
IO: HMLAN | HMUART | Jeelink | MySensors
CUL_HM: CC-RT-DN | SEC-SCo | Sen-DB-PCB | TC-WM-W-EU
Module / Konfig: configdb | FHEMWEB | FRITZBOX | FileLog | HMinfo | IPCAM | SIP | Abfall | Tablet UI - FUIP | Sonoff/Tasmota

matrois

Zur Erläuterung habe ich drei Screenshots gemacht. Es gibt ein Statussymbol für Fenster und eins für Batterien (siehe fuip-01.png). Aktuell sind drei Fenster offen und keine Batterie ist leer. Wenn man die Statussymbole anklickt öffnet sich ein Popup. In dem Popup ist der Inhalt der Readingslist "rg_fenster_offen" bzw. "rg_batterien_leer" (siehe fuip-02.png bzw. fuip-03.png). Wenn die entsprechende Readingslist leer ist wäre es schöner, wenn sich überhaupt kein Popup öffnen würde. Falls jemand eine Idee hat wie man das hinbekommt bin ich für jeden Tipp dankbar.

Was mir auch aufgefallen ist: In FUIP wird der Inhalt des Popups erst nach einem Refresh des Browsers aktualisiert. Wenn also ein Fenster geschlossen wird, dass aktualisiert sich sowohl das Symbol (FUIP::View::Window) als auch die Readingslist in FHEM, aber der Inhalt des Popups (FUIP::View::ReadingsList) nicht. Kann man das irgendwie ändern?
FHEM: 5.9@docker@qnap | 5.9@raspberry pi III
IO: HMLAN | HMUART | Jeelink | MySensors
CUL_HM: CC-RT-DN | SEC-SCo | Sen-DB-PCB | TC-WM-W-EU
Module / Konfig: configdb | FHEMWEB | FRITZBOX | FileLog | HMinfo | IPCAM | SIP | Abfall | Tablet UI - FUIP | Sonoff/Tasmota

Thorsten Pferdekaemper

Zitat von: matrois am 11 Januar 2020, 12:23:58Wenn die entsprechende Readingslist leer ist wäre es schöner, wenn sich überhaupt kein Popup öffnen würde. Falls jemand eine Idee hat wie man das hinbekommt bin ich für jeden Tipp dankbar.
Ich denke, dass das recht viel Aufwand wäre, insbesondere weil man dafür erst einmal eine Lösung für dein zweites Problem bräuchte. Das hätte für mich jetzt erst einmal niedrige Priorität, zumal man ja nur lernen muss, nicht draufzuklicken, wenn dort eine Null steht. 

Zitat
Was mir auch aufgefallen ist: In FUIP wird der Inhalt des Popups erst nach einem Refresh des Browsers aktualisiert. Wenn also ein Fenster geschlossen wird, dass aktualisiert sich sowohl das Symbol (FUIP::View::Window) als auch die Readingslist in FHEM, aber der Inhalt des Popups (FUIP::View::ReadingsList) nicht. Kann man das irgendwie ändern?
Dazu müsste man ein komplett neues Widget bauen. ...wobei ich momentan nicht weiß, wie man in FTUI mitbekommen kann, dass ein Reading gelöscht oder angelegt wird.
Die FUIP-View macht ja nichts anderes, als für jedes Reading ein label-Widget zu generieren. D.h. die Werte würden sich ändern, aber Readings dazu- oder wegnehmen geht erstmal nicht.
Das liegt übrigens nicht am Popup. Popups werden immer sofort mit der ganzen Seite gerendert und gehen dann nur auf und wieder zu. Da wirds nichts "refresht". Das Problem würde sich also auch ergeben, wenn die ReadingsList nicht auf einem Popup wäre. (In FTUI sowie in FUIP.)

Ich würde da einfach erst einmal ein Popup machen, das immer alle Fenster anzeigt (oder hast Du davon soooo viele?). Dann hättest Du beide Probleme gelöst.

Gruß,
   Thorsten
FUIP

matrois

ZitatIch würde da einfach erst einmal ein Popup machen, das immer alle Fenster anzeigt (oder hast Du davon soooo viele?). Dann hättest Du beide Probleme gelöst.

Genauso habe ich es gemacht. Es gibt nur eine Fenster View Instanz, die nach Anklicken ein Popup öffnet. (siehe angehängte Bild fuip-01.png). Der Inhalt des Popups ist eine Readingsliste mit den geöffneten Fenstern (siehe angehängtes Bild fuip-02.png). Die Readingsliste funktioniert und wird in der FHEM WEB Instanz aktualisiert wie es sein soll. Was allerdings nicht funktioniert ist die Aktualisierung innerhalb eines Popups als Readingslist View Instanz unter FUIP. So kommt es vor, dass eigentlich drei Fenster geöffnet sind, aber das Popup mangels Aktualisierung des Browserfensters nichts anzeigt nachdem die Fenster View Instanz angeklickt wird und das Popup geöffnet wird (siehe angehängtes Bild fuip-03.png). Erst nach einer Aktualisierung des Browserfensters wird wieder der aktuelle Inhalt im Popup angezeigt (siehe angehängtes Bild fuip-02.png).
FHEM: 5.9@docker@qnap | 5.9@raspberry pi III
IO: HMLAN | HMUART | Jeelink | MySensors
CUL_HM: CC-RT-DN | SEC-SCo | Sen-DB-PCB | TC-WM-W-EU
Module / Konfig: configdb | FHEMWEB | FRITZBOX | FileLog | HMinfo | IPCAM | SIP | Abfall | Tablet UI - FUIP | Sonoff/Tasmota

Thorsten Pferdekaemper

Hi,
ja, das Verhalten ist schon klar. Ich hatte ja auch vorher schon erklärt, warum das so ist.
Was ich meinte: Mach Dir eine ReadingsList, die alle Fenster enthält, nicht nur die geöffneten. Dann müsstest Du auch die Updates sehen.
Gruß,
   Thorsten
FUIP

matrois

Hallo,
ich habe jetzt nochmal umfangreich getestet. Ich kann bestätigen, was Thorsten auch schon schrieb

ZitatDas Problem würde sich also auch ergeben, wenn die ReadingsList nicht auf einem Popup wäre. (In FTUI sowie in FUIP.)

Ich bin noch einen Schritt weiter zurückgegangen und habe leider jetzt erst bemerkt, dass die Readingsgroup auch in FHEMWEB nicht aktualisiert wird, wenn die Browserseite nicht aktualisiert wird. Da das aber "offtopic" ist werde ich für dieses Problem an geeigneter Stelle einen neuen Thread eröffnen.
FHEM: 5.9@docker@qnap | 5.9@raspberry pi III
IO: HMLAN | HMUART | Jeelink | MySensors
CUL_HM: CC-RT-DN | SEC-SCo | Sen-DB-PCB | TC-WM-W-EU
Module / Konfig: configdb | FHEMWEB | FRITZBOX | FileLog | HMinfo | IPCAM | SIP | Abfall | Tablet UI - FUIP | Sonoff/Tasmota

Thorsten Pferdekaemper

Hi,
ich habe die View ReadingsList jetzt überarbeitet. Man kann jetzt mehrere Devices angeben und die Readings auswählen. Außerdem kann man einen Filterwert angeben. Nur solche Readings werden angezeigt, die dem Wert entsprechen. Mal angenommen, dass Deine Fenstersensoren im state "open" oder "closed" haben, dann könntest Du einfach alle Fenstersensoren als Device eintragen, als Reading "state" und als Filterwert "open".
Diese Liste wird sich dann auch automatisch ändern, wenn ein Fenster auf- oder zugemacht wird.
Gruß,
   Thorsten
FUIP

matrois

#9
Das Thema ist schon sehr alt, aber ich bin leider nicht eher dazu gekommen es vorher vernünftig zu testen...

Wie von Thorsten beschrieben lässt sich das Problem für die Liste mit offenen Fenstern und dem überarbeiteten View ReadingsList lösen. Ich bekomme jetzt immer die aktualisierte Liste der offenen Fenster, weil ich die FHEM eigene Readingsgroup "übergehe". Wie schon im Januar festgestellt ist es eigentlich ein Problem der Readingsgroup, die scheinbar nicht aktualisiert wird. Das ist aber ein ganz anderes Problem und hat mit dem Threadtitel nichts mehr zu tun. Deshalb werde ich das hier als gelöst markieren.

Eine grundsätzliche Lösung steht für mich noch aus, da ich nicht in allen Fällen die Readingsgroup übergehen kann: Ich habe für leere Batterien in FHEM eine Readingsgroup angelegt, die das Device und ein entsprechendes Symbol (über valueFormat) anzeigt. Da das View Readingslist entsprechende Formatierungsmöglichkeiten nicht bietet (und weil ich nicht komplett "zweigleisig" fahren will) wäre es also besser, wenn man die Infos aus FHEM übernehmen könnte (mit dem View Readingsgroup möglich, Probleme gibt es in FHEM selber bei der Aktualisierung).

Ggf. ist mein Problem mit der Readingsgroup von FHEM ist sogar in der Hilfe / Commandref beschrieben:

 
ZitatFür interne Werte (Internals) und Attribute ist longpoll update nicht möglich. Aktualisieren Sie die Seite, um die Werte zu aktualisieren.

Ggf. deshalb, weil der Status eines Fenstersensors bzw. der Batteriezustand Readings und keine Internals bzw. Attribute sind.

Einen entscheidenden Nachteil hat die Lösung mit dem neuen View Readingslist in FUIP: Man kann bei devices im View Readingslist nicht .* eintragen, sondern muss jeden Fenstersensor explizit auswählen. Wenn man also nachträglich einen Fenstersensor installiert muss man daran denken dies auch in FUIP zu hinterlegen. Direkt als Readingsgroup in FHEM ist das dank .*:FILTER=STATE=open nicht erforderlich.
FHEM: 5.9@docker@qnap | 5.9@raspberry pi III
IO: HMLAN | HMUART | Jeelink | MySensors
CUL_HM: CC-RT-DN | SEC-SCo | Sen-DB-PCB | TC-WM-W-EU
Module / Konfig: configdb | FHEMWEB | FRITZBOX | FileLog | HMinfo | IPCAM | SIP | Abfall | Tablet UI - FUIP | Sonoff/Tasmota