FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: MisterBeats am 27 Februar 2019, 20:35:53

Titel: DOIF mit Zeitangabe funktioniert nicht
Beitrag von: MisterBeats am 27 Februar 2019, 20:35:53
Hallo zusammen,

irgendwie steh ich bei einer DOIF Abfrage auf dem Schlauch.

Ich möchte gerne unsere Umwälzpumpe automatisch abschalten lassen, wenn eine bestimmte Außentemperatur erreicht wird. Aber nur wenn dies auch den Zeitraum fällt wenn Sie sowieso an ist.

Kurz gesagt:

Pumpe geht um 4:00 bis 12:00 an, geht dann für eine Stunde aus und um 13:00-20:00 wieder an. Ab 20:00 Uhr ist diese ausgeschaltet.
Wenn jedoch nun in den Zeitraum die Außentemperatur auf >= 15 Grad steigt, dann soll sie ausgeschaltet werden. Wenn Sie wieder sinkt, soll Sie wieder
eingeschaltet werden. in der Zeit von 12:00-13:00 und 20:00-04:00 soll dies aber ignoriert werden.

Ich hatte schon mehrere Versuche gestartet, aber die Pumpe lässt sich nicht ausschalten :(

Mein aktueller Code:
define doif_heizung_aus DOIF ([04:00-12:00] or [13:00-20:00] and ([DR_EF_TT01:temperature] >= 15)) (set HZ_Heizung_Pumpe off) DOELSE (set HZ_Heizung_Pumpe on)

Die Pumpe wird so automatisch abgeschaltet wenn die Temperatur über 15 Grad steigt und wieder an wenn Sie unter 15 Grad sinkt. Alles super, aber leider auch in der Zeit wo die Pumpe eh ausgeschaltet ist, d.h. die Pumpe geht auch nach 20 Uhr an wenn die Außentemperatur weniger als 15 Grad ist.

Ich hoffe, ich habe es Verständlich ausgedrückt. Vielleicht habt ihr einen Rat für mich.


Titel: Antw:DOIF mit Zeitangabe funktioniert nicht
Beitrag von: Otto123 am 27 Februar 2019, 20:54:41
Hi,

((Zeit1 or Zeit2) and Temp > 15)

ergo Klammer falsch gesetzt. ;)

Gruß Otto
Titel: Antw:DOIF mit Zeitangabe funktioniert nicht
Beitrag von: MisterBeats am 27 Februar 2019, 21:12:39
Hi,

das hat leider auch nicht geholfen:

(([04:00-12:00] or [13:00-20:00]) and [DR_EF_TT01:temperature] >= 15) (set HZ_Heizung_Pumpe off) DOELSE (set HZ_Heizung_Pumpe on)

Die Pumpe geht dennoch an, obwohl diese eigentlich nach 20 Uhr ausbleiben soll.
Titel: Antw:DOIF mit Zeitangabe funktioniert nicht
Beitrag von: Otto123 am 27 Februar 2019, 21:21:49
Naja Moment mal, hast Du ja genau so gemacht! Die Pumpe geht an wenn die Bedingung nicht stimmt!  :-X

Dann musst Du Deine Bedingung umdrehen? Ich habe wahrscheinlich Deine Textaufgabe nicht verstanden. Ich bin ziemlich sicher, normalerweise muss man die "or" klammern wenn man and dazu nimmt.

Aus meiner Sicht hast Du einfach on und off vertauscht.  ::)

Oder soll es so sein: Wenn Zeitraum1 oder Zeitraum2 oder Temp < 15 dann Pumpe an ansonsten Pumpe aus.
Titel: Antw:DOIF mit Zeitangabe funktioniert nicht
Beitrag von: MisterBeats am 27 Februar 2019, 21:34:50
Leider klappt es auch nicht wenn ich On/Off tausche

(([04:00-12:00] or [13:00-22:00]) and [DR_EF_TT01:temperature] >= 15) (set HZ_Heizung_Pumpe on) DOELSE (set HZ_Heizung_Pumpe off)

habe jetzt testweise mal den Zeitraum bis 22 Uhr erweitert, das heißt die Pumpe müsste angehen. Die Außentemperatur liegt unter 10 Grad, aber die Pumpe bleibt nun off


Idee/Aufgabe:

Wenn im Zeitraum1 oder Zeitraum2  die Temp > 15, dann Pumpe aus. Sonst Pumpe an, außer außerhalb von Zeitraum1 und Zeitraum2
Titel: Antw:DOIF mit Zeitangabe funktioniert nicht
Beitrag von: rabehd am 27 Februar 2019, 21:39:32
Da steht doch: on, wenn Temperatur größer gleich 15!
Titel: Antw:DOIF mit Zeitangabe funktioniert nicht
Beitrag von: MisterBeats am 27 Februar 2019, 21:42:25
Mein eigentlicher Code lauet:

(([04:00-12:00] or [13:00-20:00]) and [DR_EF_TT01:temperature] >= 15) (set HZ_Heizung_Pumpe off) DOELSE (set HZ_Heizung_Pumpe on)

Es wurde nur testweise einmal das on/off getauscht, dies hat aber nicht geholfen

ZitatOder soll es so sein: Wenn Zeitraum1 oder Zeitraum2 oder Temp < 15 dann Pumpe an ansonsten Pumpe aus.

Wenn Zeitraum1 oder Zeitraum2 und Temp >=15 dann Pumpe aus, ansonsten Pumpe an außer außerhalb von Zeitraum1 oder Zeitraum2
Titel: Antw:DOIF mit Zeitangabe funktioniert nicht
Beitrag von: Otto123 am 27 Februar 2019, 21:43:55
Ich versuche es nochmal
Wenn im Zeitraum die Temp < 15 ist dann Pumpe an ansonsten aus. Ist doch das gleiche wie Du sagst oder steh ich aufm Schlauch?

Ansonsten schreib ne Logiktabelle auf. 3 Bedingungen und Schaltzustand.
Titel: Antw:DOIF mit Zeitangabe funktioniert nicht
Beitrag von: MisterBeats am 27 Februar 2019, 21:44:46
Genau so.
Und außerhalb des Zeitraums die Pumpe immer aus
Titel: Antw:DOIF mit Zeitangabe funktioniert nicht
Beitrag von: Otto123 am 27 Februar 2019, 21:47:49
Zitat von: MisterBeats am 27 Februar 2019, 21:44:46
Genau so.
Und außerhalb des Zeitraums die Pumpe immer aus
Das Letzte ist doch nur verwirrend!
So ist es: Wenn im Zeitraum die Temp < 15 ist dann Pumpe an ansonsten aus.
(([04:00-12:00] or [13:00-22:00]) and [DR_EF_TT01:temperature] < 15) (set HZ_Heizung_Pumpe on) DOELSE (set HZ_Heizung_Pumpe off)
Titel: Antw:DOIF mit Zeitangabe funktioniert nicht
Beitrag von: MisterBeats am 27 Februar 2019, 22:01:29
Also irgendwie habe ich bei der ganzen Sache in die verkehrte Richtung gedacht  ;D

nun scheint es mit dem Code zu funktionieren

(([04:00-12:00] or [13:00-22:00]) and [DR_EF_TT01:temperature] < 15) (set HZ_Heizung_Pumpe on) DOELSE (set HZ_Heizung_Pumpe off)

Danke an Otto123

Werde es morgen mal im Laufe des Tages beobachten, ob es klappt.
Titel: Antw:DOIF mit Zeitangabe funktioniert nicht
Beitrag von: Otto123 am 27 Februar 2019, 22:12:07
 ;D Manchmal fängt man verkehrtherum an und kommt nicht mehr raus. Einem Anderen erklären hilft meist  ;D
Du hattest eine Zusatzbedingung im Kopf, die redundant war.

Gruß Otto