Hauptmenü

Perl-Code in notify

Begonnen von SSSleep, 20 August 2013, 18:47:28

Vorheriges Thema - Nächstes Thema

SSSleep

Hallo,

ich bin mir gerade unsicher ob man in der fhem.cfg wirklich ganze Perl Blöcke hinter ein notify hängen kann!? Folgende notify Zeile funktioniert bei mir:

define Rollo_1 notify Rollo1 {if (Value("@") eq OldValue("@")){fhem ("setstate Rollo1 stop")}}


...die Erweiterung dessen, scheitert mit einer Menge Fehlermeldungen:


define Rollo_1 notify Rollo1 {
my ($aktor)='';
if (Value("@") eq OldValue("@")){
   {fhem ("setstate Rollo1 stop");
   $aktor = 0x00;               }
   }
elseif (Value("@") eq "auf"){
       $aktor = 0x01;}
elseif (Value("@") eq "zu"){
       $aktor = 0x02;}
"i2cset -y 3 0x10 0x00" .$aktor.;  
}


Mir ist schon bewusst, dass empfohlen wird notifys in eine 99_myUtils.pm auszulagen. Das möchte ich aber erst tun, wenn der Rest soweit funktioniert.





SSSleep

...gut, dass gerade jemand den Lüfter-Thread hervorgeholt hat :-)

Das Ende einer Zeile muss wohl mit "\" gekennzeichnet werden. Eine Anweisung muss mit "}" oder ;; abgeschlossen werden. Ausserdem heißt es "elsif" und nicht "elseif" :-) Achja, und an $aktor muss ein String und kein nummerischer Wert übergeben werden.

Richtig lautet das notify dann so:


define Rollo_1 notify Rollo1 {\
my $aktor = '';;\
if (Value("@") eq OldValue("@")){\
    fhem ("setstate Rollo1 stop");;\  
    $aktor = "0x00"}\
elsif (Value("@") eq "auf"){\
       $aktor = "0x01"}\
elsif (Value("@") eq "ab"){\
       $aktor = "0x02"}\
fhem ("setstate test " .$aktor);;\
"i2cset -y 3 0x10 0x00 " .$aktor}


   

justme1968

die ganzen regeln für die maskieren von zeilenende und ; und flüchtigkeitsfehler dabei spart man sich wenn man das notify im web frontend editiert.

am besten das notify hinten nur mit {} anlegen und dann im web frontend auf das DEF klicken. dort kann man dann editieren.

wenn alles geht save nicht vergessen.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

SSSleep

...tatsächlich :-)

Wenn ich das notify im DEF ansehe sind die doppelten ";;" und die "\" am Zeilenende ausgeblendet.

Wann man mit einer Klammer abschließt und wann mit ";" ist mir immer noch nicht geheuer..aber das wird schon


Danke für den Tip