FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: aw am 19 Januar 2020, 11:42:48

Titel: $DEVICE
Beitrag von: aw am 19 Januar 2020, 11:42:48
Hallo,
ich habe eine Verständnisfrage bzgl. der internen Variablen $DEVICE im DOIF Perl Modus.
   
Beispiel 1:    
defmod DoIF_Test DOIF {[LAMPE:Active];;\
   {Log 1,'$DEVICE'}\
}\

Beispiel 2:
defmod DoIF_Test DOIF {[[LAMPE:ZEIT]];;\
   {Log 1,'$DEVICE'}\
}\

Bei dem ersten ereignisgesteuerten Aufruf ist die interne Varaible mit "LAMPE" belegt, bei dem zweiten ist die Variable leer, obwohl das DoIF korrekt ausgeführt wird. Der Logeintrag ist einfach leer.
Mache ich einen Fehler oder ist es generell so, dass bei zeitgesteuerten Triggern die Variable leer ist?
Vielen Dank für eure Hilfe.
Titel: Antw:$DEVICE
Beitrag von: amenomade am 19 Januar 2020, 11:46:35
Ist ZEIT wie Active ein Reading von LAMPE?
Titel: Antw:$DEVICE
Beitrag von: Damian am 19 Januar 2020, 11:58:05
Zitat von: aw am 19 Januar 2020, 11:42:48
Hallo,
ich habe eine Verständnisfrage bzgl. der internen Variablen $DEVICE im DOIF Perl Modus.
   
Beispiel 1:    
defmod DoIF_Test DOIF {[LAMPE:Active];;\
   {Log 1,'$DEVICE'}\
}\

Beispiel 2:
defmod DoIF_Test DOIF {[[LAMPE:ZEIT]];;\
   {Log 1,'$DEVICE'}\
}\

Bei dem ersten ereignisgesteuerten Aufruf ist die interne Varaible mit "LAMPE" belegt, bei dem zweiten ist die Variable leer, obwohl das DoIF korrekt ausgeführt wird. Der Logeintrag ist einfach leer.
Mache ich einen Fehler oder ist es generell so, dass bei zeitgesteuerten Triggern die Variable leer ist?
Vielen Dank für eure Hilfe.

$DEVICE ist das triggernde Device, ein Zeittrigger hat folglich kein $DEVICE
Titel: Antw:$DEVICE
Beitrag von: aw am 19 Januar 2020, 12:18:15
Gibt es eine andere Möglichkeit,  den Namen des Devices zu bekommen, welches den Zeittrigger 'verursacht' hat? In meinem Fall eben Lampe.
Titel: Antw:$DEVICE
Beitrag von: Damian am 19 Januar 2020, 12:41:35
Zitat von: aw am 19 Januar 2020, 12:18:15
Gibt es eine andere Möglichkeit,  den Namen des Devices zu bekommen, welches den Zeittrigger 'verursacht' hat? In meinem Fall eben Lampe.

Das kannst du im separaten Block im Perl-Modus machen:

defmod DoIF_Test DOIF {[[LAMPE:ZEIT]];;\
   {Log 1,'$DEVICE'}\
}\
{[LAMPE:ZEIT]}
Titel: Antw:$DEVICE
Beitrag von: aw am 19 Januar 2020, 14:47:09
Alles klar. Danke für die schnelle Hilfe.