Schaltfläche mit FHEM Komando im Floorplan

Begonnen von tux75at, 15 Oktober 2019, 07:09:01

Vorheriges Thema - Nächstes Thema

tux75at

Ich hab schon länger im Forum gesucht und bin auf einige Beiträge gestoßen, komme jedoch nicht zu dem was ich will.

Unter anderem folgender link: https://forum.fhem.de/index.php/topic,12080.msg71651.html#msg71651

Das was ich versuche:
Im Floorplan ein Konstantes SVG (derzeit vewende ich ein leeres SVG, hat vorteile beim Laden, da blinkt das nicht beim Neuladen) mit einem FHEM Kommando versehen. Da ich derzeit meine Devices nicht habe mache ich alles mit Dummys, diese werden in kürze dann ersetzt. Die Funktion des Buttons sollte dann das schließen eines Rolladens sein. (Anm. ich nutze derzeit 'closed' wird aber voraussichtlich 'off' sein, spielt aber keine Rolle).

Derzeitiger Code:

define Esszimmer_Rolladen_closed dummy
attr Esszimmer_Rolladen_closed webCmd off
attr Esszimmer_Rolladen_closed devStateIcon .*:switch_invis:off
attr Esszimmer_Rolladen_closed fp_EG_TEST 905,1440,0
define Notify_Esszimmer_Rolladen_closed notify Esszimmer_Rolladen_closed { fhem ("set Esszimmer_Rolladen closed");; }


Ich benötige für meine funktionierende Lösung folgendes:

  • Esszimmer_Rolladen_closed: Dummy für den Button selbst
  • Notify_Esszimmer_Rolladen_closed: Notify um das FHEM Kommando abzusetzen
  • Esszimmer_Rolladen: Das Device selbst

Soviel ich verstanden habe, ist das Kommando vom Button-Klick schon ein Notify, also habe ich ein Notify-Notify, ist doch etwas sinnlos und kostet nur Performance und ist ein unlesbarer Code. (Inzwischen habe ich zumindest nur mehr ein Kommando anstatt zwei: on und off)

Mein Ziel, funktioniert NICHT, mir fehlt hier noch das Verständnis für einen Teil:

define Esszimmer_Rolladen_closed dummy
attr Esszimmer_Rolladen_closed eventMap /set ESSZIMMER_Rolladen closed:set-ESSZIMMER_Rolladen-closed/
attr Esszimmer_Rolladen_closed devStateIcon on:switch_invis:set-ESSZIMMER_Rolladen-closed
attr Esszimmer_Rolladen_closed fp_EG_TEST 905,1440,0


Benötigt für meine Wunschlösung:

  • Esszimmer_Rolladen_closed: Dummy für den Button selbst
  • Esszimmer_Rolladen: Das Device selbst

Ich versuche das Zusätzliche Notify loszuwerden, da das Kommando doch in irgendeiner weise in den Dummy für den Button reingehen sollte. Eventuell habe ich das Tripple für devStateIcon falsch verstanden, ich weiss jedoch dass Leerzeichen nicht vewendet werden können, das eventMap ist aber nicht für das Kommando gedacht.
Benötige ich hier eine Funktion in myUtils, welche ich aufrufe? Dann würde ich aber auch für jedes Device, das ich so ansteuere eine Funkion in myUtils.
Ausser mit übergebenen Parameter anhand dessen ich den Devicenamen aufbauen kann und dann das richtige Device schalten, dann wär es eine Funktion für alle Devices, und eine weitere Funktion um alle Devices anzusteuern (Z.B. Alle Rolläden Zu bzw. Auf).
Hat jemand ein Beispiel für mich? Die Implementierung im Floorplan sollte unabhängig dazu sein, das müsste in den anderen UIs doch identisch sein.

Im Link oben ist ein Hinweis auf das Ausschalten aller Lampen:

attr webCmd off
attr devStateIcon on:on:off off:off:off

Hier ist auch nur ein Teil enthalten, die Struktur dass kein Togglen passiert sondern nur das Kommando "OFF" habe ich verstanden. Das Kommando an ALLE Lampen weiterzugeben ist hier leider auch nicht enthalten. Diese Funktion möchte ich auch implementieren.

Gruß
   Tux

tux75at

Warscheinlich gebe ich mir die Antwort selbst ....

Ich mach zwar schon seit längerer Zeit versuche mit FHEM, die einfachsten Debugmöglichkeiten vergesse ich aber noch. Bei der Inbetriebnahme und Tests von devices Schaue ich aber immer wieder in den Event Monitor, der gibt viele Informationen her.

Folgenden Eintrag habe ich gefunden:

dummy Esszimmer_Rolladen_closed {fhem ("set ESSZIMMER_Rolladen closed")}


Mein Problem war vermutlich das Verständnis über die Commands im devStateIcon.
Mit meinem Versuch das einfacher zu Implementieren und das Notify zu entfernen hat scheinbar nur bewirkt, dass FHEM versucht den Dummy Essimmer_Rolladen_closed auf '{fhem ("set ESSZIMMER_Rolladen closed")}' zu setzen, tatsächlich ist der Wert von state '{fhem ("set ESSZIMMER_Rolladen closed")}' (soeben kontrolliert).

Wenn ich das richtig verstanden habe, dann kann ich kein FHEM Kommando absetzen, sondern nur den Wert eintragen auf den state gesetzt werden soll?
Kann mir das jemand bestätigen?

Dann fehlt mir aber noch das Verständnis zu dem Eintrag im verlinkten Thread zu alle Lampen aus.
Ich benötige den state nicht, wenn ich die Lampen nur ausschalten will, unabhängig vom Zustand, könnre auch Toggeln (hatte ich in meiner ersten Implementierung) kann ich immer die gleiche Aktion im Notify auslösen. Außer man setzt mit jeder Lampe die auf "on" geht auch den Zustand für Alle_Lampen, aber soweit ist es in dem Beispielcode nicht mehr drinnen, vermute aber etwas in dieser Richtung.

Gruß
   Tux