Hauptmenü

$DEVICE

Begonnen von aw, 19 Januar 2020, 11:42:48

Vorheriges Thema - Nächstes Thema

aw

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.

amenomade

Ist ZEIT wie Active ein Reading von LAMPE?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

aw

Gibt es eine andere Möglichkeit,  den Namen des Devices zu bekommen, welches den Zeittrigger 'verursacht' hat? In meinem Fall eben Lampe.

Damian

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]}
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

aw

Alles klar. Danke für die schnelle Hilfe.