FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: JMW am 30 Juni 2017, 23:30:11

Titel: [Gelöst] DOIF: Auswertung über Perl als Befehl ausführen
Beitrag von: JMW am 30 Juni 2017, 23:30:11
Hallo,
ich möchte folgendes tun:

define nt_Cmd_Raum1_auf notify dm_Cmd_Raum1:auf       { jalousie("Raum1", "auf");; }
define nt_Cmd_Raum2_auf notify dm_Cmd_Raum2:auf       { jalousie("Raum2", "auf");; }
define nt_Cmd_Raum3_auf notify dm_Cmd_Raum3:auf       { jalousie("Raum3", "auf");; }

durch Perl-Auswertung vereinfachen:

define di_Cmd_direct DOIF (["^dm_Cmd_:auf|hoch|runter|zu"]) ( {("$DEVICE"=~/^dm_Cmd_(.*)/;;"jalousie($1, $EVENT);;")} )

Leider bekomme ich den Befehl "Jalousie(..., ...)" nicht hin.  Wie müsste das im obigen Beispiel heißen, damit es wie bisher funktioniert?

Vielen Dank schonmal.

Titel: Antw:DOIF: Auswertung über Perl als Befehl ausführen
Beitrag von: rabehd am 30 Juni 2017, 23:54:51
define di_Cmd_direct DOIF (["^dm_Cmd_:auf|hoch|runter|zu"]) ( {jalousie($1, $EVENT)} )
so klappt es bei mir, wobei hier die Definition von $1 wohl fehlt.
mit ("$DEVICE"=~/^dm_Cmd_(.*)/;;
kann ich nichts anfangen. Wofür?
Titel: Antw:DOIF: Auswertung über Perl als Befehl ausführen
Beitrag von: JMW am 01 Juli 2017, 00:06:41

Siehe Beispiel im DOIF:

define di_air DOIF (["^window_contact_:open|tilted"]) (set {("$DEVICE"=~/^window_contact_(.*)/;"shutters_$1")} 10)


Hier werden alle Fensterkontakte, die mit dem Device-Namen "window_contact_" beginnen auf "open" oder "tilted" im Event überwacht und der entsprechende Rollladen mit der gleichen Endung auf Lüften per set shutters_<postfix> 10 gestellt. In diesem Beispiel wird die Möglichkeit genutzt bei FHEM-Befehlen Perlcode innerhalb der Klammern {(...)} einzufügen. Siehe Berechnungen im Ausführungsteil
Titel: Antw:DOIF: Auswertung über Perl als Befehl ausführen
Beitrag von: JMW am 01 Juli 2017, 12:54:28
Jetzt geht es:

{ jalousie( {("$DEVICE"=~/^dm_Cmd_(.*)/;;"\"$1\", \"$EVENT\"")} );;}
Titel: Antw:DOIF: Auswertung über Perl als Befehl ausführen
Beitrag von: Amenophis86 am 01 Juli 2017, 13:02:23
Gelöste Themen bitte nicht schließen, sondern auf [Gelöst] im Titel setzen. (Editieren im ersten Beitrag) Danke