Projekt vollautomatischer Rasensprenger (Blockly)

  • Mein Ziel ist eine vollautomatische Steuerung für den Rasensprenger. Es soll aus Wetterdaten entschieden werden ob und wenn ja wie lange gesprengt wird. Ich nutze dazu Yr.no. Leider habe ich gestern festgestellt, dass es den ganzen Vormittag geregnet hat und trotzdem "Forecast of precipitation level for today (rain/snow)" mit 0mm angezeigt wurde. Blöde. Es war also abends noch alles nass und er hätte sprengen wollen. Die Wetterbeschreibung wäre hier besser, wird aber schwierig auszuwerten, da Text. Gibts eine Liste mit möglichen Ansagen? Dann kann man eine wenn-dann-Kette aufbauen. Ansonsten fliessen die Temperaturen, Niederschlagswerte und Luftdruck jeweils von HEUTE und MORGEN in die Berechnung ein. Es werden Sprengerzeiten von 1 bis 120min erzeugt, wobei alles unter 30min ignoriert wird. Ob ich noch eine Obergrenze einbaue werde ich sehen.

    Einige Probleme wäre ich mit einem Bodenfeuchtesensor los. Vielleicht baue ich noch einen ein. Mein Ziel ist aber eher: wenig Hardware, viel Intelligenz.


    Die Zeitberechnung steht so weit. Wie praxisnah die Werte sind, wird sich erst später zeigen und Korrekturen sind sicher nötig.


    Dann soll z.B. der Rasensprenger eingeschaltet werden. Dazu wird 1Std. vor Sonnenuntergang die Einschaltzdauer neu berechnet, per Telegram geschickt (Kontrolle) und der Sprengerstart angekündigt. Bei Sonnenuntergang wird gestartet wenn:

    -Die berechnete Zeit über 30min liegt, (Klappt)

    -mehrere Bewegungsmelder bestätigen, dass seit 10min niemand im Garten war (klappt)


    Was noch nicht klappt, sind dynamische Zeiten. Also falls der Rasen noch nicht freigegeben ist, soll das Script warten bis Freigegeben und dann die errechnete Zeit eingeschaltet sein. Falls tatsächlich die ganze Nacht durchgefeiert wird, soll ab Sonnenaufgang die ganze Sache beendet und ignoriert werden. Ich vermisse in Blockly irgendwas wie "Wait until <irgendwas>" oder die Möglichkeit Variablen in die Verzögerung des "Steuere"-Befehls zu setzen. Sicher gibts einen Workaround. Kann mir wer helfen?


    Ich habe im Moment 3 Scripte:

    -Überwachung Bewegungsmelder: Setzt einen Datenpunkt auf Wahr oder Unwar, je nachdem 10min lang die Bewegungsmelder nicht angeschlagen haben.

    -Sprengzeitberechnung: wird 10min vor Sonnenuntergang gestartet und berechnet die Länge der Einschaltzeit, legt diese in Datenpunkt ab.

    -Rasensprenger: (noch nicht fertig) soll falls "Einschaltzeit" über 30min ab Sonnenuntergang gucken, ob Rasen frei, ggf warten. Dann einschalten und nach Ablauf der Zeit aus dem Datenpunkt ausschalten. Falls während des Sprengens jemand den Rasen betritt wird das ignoriert: selbst schuld!


    schimmer-media.de/index.php?attachment/3361/Moin!

  • So. Nach nächtelangem Gefummel hab ich nun eine Version die (zufriedenstellend) funktioniert.

    Sie Besteht aus 4 Scripten.

    Nr1 errechnet um ca. 14:00 aus den Wetterdaten von (heute) und (morgen) die Dauer die gesprengt werden soll. Dabei werden zuerst nach einem Punktesystem die Wetterdaten wie Temperatur, Luftdruck und Niederschlag bewertet und danach in eine Zeit in Minuten übersetzt. Dieser Wert (zwischen 0min und 90min) wird in einem Datenpunkt abgelegt und die vorgesehene Zeit per Telegram verschickt.

    Ganz schön lang aber macht nix.

    Nr2 wird ein paar minuten später aktiv und berechnet mit einem Korrekturwert die Einschaltdauer nochmals. Das habe ich gemacht um Anpassungen zentral vornehmen zu können.

    Des weiteren wird hier nun die vorgesehene Startzeit festgelegt und zwar zer Zufallszahl zwischen 20:00 und 21:30. Zufällig einerseits weils nicht so langweilig ist und andererseits damit sich Nachbarn und mögliche Einbrecher nicht an feste Zeiten gewöhnen.

    Das Ergebnis wird wieder in einem Datenpunkt gespeichert und mir per Telegram geschickt.

    Nun zu Nr3. Weil ich es nicht geschafft habe, einen Trigger mit variablen Zeiten anzulegen, startet dieses ab 20:00 in 3-min-Abständen und guckt, ob die Startzeit erreicht ist. Falls Sprengdauer >0, Falls IR-Sensor frei, falls Sprengerblocker unwahr wird der Rasensprenger gestartet. Anhand der Sprengdauer aus dem Datenpunkt wird gleich noch eine Abschaltzeit in einen anderen Datenpunkt geschrieben. Gleichzeitig wird bei Erfolgtem Start die Einschaltzeit auf 0 gesetzt. Falls Sprengerblocker gesetzt oder Sprengzeit =0 wird nichts gemacht und die ganze Sache beendet. Falls IR-Sensor Aktivität meldet, wird die Einschaltzeit um einige Minuten verschoben und das Spiel beginnt von vorne. Telegram-Nachrichten je nach Situation.

    Script Nr4 arbeitet nach dem gleichen Prinzip für die Ausschaltzeit.

    wenn die >0 und überschritten ist, wird der Sprenger ausgeschaltet.

    Es werden noch die Stoppzeit und Sprengdauer auf 0 gesetzt. Telegram inclusive.

    Der SprengerBlocker ist ein Datenwert, den ich z.B. per Telegram-Buttons setzen kann, wenn ich aus irgendeinem Grund nicht will dass heute gesprengt wird.

  • Danke, danke. Zuerst mal: So cool ist die Berechnung noch nicht. Seit dem das Wetter nicht mehr auf Dauersonne und 35°C ist zeigt sich, dass eigentlich zu viel bzw zu oft gesprengt wird. Leider sagt Yr.No auch wenn mehrere kurze Schauer waren oder sein werden oft Niederschlag 0mm an. Ich werde den Wettertext noch mit in die Berechnung einbauen.


    Meine Gartenpumpe ist druckgesteuert, also automatisch. Die Rasensprenger hatte ich vorher schon als festverlegte Versenkregner verbaut. "Schaltbar" über ein Absperrventil. Ich habe ein billiges Magnetventil dahinter und nun den Hahn in der Saison immer offen. Leider hab ich gepennt und ein 12v-Magnetventil gekauft. Daher hab ich ein altes 12V Steckernetzteil vom Gehäuse befreit, welches vom Sonoff Basic geschaltet wird. Basic und Netzteil sind in einer formschönen Abzweigdose auf einem Stab in ca 80cm Höhe gesetzt. Einerseits wegen dem Empfang und andererseits weil da noch ein Bewegungsmelder mit dran soll. Um die freiliegende Spule und die Anschlüsse des Magnetventils hab ich eine kleine Abzweigdose herumgefummelt.