Hallo Forum,
kann mir da wer helfen, ich komm mit dem FHEM/Perl Syntax nicht klar.
Meine Anforderung:
Ich will ein Gerät (Heizstab im Handtuchtrockner) einschalten, wenn meine PV Anlage zu viel Strom liefert, aber nur wenn die Temperatur unter einem bestimmten Wert liegt.
Wenn ich nur eine If Abfrage in ein Notity einbaue funktioniert's, aber mit 2 Bedingungen kommt Fehlermeldung:
z.B.: eine If Bedingung funktioniert:
define Handtuchheizung_on notify StromLieferung:* {\
if ( Value("StromLieferung") > 1.9) { fhem ("set Handtuchheizung on") }\
elsif ( Value("StromLieferung") < 1.1) { fhem ( "set Handtuchheizung off")}\
}
oder:
define Handtuchheizung_off notify Temp.Handtuchheizung:temperature {\
if ( ReadingsVal("Temp.Handtuchheizung","temperature",99) > 55) { fhem ("set Handtuchheizung off") }\
}
aber wenn ich beide Bedingungen einbaue funktioniert's nicht:
define Handtuchheizung_on notify StromLieferung:* {\
if ( Value("StromLieferung") > 1.9) && ( ReadingsVal("Temp.Handtuchheizung","temperature",99) < 50) { fhem ("set Handtuchheizung on") }\
elsif ( Value("StromLieferung") < 1.1) { fhem ( "set Handtuchheizung off")}\
}
bekomme ich im fhem.log folgenden Fehler
Handtuchheizung_on return value: syntax error at (eval 59102) line 1, near ") &&"
Wie macht man das richtig?
Danke
Da ist notify das falsche Modul nimm threshold
define threshold_Handtuchheizung threshold Stromlieferung:state:0.8:1.9 Handtuchheizung|set @ on|set @ off|1
das ist ungetestet :-)
Hallo,
in diesem Fall bin ich ein Freund von "zuviel" Klammern ;D
if (( Value("StromLieferung") > 1.9) && ( ReadingsVal("Temp.Handtuchheizung","temperature",99) < 50)) { fhem ("set Handtuchheizung on") }\
Wenn du bei dir die Klammern durchzählst und auflöst steht das && ohne Klammer im if.
Das besagt auch die Fehlermeldung.
Evtl. klappt auch das
if ( Value("StromLieferung") > 1.9 && ReadingsVal("Temp.Handtuchheizung","temperature",99) < 50) { fhem ("set Handtuchheizung on") }\
Grüße
funktioniert super
Besten Dank
und wie hast du es gelöst?
Hallo, ich habe ein ähnliches Problem..
wenn der Öffnungsmelder öffnet und der Rollladen zu ist, soll auf auf die Position 75 gehen... (Kochfunktion)
define rollkueostopen notify if (( ReadingsVal("fensterkontakt","contactState","opened")) && ( ReadingsVal("rollladen","TargetClosureState",100) )) { fhem ("rollladen setPosition 75") }\
Jemand ne Idee, warum sich nichts tut?
Weil du nicht in den Perl Bereich wechselst ("{}"). Oder nutze FHEM IF. Aber vor allem, arbeite dich erst einmal in die Grundlagen ein, bevor du solche Dinge machst.