FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: gfix am 19 Mai 2014, 17:27:19

Titel: [gelöst] notify mit 2 Bedingungen
Beitrag von: gfix am 19 Mai 2014, 17:27:19
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
Titel: Antw:notify mit 2 Bedingungen
Beitrag von: strauch am 19 Mai 2014, 17:42:35
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 :-)
Titel: Antw:notify mit 2 Bedingungen
Beitrag von: Puschel74 am 19 Mai 2014, 18:54:38
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
Titel: [gelöst] notify mit 2 Bedingungen
Beitrag von: gfix am 20 Mai 2014, 07:41:33
funktioniert super

Besten Dank
Titel: Antw:[gelöst] notify mit 2 Bedingungen
Beitrag von: strauch am 20 Mai 2014, 09:51:48
und wie hast du es gelöst?
Titel: Antw:[gelöst] notify mit 2 Bedingungen
Beitrag von: chrisrock82 am 16 November 2017, 21:39:57
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?
Titel: Antw:[gelöst] notify mit 2 Bedingungen
Beitrag von: marvin78 am 17 November 2017, 08:37:57
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.