Intro
Disclaimer: Dies ist keine Anleitung zum Drogenanbau lediglich eine Dokumentation zu einem Gewächshaus, was darin wächst ist eure Sache. . :sweat_smile: Dieses Projekt entstand aus Faulheit, morgens die lieben Pflanzen zu Gießen. Die Idee alleine entstand aus komfortproblemen und nicht aus niederen Geldgedanken. Doch erwies es sich das Projekt im Laufe der Zeit als nicht nur sehr arbeitsaufwendig sondern auch geldgierig in der Entwicklung. Im Laufe des Beitrages werden verschiedene Beweggründe aufgezählt die Automatisierung voranzutreiben und sich mit programmieren oder Scripten auseinanderzusetzen. Da ich noch nicht weiß ob ich irgendwann meine Software für kleines Geld verkaufen will, da daran auch bezahlte entwickler gesessen haben. Die Software am Ende sollte sich echt jeder leisten können.. Die Sensoren sollten das teuerste sein. Darum werde ich kompletten Code nicht posten.So aber warum poste ich das alles im forum? Ich weiß es garnicht mal so, ich habe hier aktiv gelesen und konnte viel wissen ansammeln und irgendwie möchte ich der Gemeinschaft etwas zurück geben. Dieses Wissen ist bereits in Planung und Konfiguration der Komponenten eingeflossen. Einige werden das ein oder andere sytem von einige anderen Autoren hier kennen, zmb der dwc Kasten :laughing: Andere Komponenten sind selbst ausgedacht und ich hoffe auf eure Unterstützung, dahingehend daß wir eine Diskussion über den Aufbau einer solchen Box vorantreiben. Und vl wird der ein oder andere es nachbauen mit der open source software die ich bereits zur Verfügung stellen werde.
Die Philosophie des Projektes
- Halte es einfach
- Inventiere in gute Elemente
- Messen, Steuern, Verbessern
- Raspberry Pi als Master Controller Arduino slaves Dokumentation von Sensordaten, Visualisierung und Auswertung mit Aktion Automatisierung vieler Anbauarten und Prozesse im Anbau
Messen aber was ?
nach dem Grundsatz wer viel misst misst viel Mist
Aufbau
Backend: sensordaemon(sammelt sensor Daten) Aktiondamon(füht alle Aktionen aus und prüft die DB Werte) Frontend: *Pi interface (für pis minibildschirm) *web interface (WebSeite zur Steuerung des Systems (2 phasenkonfiguration, direktsteuerung) , Analysieren (grafana), Sensor Aufbau, aktionssteuerung. Hardware: Es werden elektronische Module zur Automatisierung entwickelt: Relaystufentrafo, Automatische Lampe (mit automatischer hoehenverstellung)Verwendete Sprachen:
- Python, cpython, c/c++
- Php, Java Script, html, css
- MySQL
- bash
Verwendete Software:
- Raspian
- visual code
- python 3.7
- apache2
- MariaDB (benutze fälschicher weise MySQL als synonym)
- Grafana
- Sensorbibs
Bisher implementiert (links werden nachgetragen) :
DHT22/11
Ds18d20
Soilcapazitätssensor
Div. 6v pumpe
14 relai Platine bis 220v
Mq2 stellvertretend für Co2 sensor… (wird noch ausgetauscht war ein fehlkauf)
Div. 6v relais
2 messpumpen diy
Was noch dazu kommt:
1 Ph Sonde mit shild + ec sensor (hier werde ich mehrere implementieren)
1 Druckminderer
3 durchflusssensoren
1* 4 richtungaventiel magnet gesteuert.
1 Arduino
5* 6v mess pumpen für 12 Euro das Stück
1led panel
1 ventilator
Wasserduechflussventile magnetisch
1 Luftpumpe Sprudel Stein
1 Lüfter dafür eine Trafos Haltung wieder mit arduino mit mehreren relais.
… Da kommen noch Sachen nach je nach Konstellation, dazu kommt das viel Hardware sehr einfach durch ein Relay angesteuert werden, was die extraimplementierung erübrigt.
Unterstützte Systeme:
Erde
Hydroponik:
Dwc
Ebbe Flut
Je nach Konstellation werde ich pigrow Erde schreiben oder pigrow hyd[Art] . Des Weiteren werden im Text Hashes verwendet, die zmb folgendes symbolisieren:
#work => in Arbeit
#todo => hier müssen noch Sachen komplett umgesetzt werden
#nRl => in der nächsten Version
Je nach Konstellation werden andere Sensoren oder Mengen an Sensoren benötigt. Je nach System variiert daher der Aufbau.
Ich gehe bei dwc und Erde immer von einem höstens mit 4 Pflanzen bestücktes Zelt aus, dies soll später er weiter bar sein. Kleiner geht immer ^^
Nun der springende Punkt, ich habe mir mehrere Systeme ausgedacht, jedem liegt es jedoch frei sein System zu gestalten, dann müssten jedoch minimale Änderungen an der Software gemacht werden sowie bei dem dazukonfiguriere, noch nicht implementiert Sensoren. Dafür wird es zwar eine Anleitung geben bei Problemen bin ich aber gerne für euch da.
Der Aktuelle Entwicklungsstand ist: V0.0.2
Software:
Backend Damon Datensammler[watchdog] Der WatchDog, liest alle vorhandenen Sensoren aus der Datenbank aus, baut daran orientiert, die Objekte für sensor lesen zusammen. Danach werden die lesescripte alle 10 secunden (optionaler Wert) getriggert und schreiben, die ermittelten Werte zu Weiterverarbeitung in die DatenbankBackend Damon Aktion[poordog]
Liest die Aktionen aus der Datenbank und führt diese aus.
Zmb, können Aktionen per zeit gesteuert werden: timeaktion, value aktion (wenn ein Wert unter oder überschritten wird), value value Aktion ( Aktion wird von zwei oder mehreren Werten abhängig gemacht)
Liest die Sensor Werte aus der Datenbank vergleicht diese mit soll Werte und führt die Aktionen der Aktion Datenbank aus. Schreibt die Aktion ins Aktivitätsblatt der Datenbank.
MySQL Server
Behinhaltet verschiedene Tabels für, sensor Werte, sensor config, growsensorconfig, grow config…, Aktivität, Aktivität_wert
Aus ihr können alle benötigten Werte zur Einstellung und zum Ablauf gespeichert werden.
Der WatchDog zieht aus der Datenbank alle konfigurierten Sensoren und baut daraufhin seine sensor Objekte aufzubauen. Über die webgui können alle relevanten Daten aus der Datenbank bearbeitet werden: sensor config, Abhängigkeiten, Aktionen, grow config.
Grafana Visualisierung
Mit Hilfe von grafana können Einträge aus der Datenbank visualisiert und überwacht werden. Denn Grafana ist ein Server Tool zur visualisierten Überwachung, so nutzen wir dies zumindest auf der Arbeit als systemintigrator…
Es werden alerts per Mail verschickt wenn konfiguriert grenzen überschritten werden. Damit lässt sich ein kompletter Grow dokumentieren.
Die Aktivität der Sensoren werden hier komplett abgebildet.
Konfigmanager2conf (in der beginner Versionen soll durch guiconfig abgelöst werden)
Der Konfig Manager ist ein Softwaremodul, das erlaubt Grow Einstellungen vorzunehmen. Hiermit werden zwei grundkonfigdateien angelegt. Sie sind die Basis des Grows, es wird die Art des grows beschrieben, die geplante Vegi und Blütenphase, die Grundeinstellungen für jede Phase, wie: Licht, Wärme, co2, giesmenge, sensoreinstellungen…
Diese Einstellungen werden in die Datenbank als Template geladen. Sollten dann Einstellungen per Hand vorgenommen werden, ist es möglich mit der Einstellung die Templates zu überschreiben.
Module:
Dünger Roboter ()
Dies ist eine arduino Komponente, diese wird später per USB mit dem raspberry verbunden Achtung: Diese Komponente befindet sich in der vollen Entwicklung, kleine Tests könnten gemacht werden um ungefähre Werte zu erziehlen. Dies wird noch verfeinert. Aber es stehen noch andere wichtige Komponenten aus, deshalb. AUS GRÜNDEN DES TESTSTADIUMS#todoAufbau
Implementation
Stufentrafo ferngesteuert ()
Dies wird ein Bauelement für den arduino und wird später per USB mit den pi verbunden. Mit diesem Modul wird ermöglicht verschiedene Einstellungen bei Umluft sowie bei der Lampe vorzunehmen. Dieses Modul ist in der Planungsphase und die Prototypteile sind schon bestellt.Aufbau
Software implementation
Implementation Allgemein
Automatisierte Lampe
Diese Lampe soll die hohe der Pflanze mithilfe von Ultraschall und lichtgestützter Sensoren die höhe der Pflanzen ausmessen können und die Höhe der Lampe anpassen können. Mithilfe von Lichtsensor soll die Effektivität des ausstrahlens im Pflanzenschutzraum erhöht werdenInstallation V0. 0.2 Systeme
ERDE
Aufbau
Dwc (Bsp setup)
System 1: [Kasten System] Pflanzen sitzen direkt über der Nährstoffloesung. Hier fungiert der pi erstmal nur als Kontrollinstanz und dokumentationssystem. Der Pi loggt Wasserstand des behälters und Feuchtigkeit des substrates. Dazu sammelt er die Wasser-/umgebungstemperatur und Luftfeuchtigkeit. In der jetzigen Version V0. 0.2 ist die Ansteuerung von Ventilation oder Abluft/zuluft Licht möglich ( alles was sich einfach per Schalter ein und aus schalten lässt) Materialien: Eurokiste 4 x Töpfe 2 x Kapazitätssensor 4 x Ds18D20 Sensoren 1 x dht 22 1 x mq 2 sensor 1 x Lampe 1 x Ventilator 1 x Wasserblubber pumpe mit 6 sprudler(Ph Sonde)
(Ec Sonde)
(*arduino dünger Mischer)
Aufbau 1
E&F
Projekt Dokumentation..
Wie alles Begann: Erstmal eine tüte geschnappt und shoppen gegangen bequem vom Sofa aus.. Material gekauft:Als erstes wollte ich die gieswassertemperatur mitschreiben dazu kaufte ich den Temperatursensor Ds18d20. Dieser kann später auch Bodentemperatur oder NL Messungen übernehmen sowie als Kontrolle zu dem dht sensor Stichwort Mittelwerte von Sensoren.
Für den Mq2, später ein co2 sensor wird ein analog digital umwandler benötigt und ein logik Level konverter. Ich habe das MCP 3008 Modul genommen und das TXS:
MCP 3008 10Bit 8Channel
TXS0108E Logic Level Converter 8 Kanal
Danach kümmerte ich mich um die eigentliche Problematik das Gießen mit einem Automatische Bewässerungsset, welches ich noch als ‚fehlkauf‘ Werte, die Kapazitätssensoren sind top, müssen jedoch unterschiedlich kalibriert werden. Der Trick besteht darin das der sensor einen elektronischen Wiederstand misst und dazu einen Wert ausgibt zw 0 und 1000. Um zu kalibrieren muss dazu ein null Wert registriert werden und einen 100 Prozent Wert. Danach kann die Prozentzahl durch Dreisatz ermittelt werden. Es hat sich rausgestellt das in kleinen Tests der sensor relativ zuverlässig ist. Doch die mitgelieferten pumpen sind der absultute Schrott, das Stromkabel ist viel zu kurz als das man die Pumpe in einen Liter Topf daneben stellt… Die Durchsatzmenge der Pumpe ist viel zu variabel um damit Messungen durchzuführen… In Tests ging dies nur bei einem festen setup bei dem sich der Druck Druck im Schlauch nicht verändert. Dies ist aufgefallen als die pumpen für den dünger Roboter hätten eingesetzt werden sollen. Deshalb werden dafür nun Messpumpen genutzt. Diese sollten auch bei kleinen Änderungen noch zuverlässig sein.
Nachdem die Sensoren ankamen, wurden direkt der Raspi4 mit rasbian geflasht und ein raspi3b+. Der raspi3b+ wird momentan als entwicklungsdevice benutzt, wird aber sobald mehr Performance gebraucht wird von meinem pi4 abgelöst und als reines testdevice ausrangiert. Nach dem flashing wurde eine LAN - verbindung hergestellt.
Mein Vorgehen ist nun so konzepiert, daß ich jeweils das einzelmodul teste wie es sich in diversen Tests schlägt… Dazu lasttests die 2 Woche anhalten… (nichts im Vergleich zu den späteren) und einmal die ganze Software.
Leider merk ich immer wieder, daß trotz all dem einem die Software Tests nicht erspart bleiben und sogar mehr als notwendig sind, sowie Performancetests die die Zeit einberechnen wie lange das durchlaufen eines Stück Codes dauert. Dies ist alles sehr zeitintensiv und muss immer wieder abgewogen werden.
Danach wurden die Befehle (apt-get kann durch apt ersetzt werden) :
sudo apt-get update
sudo apt install mysql-server - y
sudo echo „deb https://packages.grafana.com/enterprise/Deb stable main“ | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get install grafana-enterprise - y
sudo apt install python-dev
eingegeben und die MySQL sowie die Grafana Installation ausgeführt, als nächstes wurde die Entwicklungsumgebung installiert bzw einen Editor den visual code.
sudo apt install code
Nun werden alle benötigten Pakete installiert die zur Entwicklung benötigt werden:
@me ergänzen und ausführen
(gcc)
(python3.7,3.5)
(java runtime)
Danach müssen noch wichtige Einstellungen im Betriebssystem selbst geändert werden:
@me ergänzen und ausführen
- ssh public key
- PI Schnittstellen freigeben: raspi-config
- gpio remote
- vnc
- SPI (für mcp3008)
- die Werte in der boot Datei einsetzen @me korrekte Werte nachlesen
- wlan Passwort setzen
Es wurden die Pakete für die Sensoren installiert: - Dht22 die dht bib:
sudo pip3 install adafruit-circuitpython-dht
sudo apt-get install libgpiod2 - MQ2 Sensor die mq bib:
git clone GitHub - tutRPi/Raspberry-Pi-Gas-Sensor-MQ: Raspberry Pi Library for several MQ Gas Sensors (MQ-2, MQ-3, etc.) - Kapazität Feuchtigkeit die spi-dev:
git clone git://github.com/doceme/py-spidev
(ja mir ist bewusst das ich hier ganze Projekte und nicht nur eine Bib downloade, aber keine Angst, ich nehme mir aus den Projekten nur was ich brauch… Aber warum sollte ich mir alles neu bauen? Nachdem die Sensor scripts vollständig sind werde ich sie oben in den jeweiligen Punkten verlinken. )
Die ersten black box versuche:
Projekthub Aufbau NFT
Mit dieser konfig habe ich ein paar Tests gemacht damals noch mit growpi(c++ based) .
Wasserstand Analyse,
Luftdaten, Temperatur, Feuchtigkeit erfassen.
Aktionen nach Zeit, Aktionen auf Reaktionen.
Nun aber ist dies eine kleine teststation um die die Funktionen für growpi(python based) zu analysieren.
Hier mal einen Ausschnitt aus dem ersten Testcase.
Das war der kleine lese Daten Daemon in seiner Anfangszeit mittlerweile sieht er etwas aufgeräumter aus, die Sensoren haben eigene Klassen bekommen. Der Aufbau der Sensoren wird dynamisch aus der Datenbank entnommen und aufgebaut… Den Daemon kann ich gerne als quellcodedatei hochladen falls jemand daran interesse hätte sowie die sql statements dazu.
Warum habe ich nicht direkt ein grow Zelt?
Weil ich hiermit ganz gezielt bestimmte szenarien nachbilden kann, zmb wasserleck im Tank.
Was passiert? Und das ganz ohne 30 Liter abpumpen zu müssen.
Nun wird es aber ins grösere verlagert.
Weist mich gerne auf Lücken oder Logikfehler hin.
Das Projekt wie die Dokumentation ist in Arbeit und wird intensiv bearbeitet, dabei schleichen sich gedanklich wie logisch leider Fehler ein. Danke für euer Feedback und eure Mitarbeit.
Noch in Arbeit!!!
[/quote]