FHEM Forum

FHEM => Automatisierung => Thema gestartet von: OnkelTom83 am 18 Juli 2015, 10:58:53

Titel: Dummy/Button mit Notify eigene Methode aufrufen
Beitrag von: OnkelTom83 am 18 Juli 2015, 10:58:53
Hallo,

ich bin schon seit längerem auf der Suche nach einer Möglichkeit einen Button oder ähnliches in Fhem zu Integrieren, bisher leider ohne Erfolg.

Ich möchte gerne über einen Button oder einen Link (am liebsten wie bei einer Lampe On/Off) meine eigene Methode aufrufen und ihr Parameter übergeben.
(Aktuell habe ich ein AT-Befehl, der morgens um 6:00 Uhr startet - jedoch möchte ich das ganze auch evtl. von Hand steuern)

Nun meine Idee und ich hoffe ihr könnt Sie etwas mit Leben/ einer Lösung füllen:
in einem Dummy sind möchte ich mehrere "Schläuche" deklarierieren. Bspw.: Schlauch1 On/Off, Schlauch2 On/Off, usw. Durch klicken eines dieser Schläuche soll dann (wahrscheinlich mit einem Notify) meine Methode "myGardenIrrigation($)" aufgerufen werden. Der übergebene Parameter ist dann Schlauch1 oder Schlauch2....

Ich hoffe das ihr eine schicke Lösung des ganzen habt und wie sie umgesetzt wird.

Vielen lieben Dank
Christian
Titel: Antw:Dummy/Button mit Notify eigene Methode aufrufen
Beitrag von: igami am 18 Juli 2015, 13:03:57
Hallo Christian,

notify geht.

define <name> notify <pattern> <command>

<name> kannst du Wählen, wie du möchtest
<pattern> hier muss etwas stehen was im Event vorkommt, z.B. Schlauch
<command> wenn du dies in geschweifte Klammern fasst befindest du dich in der Perl umgebung und kannst deine sub aufrufen.
Zusätlich gibt es im notify noch die Variable $NAME

http://fhem.de/commandref#notify

Den Rest bekommst du bestimmt selbst hin, ansonsten beschreibe wo du Probleme hast.

Grüße
igami
Titel: Antw:Dummy/Button mit Notify eigene Methode aufrufen
Beitrag von: OnkelTom83 am 19 Juli 2015, 08:31:35
Guten morgen,

vielen Dank für die Antwort, wahrscheinlich habe ich mich falsch ausgedrückt.

Ich möchte wenn möglich einen Dummy für alle Schläuche mit bspw attr webCmd Schlauch1:on:off, jedoch kann ich keinen weiteren Schlauch zu genau diesem Dummy auf diese Weise hinzufügen.
Kann ich überhaupt mehrere Schläuche einem Dummy hinzufügen? Wenn ja - würde mich interessieren wie es funktioniert. Mein Wunsch wäre wenn auch dort eine on:off Möglichkeit vorhanden wäre.

Wenn das dann in einem Dummy verpackt ist, habe ich die Schwierigkeit diesen Dummy mit einem notify zu verknüpfen. Ich habe bereits ein notify eingerichtet, der hat zum Test leider keine Lampe eingeschaltet.

Kurz gesagt:
Testdummy
-> Schlauch1 on:off
-> Schlauch2 on:off
->....
Darauf reagiert ein notify...(verknüpfungsproblem)...

Notify pseudoCode:
testdummy:.*{
  myGardenIrrigation($EVTPART1);
}

sowas in der Richtung

vielen lieben Dank
   
Titel: Antw:Dummy/Button mit Notify eigene Methode aufrufen
Beitrag von: justme1968 am 19 Juli 2015, 09:52:57
schau dir mal dir setList und readingList attribute von dummy an.

vielleicht ist auch readingsProxy etwas für dich.

gruß
  andre
Titel: Antw:Dummy/Button mit Notify eigene Methode aufrufen
Beitrag von: OnkelTom83 am 19 Juli 2015, 10:26:08
Danke für die schnelle Antwort.

setList ermöglicht mir mehrere Geräte, die ich entsprechend setzen kann. Funktional aber nicht zwingend schick. Es gibt ja den WAF... ;-)

Gibt es eine Möglichkeit einen "blöden" Button wie aus der guten HTML Zeit für jeden Schlauch zu definieren? und bei Klick die entsprechende Methode mit Übergabewert (Schlauch1 usw...) aufzurufen?

Gruß
PS readingsproxy wurde ich nicht schlau draus ;-)
Titel: Antw:Dummy/Button mit Notify eigene Methode aufrufen
Beitrag von: Hollo am 19 Juli 2015, 11:28:30
Es geht bestimmt irgendwie, aber eine einfache Lösung dafür weiss ich auch nicht.

Ich würde zunächst je einen Dummy für jeden Schlauch anlegen.
Diesen kannst Du dann jeweils webCmd und Icons zuordnen.
Dann würde ich alle Schläuche (Dummies) in einer structure zusammenfassen.

Damit könntest Du alles zusammen, aber auch jeden Schlauch einzeln per Button an/aus schalten.
Ausserdem kannst Du natürlich notify definieren, um Automatismen zu bauen.

Das ist m.E. erstmal einfacher als ein Dummy mit userreadings etc.
Titel: Antw:Dummy/Button mit Notify eigene Methode aufrufen
Beitrag von: justme1968 am 19 Juli 2015, 12:15:13
ich glaube du schmeisst gerade einige dinge durcheinander.

- setList ist zwingend nötig um einem dummy zu sagen was er eigentlich für kommandos kann

- readingList ist nötig damit das kommando nicht in state landet sondern in einem reading
sonst kannst du nicht mehrere dinge unabhängig voneinander schalten.

- wenn in den webCmd lieber icons statt text möchtest schau dir das cmdIcon attribut an

- du kannst dir auch das uzsuSelect widget anschauen.
  ein screenshot wie das mit einer mehrfach auswahl aussehen kann findest du hier: http://forum.fhem.de/index.php/topic,32660.msg250460.html#msg250460 (http://forum.fhem.de/index.php/topic,32660.msg250460.html#msg250460) im zweiten und dritten screenshot.

- wenn du mehr einfluss auf das design der buttons und icons haben möchtest schau dir readingGroup an

wenn es dir um das aussehen und den WAF geht solltest du funktionalität und gui trennen und eines nach dem anderen angehen.

ob du ein oder mehrere dummys verwendest hängt zum teil davon ab wie die darstellung sein soll. es geht ganz sicher so ziemlich alles was du möchtest aber du musst dir selber klar werden was hinterher genau dabei raus kommen soll.

gruss
  andre
Titel: Antw:Dummy/Button mit Notify eigene Methode aufrufen
Beitrag von: OnkelTom83 am 20 Juli 2015, 17:11:02
Hallo,

ich habe nun einzelne Dummies angelegt, die dann in eine Structure geschubbst und über diese Structure ein Notify reagieren lassen.
(War eine schöne und einfache Idee - und kann man sinnvoll einsetzen. Vielen Dank)
Nun meine Frage, wie ich an die Information komme, welchen Dummie ich geklickt habe.

define G_Schlauch1 dummy
attr G_Schlauch1 room Gartenbewässerung
attr G_Schlauch1 webCmd Schlauch1:on:off

define G_Schlauch2 dummy
attr G_Schlauch2 room Gartenbewässerung
attr G_Schlauch2 webCmd Schlauch2:on:off

define myStructure structure test G_Schlauch1 G_Schlauch2
define testnoti notify myStructure set STROM_TEST on


Das Gerät STROM_TEST wird perfekt geschaltet.
An dieser Stelle würde ich gerne meine Methode myGardenIrrigation() aufrufen.
Wie ist es Sinnvoll und wie übergebe ich den Namen G-Schlauch1 bzw. G_Schlauch2 ?

Vielen lieben Dank
Titel: Antw:Dummy/Button mit Notify eigene Methode aufrufen
Beitrag von: Hollo am 21 Juli 2015, 13:09:43
Mach für jeden Dummy 1 notify, mit dem Du Deine Methode inkl. passendem Schlauch aufrufst.
Welchen Dummy Du geklickt hast, siehst Du am Icon/Status des jeweiligen Dummy.

Über die structure wird jeder einzelne gemeinsam an bzw. aus geschaltet, da brauchst Du dann nix mehr hinterlegen.
Titel: Antw:Dummy/Button mit Notify eigene Methode aufrufen
Beitrag von: schka17 am 21 Juli 2015, 14:06:16
Hallo,

Ich habe für ähnliche Anforderung (Fernbedienung aller Tore) mit remotecontrol eine eigene Fernbedienung gebaut, mit eigenen Icons/Buttons, das ist grafisch ansprechend und von der Bedienung auch sehr einfach. Die Aktionen die bei jedem Button ausgeführt werden sollen sind in der myUtils hinterlegt. Im commendref ist remotecontrol recht gut beschrieben, ich meine auch dass es dazu einen Wiki Artikel gibt.

Gruß

Karl


Sent from my iPad using Tapatalk
Titel: Antw:Dummy/Button mit Notify eigene Methode aufrufen
Beitrag von: OnkelTom83 am 22 Juli 2015, 06:36:04
Guten Morgen,

selbst wenn ich für jeden Dummie ein Notify erselle, stellt sich mir noch die Frage, wie ich im Notifiy den Dummie-Namen meiner Methode übergebe.
Wenn möglich würde ich es ungern mit einem festen Text machen sondern gerne variabel auslesen lassen.

Hat da jemand eine Zeile Code, wie so etwas aussehen könnte?

(remotecontrol werde ich versuchen später mal an zu lesen;-) )

Vielen Dank
Titel: Antw:Dummy/Button mit Notify eigene Methode aufrufen
Beitrag von: rudolfkoenig am 22 Juli 2015, 07:02:49
Bitte commandref Eintrag fuer notify lesen.
Titel: Antw:Dummy/Button mit Notify eigene Methode aufrufen
Beitrag von: Hollo am 22 Juli 2015, 09:36:27
Zitat von: OnkelTom83 am 22 Juli 2015, 06:36:04
...selbst wenn ich für jeden Dummie ein Notify erselle, stellt sich mir noch die Frage, wie ich im Notifiy den Dummie-Namen meiner Methode übergebe...
Wahrscheinlich habe ich das noch nicht richtig verstanden, oder stehe auf dem "Schlauch".

Ungetestet:
define n_G_Schlauch1 notify G_Schlauch1:.* {myGardenIrrigation($NAME,$EVENT)}
Du rufst mit dem notify Deine Funktion auf und übergibst als Parameter den Namen des Schlauches und den gewünschten Zustand on/off.
Das musst Du dann in Deiner Funktion auswerten und verarbeiten.
Titel: Antw:Dummy/Button mit Notify eigene Methode aufrufen
Beitrag von: Puschel74 am 22 Juli 2015, 09:42:35
Und wenn die Geräte
G_Schlauch1
G_Schlauch2
G_Schlauch3
G_Schlauch4
heissen dann sollte als regexp auch
G_Schlauch.:.* {myGardenIrrigation($NAME,$EVENT)}
genügen und alle Schläuche triggern EIN notify und in der sub weiß man anhand $NAME welcher Schlauch getriggert hat.

Das sollte im Forum und im Wiki aber bereits mehrfach zu finden sein.