Bis sich Gemüse aus dem eigenen Gewächshaus ernten lässt, braucht es viel Mühe und Zeit. Einen Teil der Aufgaben können Sie getrost an einen Raspberry Pi abgeben.
Zugegeben: Beim Umsetzen unserer Gewächshaussteuerung mussten wir nicht ganz bei null anfangen. Eine ältere Steuerung existierte bereits, mit der wir ein wenig Erfahrung gesammelt hatten. Darauf aufbauend sollten für die klappbaren Dachfenster (Abbildung 1) elektrische Fensterheber zum Einsatz kommen. Ein Ventilator sollte die Luft im Haus bewegen. Wenn in der Übergangszeit die Nachttemperaturen fallen, sollte außerdem automatisch eine Heizung anspringen. Im Sommer gilt es dagegen, die Bepflanzung vor zu hohen Temperaturen zu schützen.

Abbildung 1: Die automatische Steuerung des Gewächshauses regelt beispielsweise das Öffnen und Schließen der Dachfenster.
Wir wünschten uns eine intelligente Steuerung, die auch die Außentemperatur mit einbeziehen sollte, um bei kühlen Abenden rechtzeitig die Fenster zu schließen und so für unsere Pfleglinge einen Wärmespeicher für die Nacht aufzubauen. Dabei wollten wir uns außerdem an die unterschiedlichen Lichtverhältnisse der verschiedenen Jahreszeiten anpassen. Dazu benötigten wir eine zuverlässige Uhr.
Zusätzlich sollten sich sämtliche Funktionen aus der Ferne bedienen lassen, sodass man per Web eingreifen kann, wenn Grenzwerte überschritten werden. Ein Aktivitäten-Log, das Meldungen aus dem laufenden Betrieb sammelt, sollte sich ebenfalls remote einsehen lassen, ohne immer die Anzeige am Gewächshaus aufsuchen zu müssen. Um all das zu realisieren, nutzten wir einen Raspberry Pi Pico W. Neben der notwendigen Peripherie übernimmt er nun die komplette Logik und stellt einen Webserver bereit.
Inbetriebnahme
Im Unterschied zu den Einplatinencomputern aus der Raspberry-Familie braucht es beim Pico nur wenig Vorbereitung. Wir verwenden die WiFi-Variante, da ohne Verbindung ins heimische WLAN eine Fernbedienung unserer Steuerung nicht funktionieren würde. Für die Programmierung benötigten Sie darüber hinaus einen USB-Anschluss. In der Entwicklungsphase beschicken Sie den Controller mit den entsprechenden Befehlen aus der speziellen Python-IDE Thonny heraus von außen. Zum Abschluss müssen Sie Ihren Code jedoch permanent auf den Baustein übertragen.
Ein Vorteil von Microcontrollern gegenüber Rechnern mit Filesystem liegt an deren Robustheit. Hier besteht nicht die Gefahr, dass etwa die SD-Karte oder die Festplatte durch einen Stromausfall Schaden nehmen. Schließlich brauchen Sie Ihre Steuerung beim Abschalten auch nicht vorher definiert herunterzufahren, sondern betätigen lediglich den Netzschalter. Im Gegenzug müssen Sie dann aber, wie beim Pico, mit weniger Ressourcen oder ohne Echtzeituhr mit Batteriepufferung zurechtkommen. Für unsere Steuerung spielte das allerdings keine Rolle, weil wir ohnehin eine extra Realtime Clock (RTC) vorgesehen hatten, die sich mit einem Zeit-Server im Internet austauscht. Außerdem spendierten wir dem Projekt einen elektrischen löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), der sich die letzten Einstellwerte merkt.
Aufbau
Das LCD-Display und die RTC sind mit Pico per I2C-Bus verbunden, beide Temperaturfühler per 1-Wire-Bus. Bei den LED, die drei Ports belegen, sind darüber hinaus Transistoren vorgeschaltet. Damit der Pico auch die großen Verbraucher wie Fensterheber und Heizung (230V) regulieren kann, verwenden wir eine Relaisplatine, deren sechs Eingänge wir ebenso über die GPIOs des RasPi steuern. Der Pico sitzt bei uns in einer Fassung und auf einer eigenen kleinen Platine. Alle sonstigen Komponenten (Abbildung 2) verbanden wir über Steckkupplungen und brachten sie in einem Hutschienengehäusen unter. Das sollte helfen, um im Servicefall den Überblick zu behalten, und alle Komponenten leicht voneinander trennen zu können.

Abbildung 2: Die Komponenten der Installation sind über Steckverbinder mit der Pico-Platine verbunden.
Ein 5V-Netzteil versorgt die gesamte Schaltung. Für die Fenstermotoren sind 12V nötig. Bei Aktivität braucht es dort tatsächlich eine relativ hohe Stromstärke. Um diese Versorgung nicht ständig im Leerlauf zu lassen, und auf DC/DC-Wandler verzichten zu können, schalten wir das 12V-Motornetzteil erst im Bedarfsfall über ein Relais zu. So arbeiten wir meistens mit einem genügsamen 5V-Kreis und sparen Kosten. Welche Komponenten im Einzelnen für unser Projekt zum Einsatz kommen, entnehmen Sie bitte dem Kasten “Bauteilliste”.
Bauteilliste
- Raspberry Pi Pico W
- LCD-Panel mit I2C-Controller
- DS1307-Echtzeituhr mit EEPROM AT24C32N
- DS18B20-Temperaturfühler
- 2 elektrische Fensterheber 12V
- sechsfache Relaisplatine
- LED-Platine
- Transistoren, Widerstände
- 5V und 12V-Versorgung (für die Hutschiene)
- Sicherungsautomat (für die Hutschiene)
- diverse Leergehäuse (für die Hutschiene)
- Gehäuse (Sicherungskasten)
- Verkabelung, Installationsmaterial
Der größte Teil der Hardware findet in einem vorgefertigten Gehäuse Platz – ein Sicherungskasten mit wetterfester Dichtung (Abbildung 3). Wir wollten den Vorteil eines Hutschienengehäuses nutzen, um einzelne Module auf einfache Weise nebeneinander anordnen und austauschen zu können. Was neben Sicherungsautomat und Netzteilen nicht standardmäßig passt, brachten wir in Leergehäusen für die Hutschiene unter, beispielsweise die LCD-Anzeige, Schalter und LED. In deren Gehäusen bleibt dann noch genügend Luft, um weiter hinten den Pi, die Relaisplatine und die restliche Elektronik zu verbauen. Das ergab eine übersichtliche Front.
Nach draußen verlegten wir wasserdicht durch das Gehäuse die Leitungen zu den Hebemotoren, zum Ventilator, der Heizung, dem Türkontakt, den Temperatursensoren und der Netzverbindung. Alle Außenleitungen gehen im Inneren zuerst auf Klemmverbinder, um das Steuer- und Bediengehäuse getrennt von der restlichen Außeninstallation testen und einfach montieren zu können.
Steuerung
Schauen Sie sich die wenigen käuflichen Alternativen an, stellen Sie schnell fest, dass diverse Regler oft nur auf Thermostate beschränkt sind und sich schlecht erweitern lassen. Wir wollten jedoch unser eigenes Zubehör verwenden und alles programmieren können. Für den Betrieb unserer Lösung nutzen wir, wie beim Pico üblich, ein zentrales Steuerskript main.py. In dessen Quelltext fügten wir zudem gleich die Methoden für den LCD-Controller und DS1307-Chip ein.
Bei der Entwicklung kam die Python-IDE Thonny (Abbildung 4) zum Einsatz, die den Pico nahtlos integriert. Als Programmiersprache diente uns Micropython. Wenn Sie einen Baustein ohne Micropython erworben haben, müssen Sie sich zunächst um das Laden der aktuellen Firmware kümmern. Dafür finden Sie zahlreiche, gute Anleitungen im Internet.
Nach dem Anlegen der Betriebsspannung prüft der RasPi inital, ob alle Komponenten vorhanden sind, und ob sich die gesamte Peripherie per I2C- oder 1-Wire-Bus erreichen lässt. Trifft das zu, lässt sich die Anlage in Betrieb nehmen. Bei weniger schwerwiegenden Ereignissen, wie bei fehlender Internetverbindung oder nicht erreichbarem Zeit-Server, fährt er weiter fort und versucht zu einem späteren Zeitpunkt erneut Kontakt aufzunehmen. Danach startet der Pico eine Anschlagfahrt der Fenster nach unten, um deren Nullpunkt einzustellen, falls sie geöffnet waren. Unsere Fensterheber haben interne Endschalter, sodass wir da nichts zum Pi verbinden mussten.
Im ständigen Loop werden dann die aktuellen Betriebswerte abgefragt und auf die vorgesehenen Ober- und Untergrenzen für das Schalten der Aktoren überprüft. Daraufhin schließen sich entsprechende Aktionen an. Darin liegt die eigentliche Intelligenz unserer Anlage, bei der eine Vielzahl von Innen- und Außenbedingungen eine Rolle spielen. So ist beispielsweise für die Ventilation wichtig, ob die Eingangstür offen oder geschlossen ist. Darüber hinaus existieren für alles unterschiedliche Schaltwerte je nach Jahreszeit, weil dabei Klimaparameter wie die Sonneneinstrahlung unterschiedlich ausfallen. Die Steuerung kümmert sich außerdem um verschiedene Hysteresen je nach Tageszeit, damit nicht ständig umgeschaltet wird. Am Abend gewährleisten zum Beispiel länger ruhende Fenster einen gewissen Wärmespeicher für die kommende Nacht.
Außerdem übernimmt das Skript die Anzeige der aktuellen Werte auf dem LCD-Display des Bedienpanels an der Außenwand und füllt die Logs, die Sie in der Web-App einsehen. Erwünschte, geplante Aktionen finden sich im Message-Log. Ausnahmen, wie ein Sensorausfall oder das Überschreiten von Maximal- oder Minimaltemperatur, fließen als Fehler oder Warnung in einen separaten Error-Log und werden längere Zeit vorgehalten. So informieren Sie sich am Ende eines Tages mit einem kurzen Blick in die App oder auf das LCD-Display.
Die entsprechenden Schaltwerte legen Sie im Quelltext als Konstanten standardmäßig fest. Im EEPROM-Speicher, den Sie auch von der Web-App aus beschreiben können, lassen sich die Konstanten später bei Bedarf individuell anpassen. Damit die App überhaupt funktioniert, versucht das Skript nach einem Verbindungsverlust in regelmäßigen Abständen immer wieder neu, eine Verbindung aufzubauen. Die genaue Uhrzeit wird ebenfalls regelmäßig neu synchronisiert. Generell sollte der Micropython-Interpreter des Pi möglichst nie stoppen und die Steuerung unbedingt aufrecht erhalten.
Damit der laufende Betrieb und die Aktualisierung der Weboberfläche parallel vor sich gehen können, arbeiten wir mit uasyncio. Die Bibliothek liefert einen asynchronen Scheduler, der der Anwendung Zeit für beide Aufgaben verschafft. Ein passendes Tool für unsere Zwecke, um einerseits einen flüssigen Ablauf bei der Bedienung (kurze Reaktionszeit nach dem Drücken eines Buttons im Web) und andererseits eine reibungslose Programmabarbeitung (keine langen Wartezeiten beim Abfragen vom Webserver) zu gewährleisten.
Selbstverständlich sollen sich alle Funktionen alternativ manuell steuern lassen. Dafür trennt ein mehrpoliger Schalter die Aktoren von der Steuerung ab, um anschließend ohne Konflikt zur Automatik jedes der beiden Fenster in die gewünschte Stellung bringen zu können, und Ventilator sowie Heizung einzustellen. Manuell schalten wir auch die Beleuchtung vom LCD-Display, damit es sich am Abend gut ablesen lässt.
Fernbedienung per Web
Unsere Steuerung funktioniert zuverlässig offline. Ein Remote-Zugang per Web-App (Abbildung 5) sollten Sie sich aus unserer Sicht jedoch gönnen, um nicht alles vor Ort ablesen zu müssen. Zudem müssen Sie dementsprechend das Bedienpanel am Gewächshaus nicht allzu aufwendig gestalten. Dazu kann der Pico einen Webserver ausführen, der dann eine Bedienoberfläche bereitstellt. Nach Belieben können Sie die Oberfläche zusätzlich im Internet freigeben, bei uns lässt sie sich ausschließlich im lokalen Netzwerk erreichen. Abbildung 5 zeigt nur den ersten Bildschirm.

Abbildung 5: Dank einer durch den Webserver bereitgestellten Bedienoberfläche, kann das Bedienpanel ruhig etwas spartanischer ausfallen.
Die Funktionen unserer App sind:
- Sofortanzeige der aktuellen Werte,
- Minimal-/Maximaltemperaturen und Einschätzung des Betriebszustands,
- Fenster, Ventilator, Heizung manuell schalten,
- variabel auf Autosteuerung zurücksetzen,
- Message- und Error-Logs anzeigen und löschen,
- Verlaufsgrafiken der Temperaturen innen/außen pro Tag und Monat,
- Stellparameter vom Speicher lesen und schreiben.
Da sich der Pico immer in Reichweite des heimischen WLAN befindet, haben wir damit die Lage im Gewächshaus ständig unter Kontrolle und können per Smartphone, Tablet oder PC von Grundstück oder Wohnung aus eingreifen.
Fazit
In unserem Gewächshaus herrscht von April bis Oktober ständiger Hochbetrieb. Dementsprechend sollte eine elektronische Regelung nicht nur funktional, sondern vor allem betriebssicher sein. Zum Schutz der Pflanzen empfiehlt es sich bei einem solchen Vorhaben, im Vorfeld modulweise und gründlich zu testen, bevor man alles in Betrieb nimmt. Haben Sie die Anlage erst einmal draußen installiert, kommen Sie später mitunter nur schwer an einzelne Bauteile.
Unsere neue Steuerung läuft inzwischen einige Zeit und hat sich bisher für das Gewächshaus (Abbildung 6) eindeutig bewährt. Beruhigend, wenn man weiß, dass in Abwesenheit alles gut aufgehoben ist. Mitunter sind es Kleinigkeiten, die eine Rolle spielen, wie unsere LED-Ampel, die schon beim Vorbeilaufen am Häuschen davon kündet, ob alles in Ordnung geht. In einem nächsten Ausbauschritt wollen wir es mit Feuchtesensoren ausstatten, um auch den Erdboden zu beobachten. Auf GitHub unter https://github.com/swenae/ghouse stehen Ihnen die Software und alle weiteren Informationen zum Projekt zu Verfügung. jcb/csi
Der Autor
Swen Hopfe arbeitet bei einem mittelständischen Unternehmen mit Schwerpunkt Chipkarte und NFC. Wenn er nicht gerade beim Fotografieren, in der Natur oder im Garten unterwegs ist, beschäftigt er sich mit Themen rund um den RasPi, IoT und Hausautomation.








