FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: B4unty am 19 Juli 2017, 14:31:59

Titel: DOIF löst nicht aus
Beitrag von: B4unty am 19 Juli 2017, 14:31:59
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)
Titel: Antw:DOIF löst nicht aus
Beitrag von: Frank_Huber am 19 Juli 2017, 14:34:34
das wird dir niemand beantworten können ohne die readings zu kennen.
Titel: Antw:DOIF löst nicht aus
Beitrag von: B4unty am 19 Juli 2017, 14:39:00
Die Reading Ergebnisse stehen doch im Bild oder brauche ich andere Infos ?
Titel: Antw:DOIF löst nicht aus
Beitrag von: Per am 19 Juli 2017, 14:43:11
Es muss ja ausgelöst haben, sonst stände es nicht im cmd 1, sondern im cmd 0.
Titel: Antw:DOIF löst nicht aus
Beitrag von: B4unty am 19 Juli 2017, 14:44:34
Ja einmalig und dann nicht mehr obwohl ja wie zusehen die Bedingungen erfüllt währen.
Titel: Antw:DOIF löst nicht aus
Beitrag von: B4unty am 19 Juli 2017, 15:00:53
Hier noch die Einträge aus dem DOIF Tool
Titel: Antw:DOIF löst nicht aus
Beitrag 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.
Titel: Antw:DOIF löst nicht aus
Beitrag von: Frank_Huber am 19 Juli 2017, 15:06:31
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.
Titel: Antw:DOIF löst nicht aus
Beitrag von: Per am 19 Juli 2017, 15:20:13
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.
Titel: Antw:DOIF löst nicht aus
Beitrag von: Frank_Huber am 19 Juli 2017, 15:24:19
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)
Titel: Antw:DOIF löst nicht aus
Beitrag von: B4unty am 19 Juli 2017, 15:28:10
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❓
Titel: Antw:DOIF löst nicht aus
Beitrag von: Beta-User am 19 Juli 2017, 15:37:40
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?
Titel: Antw:DOIF löst nicht aus
Beitrag von: CoolTux am 19 Juli 2017, 15:47:32
Ist so.
Titel: Antw:DOIF löst nicht aus
Beitrag von: B4unty am 19 Juli 2017, 16:16:05
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?
Titel: Antw:DOIF löst nicht aus
Beitrag 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.
Titel: Antw:DOIF löst nicht aus
Beitrag von: B4unty am 19 Juli 2017, 16:45:17
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.......
Titel: Antw:DOIF löst nicht aus
Beitrag von: Frank_Huber am 19 Juli 2017, 17:21:41
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.
Titel: Antw:DOIF löst nicht aus
Beitrag von: B4unty am 19 Juli 2017, 17:27:12
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.
Titel: Antw:DOIF löst nicht aus
Beitrag von: Frank_Huber am 19 Juli 2017, 17:30:57
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.
Titel: Antw:DOIF löst nicht aus
Beitrag von: B4unty am 19 Juli 2017, 17:33:03
Müsste aber den nicht vorher zweig 1 geprüft werden?
ichdachtw wird von oben nach unten überprüft