Home - plantalytix/fridgegrow2.0 GitHub Wiki
- Was ist Plantalytix und Fridge Grow 2.0?
- Für was ist das github-Repository
fridgegrow2.0
von Plantalytix? - Was beinhaltet das Repository?
- Welche Möglichkeiten ergeben sich durch eine eigene Steuerung des Fridge Grow 2.0?
- Was ist für den Betrieb im “direct mode” technisch notwendig?
Details zur Umsetzung:
Plantalytix bietet smarte Grow-Lösungen für deinen Home Grow. Fridge Grow 2.0 ist die vollautomatische Growbox von Plantalytix. Auf folgenden Seiten findest du mehr Infos und den Shop, wo du das Growbox-Komplettset bestellen kannst.
Das Repository bietet erfahrenen und technisch versierten AnwenderInnen der Growbox “Fridge Grow 2.0” die Möglichkeit, eigene Steuerungen abseits der vollautomatischen Klimaprogramme zu erstellen. In diesem Repository wird exemplarisch gezeigt, wie die Sensorwerte (Temperatur, relative Feuchtigkeit etc.) der Growbox ausgelesen werden können, Steuerparameter (Heizung, Entfeuchtung etc.) gesetzt werden können und somit der direct mode
verwendet werden kann.
Für den regulären Gebrauch der Growbox ist dieses Repository nicht geeignet. Dafür wird die Verwendung der vollautomatischen Klimaprogramme von “Fridge Grow 2.0” empfohlen.
Plantalytix bietet für dieses Repository und den Betrieb der Growbox im direct mode
KEINEN SUPPORT.
Das Repository beinhaltet die notwendigen Konfigurationsdateien für eine externe Steuerung im direct mode
der Growbox “Fridge Grow 2.0”. Die nötige Anleitung dazu findest du hier in diesem Wiki weiter unten. Es handelt sich um ein Minimalbeispiel, von dem ausgehend eigene Steuerungen programmiert werden können. Die Steuerung wird mit Docker-Containern von folgenden Softwareanwendungen realisiert:
- Eclipse Mosquitto (ein MQTT-Broker)
- InfluxDB (ein Datenbankmanagementsystem)
- Node-RED (ein grafisches Programmierwerkzeug)
- Grafana (eine Anwendung zur grafischen Darstellung von Daten)
Durch den Einsatz von Docker-Containern ist der Betrieb in jedem modernen Betriebssystem möglich (Linux, Windows, Mac, Raspberry Pi OS, etc.).
Welche Möglichkeiten ergeben sich durch eine individuelle Steuerung im direct mode
des Fridge Grow 2.0?
Individuelle Steuerungen ermöglichen es, Fridge Grow 2.0 für Anwendungen abseits der voreingestellten und automatischen Klimaprogamme zu nutzen. Einige Anwendungsbeispiele von Fridge Grow 2.0:
-
Thermocycler
-
Klimakammer
-
Kontrollierte Atmosphäre
-
Kontrollierte Entfeuchtung
-
Molekularküche
-
Pasten- und Salbenherstellung
-
Kontrollierte Abkühlung
-
Kontrollierte Erwärmung
-
und vieles mehr - die Kreativität experimentierfreudiger AnwenderInnen wird noch viele Anwendungen hervorbringen!
- Das Growbox Komplettset “Fridge Grow 2.0” von Plantalytix (hier zu bestellen).
- Einen Steuerungscomputer, der während des Betriebs immer laufen muss (PC, Server, Mini-PC oder Ähnliches). Die genauen Anforderungen sind unten zu finden.
- Ein gemeinsames WLAN, mit dem die Growbox und der Computer verbunden sind.
- Für die Installation eine schnelle Internetverbindung des Computers und ca. 550 MB Datenvolumen.
Diese Anleitung ist gültig für einen Steuerungscomputer, der mit Ubuntu oder einer anderen Linux-Distribution (z.B. Raspberry Pi OS) läuft. Für andere Betriebssysteme müssen die Schritte entsprechend angepasst werden. In Links auf externe Anleitungen dort bitte immer die Anleitung für das entsprechende Betriebssystem verwenden.
Die Inbetriebnahme und die Bedienung des Moduls der Growbox sind ausführlich in der Originalbetriebsanleitung von Fridge Grow 2.0 beschrieben. Es wird einige Male auf diese Betriebsanleitung verwiesen. Downloade sie bitte und mache dich damit vertraut. Finden kannst du sie im Infohub von Plantalytix unter "Download" oder im direkten Link hier.
Die einzelnen Installationsschritte:
- Die Umgebung aufsetzen
- Installation von Docker
- Herunterladen des Respositorys
- Starten der Docker-Container
- Einstellen des Moduls (Einschubs) der Growbox
- Überprüfen, ob die Verbindung zwischen dem Modul und dem MQTT-Broker aktiv ist
- InfluxDB einstellen
- Node-RED einrichten und Flow starten
- Überprüfen, ob Daten in influxdb ankommen und gespeichert werden
- Grafana einrichten und Daten darstellen
- Eigene Steuerung programmieren
Folgendes muss für eine eigene Steuerung im direct mode
vorhanden sein. Nur wenn die folgenden vier Punkte erfüllt sind, ist der Betrieb möglich!
- Einen Steuerungscomputer, der während des Betriebs immer laufen muss (PC, Server, Mini-PC oder Ähnliches).
- Ein Betriebssystem, welches up-to-date ist. Am besten eignet sich ein linux-basierendes Betriebssystem wie Ubuntu oder Raspberry Pi OS.
- Ein gemeinsames WLAN, mit dem die Growbox und der Computer verbunden sind. Das Verbinden der Growbox mit dem WLAN ist in der Originalbetriebsanleitung von Fridge Grow 2.0 unter dem Kapitel "Verbindung mit dem Heimnetzwerk" zu finden (in der Originalbetriebsanleitung wird das WLAN als "Heimnetzwerk" bezeichnet).
- Eine fixe IP für den Steuerungscomputer.
- Am Steuerungscomputer ein Speicherplatz, wo die Daten der Docker-Container (inklusive Messdaten) liegen werden. Auf diesem Platz wird der unten genannte Ordner
fridgegrow2.0-main
entpackt werden. Dieser Ordner muss auch für nicht-root (nicht-Admin) Benutzer volle Zugriffsrechte erlauben. Für die Installation werden ca. 70 MB Speicherplatz benötigt. Mit der Zeit wird der Platzbedarf Aufgrund der Messdaten anwachsen.
- Auf dieser Seite findest du die Links zu den Installationsanleitungen für die
Docker Engine
(für Linux-basierte Systeme wie z.B. Ubuntu und Raspberry Pi OS) undDocker Desktop
(für macOS und Windows). Folge dem Link für das Betriebssystem deines Computers und installiere Docker wie dort beschrieben. Beachte die dort beschriebenen Systemvoraussetzungen. - Vergewissere dich, dass Docker erfolgreich installiert wurde, z.B. mit dem
hello-world
Docker Image. Die Anleitung dazu ist üblicherweise in der Docker-Installationsanleitung am Schluss zu finden. - Nach der Installation musst du Einstellungen machen, damit Docker und die nötigen Container verlässlich laufen. Dies hat mit User-Rechten in den Betriebssystemen zu tun. Für Linux-basierte Betriebssysteme ist der Schritt "Manage Docker as a non-root user" notwendig. Für andere Systeme ist dieser Schritt in der jeweiligen Installationsanleitung zu finden.
- Lade folgende zip-Datei auf deinen Computer: https://github.com/plantalytix/fridgegrow2.0/archive/refs/heads/main.zip
- Entpacke den darin enthaltenen Ordner
fridgegrow2.0-main
an den oben ausgewählten Speicherplatz, wo auch nicht-root Benutzer volle Zugriffsrechte haben. In Linux bietet sich das eigene Home-Verzeichnis (~/
) an. - Vergewissere dich nochmals, dass nicht-root Benutzer volle Zugriffsrechte auf den gespeicherten Ordner und alle sub-Ordner und darin enthaltene Dateien haben.
- Navigiere in den oben entpackten Ordner und dort in den Unterordner
plantalytix
. Darin findest du die Dateicompose.yaml
. Diese Datei muss mit Docker gestartet werden. In Linux funktioniert das so:- Öffne ein Terminal und navigiere in den Ordner, in dem die Datei
compose.yaml
liegt. - Führe folgenden Befehl aus:
docker compose up -d
- Öffne ein Terminal und navigiere in den Ordner, in dem die Datei
- Beim ersten Ausführen von Docker werden die nötigen Dateien heruntergeladen (ca. 550 MB). Danach werden die Docker Services geladen. Diese sind die Container
- plantalytix-mosquitto
- plantalytix-influxdb
- plantalytix-nodered
- plantalytix-grafana
sowie das Docker-Netzwerk
- plantalytix_default
Im Terminal sieht dies nach erfolgreichem Starten typischerweise so aus und kann danach geschlossen werden:
- Falls ein Service nicht erfolgreich startet, dann muss dies behoben werden, bevor die weiteren Installationsschritte ausgeführt werden. Dazu bitte das Internet zu Docker befragen. Auch der Befehl
docker compose logs -f
ist für die Fehlersuche hilfreich. Dieser Befehl zeigt alle Log-Einträge der Services an.
- Sammle Erfahrung mit den voreingestellten Klimaprogammen.
- Das Modul bzw. das Growbox-Komplettset muss installiert sein und über das Portal in Betrieb sein. Folge dazu den Kapiteln "Aufstellung und Montage" und "Inbetriebnahme" der Originalbetriebsanleitung. Der Betrieb im "Normalmodus" über das Portal ist notwendig, damit die Firmware auf dem aktuellen Stand ist. Außerdem kann dann jederzeit vom
direct mode
wieder auf den "Normalbetrieb" und die voreingestellten Klimaprogramme gewechselt werden. - Aktivieren des
direct mode
:- Gehe im Menü am Display des Moduls in den Menüpunkt
WiFi Connection
. Wie du im Menü am Display navigierst, findest du in der Originalbestriebsanleitung unter "Einstellungen direkt über das Display vornehmen". - Gehe in das Untermenü
custom connection
. - Navigiere zum Menüpunkt
MQTT Server
. Gib dort die IP des Steuerungscomputers ein.
- Gehe im Menü am Display des Moduls in den Menüpunkt
- Wenn du nur ein Modul betreibst, dann musst du nur die IP-Adresse des Steuerungscomputers eingeben. Lass die restlichen Einstellungen so, wie sie voreingestellt sind (MQTT User, MQTT Port, MQTT Password, MQTT Identifier, .
- Navigiere zum Menüpunkt
connect
. Drücke den Drehknopf neben dem Display. Es erscheint die Meldungconnected
. Drücke den Drehknopf erneut. Das Modul startet nun neu und befindet sich imdirect mode
.
- Um aus dem
direct mode
wieder in den Normalbetrieb zu wechseln:- Gehe im Menü am Display des Moduls in den Menüpunkt
WiFi Connection
. - Gehe in das Untermenü
custom connection
. - Navigiere zum Menüpunkt
disconnect
. Drücke den Drehknopf neben dem Display. Das Modul wechselt nun in den Normalbetrieb.
- Gehe im Menü am Display des Moduls in den Menüpunkt
Dieser Schritt ist nicht zwingend notwendig, wird aber stark empfohlen. Ohne der funktionierenden Verbindung via MQTT zwischen dem Modul und dem MQTT-Broker funktionieren die weitern Schritte nicht.
Mit dem Programm MQTT-Explorer kann die Verbindung einfach getestet werden. Dazu das Programm am Steuerungscomputer downloaden, installieren und öffnen. Dort folgende Werte einstellen:
Feld | Wert |
---|---|
Name | frei wählbar, z.B. plantalytix-mqtt-test
|
Validate certificate | aktivieren |
Encryption (tls) | deaktivieren |
Protocol | mqtt:// |
Host | localhost |
Port | 1883 |
Username | leer lassen |
Password | leer lassen |
Dann auf CONNECT
klicken.
Nun sollten alle 10 Sekunden die aktuellen Werte, die über MQTT vom Modul übertragen werden, im MQTT-Broker als neue Nachrichten aufscheinen. Neue Nachrichten sind erkennbar, indem das Topic kurz aufblinkt. Hier ein Beispiel:
- In einem Browser am Steuerungcomputer zur Adresse http://localhost:8086 gehen.
- Dann öffnet sich der Login-Screen von InfluxDB. Dort mit folgenden Zugangsdaten einloggen:
- user:
my_influxdb_admin
- password:
my_influxdb_password
- user:
- Nach erfolgreichem Login kann das Browserfenster geschlossen werden.
- In Node-RED müssen noch notwendige Packages installiert werden. Öffne dazu ein Terminal und gib folgendes ein:
docker exec -it plantalytix-nodered /bin/bash
cd /data
-
npm install node-red-contrib-hysteresis node-red-contrib-influxdb node-red-node-pidcontrol
(etwaige "notices" können ignoriert werden) exit
docker stop plantalytix-nodered
docker start plantalytix-nodered
- Das sieht danach so aus:
- Du kannst das Terminal schließen.
- In einem Browser am Steuerungcomputer zur Adresse http://localhost:1880 gehen.
- Das Willkommensfenster in Node-RED kannst du schließen.
- Es können folgende Fehlermeldungen aufscheinen:
Credentials could not be decrypted. The flow credential file is encrypted, but the project's encryption key is missing or invalid. The flow credential file will be reset on the next deployment. Any existing flow credentials will be cleared.
HttpError: unauthorized access
- Das Fenster mit diesen Fehlermeldungen kannst du mit
Close
schließen.
-
Ein Token im influxdb-node-server muss noch richtig gesetzt werden. Dazu
- Im Flow auf einen
influxdb-out
-node doppelklicken.
- Auf das Bleistift-Symbol klicken.
- Unter "Token" folgendes eingeben:
my_token
- Auf "Update" klicken
- Auf "Done" klicken
- Im Flow auf einen
-
Achtung, wenn der Flow im nächsten Schritt gestartet wird, sind standardmäßig folgende Werte gesetzt. Diese Werte sind als
Global Environment Variables
unter den Settings in Node-RED gesetzt und hier zu finden:
Name der Variable | voreingestellter Wert | Beschreibung | Wertebereich / Einheit |
---|---|---|---|
FAN_EXTERNAL_SETPOINT | 1 | Sollwert des externen Lüfters (Drehlüfter) | 0 - 1 (entspricht 0 - 100%) |
TEMPERATURE_SETPOINT | 19 | Sollwert der Temperatur | °C |
LIGHT_RANGETEMPERATURE_LOW | 20 | Untere Temperaturschranke, oberhalb der die Beleuchtung gedimmt wird | °C |
LIGHT_RANGETEMPERATURE_HIGH | 21 | Obere Temperaturschranke, oberhalb der die Beleuchtung auf 0 gedimmt wird | °C |
LIGHT_SETPOINT | 0.5 | Sollwert der Beleuchtung | 0 - 1 (entspricht 0 - 100%) |
HUMIDITY_SETPOINT | 50 | Sollwert der relativen Feuchte | 10??? - 90??? (in % rf) |
HUMIDITY_THRESHOLD_LOW | 45 | Untere Feuchtigkeitsschranke für die Regelung der Entfeuchtung | % rf |
HUMIDITY_THRESHOLD_HIGH | 55 | Obere Feuchtigkeitsschranke für die Regelung der Entfeuchtung | % rf |
CO2_SETPOINT | 6000 | Sollwert des CO2-Gehalts | ppm (parts per million) |
CO2_INJECT_DELAY | 120000 | Pause zwischen Ventilöffnungen der CO2-Zufuhr | ms (Millisekunden) |
CO2_INJECT_DURATION | 500 | Zeitspanne, in der das Ventil der CO2-Zufuhr offen bleibt | ms (Millisekunden) |
LIGHT_SUNRISE | 08:00 | Uhrzeit (UTC) zu der die Beleuchtung eingeschaltet wird | Uhrzeit in UTC |
LIGHT_SUNSET | 22:00 | Uhrzeit (UTC) zu der die Beleuchtuns ausgeschaltet wird | Uhrzeit in UTC |
- Den Flow mit
deploy
starten. Es kann kurz die Meldung aufscheinen "unused nodes". Diese verschwindet nach einiger Zeit von alleine.
- In der Flow-Ansicht kommen nun alle zehn Sekunden die aktuellen Werte des Moduls an. Dies kann in den debug-Messages überprüft werden. In der Liste scheint alle zehn Sekunden eine neue Nachricht auf.
- In influxdb einloggen, wie oben beschrieben.
- Links auf
Data Explorer
klicken (Screenshot?). DerData Explorer
öffnet sich. Dort nun Daten darstellen lassen, z.B. so:-
my_bucket
auswählen im ReiterFROM
-
sensors
auswählen im erstenFilter
-Reiter -
temperature
auswählen im zweitenFilter
-Reiter -
°C
auswählen im drittenFilter
-Reiter -
Past 1h
als Zeitraum auswählen - Eventuell muss auf
SUBMIT
geklickt werden
-
- Der Graph der Temepratur ist nun sichtbar.
- In einem Browser am Steuerungcomputer zur Adresse http://localhost:3000 gehen.
- Dann öffnet sich der Login-Screen von Grafana. Dort mit folgenden Zugangsdaten einloggen:
- user:
my_grafana_admin
- password:
my_grafana_password
- user:
-
Einrichten der Datenquelle (
data source
):- Im Grafana-Menü auf
Connections
->Data sources
klicken - Dort auf
Add data source
klicken
- Aus der Liste
Time series databases
:InfluxDB
auswählen
- Dort in den
influxdb
-Settings
folgendes eingeben:
- Im Grafana-Menü auf
Feld | Wert |
---|---|
Name | frei wählbar, z.B. influxdb
|
Query language | Flux |
HTTP: URL | http://plantalytix-influxdb:8086 |
HTTP: Allowed cookies | leer lassen |
HTTP: Timeout | leer lassen |
Auth |
Basic Auth aktivieren, den Rest deaktiviert lassen |
Basic Auth Details: User | my_influxdb_admin |
Basic Auth Details: Password | my_token |
Custom HTTP Headers | leer lassen |
InfluxDB Details: Organization | my_org |
InfluxDB Details: Token | my_token |
InfluxDB Details: Default Bucket | my_bucket |
InfluxDB Details: Min time interval | 1s |
InfluxDB Details: Max series | Voreinstellung lassen (1000) |
- Auf
Save & test
klicken
- Es kommt die grüne Bestätigungsmeldung
datasource is working. 3 bucketes found
-
Dashboard importieren
- Im Grafana-Menü auf
Dashboards
klicken - Rechts auf den blauen Button
New
klicken -
Import
auswählen
- Auf
Upload dashboard JSON file
klicken
- Die Datei
plantalytix dashboard.json
auswählen. Sie liegt im oben entpackten Ordner im Unterordnerplantalytix
->grafana
->dashboards
- In den
Options
unterinfluxdb
auswählen:influxdb default
- Auf
Import
klicken.
- Das Dashboard ist nun unter
Dashboards
verfügbar und zeigt die Umweltdaten deiner Growbox an:
- Im Grafana-Menü auf
Nun läuft die Beispielsteuerung in Node-RED. Mache dich mit dem Flow und den Nodes vertraut. Vor allem die Funktionalität der Global Environment Variables
und function
- Nodes müssen gut verstanden werden.
Lese auch die technische Anleitung unten genau sowie die Konfigurations-Dokumentation und MQTT-Dokumentation.
Viel Spaß mit deiner individuellen Steuerung! Deine Projekte kannst du gerne mit uns unter #plantalytix ??? teilen!
Alle unsere Geräte können mit ihrer internen Regelung verwendet werden, das Gerät arbeitet dann wie im normalen Betrieb, die Konfiguration erfolgt aber über den lokalen MQTT Server.
Alternativ kann jedes Gerät in einen Direktsteuermodus versetzt werden. Die interne Regelung ist dann inaktiv, sämtliche Ausgänge des Geräts werden direkt über MQTT gesteuert. Mit der Direktregelung können alternative Anwendungen realisiert werden.
In Beiden fällen stehen alle vom Gerät erfassten Messwerte, sowie der aktuelle Zustand alles Ausgänge als MQTT Endpoint zu Verfügung.
Die Konfiguration des Gerätes erfolgt als JSON-String über MQTT an den Endpoint /devices/<device-id>/configuration
Die möglichen Einstellungen sind er Konfigurations Dokumentation zu entnehmen, genauere Erklährungen der einzelnen Parameter finden sich im Benutzerhandbuch.
Die interne Regelung des Gerätes kann deaktiviert werden um sämtliche Ausgänge direkt via MQTT zu steuern. Dazu muss der Parameter "mqttcontrol"
im JSON der Konfiguration auf den wert true
gesetzt werden. Alle anderen Einstellungen werden in diesem Modus ignoriert, die Steuerung der Ausgänge erfolgt dann über MQTT Endpoints.
Es genügt in diesem Fall ein JSON Objekt mit dem Inhalt { "mqttcontrol": true }
an den Endpoint zu schicken.
Aus Sicherheitsgründen muss dies mindestens alle 60 Sekunden erfolgen. Nach 60 Sekungen ohne MQTT Nachricht mit diesem Modus setzt sich das Gerät automatisch auf die zuletzt verwendeten Einstellungen zurück.
Die MQTT Endpoints der jeweiligen Geräte sind in der MQTT Dokumentation zu finden.