Dummy/Button mit Notify eigene Methode aufrufen

Begonnen von OnkelTom83, 18 Juli 2015, 10:58:53

Vorheriges Thema - Nächstes Thema

OnkelTom83

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

igami

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
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

OnkelTom83

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
   

justme1968

schau dir mal dir setList und readingList attribute von dummy an.

vielleicht ist auch readingsProxy etwas für dich.

gruß
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

OnkelTom83

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 ;-)

Hollo

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.
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

justme1968

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 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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

OnkelTom83

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

Hollo

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.
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

schka17

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
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

OnkelTom83

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

rudolfkoenig

Bitte commandref Eintrag fuer notify lesen.

Hollo

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.
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

Puschel74

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.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.