[gelöst] notify mit 2 Bedingungen

Begonnen von gfix, 19 Mai 2014, 17:27:19

Vorheriges Thema - Nächstes Thema

gfix

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

strauch

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 :-)
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

Puschel74

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
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

gfix


strauch

FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.

chrisrock82

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?

marvin78

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.