Kann mir jemand sagen warum mein DOIF nicht auslöst❓( [8:00-21:30] and [T_Pool:temperature] < 25 and ([T_Solar:temperature]-[T_Pool:temperature]) > 20 ) (set SolarPumpe on-for-timer 360)
DOELSEIF ( [8:00-21:30] and [T_Solar:temperature] > 50 ) (set SolarPumpe on-for-timer 180)
DOELSEIF ( [8:00-21:30] and [T_Pool:temperature] < 25 and ([T_Pool:temperature] > [T_Aussen:temperature]) and ([T_Solar:temperature]-[T_Pool:temperature]) > 10 ) (set SolarPumpe on-for-timer 360)
DOELSEIF ( [22:00-7:30] and [T_Pool:temperature] > 25 and ([T_Pool:temperature]-[T_Solar:temperature]) > 3 ) (set SolarPumpe on-for-timer 360)
das wird dir niemand beantworten können ohne die readings zu kennen.
Die Reading Ergebnisse stehen doch im Bild oder brauche ich andere Infos ?
Es muss ja ausgelöst haben, sonst stände es nicht im cmd 1, sondern im cmd 0.
Ja einmalig und dann nicht mehr obwohl ja wie zusehen die Bedingungen erfüllt währen.
Hier noch die Einträge aus dem DOIF Tool
Für mehrmals den selben Status musst du do always (https://fhem.de/commandref_DE.html#DOIF_do_always) aktivieren.
Da hat mich mein Browser veräppelt. das Bild war vorhin nicht da. Sorry.
welche Attribute sind denn gesetzt? mach am besten mal ein "list"
um 12:44 hätte er auf CMD_2 gehen müssen. T_Solar war über 50 Grad.
Zitat von: Frank_Huber am 19 Juli 2017, 15:06:31um 12:44 hätte er auf CMD_2 gehen müssen. T_Solar war über 50 Grad.
Wird aber trotzdem von Fall1 abgefangen.
Zitat von: Per am 19 Juli 2017, 15:20:13
Wird aber trotzdem von Fall1 abgefangen.
Wo Du Recht hast hast Du Recht! somit bleibt er innerhalb CMD_1 und löst nicht erneut aus. (abhängig von den Attributen)
Zitat von: Per am 19 Juli 2017, 15:02:42
Für mehrmals den selben Status musst du do always (https://fhem.de/commandref_DE.html#DOIF_do_always) aktivieren.
dann sollte es so siehe Bild gleich laufen❓
War es nicht so, dass das DOIF immer von links nach rechts auswertet, also: Solange ein weiter links/oben stehender Zweig wahr ist, wird nichts anderes ausgeführt?
Ist so.
sollte es den dann so richtig sein? oder wo ist noch was falsch oder mus ich verändern?
define T_Difpool DOIF ( [8:00-21:30] and [T_Pool:temperature] < 25 and ([T_Solar:temperature]-[T_Pool:temperature]) > 24 ) (set SolarPumpe on-for-timer 360) \
\
DOELSEIF ( [8:00-21:30] and [T_Solar:temperature] > 50 ) (set SolarPumpe on-for-timer 180) \
\
DOELSEIF ( [8:00-21:30] and [T_Pool:temperature] < 25 and ([T_Pool:temperature] > [T_Aussen:temperature]) and ([T_Solar:temperature]-[T_Pool:temperature]) > 10 ) (set SolarPumpe on-for-timer 360)\
\
DOELSEIF ( [22:00-7:30] and [T_Pool:temperature] > 25 and ([T_Pool:temperature]-[T_Solar:temperature]) > 3 ) (set SolarPumpe on-for-timer 360)\
attr T_Difpool do always
attr T_Difpool group Schaltung
attr T_Difpool icon icoTempWasser
attr T_Difpool room Pool
attr T_Difpool state {([T_Solar:temperature]-[T_Pool:temperature])}
attr T_Difpool stateFormat {sprintf "%.1f °C", ReadingsVal($name, "state", 0)}
das ganze sollte eigentlich nur berücksichtigt werden wen die Poolpumpe off ist kann ich das einfach an erster stelle stellen und den rest mit DOELSEIF?
Problem ist doch dass der erste Zweig immer aktiv ist.
Warum nicht die Zweige vernünftig trennen?
einfach im ersten Zweig ein
and [T_Solar:temperature] <= 50
einfügen.
Zitat von: Frank_Huber am 19 Juli 2017, 16:39:00
Problem ist doch dass der erste Zweig immer aktiv ist.
Warum nicht die Zweige vernünftig trennen?
einfach im ersten Zweig ein
and [T_Solar:temperature] <= 50
einfügen.
weil der zweite teil nur ausgeführt werden soll wen die pooltemperatur größe 24 Crad ist ( spühlen der solaranlage damit das wasser darin nicht ewig steht.
ich denke die werden nacheinander abgefragt ob eins zutrifft. alsom wen zweig 1 nicht passt dan schauen ob alle bedingungen von zweig2 erfüllt wen das nicht dann.......
Zitat von: B4unty am 19 Juli 2017, 16:45:17
weil der zweite teil nur ausgeführt werden soll wen die pooltemperatur größe 24 Crad ist
ich denke die werden nacheinander abgefragt ob eins zutrifft. alsom wen zweig 1 nicht passt dan schauen ob alle bedingungen von zweig2 erfüllt wen das nicht dann.......
ähm, die Bedingung hast im zweiten Zweig aber nicht drin...
Wenn die Zweige jeweils eindeutig sind wird es sauber funktionieren.
Wenn Zweig 1 und 2 zutreffen wird immer nur Zweig 1 ausgeführt.
ja weil dann der erste zweig ja nicht zutrifft somit, dann ja geprüft werden soll ob bedingungen des Zweitzen erfüllt ist.
Teoretisch kann ja zweig 2 nur zutreffen wen der pool mit über 25 Crad gemessen wird.
bei do always wird jeder zweig geprüft.
dem zweiten Zweig ist es völlig egal wie warm der Pool ist.
Bei Solar über 50 wird ausgelöst.
Müsste aber den nicht vorher zweig 1 geprüft werden?
ichdachtw wird von oben nach unten überprüft