Skripterstellung zur Erfassung der Regenmenge
Moderator: Co-Administratoren
Re: Skripterstellung zur Erfassung der Regenmenge
Servus,
ehrlich gesagt weiß ich das heute nicht mehr genau was noch für ein Ablauffehler drin war - ist ja auch schon ein ganzes Jahr her.
Auf jeden Fall läuft die Bewässerung nach wie vor bei mir einwandfrei, funktioniert alles bestens.
ehrlich gesagt weiß ich das heute nicht mehr genau was noch für ein Ablauffehler drin war - ist ja auch schon ein ganzes Jahr her.
Auf jeden Fall läuft die Bewässerung nach wie vor bei mir einwandfrei, funktioniert alles bestens.
Re: Skripterstellung zur Erfassung der Regenmenge
Da ich auch plane, die Beregnung mit der CCU zu automatisieren bin ich auf diese - für mich plausible und in Ihrer Einfachheit auch nachvollziehbare Lösung - gestossen. Die Entwicklung nötigt mir Respekt ab...
@mhowie1: Wäre meine Bitte zu viel verlangt (vielleicht auch im Sinne von mindestens @Automat1248), die finalen Hardcopies und Skripte ohne den letzten Ablauffehler hier noch einmal zu posten? Das wäre großartig und würde mir die diesbezügliche Neuerfindung des Rades ersparen.
Danke vorab!
@mhowie1: Wäre meine Bitte zu viel verlangt (vielleicht auch im Sinne von mindestens @Automat1248), die finalen Hardcopies und Skripte ohne den letzten Ablauffehler hier noch einmal zu posten? Das wäre großartig und würde mir die diesbezügliche Neuerfindung des Rades ersparen.
Danke vorab!
Re: Skripterstellung zur Erfassung der Regenmenge
Servus zusammen,
bitte entschuldigt, dass ich bisher noch nichts gepostet habe. Irgendwie hab ich immer sehr viel zu tun und komme kaum dazu mich dann noch vor den Rechner zu setzen (sitze eh schon arbeitsmäßig den ganzen Tag vor der Kiste - im Homeoffice seit März 2020 - und dann reicht es mir am Ende des Tages dann eigentlich auch immer). Trotzdem habe ich natürlich auch schon von Tipps und Vorlagen aus diesem Forum profitiert weshalb ich auch gerne mal etwas zurückgebe.
Zu aller erst sei gesagt, dass ich keinesfalls für mich beanspruche alles auf einfachste und beste Weise gemacht zu haben. Für mich war das das erste wirklich größere Projekt und da war für mich wichtig, dass es zuverlässig funktioniert. Es kann gut sein, dass man an einigen oder vielen Ecken vieles anders und besser machen kann, für mich passt es aber so weil ich es ohne groß Skripte zu erstellen hinbekommen habe und ich es so auch noch verstehe und verändern kann falls mal Bedarf dafür wäre.
Da ich mittlerweile 66 Geräte, 369 Programme und 75 Systemvariablen eingebunden habe und der Duty Cycle auf der CCU3 mit um die 10% angezeigt wird (schwankt zwischen 8% und 12%), denke ich aber auch, dass ich alles eigentlich gar nicht so ganz verkehrt angebunden haben sollte .
Die Homematic ist bei meiner Gartenbewässerung prinzipiell nur die eintscheidende Instanz, die wirkliche Ansteuerung der Ventile läuft bei mir über eine Logo (SPS).
So, dann wollen wir mal einsteigen: Hierüber wird der automatische Start geregelt.
Falls die Aussentemperatur im Laufe des Tages nicht über einen gewissen Wert gestiegen ist (diese Variable hat 3 verschiedene Werte) wird nicht automatisch gegossen. Falls die Grenze "Wärme" überschritten wurde greift das Programm im oberen Screenshot. Falls die Aussentemperatur aber die Grenze "Hitze" überschritten hat greift ein anderes Programm - ist im Prinzip genau so wie oben, aber die Einschaltdauer der Aktivität ist dann zeitlich etwas länger (über die verschiedenen Einschaltdauern kann ich in der SPS die Programme für die verschiedenen Laufzeiten unterscheiden).
Da ich auch noch die Möglichkeit eingebaut habe die Bewässerung per Hand zu starten gibt es das Programm aus dem ersten Screenshot und auch das für die längere Laufzeit fast unverändert jeweils nochmals (da hab ich nur die Regenerkennung rausgenommen da ich ab und zu ja auch trotzdem gerne zusätzlich gießen möchte). Auslöser dafür ist bei mir je eine virtuelle Taste bzw. eine Aktion aus der PocketControl HM.
Wenn die Bewässerung mal läuft kann sie automatisch gestoppt werden: Auch das hab ich doppelt eingebaut, Stopp geht dann ebenfalls über eine virtuelle Taste und über die App.
Die Werte bei Heute und Gestern sind nicht brauchbar, weil sich die zu festgelegten Zeiten automatisch wieder zurücksetzen - nur der Wert bei Regenmenge wird immer weitergezählt (zudem brauche ich den Wert "Heute" auch zum Übertragen in mein Highcharts-Diagramm).
Das erste Script schaut so aus:
Das zweite Script schaut so aus:
Hier nun der nächste Schritt:
Sobald der Wert der Systemvariable "Niederschlag" die bei mir festgelegten 3l überschritten hat wird automatisch die Systemvariable "Regenmenge für Bewässerung" auf überschritten gestellt und damit wird die nächste automatische Bewässerung unterbunden. Und kurz darauf wird dann der vorher ausgelesene Wert direkt im HmIP-SWO-PR auf Null gesetzt. Sollte es weiterregnen zählt er halt wieder bis 3l hoch und so weiter und so weiter...
Hier wird dann die Systemvariable "Regenmenge für Bewässerung" wieder automatisch zurückgestellt: Das passiert 24 Stunden, nachdem die Systemvariable nicht mehr aktualisiert wurde.
Sollte es wie im vorigen Beispiel noch weiterregnen wird die Variable ja immer neu gesetzt - damit bleibt sie dann auch auf überschritten und die Bewässerung startet nicht automatisch. Erst wenn es 24 Stunden lang nicht mehr mehr als 3l geregnet hat (gerechnet ab dem letzten Überschreiten des Wertes) geht die Variable wieder zurück und die Bewässerung ist wieder scharf geschaltet.
Dann hatte ich noch das Bedürfnis, dass es in der Früh auch nur gießen soll, wenn es am Vortag auch wirklich warm genug bzw. heiß war. Deshalb wird die Systemvariable "Aussentemperatur", die ja am Tag vom HmIP-SWO-PR gesetzt wird, erst wieder am Tag darauf nach dem ersten Gießvorgang rückgesetzt: Gesetzt werden die Temperaturschwellen so:
Für Wärme: Für Hitze:
So, das müsste denke ich alles sein was irgendwie dazugehört. Falls ich noch etwas vergessen habe oder wenn ich es nicht verständlich genug aufgeschrieben habe dann gerne nochmals melden, dann passe ich das noch an.
Ich hoffe dass die Aufschreibungen denjenigen, die so etwas ähnliches vorhaben, doch ein bißchen weiterhelfen. Oftmals reicht ja auch ein kleiner Denkanstoß um selbst wieder etwas weiter zu kommen. Außerdem freue ich mich der Community auch etwas zurückgeben zu können.
bitte entschuldigt, dass ich bisher noch nichts gepostet habe. Irgendwie hab ich immer sehr viel zu tun und komme kaum dazu mich dann noch vor den Rechner zu setzen (sitze eh schon arbeitsmäßig den ganzen Tag vor der Kiste - im Homeoffice seit März 2020 - und dann reicht es mir am Ende des Tages dann eigentlich auch immer). Trotzdem habe ich natürlich auch schon von Tipps und Vorlagen aus diesem Forum profitiert weshalb ich auch gerne mal etwas zurückgebe.
Zu aller erst sei gesagt, dass ich keinesfalls für mich beanspruche alles auf einfachste und beste Weise gemacht zu haben. Für mich war das das erste wirklich größere Projekt und da war für mich wichtig, dass es zuverlässig funktioniert. Es kann gut sein, dass man an einigen oder vielen Ecken vieles anders und besser machen kann, für mich passt es aber so weil ich es ohne groß Skripte zu erstellen hinbekommen habe und ich es so auch noch verstehe und verändern kann falls mal Bedarf dafür wäre.
Da ich mittlerweile 66 Geräte, 369 Programme und 75 Systemvariablen eingebunden habe und der Duty Cycle auf der CCU3 mit um die 10% angezeigt wird (schwankt zwischen 8% und 12%), denke ich aber auch, dass ich alles eigentlich gar nicht so ganz verkehrt angebunden haben sollte .
Die Homematic ist bei meiner Gartenbewässerung prinzipiell nur die eintscheidende Instanz, die wirkliche Ansteuerung der Ventile läuft bei mir über eine Logo (SPS).
So, dann wollen wir mal einsteigen: Hierüber wird der automatische Start geregelt.
- Systemzustand Gartenbewässerung: datumgesteuerte Systemvariable (aktiv nur "von Datum bis Datum")
- Systemzustand Regenerkennung: Systemvariable, die von meinem HmIP-SRD gesetzt bzw. rückgesetzt wird (Regenbeginn bzw. Regenende)
- Systemzustand Windgeschwindigkeit: Systemvariable, die von meinem HmIP-SWO-PR gesetzt bzw. rückgesetzt wird (Windschwelle über-/unterschritten) / bei zu viel Winde würde es die Bewässerung nur "verblasen", deshalb wird das hiermit verhindert
- Systemzustand Regenmenge: Systemvariable, die automatisch gesetzt wird wenn eine bestimmte Regenmenge gefallen ist (dazu später mehr)
- Systemzustand Aussentemperatur: Systemvariable, die von meinem HmIP-SWO-PR gesetzt bzw. rückgesetzt wird (Temperaturschwelle über-/unterschritten / 3 Werte möglich)
Falls die Aussentemperatur im Laufe des Tages nicht über einen gewissen Wert gestiegen ist (diese Variable hat 3 verschiedene Werte) wird nicht automatisch gegossen. Falls die Grenze "Wärme" überschritten wurde greift das Programm im oberen Screenshot. Falls die Aussentemperatur aber die Grenze "Hitze" überschritten hat greift ein anderes Programm - ist im Prinzip genau so wie oben, aber die Einschaltdauer der Aktivität ist dann zeitlich etwas länger (über die verschiedenen Einschaltdauern kann ich in der SPS die Programme für die verschiedenen Laufzeiten unterscheiden).
Da ich auch noch die Möglichkeit eingebaut habe die Bewässerung per Hand zu starten gibt es das Programm aus dem ersten Screenshot und auch das für die längere Laufzeit fast unverändert jeweils nochmals (da hab ich nur die Regenerkennung rausgenommen da ich ab und zu ja auch trotzdem gerne zusätzlich gießen möchte). Auslöser dafür ist bei mir je eine virtuelle Taste bzw. eine Aktion aus der PocketControl HM.
Wenn die Bewässerung mal läuft kann sie automatisch gestoppt werden: Auch das hab ich doppelt eingebaut, Stopp geht dann ebenfalls über eine virtuelle Taste und über die App.
- Status Gartenbewässerung: hier habe ich ein HmIP-SCI eingebaut (geschlossen wenn Programm in der SPS läuft) damit der Funkverkehr zum Stoppen nur läuft wenn er auch wirklich nötig ist.
Die Werte bei Heute und Gestern sind nicht brauchbar, weil sich die zu festgelegten Zeiten automatisch wieder zurücksetzen - nur der Wert bei Regenmenge wird immer weitergezählt (zudem brauche ich den Wert "Heute" auch zum Übertragen in mein Highcharts-Diagramm).
Das erste Script schaut so aus:
Code: Alles auswählen
!Variablen setzen
var actRain = dom.GetObject('svHmIPRainCounter_34801_00185A499D0BD3:1').Value();
var sumRain = dom.GetObject("Niederschlag").Value();
!Wert schreiben
dom.GetObject("Niederschlag").State(actRain);
Code: Alles auswählen
!Wert auf Null setzen
dom.GetObject('svHmIPRainCounter_34801_00185A499D0BD3:1').State(0.0);
Hier wird dann die Systemvariable "Regenmenge für Bewässerung" wieder automatisch zurückgestellt: Das passiert 24 Stunden, nachdem die Systemvariable nicht mehr aktualisiert wurde.
Sollte es wie im vorigen Beispiel noch weiterregnen wird die Variable ja immer neu gesetzt - damit bleibt sie dann auch auf überschritten und die Bewässerung startet nicht automatisch. Erst wenn es 24 Stunden lang nicht mehr mehr als 3l geregnet hat (gerechnet ab dem letzten Überschreiten des Wertes) geht die Variable wieder zurück und die Bewässerung ist wieder scharf geschaltet.
Dann hatte ich noch das Bedürfnis, dass es in der Früh auch nur gießen soll, wenn es am Vortag auch wirklich warm genug bzw. heiß war. Deshalb wird die Systemvariable "Aussentemperatur", die ja am Tag vom HmIP-SWO-PR gesetzt wird, erst wieder am Tag darauf nach dem ersten Gießvorgang rückgesetzt: Gesetzt werden die Temperaturschwellen so:
Für Wärme: Für Hitze:
So, das müsste denke ich alles sein was irgendwie dazugehört. Falls ich noch etwas vergessen habe oder wenn ich es nicht verständlich genug aufgeschrieben habe dann gerne nochmals melden, dann passe ich das noch an.
Ich hoffe dass die Aufschreibungen denjenigen, die so etwas ähnliches vorhaben, doch ein bißchen weiterhelfen. Oftmals reicht ja auch ein kleiner Denkanstoß um selbst wieder etwas weiter zu kommen. Außerdem freue ich mich der Community auch etwas zurückgeben zu können.
Re: Skripterstellung zur Erfassung der Regenmenge
Hallo!
Vielen Dank für diese super Anleitung.
Ich habe die neulich mal nachgebaut und es funxt fast störungsfrei.
Die letzten Tage hat es regelmäßig geregnet.
Der Wert in der Variable "Niederschlag" wird leider immer weiter aufaddiert und nicht zurückgesetzt.
Wo könnte denn mein Fehler liegen?
Vielen Dank für diese super Anleitung.
Ich habe die neulich mal nachgebaut und es funxt fast störungsfrei.
Die letzten Tage hat es regelmäßig geregnet.
Der Wert in der Variable "Niederschlag" wird leider immer weiter aufaddiert und nicht zurückgesetzt.
Wo könnte denn mein Fehler liegen?
Re: Skripterstellung zur Erfassung der Regenmenge
Hallo tuennes80,
zurückgesetzt auf Null wird der Wert ja erst, wenn entweder 24 Stunden lang kein neuer Wert geschrieben wurde - oder wenn die 3l überschritten wurden. Wenn es immer mal wieder geringe Mengen - also insgesamt weniger als 3l - regnet (innerhalb 24 Stunden nach dem letzten Schreiben eines Regenwertes) werden die 24 Stunden Pause nicht erreicht und der Wert wird damit nicht automatisch zurückgesetzt.
Hast Du das berücksichtigt?
zurückgesetzt auf Null wird der Wert ja erst, wenn entweder 24 Stunden lang kein neuer Wert geschrieben wurde - oder wenn die 3l überschritten wurden. Wenn es immer mal wieder geringe Mengen - also insgesamt weniger als 3l - regnet (innerhalb 24 Stunden nach dem letzten Schreiben eines Regenwertes) werden die 24 Stunden Pause nicht erreicht und der Wert wird damit nicht automatisch zurückgesetzt.
Hast Du das berücksichtigt?
- GEVJan
- Beiträge: 101
- Registriert: 28.04.2021, 18:40
- System: CCU und Access Point
- Wohnort: Köln
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 16 Mal
Re: Skripterstellung zur Erfassung der Regenmenge
Wenn man Bock auf viel schreiberei hat, kann man ja auch 24 Systemvariablen anlegen, in die stündlich, rotierend, immer der neu hinzugekommene Regen eingetragen wird. Die Summe dieser Variablen wäre dann IMMER die 24h-Regenmenge.
Ist halt nur arg viel Schreiberei...
Gruß
Jan
Ist halt nur arg viel Schreiberei...
Gruß
Jan
CCU3 mit Raspberrymatic -> Eingebunden: HUE-Bridge, Tasmota-Sonoffs, Alexa, Open Weather Map, Tasker, LG-TV
Re: Skripterstellung zur Erfassung der Regenmenge
Hallo!mhowie1 hat geschrieben: ↑23.05.2022, 22:53Hallo tuennes80,
zurückgesetzt auf Null wird der Wert ja erst, wenn entweder 24 Stunden lang kein neuer Wert geschrieben wurde - oder wenn die 3l überschritten wurden. Wenn es immer mal wieder geringe Mengen - also insgesamt weniger als 3l - regnet (innerhalb 24 Stunden nach dem letzten Schreiben eines Regenwertes) werden die 24 Stunden Pause nicht erreicht und der Wert wird damit nicht automatisch zurückgesetzt.
Hast Du das berücksichtigt?
Ja, da habe ich tatsächlich drauf geachtet. Aktuell zeigt er mir 33 Liter an und die sind definitiv in den letzten 24 Stunden nicht gefallen, sonst wäre Erftstadt wieder bundesweit in den Medien zu finden.
Das einzige, was ich aus Deinem Skript geändert habe, ist das systeminterne Programm.
Ich bin überfragt.
Re: Skripterstellung zur Erfassung der Regenmenge
Was meinst Du mit "systeminterne Programm"? Du meinst vermutlich die versteckte Variable?
Bei Dir wird bei jeder Aktualisierung, die die Wetterstation zur CCU schickt, das Programm getriggert - egal ob es regnet oder nicht (die Häufigkeit hängt unter anderem von den Angaben bei Statusmeldung im Kanal 0 ab). Du musst die Einschränkung einbauen, dass das Programm nur getriggert werden darf, wenn es auch wirklich regnet. Wenn Du das nicht einbaust kann der Reset nicht funktionieren weil ja niemals die 24h Ruhe erreicht werden.
Viele Grüße
Manfred
Bei Dir wird bei jeder Aktualisierung, die die Wetterstation zur CCU schickt, das Programm getriggert - egal ob es regnet oder nicht (die Häufigkeit hängt unter anderem von den Angaben bei Statusmeldung im Kanal 0 ab). Du musst die Einschränkung einbauen, dass das Programm nur getriggert werden darf, wenn es auch wirklich regnet. Wenn Du das nicht einbaust kann der Reset nicht funktionieren weil ja niemals die 24h Ruhe erreicht werden.
Viele Grüße
Manfred
-
- Beiträge: 268
- Registriert: 13.05.2020, 17:56
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 48 Mal
- Danksagung erhalten: 23 Mal
Re: Skripterstellung zur Erfassung der Regenmenge
Ich betreibe auch eine automatische Bewässerung mit 12 Rainbird Magnetventilen. Habe eine CCU3 RM und nutze die HMIP Wetterstation Pro und zusätzlich noch einen Regensensor HM-Sen-RD-0 (dieser wird nicht unbedingt gebraucht,war aber bei mir vorhanden)zur Steuerung.
Um die 12 Ventile einzeln zu steuern habe ich dazu 12 Programme angelegt. Das ganze funktioniert auch ohne SV ganz gut und es wird nur Bewässert wenn es Gestern und Heute nicht mehr als 2 mm geregnet hat. Im Programm verwende ich die Systeminternen SV vom Wettersensor und den Regensensor (man kann natürlich auch die Daten von der Wetterstation nehmen). Bis jetzt bin ich damit sehr gut gefahren
Hier mal ein Bild vom Programm wie ich es verwende, vielleicht kann es ja jemand gebrauchen. Das Programm könnte man natürlich noch erweitern und die Außentemperatur und Bodenfeuchtesensor etc. mit einbinden, ich brauchte es aber nicht.
PS: zurückstellung habe ich auf 0.01 Uhr gesetzt
Um die 12 Ventile einzeln zu steuern habe ich dazu 12 Programme angelegt. Das ganze funktioniert auch ohne SV ganz gut und es wird nur Bewässert wenn es Gestern und Heute nicht mehr als 2 mm geregnet hat. Im Programm verwende ich die Systeminternen SV vom Wettersensor und den Regensensor (man kann natürlich auch die Daten von der Wetterstation nehmen). Bis jetzt bin ich damit sehr gut gefahren
Hier mal ein Bild vom Programm wie ich es verwende, vielleicht kann es ja jemand gebrauchen. Das Programm könnte man natürlich noch erweitern und die Außentemperatur und Bodenfeuchtesensor etc. mit einbinden, ich brauchte es aber nicht.
PS: zurückstellung habe ich auf 0.01 Uhr gesetzt