FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: beaune am 15 Februar 2022, 10:38:21

Titel: DOIF als Popup in einer Readingsgroup
Beitrag von: beaune am 15 Februar 2022, 10:38:21
Hallo,

ich möchte gerne einen in einem DOIF definierten uiTable als Popup durch Klicken auf ein Icon in einer ReadingsGroup öffnen. Erste Idee war

Das funktioniert wohl nicht. Alternativ habe ich dann versucht,

Das funktioniert so halb:

Letzteres Verhalten ist auch dokumentiert in https://wiki.fhem.de/wiki/DOIF/uiTable:
ZitatBesonderheiten
DOIF-Funktion PUP(<Name des anderen DOIF>,<Iconname@optionale Farbe>), wenn das Icon nicht existiert wird der Text als Link in Standardfarbe angezeigt.

Was kann ich tun?

Danke für Eure Hilfe!
Titel: Antw:DOIF als Popup in einer Readingsgroup
Beitrag von: Damian am 15 Februar 2022, 10:49:52
Das wird alles schwierig sein, da es zwei verschiedene Module sind, die nicht aufeinander abgestimmt sind.

PUP ist eine Funktionalität des DOIFs, die außerhalb eines DOIFs wohl nicht funktionieren wird.

Was möchtest du in Readingsgroup darstellen und was soll aus dem DOIF kommen?
Titel: Antw:DOIF als Popup in einer Readingsgroup
Beitrag von: beaune am 15 Februar 2022, 11:25:53
Meine Idee war, in der readingsGroup eine Übersicht über die verschiedenen Beleuchtungsmöglichkeiten inkl. Status und Ein-/Ausschaltmöglichkeit zu geben, und die Detail-Einstellungsmöglichkeiten zu Farbtemperatur, Helligkeit usw. in ein Popup zu verlegen, um es übersichtlich zu halten.

Es ist natürlich schon irgendwo eine "Vergewaltigung" von DOIF, es als Vehikel für ein Popup zu verwenden. Ich hatte aber gar kein schlechtes Gewissen, denn DOIF kann ja schon echt viel, und es ist ja auch möglich und zulässig, einen Weblink zu definieren, der so ein Popup öffnet. Das ist ja auch ein anderes Modul, und wenn man den Weblink einer Gruppe zuordnet, dann erscheint er z.B auch im Dashboard, wenn die Gruppe dort angezeigt wird. Also da geht schon viel, warum dann nicht in einer readingsGroup...?
Titel: Antw:DOIF als Popup in einer Readingsgroup
Beitrag von: Damian am 15 Februar 2022, 13:40:04
Zitat von: beaune am 15 Februar 2022, 11:25:53
Meine Idee war, in der readingsGroup eine Übersicht über die verschiedenen Beleuchtungsmöglichkeiten inkl. Status und Ein-/Ausschaltmöglichkeit zu geben, und die Detail-Einstellungsmöglichkeiten zu Farbtemperatur, Helligkeit usw. in ein Popup zu verlegen, um es übersichtlich zu halten.

Es ist natürlich schon irgendwo eine "Vergewaltigung" von DOIF, es als Vehikel für ein Popup zu verwenden. Ich hatte aber gar kein schlechtes Gewissen, denn DOIF kann ja schon echt viel, und es ist ja auch möglich und zulässig, einen Weblink zu definieren, der so ein Popup öffnet. Das ist ja auch ein anderes Modul, und wenn man den Weblink einer Gruppe zuordnet, dann erscheint er z.B auch im Dashboard, wenn die Gruppe dort angezeigt wird. Also da geht schon viel, warum dann nicht in einer readingsGroup...?

Naja, Dashboard, wie auch Floorplan arbeiten intern anders als Readingsgroup.

Evtl. kannst du das, was du in Readingsgroup darstellst, komplett in DOIF darstellen - so mache ich es. Es ist ja schließlich eine Tabelle. Mit entsprechender For-Scheife kann man beliebig viele Zeilen produzieren - nicht nur zum Visualisieren, sondern auch zum Steuern. So wie z. B. hier: https://wiki.fhem.de/wiki/DOIF/Automatisierung#Steuerung_von_Raumthermostaten_f.C3.BCr_mehrere_R.C3.A4ume_mit_GUI
Titel: Antw:DOIF als Popup in einer Readingsgroup
Beitrag von: beaune am 15 Februar 2022, 15:39:40
Hier scheint mir tatsächlich eine gewisse Nicht-Durchgängigkeit in fhem vorzuliegen:
Ich hab es jetzt so gelöst:
Das ist zwar nicht so ganz geradlinig, scheint aber zumindest zu funktionieren.
Titel: Antw:DOIF als Popup in einer Readingsgroup
Beitrag von: Damian am 15 Februar 2022, 15:52:24
Zitat von: beaune am 15 Februar 2022, 15:39:40
Hier scheint mir tatsächlich eine gewisse Nicht-Durchgängigkeit in fhem vorzuliegen:

  • Die Idee, die Tabelle mit DOIF zu erzeugen, geht nicht, weil webCmd nicht umgesetzt ist (siehe https://forum.fhem.de/index.php/topic,125767.0.html).
  • Aber DOIF in readingsGroup ist offenbar auch problematisch.
Ich hab es jetzt so gelöst:

  • Der Popup-Inhalt ist wie bisher als uiTable in einem DOIF definiert.
  • Den Popup-Link definiere ich mit PUP als uiState im selben DOIF.
  • In der ReadingsGroup binde ich das DOIF als devStateIcon ein.
Das ist zwar nicht so ganz geradlinig, scheint aber zumindest zu funktionieren.

Kannst du mal zeigen, was du in Readingsgroup bzw. im DOIF darstellst?
Titel: Antw:DOIF als Popup in einer Readingsgroup
Beitrag von: beaune am 15 Februar 2022, 16:04:17
Ich hab mal Screenshots beigefügt. Der bunte Kreis im State-Teil des DOIF ist der Link:
attr ChooseColorWidget uiState PUP("ChooseColorWidget","color,, myColorSVG")

Der uiTable ist der Popup-Inhalt:
attr ChooseColorWidget uiTable
{package ui_Table}
"Farbauswahl"| widget([Moodlight:RGB],"colorpicker,HSV")
"Lichttemperatur"| widget([Moodlight:ColorTemp],"colorpicker,CT,2000,10,6500")
"Helligkeit"| widget([Moodlight:Brightness],"colorpicker,BRI,0,1,100")

Die readingsGroup definiert dann den Aufbau der Tabellenzeile wie folgt:
defmod Beleuchtung readingsGroup
Moodlight:state,state@ChooseColorWidget,<RGB_red>,<RGB_green>,<white_warm>,<white_cold>,<br>,<>,<>,<Scene>
attr Beleuchtung valueIcon { state => '%devStateIcon' }

Damit bekomme ich mit relativ wenig Platz den Lampenstatus angezeigt, kann durch licken auf Glühbirne oder die Preset-Felder Ein-/Ausschalten, und wenn ich was anderes als die Presets haben will das opup öffnen.
Titel: Antw:DOIF als Popup in einer Readingsgroup
Beitrag von: Damian am 15 Februar 2022, 17:07:25
Da funktioniert bereits mehr als ich erwartet hätte :)

Im Status des DOIFs sehe ich aber noch drei weitere Symbole (rot, grün, blau), wie kommen die denn dahin?

Hast du noch etwas im DOIF definiert?

Titel: Antw:DOIF als Popup in einer Readingsgroup
Beitrag von: beaune am 15 Februar 2022, 17:23:18
Ja, im Grunde gar nicht so schlecht :). Mir wär nur wichtig, dass das auch eine beabsichtigte Funktion ist, die nach dem nächsten Update auch noch geht...

Die 3 Symbole stammen aus dieser Definition, die ich der Übersichtlichkeit halber unterschlagen hatte:
attr ChooseColorWidget webCmd RGB ff0000:RGB 00ff00:RGB 0000ff
attr ChooseColorWidget widgetOverride RGB:colorpicker,RGB

Das war mir eigentlich gar nicht so wichtig, weil ich die Farb-Presets in der readingsGroup haben wollte und da ja auch definiert habe. Das war im Grunde nur ein Versuch, weil Du geschrieben hattest, dass webCmd im DOIF-Device selbst funktioniert, aber eben nicht im uiTable. Hat aber mit der eigentlichen Fragestellung nach einem Popup in der readingsGroup nix zu tun.
Titel: Antw:DOIF als Popup in einer Readingsgroup
Beitrag von: Damian am 15 Februar 2022, 17:43:48
Ich habe uiState erst vor Kurzem eingebaut, weil es im FHEM-Modus nicht gut funktionierte, im Perlmodus scheint es besser zu funktionieren, solange der Status nicht irgendwie gesetzt wird. Allerdings habe ich PUP auf die eigene Tabelle nie getestet - es scheint ja zu funktionieren.

Die komplette FHEM-Mimik wurde zwar übernommen: ReadigList, setList, webCmd, webCmdLabel, devStateIcon, CmdIcon, ...

um kompatibel zu sein.

Allerdings hat mir diese Vorgehensweise nie gefallen. Wie viele Attribute muss man denn noch setzen, um einen set-Befehl auf ein Device abzusetzen oder ein Reading über ein Icon setzen?

Daher finde ich die Nutzung der FHEM-Widgets wie iconSwitch, iconRadio, iconButtons, usw. über die widget-Funktion, wesentlich einfacher. Da brauche ich kein einziges weiteres Attribut zu definierten, um über ein beliebiges Icon einen Set-Befehl bzw. setreading auf irgendein Devices/Reading auszuführen.