Hallo Leute,
ich brauche mal Ideen...
Ich betreibe eine Bewässerung mit 6 Strängen. Die Pumpe wird über eine Homematic Steckdose geschaltet, die Stränge mit einem 6-Wege Verteiler von Gardena mechanisch per Druck gesteuert. 2 Stränge sollen morgens, die anderen 4 Abends laufen. Das ganze abhängig von der Tagestemperatur und der Regenmenge. Dafür habe ich mir ein DOIF ausgedacht:
([({sunrise("CIVIL")}+3600)] and [?Bewaesserung:state] eq "on" and [Wetter:fc0_rain] <= 5 and [Wetter:fc0_tempMax] >= 20) (set HM_Steckdose_Sw on-for-timer 3600) DOELSEIF ([([myAstro:SunSet]-[7200])] and [?Bewaesserung:state] eq "on" and [Wetter:fc0_rain] <= 5 and [Wetter:fc0_tempMax] >= 20) (set HM_Steckdose_Sw on-for-timer 3600) DOELSEIF ([({sunrise("CIVIL")}+3600)] and [?Bewaesserung:state] eq "on" and [Wetter:fc0_rain] <= 5 and [Wetter:fc0_tempMax] >= 15 and [Wetter:fc0_tempMax] < 20) (set HM_Steckdose_Sw on-for-timer 1800) DOELSEIF ([([myAstro:SunSet]-[7200])] and [?Bewaesserung:state] eq "on" and [Wetter:fc0_rain] <= 5 and [Wetter:fc0_tempMax] >= 15 and [Wetter:fc0_tempMax] < 20) (set HM_Steckdose_Sw on-for-timer 1800)
do always
repeatcmd 3660:3660:1860:1860
repeatsame 2:4:2:4
wait 60:60:60:60
Bewaesserung ist ein dummy um die Steuerung dauerhaft abzuschalten. Das Problem ist nun, dass, wenn die morgendliche oder abendliche Bewässerung z.B. wegen Regen ausfällt, die ganze Steuerung durcheinander ist. Der mechanische Schalter bekommt davon ja nichts mit. Beispiel: der Druckschalter steht auf Strang 1, die morgendliche Bewässerung findet nicht statt. Die abendlich Bewässerung erwartet das Wasser aber auf Strang 3. Heißt, ich müsste dafür sorgen dass der Schalter um 2 Positionen vorgerückt wird (die Pumpe müsste für eine Zeit x trotzdem eingeschaltet werden) oder aber die abendliche ebenfalls nicht durchgeführt wird.
Jetzt fehlen mir die Ideen wie ich das umsetzen könnte :(
Wenn jemand eine Idee hat, her damit!
Danke & Gruß
Arthur
So einen 6-Wege-Verteiler hatte ich auch mal. Wahrscheinlich aber eine Vorgängerversion, die immer einmal die 6 Positionen nacheinander im Kreis ansteuert. Ich hatte gelegentlich das Problem, dass der Verteiler nicht eine Position weiter geschalten hat. Habe mir dann 6 möglichst identische Bereiche eingerichtet, wobei ein etwa doppelt so großer Bereich zweimal angesteuert wurde. Schlussendlich bin ich jetzt aber dabei, das ganze durch mehrere einzelne Ventile zu ersetzen.
Kannst Du für den Fall, dass beispielsweise morgens wegen Regen keine Bewässerung stattfindet so programmieren, dass trotzdem beispielsweise eine Minute gewässert wird? So wurde es seinerzeit von meinem Gardena-Bewässerungscomputer gehandhabt.
Zitat von: duke-f am 19 Mai 2020, 21:51:47
So einen 6-Wege-Verteiler hatte ich auch mal. Wahrscheinlich aber eine Vorgängerversion, die immer einmal die 6 Positionen nacheinander im Kreis ansteuert. Ich hatte gelegentlich das Problem, dass der Verteiler nicht eine Position weiter geschalten hat.
Es ist der Vorgänger des derzeit aktuellem, also das rund Ding. Der funktioniert eigentlich ganz zuverlässig.
Die Version mit einzelnen Ventilen wäre natürlich die Beste, geht aber nicht weil Funk nicht in Frage kommt und ich keine Kabel vergraben will.
Zitat von: duke-f am 19 Mai 2020, 21:51:47
Kannst Du für den Fall, dass beispielsweise morgens wegen Regen keine Bewässerung stattfindet so programmieren, dass trotzdem beispielsweise eine Minute gewässert wird? So wurde es seinerzeit von meinem Gardena-Bewässerungscomputer gehandhabt.
Die Idee hatte ich ja auch schon. Nur, wie in das DOIF integrieren?
In der sachgemäßen Anwendung des DOIF-Moduls stecke ich leider absolut nicht drin, daher kann ich Dir nicht mehr als mit diesem Ansatz dienen. Aber wie wäre es als erster Versuch mit einem zweiten, nahezu identischen DOIF mit eben der umgekehrten Abfrage und entsprechend kurzer Bewässerungsdauer?
Btw: Dann ist das der Verteiler, den auch ich habe/hatte.
ZitatDie Idee hatte ich ja auch schon. Nur, wie in das DOIF integrieren?
([({sunrise("CIVIL")}+3600)] and [?Bewaesserung:state] eq "on")
(IF ([Wetter:fc0_tempMax] >= 20 and [Wetter:fc0_rain] <= 5 and [Wetter:fc0_tempMax] >= 20)
(set HM_Steckdose_Sw on-for-timer 3600)
ELSE
(set HM_Steckdose_Sw on-for-timer 60))
DOELSEIF .... usw...
hmm, IF im DOIF wäre auch ein Ansatz. Ich teste gerade mal eine Aufteilung auf morgens und abends, sprich reiner DOIF Ansatz mit 2 DOIF's und jeweils DOELSE. In der Hoffnung dass repeatcmd, repeatsame und wait auch beim DOELSE ziehen.
Wenn das nicht funktioniert komm ich auf den Vorschlag von amenomade zurück und teste den.
Weitere Vorschläge aber weiterhin willkommen.
Danke & Gruß
Arthur
ZitatIch teste gerade mal eine Aufteilung auf morgens und abends, sprich reiner DOIF Ansatz mit 2 DOIF's und jeweils DOELSE.
Ich verstehe nicht ganz, was Du machen willst. Das DOELSE wird auch nach Sunset greifen
Eigentlich willst Du, dass beim Sunset IMMER gewäessert wird, und nur die Länge abhängig von den anderen Bedingungen ändern. Deswegen den IF Vorschlag. Eine Alternative wäre, ein kalkuliertes wait Attribut fürs Ausschalten.
ZitatIn der Hoffnung dass repeatcmd, repeatsame und wait auch beim DOELSE ziehen.
Ja, die greifen auch
Aber es gibt viele Möglichkeiten. Du könntest auch kurz nach Sunset+3600 testen, ob der Zustand des DOIFs bei cmd_1 liegt, und wenn nicht dann die 60Sekunden Bewässerung starten.
Mann kann auch mit einer Zeitspanne bewässern, und bielibige zusätzliche Bedingungen einbauen.
Oder... einfach zusätzliche DOELSEIF Zweige
ZB folgendes sollte auch funktionieren:
DOIF Sunset and ?fc0rain < 5 and ?fc0temp >20
3600
DOELSIF Sunset and ?fc0rain < 5 and ?fc0temp > 15
1800
DOELSIF Sunset
60
DOELSIF Sunrise and ?fc0rain < 5 and ?fc0temp >20
3600
DOELSIF Sunrise and ?fc0rain < 5 and ?fc0temp > 15
1800
DOELSIF Sunrise
60
Ich hab das jetzt so realisiert:
([({sunrise("CIVIL")}+3600)] and [?Bewaesserung:state] eq "on" and [Wetter:fc0_rain] <= 5 and [Wetter:fc0_tempMax] >= 20) ({Log 3,"Bewässerung Bedingung 1 ausgeführt"}) DOELSEIF ([({sunrise("CIVIL")}+3600)] and [?Bewaesserung:state] eq "on" and [Wetter:fc0_rain] <= 5 and [Wetter:fc0_tempMax] >= 15 and [Wetter:fc0_tempMax] < 20) ({Log 3,"Bewässerung Bedingung 2 ausgeführt"}) DOELSE ({Log 3,"Bewässerung Bedingung 3 ausgeführt"})
do always
repeatcmd 3660:1860:60
repeatsame 2:2:2
wait 60:60:60
Mal sehen was morgen im Log steht
okay, falscher Ansatz :(
Mal sehen was jetzt mit dem IF im DOIF passiert....
ich habe das jetzt über 2 DOIF realisiert:
Internals:
DEF ([({sunrise("CIVIL")}+3600)] and [?Bewaesserung:state] eq "on" and [?Wetter:fc0_rain] <= 5 and [?Wetter:fc0_temp06] >= 15) (set HM_Steckdose_Sw on-for-timer 3600, {Log 3, "Bedingung 1 rain: [Wetter:fc0_rain] Temp: [Wetter:fc0_temp06]"}) DOELSEIF ([({sunrise("CIVIL")}+3600)] and [?Bewaesserung:state] eq "on" and [?Wetter:fc0_rain] <= 3 and [?Wetter:fc0_temp06] > 10 and [?Wetter:fc0_temp06] < 15) (set HM_Steckdose_Sw on-for-timer 1800, {Log 3, "Bedingung 2 rain: [Wetter:fc0_rain] Temp: [Wetter:fc0_temp06]"}) DOELSEIF ([({sunrise("CIVIL")}+3600)] and [?Bewaesserung:state] eq "off") ({Log 3, "Bewässerung:off"}) DOELSE (set HM_Steckdose_Sw on-for-timer 300, {Log 3, "Bedingung 3 rain: [Wetter:fc0_rain] Temp: [Wetter:fc0_temp06]"})
FUUID 5ec7d64b-f33f-7c8d-2773-9d512c820839e870
FVERSION 98_DOIF.pm:0.219790/2020-05-20
MODEL FHEM
NAME Bewaesserung_AM
NOTIFYDEV global
NR 203
NTFY_ORDER 50-Bewaesserung_AM
STATE cmd_2
TYPE DOIF
VERSION 21979 2020-05-20 08:36:23
READINGS:
2020-05-25 05:56:59 cmd 2
2020-05-25 05:56:59 cmd_event timer_2
2020-05-25 05:56:59 cmd_nr 2
2020-05-22 16:21:24 mode enabled
2020-05-25 05:56:59 state cmd_2
2020-05-25 05:25:59 timer_01_c01 26.05.2020 05:24:37
2020-05-25 05:25:59 timer_02_c02 26.05.2020 05:24:37
2020-05-25 05:25:59 timer_03_c03 26.05.2020 05:24:37
2020-05-25 06:27:59 wait_timer no timer
Regex:
accu:
attr:
cmdState:
repeatcmd:
3660
1860
30
360
repeatsame:
2
2
2
2
wait:
0:
60
1:
60
2:
60
3:
60
waitdel:
condition:
0 ::DOIF_time_once($hash,0,$wday) and ::ReadingValDoIf($hash,'Bewaesserung','state') eq "on" and ::ReadingValDoIf($hash,'Wetter','fc0_rain') <= 5 and ::ReadingValDoIf($hash,'Wetter','fc0_temp06') >= 15
1 ::DOIF_time_once($hash,1,$wday) and ::ReadingValDoIf($hash,'Bewaesserung','state') eq "on" and ::ReadingValDoIf($hash,'Wetter','fc0_rain') <= 3 and ::ReadingValDoIf($hash,'Wetter','fc0_temp06') > 10 and ::ReadingValDoIf($hash,'Wetter','fc0_temp06') < 15
2 ::DOIF_time_once($hash,2,$wday) and ::ReadingValDoIf($hash,'Bewaesserung','state') eq "off"
days:
do:
0:
0 set HM_Steckdose_Sw on-for-timer 3600, {Log 3, "Bedingung 1 rain: [Wetter:fc0_rain] Temp: [Wetter:fc0_temp06]"}
1:
0 set HM_Steckdose_Sw on-for-timer 1800, {Log 3, "Bedingung 2 rain: [Wetter:fc0_rain] Temp: [Wetter:fc0_temp06]"}
2:
0 {Log 3, "Bewässerung:off"}
3:
0 set HM_Steckdose_Sw on-for-timer 300, {Log 3, "Bedingung 3 rain: [Wetter:fc0_rain] Temp: [Wetter:fc0_temp06]"}
helper:
DEVFILTER ^global$
NOTIFYDEV global
event timer_2
globalinit 1
last_timer 3
sleepdevice timer_2
sleepsubtimer -1
sleeptimer -1
timerdev
timerevent timer_2
triggerDev
timerevents:
timer_2
timereventsState:
timer_2
triggerEvents:
timer_2
triggerEventsState:
timer_2
interval:
intervalfunc:
localtime:
0 1590463477
1 1590463477
2 1590463477
perlblock:
realtime:
0 05:24:37
1 05:24:37
2 05:24:37
time:
0 ({sunrise("CIVIL")}+3600)
1 ({sunrise("CIVIL")}+3600)
2 ({sunrise("CIVIL")}+3600)
timeCond:
0 0
1 1
2 2
timer:
0 0
1 0
2 0
timers:
0 0
1 1
2 2
triggertime:
1590463477:
localtime 1590463477
hash:
uiState:
uiTable:
Attributes:
do always
repeatcmd 3660:1860:30:360
repeatsame 2:2:2:2
wait 60:60:60:60
Internals:
DEF ([([myAstro:SunSet]-[7200])] and [?Bewaesserung:state] eq "on" and [?Wetter:fc0_rain] <= 5 and [?Wetter:fc0_tempMax] >= 15) (set HM_Steckdose_Sw on-for-timer 3600, {Log 3, "Bedingung 1 rain: [Wetter:fc0_rain] Temp: [Wetter:fc0_tempMax]"}) DOELSEIF ([([myAstro:SunSet]-[7200])] and [?Bewaesserung:state] eq "on" and [?Wetter:fc0_rain] <= 3 and [?Wetter:fc0_tempMax] > 10 and [?Wetter:fc0_tempMax] < 15) (set HM_Steckdose_Sw on-for-timer 1800, {Log 3, "Bedingung 2 rain: [Wetter:fc0_rain] Temp: [Wetter:fc0_tempMax]"}) DOELSEIF ([([myAstro:SunSet]-[7200])] and [?Bewaesserung:state] eq "off") ({Log 3, "Bewässerung:off"}) DOELSE (set HM_Steckdose_Sw on-for-timer 300, {Log 3, "Bedingung 3 rain: [Wetter:fc0_rain] Temp: [Wetter:fc0_tempMax]"})
FUUID 5ec7e09a-f33f-7c8d-7279-c436574beff0f830
FVERSION 98_DOIF.pm:0.219790/2020-05-20
MODEL FHEM
NAME Bewaesserung_PM
NOTIFYDEV myAstro,global
NR 204
NTFY_ORDER 50-Bewaesserung_PM
STATE cmd_1
TYPE DOIF
VERSION 21979 2020-05-20 08:36:23
READINGS:
2020-05-24 22:26:00 cmd 1
2020-05-24 22:26:00 cmd_event timer_1
2020-05-24 22:26:00 cmd_nr 1
2020-05-22 16:28:38 mode enabled
2020-05-24 22:26:00 state cmd_1
2020-05-25 01:30:16 timer_01_c01 25.05.2020 19:24:00
2020-05-25 01:30:16 timer_02_c02 25.05.2020 19:24:00
2020-05-25 01:30:16 timer_03_c03 25.05.2020 19:24:00
Regex:
accu:
itimer:
myAstro:
itimer:
SunSet ^myAstro$:^SunSet:
attr:
repeatcmd:
3660
1860
30
360
repeatsame:
4
4
4
4
wait:
0:
60
1:
60
2:
60
3:
60
condition:
0 ::DOIF_time_once($hash,0,$wday) and ::ReadingValDoIf($hash,'Bewaesserung','state') eq "on" and ::ReadingValDoIf($hash,'Wetter','fc0_rain') <= 5 and ::ReadingValDoIf($hash,'Wetter','fc0_tempMax') >= 15
1 ::DOIF_time_once($hash,1,$wday) and ::ReadingValDoIf($hash,'Bewaesserung','state') eq "on" and ::ReadingValDoIf($hash,'Wetter','fc0_rain') <= 3 and ::ReadingValDoIf($hash,'Wetter','fc0_tempMax') > 10 and ::ReadingValDoIf($hash,'Wetter','fc0_tempMax') < 15
2 ::DOIF_time_once($hash,2,$wday) and ::ReadingValDoIf($hash,'Bewaesserung','state') eq "off"
days:
do:
0:
0 set HM_Steckdose_Sw on-for-timer 3600, {Log 3, "Bedingung 1 rain: [Wetter:fc0_rain] Temp: [Wetter:fc0_tempMax]"}
1:
0 set HM_Steckdose_Sw on-for-timer 1800, {Log 3, "Bedingung 2 rain: [Wetter:fc0_rain] Temp: [Wetter:fc0_tempMax]"}
2:
0 {Log 3, "Bewässerung:off"}
3:
0 set HM_Steckdose_Sw on-for-timer 300, {Log 3, "Bedingung 3 rain: [Wetter:fc0_rain] Temp: [Wetter:fc0_tempMax]"}
helper:
DEVFILTER ^global$|^myAstro$
NOTIFYDEV global|myAstro
globalinit 1
last_timer 3
sleeptimer -1
intervalfunc:
localtime:
0 1590427440
1 1590427440
2 1590427440
perlblock:
realtime:
0 19:24:00
1 19:24:00
2 19:24:00
time:
0 ([myAstro:SunSet]-[7200])
1 ([myAstro:SunSet]-[7200])
2 ([myAstro:SunSet]-[7200])
timeCond:
0 0
1 1
2 2
timer:
0 0
1 0
2 0
timers:
0 0
1 1
2 2
triggertime:
1590427440:
localtime 1590427440
hash:
uiTable:
Attributes:
do always
repeatcmd 3660:1860:30:360
repeatsame 4:4:4:4
wait 60:60:60:60
funktioniert seit 2 Tagen ohne Probleme :)
Hmmmm - wo liegt jetzt der Unterschied? Willst Du nicht mal einfach nur die beiden DOIFs ohne gen ganzen Schnick-Schnack drum herum posten?
Schau mal in mein Wiki zu meiner Bewässerungssteuerung. Dort habe ich das DOIF genau beschrieben. Ich denke da kanst du dir einigen abschauen und eventuell übernehmen.
https://github.com/tobiasfaust/ESP8266_PumpControl/wiki/Integration-FHEM
Wenn du die von dir beschriebene Logik haben willst, ist dein Gardena 6 Wege VErteiler nicht gut geeignet. Da muss immer alles durchlaufen, ansonsten komm alles durcheinander. Ich hatte diesen am Anfang auch - aber bald wieder rausgeworfen, kenn ihn also ;)
Als Anregung, schau mal mein Wiki durch - meine PumpControl Lösung kann ich dir für dein Fall nur empfehlen
Zitat von: duke-f am 03 Juni 2020, 20:15:26
Hmmmm - wo liegt jetzt der Unterschied? Willst Du nicht mal einfach nur die beiden DOIFs ohne gen ganzen Schnick-Schnack drum herum posten?
steht doch in den jeweiligen DEF's
Zitat von: Tobias am 03 Juni 2020, 20:45:34
Schau mal in mein Wiki zu meiner Bewässerungssteuerung. Dort habe ich das DOIF genau beschrieben. Ich denke da kanst du dir einigen abschauen und eventuell übernehmen.
https://github.com/tobiasfaust/ESP8266_PumpControl/wiki/Integration-FHEM
Wenn du die von dir beschriebene Logik haben willst, ist dein Gardena 6 Wege VErteiler nicht gut geeignet. Da muss immer alles durchlaufen, ansonsten komm alles durcheinander. Ich hatte diesen am Anfang auch - aber bald wieder rausgeworfen, kenn ihn also ;)
Als Anregung, schau mal mein Wiki durch - meine PumpControl Lösung kann ich dir für dein Fall nur empfehlen
Ich weiß, die Lösung mit dem Verteiler ist eher suboptimal, aber die Verhältnisse geben nichts anderes her (siehe weiter oben). Ich hab jetzt noch mal die Pausen zwischen den Schaltvorgängen verlängert, seit dem kommt es auch nicht mehr zu Doppelbewässerungen. Ich bin mit der Lösung jetzt erst mal vollauf zufrieden :)
Danke für eure Tips!
Arthur
Nett. Über solche Post ärgere ich ich schon mal bei meinen eigenen Fragen. Aber bei Interesse hinsichtlich der Umsetzung nach einiger Beteiligung an der Diskussion ist mir jetzt eine Antwort à la "such' selber" doch eher unerwartet.
Zitat von: duke-f am 04 Juni 2020, 14:11:42
Nett. Über solche Post ärgere ich ich schon mal bei meinen eigenen Fragen. Aber bei Interesse hinsichtlich der Umsetzung nach einiger Beteiligung an der Diskussion ist mir jetzt eine Antwort à la "such' selber" doch eher unerwartet.
so schwer kann es doch nicht sein...
([({sunrise("CIVIL")}+3600)] and [?Bewaesserung:state] eq "on" and [?Wetter:fc0_rain] <= 5 and [?Wetter:fc0_temp06] >= 15) (set HM_Steckdose_Sw on-for-timer 3600, {Log 3, "Bedingung 1 rain: [Wetter:fc0_rain] Temp: [Wetter:fc0_temp06]"}) DOELSEIF ([({sunrise("CIVIL")}+3600)] and [?Bewaesserung:state] eq "on" and [?Wetter:fc0_rain] <= 3 and [?Wetter:fc0_temp06] > 10 and [?Wetter:fc0_temp06] < 15) (set HM_Steckdose_Sw on-for-timer 1800, {Log 3, "Bedingung 2 rain: [Wetter:fc0_rain] Temp: [Wetter:fc0_temp06]"}) DOELSEIF ([({sunrise("CIVIL")}+3600)] and [?Bewaesserung:state] eq "off") ({Log 3, "Bewässerung:off"}) DOELSE (set HM_Steckdose_Sw on-for-timer 300, {Log 3, "Bedingung 3 rain: [Wetter:fc0_rain] Temp: [Wetter:fc0_temp06]"})
([([myAstro:SunSet]-[7200])] and [?Bewaesserung:state] eq "on" and [?Wetter:fc0_rain] <= 5 and [?Wetter:fc0_tempMax] >= 15) (set HM_Steckdose_Sw on-for-timer 3600, {Log 3, "Bedingung 1 rain: [Wetter:fc0_rain] Temp: [Wetter:fc0_tempMax]"}) DOELSEIF ([([myAstro:SunSet]-[7200])] and [?Bewaesserung:state] eq "on" and [?Wetter:fc0_rain] <= 3 and [?Wetter:fc0_tempMax] > 10 and [?Wetter:fc0_tempMax] < 15) (set HM_Steckdose_Sw on-for-timer 1800, {Log 3, "Bedingung 2 rain: [Wetter:fc0_rain] Temp: [Wetter:fc0_tempMax]"}) DOELSEIF ([([myAstro:SunSet]-[7200])] and [?Bewaesserung:state] eq "off") ({Log 3, "Bewässerung:off"}) DOELSE (set HM_Steckdose_Sw on-for-timer 300, {Log 3, "Bedingung 3 rain: [Wetter:fc0_rain] Temp: [Wetter:fc0_tempMax]"}
jetzt besser?
Ich hätte mir halt zumindest sowas gewünscht, als Minimalversion:
([({sunrise("CIVIL")}+3600)] and [?Bewaesserung:state] eq "on" and [?Wetter:fc0_rain] <= 5 and [?Wetter:fc0_temp06] >= 15)
(set HM_Steckdose_Sw on-for-timer 3600, {Log 3, "Bedingung 1 rain: [Wetter:fc0_rain] Temp: [Wetter:fc0_temp06]"})
DOELSEIF ([({sunrise("CIVIL")}+3600)] and [?Bewaesserung:state] eq "on" and [?Wetter:fc0_rain] <= 3 and [?Wetter:fc0_temp06] > 10 and [?Wetter:fc0_temp06] < 15)
(set HM_Steckdose_Sw on-for-timer 1800, {Log 3, "Bedingung 2 rain: [Wetter:fc0_rain] Temp: [Wetter:fc0_temp06]"})
DOELSEIF ([({sunrise("CIVIL")}+3600)] and [?Bewaesserung:state] eq "off")
({Log 3, "Bewässerung:off"})
DOELSE (set HM_Steckdose_Sw on-for-timer 300, {Log 3, "Bedingung 3 rain: [Wetter:fc0_rain] Temp: [Wetter:fc0_temp06]"})
([([myAstro:SunSet]-[7200])] and [?Bewaesserung:state] eq "on" and [?Wetter:fc0_rain] <= 5 and [?Wetter:fc0_tempMax] >= 15)
(set HM_Steckdose_Sw on-for-timer 3600, {Log 3, "Bedingung 1 rain: [Wetter:fc0_rain] Temp: [Wetter:fc0_tempMax]"})
DOELSEIF ([([myAstro:SunSet]-[7200])] and [?Bewaesserung:state] eq "on" and [?Wetter:fc0_rain] <= 3 and [?Wetter:fc0_tempMax] > 10 and [?Wetter:fc0_tempMax] < 15)
(set HM_Steckdose_Sw on-for-timer 1800, {Log 3, "Bedingung 2 rain: [Wetter:fc0_rain] Temp: [Wetter:fc0_tempMax]"})
DOELSEIF ([([myAstro:SunSet]-[7200])] and [?Bewaesserung:state] eq "off")
({Log 3, "Bewässerung:off"})
DOELSE (set HM_Steckdose_Sw on-for-timer 300, {Log 3, "Bedingung 3 rain: [Wetter:fc0_rain] Temp: [Wetter:fc0_tempMax]"}
Dann noch die Kennzeichnung der tatsächlichen wesentlichen Unterschiede und eventuell sogar unwichtiges herausgelassen.
Aber ist auch nicht wirklich wichtig, ich hätte es zwar anders versucht, aber wenn es so funktioniert erfüllt es wohl seinen Zweck und es ist auch gut so.
Zitat von: arthur_dent_2015 am 04 Juni 2020, 13:45:54
Ich weiß, die Lösung mit dem Verteiler ist eher suboptimal, aber die Verhältnisse geben nichts anderes her (siehe weiter oben). Ich hab jetzt noch mal die Pausen zwischen den Schaltvorgängen verlängert, seit dem kommt es auch nicht mehr zu Doppelbewässerungen. Ich bin mit der Lösung jetzt erst mal vollauf zufrieden :)
Ich hatte damals auch die Pausen deutlich verlängert, bei einer Pause von mindestens 30min ging es dann. Ich hatte aber auch immer nur den Mindestdruck, 1-2bar.
Ich hatte meinen eigentlich über Jahre im Einsatz, allerdings auch unter Leitungsdruck. Die Mindestpausen hatte ich auch so wie Du auf in etwa 30 Minuten gestellt. Und eben die Programmierung so vorgenommen, dass die 6 Teilzyklen immer gleich sind. Das Teil hat eben den Charme (vielleicht in diesem Forum an der falschen Stelle ;)), ohne Stromversorgung zu laufen.
EDIT: Pausen zwischen den 6 Stufen sind natürlich gemeint. Der Druck muss sich durch Undichtigkeiten erst abbauen können.
Bei mir reichen 150 Sekunden. Ich werde das aber weiter beobachten.
Da würde ich wirklich deutlich mehr ansetzen. Im Normalfall war das bei mir auch genug, aber je nach dem, was angeschlossen ist, kann sich der Druck schon mal recht langsam abbauen. Weiter ist die Frage, wie es mit Kalk und Verunreinigungen im Gießwasser aussieht. Ich hatte meinen alle Jahre, spätestens vor er wieder in Betrieb kam.
wie gesagt, seit über eine Woche problemlos. Das Brunnenwasser ist sauber und kaum Kalkhaltig.