DOELSEIF ((($month >9 or $month <4) and ([Vorhersage:fc0_sun] >90 or $mday==28)) and (([Xtender_SOC] >70 and [00:10]) or ([Xtender_SOC] >65 and [01:10]) or ([Xtender_SOC] >60 and [01:30]) or ([Xtender_SOC] >55 and [02:35]) or ([Xtender_SOC] >50 and [03:55]) or ([Xtender_SOC] >45 and [05:00]))) ("python2 /usr/local/bin/transfer_off.py")
e_Vorhersage_fc0_sun 100
e_Xtender_SOC_STATE 100
Größer > und kleiner < verwechselt?
sollte ja bei grösser 90 starten, tat es aber nicht
Gesendet mit Tapatalk
Stimmt, deine Frage war andersrum :-[.
Eigentlich sollte es sogar mehrfach pro Trag "zuschlagen". Zumindest mit do always.
Aber du hast ja nur die def gepostet, kein List.
Denn selbst ohne "Zuschlag" sollte List die Werte vom letzten Triggern aufzeigen.
Nebenbei: ein paar Fragezeichen vor Xtender_SOC senken die Last recht stark, wenn das ein schwankender Wert ist.
Zitat von: Per am 06 Februar 2018, 11:49:59
Stimmt, deine Frage war andersrum :-[.
Eigentlich sollte es sogar mehrfach pro Trag "zuschlagen". Zumindest mit do always.
Aber du hast ja nur die def gepostet, kein List.
Denn selbst ohne "Zuschlag" sollte List die Werte vom letzten Triggern aufzeigen.
Nebenbei: ein paar Fragezeichen vor Xtender_SOC senken die Last recht stark, wenn das ein schwankender Wert ist.
aha, do always hab ich ni ht defi iert, weil ja niemand anderer auf die devices zucreixt.
was genau meinst du mit den Fragezeichen?
Gesendet mit Tapatalk
? vor dem Device bedeutet, dass die Events nicht triggern und der Wert nur bei triggerung durch die Devices die kein ? haben, abgefragt wird.
Zitat von: Per am 06 Februar 2018, 11:49:59
Aber du hast ja nur die def gepostet, kein List.
und auch das nicht vollständig :o
sicher das die ganzen "and" und "or" Bedingungen so passen? Klammersetzung??
Da ein DOIF mit Zustandwechseln arbeitet, kann man ohne ein "list" (oder mindestens die vollständige Definition inkl Attributes) nicht debuggen. Das hâtte vielleicht schalten sollen... oder vielleicht auch nicht. Mehr kann man nicht sagen.
Zitat von: satprofi am 06 Februar 2018, 17:21:46aha, do always hab ich ni ht defi iert, weil ja niemand anderer auf die devices zucreixt.
???
Ohne do always schaltet er, wenn er den Status einmal erreicht hat, nicht wieder in diesen, egal wie oft der Trigger zuschlägt.
Ich sehe gerade, was steht denn im DOIF? Du zeigst ja nur das DOELSEIF.
DEF ((($month >3 and $month <10) and [Lader] eq "off" and [Ueberschuss:W] <10 and [Vorhersage:fc1_sun] >70 and (([Xtender_SOC] >=100 and [17:30-18:00]) or ([Xtender_SOC] >95 and [17:51-18:10]) or ([Xtender_SOC] >92 and [18:05-18:15]) or ([Xtender_SOC] >90 and [18:30-18:40]) or ([Xtender_SOC] >88 and [19:00-19:10]) or ([Xtender_SOC] >86 and [19:20-19:30]) or ([Xtender_SOC] >84 and [19:45-19:50]) or ([Xtender_SOC] >82 and [20:00-20:10]) or ([Xtender_SOC] >80 and [20:15-20:20]) or ([Xtender_SOC] >78 and [20:30]) or ([Xtender_SOC] >75 and [20:40]) or ([Xtender_SOC] >70 and [21:00])))) ("python2 /usr/local/bin/transfer_off.py")
DOELSEIF ((($month >3 and $month <10) and [Vorhersage:fc1_sun] >50 and (([Xtender_SOC] >65 and [22:00]) or ([Xtender_SOC] >60 and [23:10])))) ("python2 /usr/local/bin/transfer_off.py")
DOELSEIF ((($month >3 and $month <10) and [Vorhersage:fc0_sun] >50 and (([Xtender_SOC] >55 and [00:20]) or ([Xtender_SOC] >50 and [01:30]) or ([Xtender_SOC] >45 and [02:40]) or ([Xtender_SOC] >40 and [03:50]) or ([Xtender_SOC] >35 and [05:00])))) ("python2 /usr/local/bin/transfer_off.py")
DOELSEIF ((($month >9 or $month <4) and ([Vorhersage:fc1_sun] >90 or ($mday==27))) and (([Xtender_SOC] >95 and [21:06]) or ([Xtender_SOC] >90 and [21:30]) or ([Xtender_SOC] >85 and [22:06]) or ([Xtender_SOC] >80 and [22:30]) or ([Xtender_SOC] >75 and [22:55]))) ("python2 /usr/local/bin/transfer_off.py")
DOELSEIF ((($month >9 or $month <4) and ([Vorhersage:fc0_sun] >90 or ($mday==28))) and (([Xtender_SOC] >70 and [00:10]) or ([Xtender_SOC] >65 and [01:10]) or ([Xtender_SOC] >60 and [01:30]) or ([Xtender_SOC] >55 and [02:35]) or ([Xtender_SOC] >50 and [03:55]) or ([Xtender_SOC] >45 and [05:00]))) ("python2 /usr/local/bin/transfer_off.py")
DOELSEIF ([05:59] and (($month >9 or $month <4) and ($mday==28))) ("python2 /usr/local/bin/transfer_on.py")
DOELSEIF (([07:15-08:05] and [Ueberschuss:W] >900) or ([Xtender_SOC] <10) or ([08:05])) ("python2 /usr/local/bin/transfer_on.py")
condition:
0 (($month >3 and $month <10) and InternalDoIf($hash,'Lader','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "off" and ReadingValDoIf($hash,'Ueberschuss','W','','',AttrVal($hash->{NAME},'notexist',undef)) <10 and ReadingValDoIf($hash,'Vorhersage','fc1_sun','','',AttrVal($hash->{NAME},'notexist',undef)) >70 and ((InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >=100 and DOIF_time($hash,$hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"")) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >95 and DOIF_time($hash,$hash->{realtime}{2},$hash->{realtime}{3},$wday,$hms,"")) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >92 and DOIF_time($hash,$hash->{realtime}{4},$hash->{realtime}{5},$wday,$hms,"")) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >90 and DOIF_time($hash,$hash->{realtime}{6},$hash->{realtime}{7},$wday,$hms,"")) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >88 and DOIF_time($hash,$hash->{realtime}{8},$hash->{realtime}{9},$wday,$hms,"")) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >86 and DOIF_time($hash,$hash->{realtime}{10},$hash->{realtime}{11},$wday,$hms,"")) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >84 and DOIF_time($hash,$hash->{realtime}{12},$hash->{realtime}{13},$wday,$hms,"")) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >82 and DOIF_time($hash,$hash->{realtime}{14},$hash->{realtime}{15},$wday,$hms,"")) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >80 and DOIF_time($hash,$hash->{realtime}{16},$hash->{realtime}{17},$wday,$hms,"")) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >78 and DOIF_time_once($hash,$hash->{timer}{18},$wday,"")) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >75 and DOIF_time_once($hash,$hash->{timer}{19},$wday,"")) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >70 and DOIF_time_once($hash,$hash->{timer}{20},$wday,""))))
1 (($month >3 and $month <10) and ReadingValDoIf($hash,'Vorhersage','fc1_sun','','',AttrVal($hash->{NAME},'notexist',undef)) >50 and ((InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >65 and DOIF_time_once($hash,$hash->{timer}{21},$wday,"")) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >60 and DOIF_time_once($hash,$hash->{timer}{22},$wday,""))))
2 (($month >3 and $month <10) and ReadingValDoIf($hash,'Vorhersage','fc0_sun','','',AttrVal($hash->{NAME},'notexist',undef)) >50 and ((InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >55 and DOIF_time_once($hash,$hash->{timer}{23},$wday,"")) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >50 and DOIF_time_once($hash,$hash->{timer}{24},$wday,"")) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >45 and DOIF_time_once($hash,$hash->{timer}{25},$wday,"")) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >40 and DOIF_time_once($hash,$hash->{timer}{26},$wday,"")) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >35 and DOIF_time_once($hash,$hash->{timer}{27},$wday,""))))
3 (($month >9 or $month <4) and (ReadingValDoIf($hash,'Vorhersage','fc1_sun','','',AttrVal($hash->{NAME},'notexist',undef)) >90 or ($mday==27))) and ((InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >95 and DOIF_time_once($hash,$hash->{timer}{28},$wday,"")) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >90 and DOIF_time_once($hash,$hash->{timer}{29},$wday,"")) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >85 and DOIF_time_once($hash,$hash->{timer}{30},$wday,"")) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >80 and DOIF_time_once($hash,$hash->{timer}{31},$wday,"")) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >75 and DOIF_time_once($hash,$hash->{timer}{32},$wday,"")))
4 (($month >9 or $month <4) and (ReadingValDoIf($hash,'Vorhersage','fc0_sun','','',AttrVal($hash->{NAME},'notexist',undef)) >90 or ($mday==28))) and ((InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >70 and DOIF_time_once($hash,$hash->{timer}{33},$wday,"")) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >65 and DOIF_time_once($hash,$hash->{timer}{34},$wday,"")) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >60 and DOIF_time_once($hash,$hash->{timer}{35},$wday,"")) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >55 and DOIF_time_once($hash,$hash->{timer}{36},$wday,"")) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >50 and DOIF_time_once($hash,$hash->{timer}{37},$wday,"")) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) >45 and DOIF_time_once($hash,$hash->{timer}{38},$wday,"")))
5 DOIF_time_once($hash,$hash->{timer}{39},$wday,"") and (($month >9 or $month <4) and ($mday==28))
6 (DOIF_time($hash,$hash->{realtime}{40},$hash->{realtime}{41},$wday,$hms,"") and ReadingValDoIf($hash,'Ueberschuss','W','','',AttrVal($hash->{NAME},'notexist',undef)) >900) or (InternalDoIf($hash,'Xtender_SOC','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) <10) or (DOIF_time_once($hash,$hash->{timer}{42},$wday,""))
readings:
0 Ueberschuss:W Vorhersage:fc1_sun
1 Vorhersage:fc1_sun
2 Vorhersage:fc0_sun
3 Vorhersage:fc1_sun
4 Vorhersage:fc0_sun
6 Ueberschuss:W
all Ueberschuss:W Vorhersage:fc1_sun Vorhersage:fc0_sun
Und keine Attributes?
Ohne "do always" und ohne DOELSE, bleibt der DOIF auf dem Zustand wo es was, bevor keine Kondition mehr wahr ist. Im welchem Zustand war das DOIF als du gedacht hast, es hätte schalten müssen? cmd_3 ? cmd_4 ? cmd_5 ?
(deswegen ist ein "list" des DOIFs immer besser, insbesonder wenn es gleich nach dem "Problem" genommen wird. Das spart solche Fragen, und man sieht dazu was geschaltet / nicht geschaltet hat)
Hab dein DOIF ein bisschen formattiert, zum besser sehen:
DEF (
(
($month >3 and $month <10)
and [Lader] eq "off"
and [Ueberschuss:W] <10
and [Vorhersage:fc1_sun] >70
and (
([Xtender_SOC] >=100 and [17:30-18:00])
or ([Xtender_SOC] >95 and [17:51-18:10])
or ([Xtender_SOC] >92 and [18:05-18:15])
or ([Xtender_SOC] >90 and [18:30-18:40])
or ([Xtender_SOC] >88 and [19:00-19:10])
or ([Xtender_SOC] >86 and [19:20-19:30])
or ([Xtender_SOC] >84 and [19:45-19:50])
or ([Xtender_SOC] >82 and [20:00-20:10])
or ([Xtender_SOC] >80 and [20:15-20:20])
or ([Xtender_SOC] >78 and [20:30])
or ([Xtender_SOC] >75 and [20:40])
or ([Xtender_SOC] >70 and [21:00])
)
)
)
("python2 /usr/local/bin/transfer_off.py")
DOELSEIF (
(
($month >3 and $month <10)
and [Vorhersage:fc1_sun] >50
and (
([Xtender_SOC] >65 and [22:00])
or ([Xtender_SOC] >60 and [23:10])
)
)
)
("python2 /usr/local/bin/transfer_off.py")
DOELSEIF (
(
($month >3 and $month <10)
and [Vorhersage:fc0_sun] >50
and (
([Xtender_SOC] >55 and [00:20])
or ([Xtender_SOC] >50 and [01:30])
or ([Xtender_SOC] >45 and [02:40])
or ([Xtender_SOC] >40 and [03:50])
or ([Xtender_SOC] >35 and [05:00])
)
)
)
("python2 /usr/local/bin/transfer_off.py")
DOELSEIF (
(
($month >9 or $month <4)
and ([Vorhersage:fc1_sun] >90 or ($mday==27))
)
and (
([Xtender_SOC] >95 and [21:06])
or ([Xtender_SOC] >90 and [21:30])
or ([Xtender_SOC] >85 and [22:06])
or ([Xtender_SOC] >80 and [22:30])
or ([Xtender_SOC] >75 and [22:55])
)
)
("python2 /usr/local/bin/transfer_off.py")
DOELSEIF (
(
($month >9 or $month <4)
and ([Vorhersage:fc0_sun] >90 or ($mday==28))
)
and (
([Xtender_SOC] >70 and [00:10])
or ([Xtender_SOC] >65 and [01:10])
or ([Xtender_SOC] >60 and [01:30])
or ([Xtender_SOC] >55 and [02:35])
or ([Xtender_SOC] >50 and [03:55])
or ([Xtender_SOC] >45 and [05:00])
)
)
("python2 /usr/local/bin/transfer_off.py")
DOELSEIF ([05:59]
and (
($month >9 or $month <4)
and ($mday==28)
)
)
("python2 /usr/local/bin/transfer_on.py")
DOELSEIF (
([07:15-08:05] and [Ueberschuss:W] >900)
or ([Xtender_SOC] <10)
or ([08:05])
)
("python2 /usr/local/bin/transfer_on.py")
Man kann aber nicht ganz sagen was passiert hat, bzw. was passieren sollte. Es fehlt den Zustand (cmd_?) vor dem theoretischen Problem, und es fehlt auch Vorhersage:fc1_sun
Grundsätzlich hätte es doch schalten müssen, aber man weiss nicht, ob auf cmd_4 oder cmd_5, dann vielleicht nicht an die Uhrzeit, wo Du es erwartet hast. Und man weiss auch nicht, wie sie Xtender_SOC geändert hat.
Ein "list" des Doifs wenn es sich d.M.n nicht gemacht hat, was du willst, wäre auf jeden Fall hilfreich.
Zitat von: amenomade am 07 Februar 2018, 21:55:18
Hab dein DOIF ein bisschen formattiert, zum besser sehen:
DEF (
(
($month >3 and $month <10)
and [Lader] eq "off"
and [Ueberschuss:W] <10
and [Vorhersage:fc1_sun] >70
and (
([Xtender_SOC] >=100 and [17:30-18:00])
or ([Xtender_SOC] >95 and [17:51-18:10])
or ([Xtender_SOC] >92 and [18:05-18:15])
or ([Xtender_SOC] >90 and [18:30-18:40])
or ([Xtender_SOC] >88 and [19:00-19:10])
or ([Xtender_SOC] >86 and [19:20-19:30])
or ([Xtender_SOC] >84 and [19:45-19:50])
or ([Xtender_SOC] >82 and [20:00-20:10])
or ([Xtender_SOC] >80 and [20:15-20:20])
or ([Xtender_SOC] >78 and [20:30])
or ([Xtender_SOC] >75 and [20:40])
or ([Xtender_SOC] >70 and [21:00])
)
)
)
("python2 /usr/local/bin/transfer_off.py")
DOELSEIF (
(
($month >3 and $month <10)
and [Vorhersage:fc1_sun] >50
and (
([Xtender_SOC] >65 and [22:00])
or ([Xtender_SOC] >60 and [23:10])
)
)
)
("python2 /usr/local/bin/transfer_off.py")
DOELSEIF (
(
($month >3 and $month <10)
and [Vorhersage:fc0_sun] >50
and (
([Xtender_SOC] >55 and [00:20])
or ([Xtender_SOC] >50 and [01:30])
or ([Xtender_SOC] >45 and [02:40])
or ([Xtender_SOC] >40 and [03:50])
or ([Xtender_SOC] >35 and [05:00])
)
)
)
("python2 /usr/local/bin/transfer_off.py")
DOELSEIF (
(
($month >9 or $month <4)
and ([Vorhersage:fc1_sun] >90 or ($mday==27))
)
and (
([Xtender_SOC] >95 and [21:06])
or ([Xtender_SOC] >90 and [21:30])
or ([Xtender_SOC] >85 and [22:06])
or ([Xtender_SOC] >80 and [22:30])
or ([Xtender_SOC] >75 and [22:55])
)
)
("python2 /usr/local/bin/transfer_off.py")
DOELSEIF (
(
($month >9 or $month <4)
and ([Vorhersage:fc0_sun] >90 or ($mday==28))
)
and (
([Xtender_SOC] >70 and [00:10])
or ([Xtender_SOC] >65 and [01:10])
or ([Xtender_SOC] >60 and [01:30])
or ([Xtender_SOC] >55 and [02:35])
or ([Xtender_SOC] >50 and [03:55])
or ([Xtender_SOC] >45 and [05:00])
)
)
("python2 /usr/local/bin/transfer_off.py")
DOELSEIF ([05:59]
and (
($month >9 or $month <4)
and ($mday==28)
)
)
("python2 /usr/local/bin/transfer_on.py")
DOELSEIF (
([07:15-08:05] and [Ueberschuss:W] >900)
or ([Xtender_SOC] <10)
or ([08:05])
)
("python2 /usr/local/bin/transfer_on.py")
Man kann aber nicht ganz sagen was passiert hat, bzw. was passieren sollte. Es fehlt den Zustand (cmd_?) vor dem theoretischen Problem, und es fehlt auch Vorhersage:fc1_sun
Grundsätzlich hätte es doch schalten müssen, aber man weiss nicht, ob auf cmd_4 oder cmd_5, dann vielleicht nicht an die Uhrzeit, wo Du es erwartet hast. Und man weiss auch nicht, wie sie Xtender_SOC geändert hat.
Ein "list" des Doifs wenn es sich d.M.n nicht gemacht hat, was du willst, wäre auf jeden Fall hilfreich.
so,. mit do always hat es heute zugeschlagen. verstehe aber trotzdem nicht, warum ereignisse die dazwischen eintreten nicht mehr greifen. andersrum sollte bei gestartetem ereignis danach keine ausführung mehr starten. aber was solls.
[edit]
habe das DI um die abfrage des eigenen states erweitert , xxxx and [DI:state] eq "Netz" and xxxxx , da sollte dann zwar do always greifen, aber wenn schon vorher ein Befehl abging dieser nicht mehr abgeht.
mal sehen obs klappt.
Gesendet mit Tapatalk
also bis jetzt klappts
Gesendet mit Tapatalk