Hallo zusammen,
ich stehe auf dem Schlauch....
Folgendes DOIF:
([TestDummy] eq "on" or [TestDummy] eq "off" )
( {
Log 1, "--> Test-Start <--";;
fhem ("sleep 1,
##IF ([Bad_LED_Status:state] eq "Off") (set Bad_LED_Mode Off,set CCU_OG_BD_BSL_FLUR datapoint 8.COLOR 6 8.LEVEL 0,set CCU_OG_BD_BSL_FLUR datapoint 12.COLOR 6 12.LEVEL 0)
IF ([Bad_LED_Status:state] eq "Off") (set Bad_LED_Mode Off)
"
);;
Log 1, "--> Test-Ende <--";;
} )
Fehler:
2019.08.24 21:21:03 1: PERL WARNING: Bareword found where operator expected at (eval 599980) line 1, near ""sleep 1, IF (Off eq "Off"
2019.08.24 21:21:03 3: eval: { Log 1, "--> Test-Start <--";; fhem ("sleep 1, IF (Off eq "Off") (set Bad_LED_Mode Off) " );; Log 1, "--> Test-Ende <--";; }
2019.08.24 21:21:03 1: PERL WARNING: String found where operator expected at (eval 599980) line 1, near "Off") (set Bad_LED_Mode Off) ""
2019.08.24 21:21:03 3: eval: { Log 1, "--> Test-Start <--";; fhem ("sleep 1, IF (Off eq "Off") (set Bad_LED_Mode Off) " );; Log 1, "--> Test-Ende <--";; }
2019.08.24 21:21:03 1: ERROR evaluating { Log 1, "--> Test-Start <--";; fhem ("sleep 1, IF (Off eq "Off") (set Bad_LED_Mode Off) " );; Log 1, "--> Test-Ende <--";; }: syntax error at (eval 599980) line 1, near ""sleep 1, IF (Off eq "Off"
2019.08.24 21:21:03 2: di_test: { Log 1, "--> Test-Start <--";; fhem ("sleep 1, IF (Off eq "Off") (set Bad_LED_Mode Off) " );; Log 1, "--> Test-Ende <--";; }: syntax error at (eval 599980) line 1, near ""sleep 1, IF (Off eq "Off"
Ich stehe auf dem Schlauch, Off eq "Off", muss ich einen Part escapen?
PS: Dieser Test-DOIF ist natürlich Teil einer größeren Logik, hier zum Testen nur reduziert.
Danke Euch vorab und schöne Grüße
Dirk
Warum so kompliziert, versuch doch mal im DOIF
define Test_DOIF DOIF ([TestDummy] eq "on" or [TestDummy] eq "off") (IF ([Bad_LED_Status:state] eq "Off") (set Bad_LED_Mode Off))
attr Test_DOIF wait 1
Damit wird bei on oder off getriggert und 1 sekunde gewartet und dann die IF Abfrage gemacht.
Falls du perl dringend brauchst, ich könnt mir vorstellen dass das Komma falsch ist, das dort ein ; erwartet wird...
Zitat([TestDummy] eq "on" or [TestDummy] eq "off" )
( {
Log 1, "--> Test-Start <--";;
fhem ("sleep 1, <------------
##IF ([Bad_LED_Status:state] eq "Off") (set Bad_LED_Mode Off,set CCU_OG_BD_BSL_FLUR datapoint 8.COLOR 6 8.LEVEL 0,set CCU_OG_BD_BSL_FLUR datapoint 12.COLOR 6 12.LEVEL 0)
IF ([Bad_LED_Status:state] eq "Off") (set Bad_LED_Mode Off)
"
);;
Log 1, "--> Test-Ende <--";;
} )
Danke Dir erstmal!!!
Der eher komplizierte Aufbau ist leider an der Stelle (im produktiven System) notwendig.
Hier ist das nur zu Testzwecken minimiert.
Der Hinweis aufs Semikolon statt Komma war leider nicht die Lösung.
Fehlermeldung:
2019.08.25 16:32:28 1: PERL WARNING: Bareword found where operator expected at (eval 624630) line 1, near ""sleep 1; IF (Off eq "Off"
2019.08.25 16:32:28 3: eval: { Log 1, "--> Test-Start <--";; fhem ("sleep 1; IF (Off eq "Off") (set Bad_LED_Mode Off) " );; Log 1, "--> Test-Ende <--";; }
2019.08.25 16:32:28 1: PERL WARNING: String found where operator expected at (eval 624630) line 1, near "Off") (set Bad_LED_Mode Off) ""
2019.08.25 16:32:28 3: eval: { Log 1, "--> Test-Start <--";; fhem ("sleep 1; IF (Off eq "Off") (set Bad_LED_Mode Off) " );; Log 1, "--> Test-Ende <--";; }
2019.08.25 16:32:28 1: ERROR evaluating { Log 1, "--> Test-Start <--";; fhem ("sleep 1; IF (Off eq "Off") (set Bad_LED_Mode Off) " );; Log 1, "--> Test-Ende <--";; }: syntax error at (eval 624630) line 1, near ""sleep 1; IF (Off eq "Off"
2019.08.25 16:32:28 2: di_test: { Log 1, "--> Test-Start <--";; fhem ("sleep 1; IF (Off eq "Off") (set Bad_LED_Mode Off) " );; Log 1, "--> Test-Ende <--";; }: syntax error at (eval 624630) line 1, near ""sleep 1; IF (Off eq "Off"
versuch mal:
([TestDummy] eq "on" or [TestDummy] eq "off" )
({Log 1, "--> Test-Start <--"})
(IF ([Bad_LED_Status:state] eq "Off") (set Bad_LED_Mode Off,set CCU_OG_BD_BSL_FLUR datapoint 8.COLOR 6 8.LEVEL 0,set CCU_OG_BD_BSL_FLUR datapoint 12.COLOR 6 12.LEVEL 0),{Log 1, "--> Test-Ende <--"})
wait 0:1