Hallo,
laut Dokumentation kann ich Perlcode in set_Exec im Doif Perlmodus aufrufen. Außerdem möchte ich Perl-Variablen verwenden. Beides bekomme ich nicht richtig hin. Was mache ich falsch?
Fehlermeldung: condition c01: Bad name after Autobeschattung', line 44
if (!get_Exec("sleep.Wait.Autobeschattung.$compass")) {
set_Exec("sleep.Wait.Autobeschattung.$compass",$waitDown,'if ([struc.Rollos.$compass:state] ne "$dir" && [Autobeschattung:state] eq "on") { fhem("setex Rollos.$compass $dir-force Autobeschattung:$compass:$dir:$waitDown")}');
}
Mein Ziel ist es, sleep zu vermeiden.
Danke für jede Hilfe.
Ronny
Zitat von: FHEMAN am 04 Oktober 2021, 22:19:27
Hallo,
laut Dokumentation kann ich Perlcode in set_Exec im Doif Perlmodus aufrufen. Außerdem möchte ich Perl-Variablen verwenden. Beides bekomme ich nicht richtig hin. Was mache ich falsch?
Fehlermeldung: condition c01: Bad name after Autobeschattung', line 44
if (!get_Exec("sleep.Wait.Autobeschattung.$compass")) {
set_Exec("sleep.Wait.Autobeschattung.$compass",$waitDown,'if ([struc.Rollos.$compass:state] ne "$dir" && [Autobeschattung:state] eq "on") { fhem("setex Rollos.$compass $dir-force Autobeschattung:$compass:$dir:$waitDown")}');
}
Mein Ziel ist es, sleep zu vermeiden.
Danke für jede Hilfe.
Ronny
Du musst beim if-Befehl $compass auflösen, daher muss if in doppelten Anführungszeichen stehen, der Rest dann logischerweise in einfachen. Variablen funktionieren aber grundsätzlich nicht in DOIF-spezifischer Syntax in eckigen Klammern [...], hier musst du ReadingsVal nutzen.
Zitat von: Damian am 04 Oktober 2021, 22:27:05
Du musst beim if-Befehl $compass auflösen, daher muss if in doppelten Anführungszeichen stehen, der Rest dann logischerweise in einfachen. Variablen funktionieren aber grundsätzlich nicht in DOIF-spezifischer Syntax in eckigen Klammern [...], hier musst du ReadingsVal nutzen.
- außer bei $SELF und den internen Variablen, oder?
Korrekt wäre dann also
set_Exec("sleep.Wait.Autobeschattung.$compass",$waitDown,"if (Value('struc.Rollos.$compass' ne '$dir' && [Autobeschattung:state] eq 'on') { fhem('setex Rollos.$compass $dir-force Autobeschattung:$compass:$dir:$waitDown')}");
Das bring zumindest keine Fehlermeldung. Ich werde es morgen erst tagsüber final testen können.
Danke Dir soweit, Damian!
ja, $SELF und $DEVICE sind keine echten Perlvariablen, sondern nur Platzhalter