Hallo,
in der DEF meines notify habe ich folgendes:
EnO_switch_00001009:B0.* {if (Jalousieaktor01:state eq "down" ) {
fhem('set Jalousieaktor01 stop');
}else {
if (Jalousieaktor01:state eq "up") {
fhem('set Jalousieaktor01 stop');
}else {
fhem('set Jalousieaktor01 0')
}}}
Folgendes soll beim Tastendruck (EnO_switch_00001009:B0.*) passieren:
-wenn die Jalousie bereits runter fährt, also das Reading state auf "down" steht, dann soll die Jalousie stoppen
-wenn die Jalousie bereits rauf fährt, also das Reading state auf "up" steht, dann soll die Jalousie stoppen
-in allen anderen Fällen soll die Jalousie bei Tastendruck auf "0" fahrten
Leider bekomme ich mit dem obigen Code eine Fehlermeldung.
Kann mir da einer helfen?
Gruß, Sascha
Zitat von: Cybers am 17 Februar 2016, 14:05:40
Leider bekomme ich mit dem obigen Code eine Fehlermeldung.
Kann mir da einer helfen?
Gruß, Sascha
Und die Meldung ist als streng geheim eingestuft?
Sorry, vergessen. Die Fehlermeldung:
Taster2.1_notify return value: syntax error at (eval 8211) line 1, near "Jalousieaktor01:"
syntax error at (eval 8211) line 3, near "}else"
Merke:
Mische nicht IF/DOIF mit notify - das geht ins Auge.
Deine if-Abfrage setzt IF/DOIF voraus und nicht Perl-if da es mit if solche Abfragekonstukte mWn nicht gibt.
Jalousieaktor01:state
Für if wäre wohl
if (Value("Jalousieaktor01") eq "down")
besser geeignet.
damit würde ich aber "STATE" abfragen und nicht das Reading "state". Da ich das Attribut stateFormat verwende sind "state" und "STATE" nicht gleich.
Oder habe ich einen Denkfehler?
Gruß, Sascha
Commandref und da nach ReadingsVal suchen
Grüße
Danke, so läuft es jetzt:
EnO_switch_00001009:B0.* {if (ReadingsVal('Jalousieaktor01','state','') eq "down" ) {
fhem('set Jalousieaktor01 stop');
}else {
if (ReadingsVal('Jalousieaktor01','state','') eq "up") {
fhem('set Jalousieaktor01 stop');
}else {
fhem('set Jalousieaktor01 0')
}}}
Da es keinen Hinweis auf ein verwendetes stateFormat gab gab es von mir auch keinen Hinweis auf ReadingsVal ;)
Ohne stateFormat klappt es nämlich auch mit Value.
wenn ich das jetzt richtig gelesen habe, könnte ich statt "if" auch "IF" benutzen und müßte dann aber "Jalousieaktor01:state" ohne ReadingsVal nutzen?
Also so:
EnO_switch_00001009:B0.* IF ([Jalousieaktor01:state] eq "down" ) (set Jalousieaktor01 stop)