Gartenbewässerungssteuerung

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen,

    vor ziemlich genau einem Jahr begann ich mich für den Raspberry zu interessieren. Einige Leute hier im Forum haben mich dankenswerterweise bei meinen ersten Anfängerfragen unterstützt. Als Gegenleistung möchte ich nun mein „Werk“ vorstellen und mit Interessierten in Dialog kommen. Das Projekt ist im Zustand eines fortgeschrittenen Prototypen der seit einigen Wochen in Betrieb ist. Aber es gibt auch Fragestellungen die noch nicht gelöst sind, wie z.B. eine Verbindung des Steuerungsmoduls zur „Home Base“ per GSM oder Funkschnittstelle.

    Ich werde das Projekt zunächst beschreiben ohne zu sehr in die technischen Details zu gehen, Wenn dann Interesse geäußert wird, werde ich gerne mehr Information zu Schaltplan oder Python-Code oder was auch immer beisteuern. Natürlich freue ich mich auch auf konstruktive Kritik. Es wäre ein Wunder, wenn es für einzelne Probleme nicht noch bessere Lösungen gäbe...

    Nachdem ich einige Erfahrungen mit dem Raspberry selbst, mit Python als Programmiersprache und mit verschiedenen Sensoren wie dem Temperatur und Luftfeuchtigkeitsmesser DHT22, dem Ultraschallsensor HC SR04 und dem Bodenfeuchtigkeitssensor YL-69 gesammelt hatte, begann ich mein Bewässerungsprojekt in Angriff zu nehmen.

    Ziel des Projekts

    Die autonome Bewässerung von etwas Beerenobst und Zierblumen mittels Tropfschlauch in Abhängigkeit von der Bodenfeuchtigkeit und dem verfügbaren Wasser.

    Die Herausforderungen

    Der Garten befindet sich am Stadtrand, ca. 15 Fahrradminuten von meiner Wohnung entfernt. Es ist ein Hanggrundstück ohne Strom- und Wasserversorgung. Wasser ist demnach ein knappes Gut, denn es steht lediglich das gesammelte Regenwasser zur Verfügung.

    Das Konzept

    Der Raspberry wird regelmäßig, z.B. alle zwei Stunden gestartet um einen kurzen Ablauf abzuarbeiten. Dazu gehört die Messung der Bodenfeuchtigkeit mittels zweier Sensoren, die Messung von Lufttemperatur und -feuchtigkeit und schließlich die Messung der Batteriespannung. Alle Daten werden im JSON-Format in einer Datei gespeichert. Zu einer bestimmten Stunde (z.B. 19 Uhr), prüft er zusätzlich, ob die Bedingungen für den Wässerungsvorgang erfüllt sind. Momentan beschränkt sich die Prüfung auf die Bodenfeuchtigkeit, genauer, ob die Bodentrockenheit an Sensor 1 einen Grenzwert überschritten hat und ob überhaupt noch Wasser vorrätig ist. Trifft beides zu, wird per 12V-Pumpe ein Wasserreservoir mit ca. 20 l aus der Regentonne gefüllt.

    Das Reservoir ist über einen normalen Gartenschlauch mit den Versorgungsstellen verbunden. Dort mündet der Schlauch in kurze Stücke Tropfschlauch, die kreisförmig um die Pflanzen verlegt sind. Dank der Hanglage befindet sich das Reservoir ca. 5 m oberhalb der Pflanzen, so dass genügend Wasserdruck für die Tropfschläuche vorhanden ist. Es dauert ca. eine halbe Stunde, bis das Reservoir leergelaufen ist.

    Das technische Konzept

    1. Intervallbetrieb

    Neben der Wasserknappheit ist der fehlende Stromanschluss ein zweiter Parameter der sich im Konzept bemerkbar macht. Denn damit war klar, dass der Raspi nicht im Dauerlauf betrieben werden kann, auch wenn es sich hier um den stromsparenden Zero W handelt. Ich hatte zwar über eine Stromversorgung per Solarpanel und Pufferakku nachgedacht, aber ich wollte das Ganze auch nicht zu teuer und zu komplex werden lassen. Deshalb entschied ich mich für ein gebrauchte Autobatterie – die 12V sind auch für die Pumpe hilfreich – und eine elektronische Lösung, die einen Intervallbetrieb des Raspi ermöglicht. Intervallbetrieb bedeutet, dass eine Uhr, in meinem Fall die Realtime Clock DS3231, zur vorgegebenen Zeit per Relais einen Stromkreis schließt und damit den Raspberry booten lässt. Nach dem Bootvorgang startet der Raspi per Autostart das eigentliche Arbeitsskript, sprich den oben kurz beschriebenen Mess- und ggf. Bewässerungsvorgang. Am Ende dieses Skripts setzt der Raspi den Alarm der Uhr auf die nächste Startzeit, z.B. in 2 Stunden, und leitet den Shutdown ein. Nach dem Shutdown sorgt eine Verzögerungsschaltung für das Öffnen des Relais womit der größte Teil der Schaltung stromlos fällt. Auf diese Weise läuft der Raspi, bei einem Intervall von 2 Stunden, in der Summe nur ca. 18 Minuten pro Tag, was die Reichweite der Autobatterie enorm verlängert. Nach meiner Berechnung sollte das für mehrere Monate reichen, allerdings gehen auch noch die kurzen Pumpeinsätze ab. Details hier im Schaltplan Autobatterie Garten.pdf und in der Beschreibung des Schaltplans.pdf.


    2. Messung der Bodenfeuchtigkeit

    Ich habe die ellenlangen Diskussionen zum Thema Feuchtigkeitssensoren im Netz gelesen und mich hier für eine Billiglösung in Gestalt des YL-69 entschieden, den es bei ebay für 2 bis 3 € gibt. Um dem Problem der Elektrodenzersetzung zu begegnen, werden meine Sensoren nur während des Messvorgangs für wenige Sekunden mit Spannung versorgt. Nach meinen Versuchen sind die Messungen hinreichend reproduzierbar und nachdem das Ganze seit einigen Wochen in Betrieb ist, habe ich noch keine Abnutzungsspuren feststellen müssen.

    Übrigens verwende ich zwei Sensoren. Einer befindet sich in einem bewässerten Bereich, der andere an einer Stelle mit „natürlichen“ Verhältnissen. Damit kann ich den Einfluss von Regen und Trockenheit (letzteres in diesem Jahr ja sehr ausgiebig) auf die Bodenfeuchtigkeit erfassen und mit dem bewässerten Teil vergleichen.


    3. Reservoir und Pumpe

    Das Reservoir ist eine Kunststoffkiste aus dem Baumarkt mit ca. 24l Fassungsvermögen. Sie wird über eine 12V-Tauchpumpe, die es bei ebay für 10 bis 14 € gibt, mit Wasser aus der Regentonne versorgt. Für die Ansteuerung der Pumpe, genauer, damit die Pumpe auch wieder stoppt, muss der Wasserstand im Reservoir gemessen werden. Auch zur Füllstandmessung gibt es in diversen Foren reichlich Diskussionen. Da ich keine kontinuierliche Messung benötige, sondern mir drei Level genügen, habe ich mich zu einer Lösung entschlossen, die mittels Messung der elektrischen Leitfähigkeit funktioniert. Dazu habe ich mit Heißkleber vier isolierte Kupferdrähte an eine Innenwand des Reservoirs geklebt. Ein Draht, die „Masse“, endet über dem Boden. Die anderen drei Drähte enden, der erste knapp über dem Boden, der zweite etwa in der halben Höhe und der dritte ca. 3 cm unter dem oberen Rand. Alle Drähte sind an ihrem Ende für ein paar Millimeter ohne Isolation, das sind dann die Elektroden. Mit Hilfe von Widerständen und dem Analog-Digital-Konverter MCP 3008 kann ich die Leitfähigkeit zwischen den Elektroden und dem Massedraht bestimmen. Der Wert 1000 steht für „Elektrode ist trocken“ und sobald eine Elektrode durch den Wasserspiegel erreicht wird, sinkt der gemessene Wert deutlich auf unter 350 ab. Ähnlich wie bei den Bodensensoren, werden auch die Elektroden im Wasserreservoir nur für die kurze Messzeit unter Spannung gesetzt. Auf diese Weise will ich auch hier die Korrosion minimieren.

    In den Boden des Reservoirs habe ich ein rundes Loch geschnitten und mit Hilfe geeigneten Anschlussmaterials aus dem Baumarkt einen Gartenschlauch angeschlossen.


    4. Der Tropfschlauch

    Leider weiß ich das Fabrikat nicht mehr. Es handelt sich um ein China-Produkt das ich billig (mal wieder) über ebay oder Amazon bezogen habe. Ich fürchte dieser Schlauch ist die Schwachstelle in meiner Lösung. Frisch nach dem Verlegen „schwitzte“ der Schlauch das Wasser ganz ordentlich durch die Poren so dass die Erde schnell feucht wurde. Nach dem langen trockenen Sommer scheint mir der Schlauch aber nachverdichtet zu sein und er sondert das Wasser deutlich langsamer ab. Noch ist mir das egal, denn ob der Bewässerungsvorgang 5 Minuten oder eine halbe Stunde dauert, kümmert mich wenig. Sobald das Reservoir auf seinen Sollstand gefüllt ist, kann sich der Raspi schlafen legen (vgl. Kapitel zum Intervallbetrieb) und das Reservoir läuft von selbst leer. Aber ich fürchte, dass der Schlauch bald sozusagen wasserdicht und damit unbrauchbar wird. (Wenn hier jemand was Besseres kennt – gerne).


    5. Die Schaltung

    Die Schaltung ist deutlich ein Prototyp. Aufgebaut auf einer Lochrasterplatine, die Verbindungen sind mit Kupferlackdraht oder den Raspberry Verbindungskabeln realisiert. Die Sensoren, die mehrere Meter entfernt sind, wie Wasserstandmessung im Reservoir und Bodenfeuchtigkeit, habe ich über Ethernet-Kabel angebunden. Das bringt von sich aus schon eine gute Abschirmung mit. Bisher habe ich keine Störeinflüsse auf die Schaltung wahrgenommen.


    6. Die Programmierung

    Als Programmiersprache habe ich Python gewählt. Aktuell ist es die Version 3.6.5, die ich nachträglich installiert habe. Den Code des Projekts habe ich hier in einem GitHub-Repository. Im Wesentlichen besteht er aus fünf Teilen:

    • bewaesserung.py für die Ablaufsteuerung
    • bewaesserung_lib.py mit Funktionen die nichts mit den Sensoren oder der Peripherie zu tun haben, wie Laden und Speichern der Konfigurationsdatei
    • bewaesserung_rlib.py mit Funktionen zum Ansteuern der Sensoren
    • reservoir.py für die Steuerung des Reservoirs. Pumpe an- und auschalten, Füllstand messen.
    • rtc_tools.py mit Hilfsfunktionen um die Realtime Clock zu programmieren

    Dazu kommen dann noch die Python-Module von Adafruit und anderen für die Realtime Clock und die Sensoren.


    Offene Punkte

    1. Aktuell muss ich die Messdaten vor Ort auslesen und mit nach Hause nehmen. Bequemer wäre es natürlich, wenn mir der Raspberry diese per GSM-Modul oder eine andere Funkverbindung (ich denke an diese 433 Mhz Module) zuschicken würde. Der Garten befindet sich ca. 1,5 km Luftlinie vom Haus entfernt, da in Höhenlage ist die größte Strecke auch wirklich Luftlinie, aber trotzdem „verderben“ ein paar Häuser eine direkte Sichtverbindung. Das nur zum Thema Funkverbindung.

    2. Die Programmierung ist auf Autonomie ausgelegt. D.h. es wird eine Logik benötigt, die auf Basis von Messdaten entscheidet, ob und wie viel bewässert werden soll. Im Moment ist diese Logik noch sehr einfach und wahrscheinlich nicht optimal in Hinsicht auf Wasserbedarf und Wasserverbrauch. Mit einer GSM- oder Funkverbindung würde ich keine Logik vor Ort benötigen, sondern könnte den Bewässerungsprozess von zuhause antriggern.

    3. Ich könnte die Autobatterie durch ein Solarpanel ersetzen

  • Hallo,

    für heute noch ganz kurz:

    Erstmal vielen Dank für die ausführliche Vorstellung deines Projektes.

    ohne zu sehr in die technischen Detailszu gehen, Wenn dann Interesse geäußert wird, werde ich gerne mehrInformation zu Schaltplan oder Python-Code oder was auch immer beisteuern

    Ja von meiner Seite aus würde Interesse bestehen!

    Bzgl Python Code habe ich mir schon bisschen auf github begutachtet? Sind Anmerkungen erwünscht ? ;)

    Ganz allgemein noch, auch wenn ich weiß dass dann keine Python Programmierung möglich ist, wäre hierfür ein Arduino nicht geeigneter gewesen?

    Aber mir ist auch Python und Pi lieber ;)

    Bzgl GSM kann dir evtl Pertl mehr Erfahrung mitteilen.

    • Offizieller Beitrag

    Hallo hadi!

    Wenn dann Interesse geäußert wird, werde ich gerne mehrInformation zu Schaltplan oder Python-Code oder was auch immer beisteuern.

    Ja bitte, gerne alles hier im Forum hochladen! Dann wären alle Informationen beisammen, bis auf die Bilder die irgendwann vom Anbieter gelöscht werden und damit der Kontext zerissen würde... Aber die könntest Du auch noch hierher nachholen. ;)

  • Moin hadi,

    sehr schönes Projekt.

    Ich möchte auf LoRaWan hinweisen. Es ist legal und kann "große" Reichweiten erzielen.

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Du weisst, das der von dir eingesetzte Sensor überholt ist?

    Verwende z.Bsp. den hier: Giesomat

    Hallo FredRam,

    danke für den Hinweis. Ich habe ja in meinem Beitrag geschrieben, dass ich die Threads zum Thema Erdfeuchtigkeitsmessung intensiv gelesen habe. Dabei ist mir auch der Giesomat untergekommen. Und ja, ich kann mir vorstellen, dieses Teil in der nächsten Projektphase zu verwenden. Als ich letztes Jahr begonnen habe, wollte ich halt mit so wenig Aufwand (auch finanziell) wie möglich loslegen. Ich wusste ja noch nicht, ob ich genügend Geduld und Zeit aufbringen würde. Und da kamen mir diese Billigsensoren aus China gerade recht.

    Viele Grüße

    Dieter

  • Hallo hadi!

    Ja bitte, gerne alles hier im Forum hochladen! Dann wären alle Informationen beisammen, bis auf die Bilder die irgendwann vom Anbieter gelöscht werden und damit der Kontext zerissen würde... Aber die könntest Du auch noch hierher nachholen. ;)

    Hallo hyle,

    die Bilder auf die ich verlinke sind in meiner persönlichen Cloud bei WEB.DE. Damit sollten die Links eigentlich so lange funktionieren wie ich Kunde bei WEB.DE bin. Daran wird sich auf absehbare Zeit nichts ändern, denn ich habe keine Lust auf eine andere Email-Adresse. Unschön ist allerdings diese Anzeige, dass die Freigabe bis Sept. 2019 gültig ist. Da muss ich wohl jedes Jahr verlängern. Das kann man schon mal vergessen.

    Hast du mir einen Tipp wie ich hier Bilder hochlade? Ich weiß, es gibt in der Toolbar oben dieses Icon "Bild". Aber wie verwende ich die beiden Eingabefelder "Quelle" und "Verlinkung"? Das habe ich noch nicht kapiert. Habe auch bei FAQ keinen Hinweis gefunden.

    Gruß, Dieter

  • Moin hadi,

    sehr schönes Projekt.

    Ich möchte auf LoRaWan hinweisen. Es ist legal und kann "große" Reichweiten erzielen.

    Gruss Bernd

    Hallo Bernd,

    danke für dein Lob und den Hinweis auf LoRaWan. Ist das tatsächlich legal? Ich dachte das wäre so ein aufgebohrtes 433 MHz-Funken mit extra großen Antennen? Ich werde mir das doch genauer anschauen müssen.

    Viele Grüße, Dieter

  • Hallo Hofei,


    Anmerkungen zum Code sind sehr erwünscht. Ich programmiere zwar schon länger, aber Python war Neuland. Z.B. habe ich die Möglichkeiten des Logging-Moduls erst spät erforscht und vorher vieles mit print Statements gemacht. Ich hoffe die Kommentare sind schlüssig genug, damit man mehr als nur erahnt um was es geht.

    Den Schaltplan werde ich auch noch etwas kommentieren. Der erschließt sich sicher nicht so von selbst.

    Was Arduino vs. Raspberry angeht: Ich finde den Pi halt vielseitiger und spannender. Da ich beruflich viel mit Linux zu tun habe, war mir das schon mal vertraut und versprach weniger Einarbeitungsaufwand. Und von Perl nach Python ist es ja auch nicht so weit...

    Viele Grüße, Dieter

  • Was Arduino vs. Raspberry angeht: Ich finde den Pi halt vielseitiger und spannender. Da ich beruflich viel mit Linux zu tun habe, war mir das schon mal vertraut und versprach weniger Einarbeitungsaufwand. Und von Perl nach Python ist es ja auch nicht so weit...

    Versteh ich - geht mir genau so...war nur ein Hinweis dass das mit einem Arduino deutlich sparsamer was den Energieverbrauch betrifft sich umsetzen lassen würde. Genauso verzeiht es dir der Arduino einen Spannungsausfall, beim Pi kann es böse enden / muss es aber nicht.

    Zum Code (bezogen auf bewaesserung.py):

    os.system ist veraltet (Zeile 63 zb) und soll auch nach offizieller Dokumentation nicht mehr verwendet werden, hierfür besser das subprocess Modul verwenden welches du eh schon importiert hast, auch den Shutdown kannst du hiermit umsetzen.

    Anstatt Rpi.GPIO zu verwenden ist es besser gpiozero zu verwenden.

    Warum? RPi.GPIO wird nicht mehr aktiv weiterentwickelt, gpiozero schon. Außerdem lässt sich damit vieles deutlich komfortabler umsetzen

    Und dann, verwende keine blanken except! (Zeile 155) Fehler immer explizit abfangen.

  • Moin Dieter,

    nochmal zu LoRaWan.

    Doch es ist völlig legal. Man funkt in DL auf 800MHz. Es gibt verschiedene Modis bezüglich Datenmenge und Reichweite.

    Aber mach dich mal schlau.

    Wollte es nur als Hinweis geben.

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Tolles Projekt, danke für die Vorstellung! Also eine Solarzelle und einen Laderegler würde ich mir möglichst bald anschaffen. Bleiakkus haben eine hohe Selbstentladung und nehmen schnell Schaden bei einer vollständigen Entladung. Ich würde eine 40-100W Solarzelle empfehlen. Bleiakku als Puffer brauchst Du sowieso. Vielleicht kriegst Du was gebrauchtes.

    Wegen des Datenaustausch hätte ich einen Vorschlag: einen WLAN Hotspot. Bei uns in Österreich gibt es sehr günstige Datentarife.

    ...wenn Software nicht so hard-ware ;) ...

    Freue mich über jeden like :thumbup:

  • Hallo Hofei,

    danke dass du dir den Code so genau angeschaut hast!

    Dass mit os.system und subprocess manche Dinge doppelt vorhanden sind, ist mir auch aufgefallen. Allerdings erst später. Bei meinen anfänglichen Suchen nach Code-Beispielen bin ich halt zuerst auf os.system gestossen und erst als ich mich später mit Parallelisierung von Tasks auseinandergesetzt habe, kam ich zu subprocess. Aber auf die Dauer werde ich wohl auf subprocess umsteigen. Das macht den Code einfacher.

    Ähnlich mit gpiozero. Das sieht in der Tat vielversprechend aus. Besonders die vielen APIs. Da könnte ich vermutlich einige spezialisierten Module ersetzen.

    Was die Exception angeht: Ich wusste schlicht nicht welche speziellen Exceptions an dieser Stelle wahrscheinlich wären. Aber ich sollte wenigstens die Exception-Meldung oder Bezeichnung in den Log schreiben. Aktuell wüsste ich ja nur dass es eine Exception gab, aber hätte keinerlei Hinweis auf die Art. (In der Praxis ist zum Glück bisher noch keine aufgetreten).

    Zu "Spannungsausfall kann beim Pi böse enden": Das hätte mich in der Tat beinahe meinen Raspberry-Enthusiasmus gekostet. Gleich beim zweiten oder dritten Versuch mit dem frisch ausgepackten Pi hing er sich auf und ich wusste mir nur durch das Ziehen des Steckers zu helfen. Danach war die SD Card futsch. Sie ließ sich nicht mal mehr mit dem Partitionierer auf dem Notebook resetten. Dann habe ich mir eine Karte von Verbatim angeschafft und obwohl es bei meinen Versuchen mit der selbsterhaltenden Spannungsversorgung unvermeidlich zu Unfällen kam, haben Pi und Karte noch alle Blackouts überlebt. Es scheint tatsächlich Unterschiede in der Robustheit der Karten (vermutlich der Schreiblogik) zu geben. Anders kann ich mir das nicht erklären.

    Viele Grüße

    Dieter

  • Habe gesehen dass es Module mit dem Chip SX1278 schon ab 3 € gibt. Da wäre die Einstiegshürde ja extrem niedrig. Damit werde ich mich im Herbst mal auseinandersetzen...

  • Tolles Projekt, danke für die Vorstellung! Also eine Solarzelle und einen Laderegler würde ich mir möglichst bald anschaffen. Bleiakkus haben eine hohe Selbstentladung und nehmen schnell Schaden bei einer vollständigen Entladung. Ich würde eine 40-100W Solarzelle empfehlen. Bleiakku als Puffer brauchst Du sowieso. Vielleicht kriegst Du was gebrauchtes.

    Wegen des Datenaustausch hätte ich einen Vorschlag: einen WLAN Hotspot. Bei uns in Österreich gibt es sehr günstige Datentarife.

    Ja, so eine Solarzelle reizt mich schon. Möglich dass ich sie in der Ausbaustufe für die nächste Saison integriere. Wobei ich mit der Batterie bisher eigentlich auch zufrieden bin. :conf:Mit meiner speziellen "Intervalltechnik" wird ja wenig Strom verbraucht und ich überwache den Zustand der Batterie indem der Raspi regelmäßig deren Spannung unter Last misst.

    Zum Thema Datenaustausch: Du meinst wahrscheinlich diese GSM-Module oder USB-Sticks? WLAN hat halt zu wenig Reichweite um die 1,5 km Luftlinie zu überbrücken. Bei den Datentarifen bin ich (hier in D) noch nicht richtig fündig geworden. Habe bisher nur welche gefunden, bei denen ich monatlich ein paar Euros zahlen müsste. Ich stelle mir aber vor, ich kaufe einmal bspw. 1 GB Volumen. Bei den Datenmengen die ich übertragen wollte dürfte das für Monate bis Jahre reichen. (Nicht gerade der Kunde den sich ein Provider wünscht :shy:). Ok, ich habe auch schon an eine (Infrarot-)Kameraerweiterung zur Beobachtung der Wildschweine gedacht, die hier nächtlich ihr Unwesen treiben. Bei einer Videoübertragung würde das Volumen natürlich schneller abschmelzen...

    Einmal editiert, zuletzt von hadi (30. August 2018 um 12:17)

  • Bei 1,5 KM Luftlinie bleibt dir eigentlich nur GSM oder LoRa. Wenn du Bilder / Videos / einen Live Stream einer Kamera übertragen willst fällt LoRa auch aus, da die zu übertragende Datenmenge schlicht zu groß ist. Für reine Sensordaten wäre LoRa meine Wahl.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!