DOIF mit Zeitangabe funktioniert nicht

Begonnen von MisterBeats, 27 Februar 2019, 20:35:53

Vorheriges Thema - Nächstes Thema

MisterBeats

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.



Otto123

Hi,

((Zeit1 or Zeit2) and Temp > 15)

ergo Klammer falsch gesetzt. ;)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

MisterBeats

#2
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.

Otto123

#3
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.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

MisterBeats

#4
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

rabehd

Da steht doch: on, wenn Temperatur größer gleich 15!
Auch funktionierende Lösungen kann man hinterfragen.

MisterBeats

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

Otto123

#7
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.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

MisterBeats

Genau so.
Und außerhalb des Zeitraums die Pumpe immer aus

Otto123

#9
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)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

MisterBeats

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.

Otto123

 ;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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz