komische error meldung seit komplettupdate

Begonnen von satprofi, 28 Oktober 2016, 20:01:23

Vorheriges Thema - Nächstes Thema

satprofi

hallo.
hatte erfolgreich ein doif laufen, bis ich vor ca. 1 woche ein komplettupdate machte. danach fiel mir auf das einige doif nicht mehr richtig schalteten.

([Xtender_Batteriebetrieb] eq "on") (set Netz_Schuetz_aus on)
DOELSEIF ((($month <10 and $month >3) and ([Batterieladezeit:kWh] > 9 and [Ueberschuss] < 1 and [17:01-20:00] and [Batterielader_aus] eq "on"))) (set Netz_Schuetz_aus on)
DOELSEIF (($month <10 and $month >3) and ([Pac] < 1900 and ([load_kWh_daily] > 8.5 and [17:15-20:00] and [Batterielader_aus] eq "on")) (set Netz_Schuetz_aus on)
DOELSEIF (($month <10 and $month >3) and [Pac] < 1900 and ([load_kWh_daily] > 8 and [17:30-20:00] and [Batterielader_aus] eq "on")) (set Netz_Schuetz_aus on)
DOELSEIF ((($month <10 and $month >3) and ([load_kWh_daily] > 7.5 and [17:50-18:09]))) (set Netz_Schuetz_aus on)
DOELSEIF (($month <10 and $month >3) and ([load_kWh_daily] > 7 and [18:10-18:39]))) (set Netz_Schuetz_aus on)
DOELSEIF (($month <10 and $month >3) and ([load_kWh_daily] > 6.5 and [18:40-19:09])) (set Netz_Schuetz_aus on)
DOELSEIF (($month <10 and $month >3) and ([load_kWh_daily] > 6 and [19:10])) (set Netz_Schuetz_aus on)
DOELSEIF (($month <10 and $month >3) and ([load_kWh_daily] > 5.5 and [19:40])) (set Netz_Schuetz_aus on)
DOELSEIF (($month <10 and $month >3) and ([load_kWh_daily] > 5 and [20:15])) (set Netz_Schuetz_aus on)
DOELSEIF (($month <10 and $month >3) and ([load_kWh_daily] > 4.5 and [21:15])) (set Netz_Schuetz_aus on)
DOELSEIF (($month <10 and $month >3) and ([load_kWh_daily] > 4 and [22:20])) (set Netz_Schuetz_aus on)
DOELSEIF (($month <10 and $month >3) and ([load_kWh_daily] > 3.5 and [23:30])) (set Netz_Schuetz_aus on)
DOELSEIF (($month <10 and $month >3) and ([load_kWh_daily] > 3 and [00:40])) (set Netz_Schuetz_aus on)
DOELSEIF (($month <10 and $month >3) and ([load_kWh_daily] > 2.5 and [01:50])) (set Netz_Schuetz_aus on)
DOELSEIF (($month <10 and $month >3) and ([load_kWh_daily] > 2 and [03:00])) (set Netz_Schuetz_aus on)
DOELSEIF (($month <10 and $month >3) and ([load_kWh_daily] > 1.5 and [04:10])) (set Netz_Schuetz_aus on)
DOELSEIF (($month <10 and $month >3) and ([load_kWh_daily] > 1 and [05:20])) (set Netz_Schuetz_aus on)
DOELSEIF (($month >9 or $month <4) and ([load_kWh_daily] > 7 and [19:30])) (set Netz_Schuetz_aus on)
DOELSEIF (($month >9 or $month <4) and ([load_kWh_daily] > 6.5 and [20:15])) (set Netz_Schuetz_aus on)
DOELSEIF (($month >9 or $month <4) and ([load_kWh_daily] > 6 and [21:00])) (set Netz_Schuetz_aus on)
DOELSEIF (($month >9 or $month <4) and ([load_kWh_daily] > 5.5 and [21:45])) (set Netz_Schuetz_aus on)
DOELSEIF (($month >9 or $month <4) and ([load_kWh_daily] > 5 and [22:30])) (set Netz_Schuetz_aus on)
DOELSEIF (($month >9 or $month <4) and ([load_kWh_daily] > 4.5 and [23:15])) (set Netz_Schuetz_aus on)
DOELSEIF (($month >9 or $month <4) and ([load_kWh_daily] > 4 and [00:15])) (set Netz_Schuetz_aus on)
DOELSEIF (($month >9 or $month <4) and ([load_kWh_daily] > 3.5 and [01:15])) (set Netz_Schuetz_aus on)
DOELSEIF (($month >9 or $month <4) and ([load_kWh_daily] > 3 and [02:15])) (set Netz_Schuetz_aus on)
DOELSEIF (($month >9 or $month <4) and ([load_kWh_daily] > 2.5 and [03:15])) (set Netz_Schuetz_aus on)
DOELSEIF (($month >9 or $month <4) and ([load_kWh_daily] > 2 and [04:15])) (set Netz_Schuetz_aus on)
DOELSEIF (($month >9 or $month <4) and ([load_kWh_daily] > 1.5 and [05:15])) (set Netz_Schuetz_aus on)
DOELSEIF (($month >9 or $month <4) and ([load_kWh_daily] > 1 and [06:15])) (set Netz_Schuetz_aus on)
DOELSEIF (([08:00]) or (([06:59-07:59] and [Ueberschuss:state:d] > 800) or ([06:59-07:59] and [Pac] > 1200))) (set Netz_Schuetz_aus off,set load_kWh_daily 0,set Ladestatus 6)


es kommt folgende errormeldung

perl error in condition: ($month <10 and $month >3) and (InternalDoIf($hash,'Pac','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) < 1900 and (InternalDoIf($hash,'load_kWh_daily','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) > 8.5 and DOIF_time($hash,$hash->{realtime}{2},$hash->{realtime}{3},$wday,$hms,"") and InternalDoIf($hash,'Batterielader_aus','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "on")) (set Netz_Schuetz_aus on) DOELSEIF (($month <10 and $month >3) and InternalDoIf($hash,'Pac','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) < 1900 and (InternalDoIf($hash,'load_kWh_daily','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) > 8 and DOIF_time($hash,$hash->{realtime}{4},$hash->{realtime}{5},$wday,$hms,"") and InternalDoIf($hash,'Batterielader_aus','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "on")) (set Netz_Schuetz_aus on) DOELSEIF ((($month <10 and $month >3) and (InternalDoIf($hash,'load_kWh_daily','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) > 7.5 and DOIF_time($hash,$hash->{realtime}{6},$hash->{realtime}{7},$wday,$hms,"")))) (set Netz_Schuetz_aus on) DOELSEIF (($month <10 and $month >3) and (InternalDoIf($hash,'load_kWh_daily','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) > 7 and DOIF_time($hash,$hash->{realtime}{8},$hash->{realtime}{9},$wday,$hms,""))): syntax error at (eval 3673423) line 1, near ") ("


schaut so aus als würden irgendwelche readings nicht mehr angenommen, habe aber davon 0 ahnung.

hat wer einen tip?
lg
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

satprofi

ich glaub ich hab den fehler, eione klammer zuviel.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Damian

#2
Zitat von: satprofi am 28 Oktober 2016, 20:09:05
ich glaub ich hab den fehler, eione klammer zuviel.

ich würde sagen, nicht nur eine ;)

Logische Abfragen, die alle ein "and" haben brauchst du nicht zu klammern

hier fehlte z. B. bereits am Ende eine Klammer zu:

(($month <10 and $month >3) and ([Pac] < 1900 and ([load_kWh_daily] > 8.5 and [17:15-20:00] and [Batterielader_aus] eq "on")))

Es ist aber das Gleiche wie:

($month <10 and $month >3 and [Pac] < 1900 and [load_kWh_daily] > 8.5 and [17:15-20:00] and [Batterielader_aus] eq "on")

Weniger überflüssige Klammern - weniger Fehler.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF