[gelöst] Dynamischer Dummyname in Notify

Begonnen von stewen, 29 August 2017, 14:03:44

Vorheriges Thema - Nächstes Thema

stewen

Servus Leute,

brauche Hilfe bei einer Sache:

define ntf_Test1 notify Dummy1:on.* {fhem("setreading DUMMYNAME [Dummy1:STATE]_".sprintf("%04d%02d%02d_%02d%02d%02d",$year,$month,$mday,$hour,$min,$sec)." [Dummy2:STATE]")}

Solange der Name DUMMYNAME festgelegt ist, klappt alles ganz gut. Wie stelle ich es aber an, dass ich den Namen DUMMYNAME bspw. durch DUMMY3:STATE ersetzen kann?
Ich bekomme immer eine Meldung: "Please define [DUMMY3:STATE] first". Ich komm nicht auf die richtige Syntax, bitte um Hilfe.

Danke!
Stephan
FHEM auf Proxmox Cluster - viele Sender/Adapter an Raspberry Pi 3 mit LAN angebunden (ser2net) - schon ewig dabei.

nils_

hä?
der fehler sagt doch eigentlich schon alles....
ist nicht definiert, und du sollst es anlegen?!


oder ich habe deinen anwendungsfall nicht richtig durchblickt :o
viele Wege in FHEM es gibt!

rabehd

Auch funktionierende Lösungen kann man hinterfragen.

MadMax-FHEM

Was genau willst du eigentlich erreichen?

Ein Notify für verschiedene Dummy welches immer das selbe tut, nur eben mit verschiedenen Dummies?

Dazu müsste die regex bzgl. Trigger schon mal entsprechend formuliert sein, evtl. sowas:

define nDummy notify Dummy_.*:(on|off) ...

reagiert auf alle on/off von Dummies die mit Dummy_ beginnen:

Dummy_1
Dummy_2
Dummy_Wasweissich

Bzgl. dem konkret gefragten (sofern ich's verstanden habe) gibt es:

$NAME
$EVENT (dann halt mit split das raussuchen was du willst)
$EVTPART0
$EVTPART1
etc.

Eventuell erst mal statt gleich den Befehl zu schreiben erst mal die einzelnen genannten Variablen loggen und schauen welche passt...

Log(1,"Test: $NAME);

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

betateilchen

#4


define ntf_Test1 notify Dummy1:on.* {my $dummyName = "Fritz"; fhem("setreading $dummyName [Dummy1:STATE]_".sprintf("%04d%02d%02d_%02d%02d%02d",$year,$month,$mday,$hour,$min,$sec)." [Dummy2:STATE]")}



was in die Variable $dummyName kommt, kannst Du selbst entscheiden.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

stewen

#5
@betateilchen: Dein Ansatz trifft es sehr gut, danke schonmal. Allerdings soll für die Variable statt "Fritz" der Status (STATE) eines Dummy benutzt werden.
Sozusagen:
define ntf_Test1 notify Dummy1:on.* {my $dummyName = "[Dummy3:STATE]"; fhem("setreading $dummyName [Dummy1:STATE]_".sprintf("%04d%02d%02d_%02d%02d%02d",$year,$month,$mday,$hour,$min,$sec)." [Dummy2:STATE]")}

Das klappt aber nicht. Wie stelle ich das richtig an (Syntax)?
Danke auch allen anderen.

Stephan
FHEM auf Proxmox Cluster - viele Sender/Adapter an Raspberry Pi 3 mit LAN angebunden (ser2net) - schon ewig dabei.

betateilchen

Du musst perl Syntax beachten, nicht dieses beschissene FHEM Gefrickel mit den verdammten eckigen Klammern...


define ntf_Test1 notify Dummy1:on.* {my $dummyName = Value("Dummy3"); fhem("setreading $dummyName [Dummy1:STATE]_".sprintf("%04d%02d%02d_%02d%02d%02d",$year,$month,$mday,$hour,$min,$sec)." [Dummy2:STATE]")}

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

stewen

Genau das wars, vielen Dank für die schnelle Hilfe!!
FHEM auf Proxmox Cluster - viele Sender/Adapter an Raspberry Pi 3 mit LAN angebunden (ser2net) - schon ewig dabei.