Meine Braukarriere begann erst kürzlich (Mitte 2020) und der Grund sich endlich einmal intensiver mit dem Brauen zu beschäftigen war ein recht banaler: die Corona Pandemie und die Suche nach einer sinnvollen Beschäftigung (ok, Ablenkung). Nachdem ich den Brauprozess gut recherchiert hatte wurden die Tools und Zutaten für den ersten Brautag bestellt. Das erste Bier – natürlich ein Pale Ale – war auf Anhieb gut trinkbar und somit hatte ich ein neues Hobby gefunden.
Um die Gärung zu kontrollieren, führte ich anfangs ein simples Protokoll auf der Rückseite des Braurezeptes: Datum, Uhrzeit sowie die Dauer zwischen zwei “Blubbs” des Speidel Gaerspunds wurden protokolliert. Ich denke dieses Vorgehen wird allgemein bekannt sein und sollte für die meisten Hobby-Brauprojekte auch absolut ausreichend sein.
Nachdem ich jedoch Informatiker bin und durch diverse Prototypen immer wieder mit Elektronik, Sensoren und auch dem Internet der Dinge in Kontakt war, wuchs die Idee, den Gärprozess durch einen Sensor noch viel detaillierter zu überwachen. Von Speidel selbst wird das “GärspundMobil” angeboten, schlägt jedoch mit ca 150 EUR zu Buche und benötigt eine WiFi Verbindung, die ich und viele andere im Keller leider nicht habe. Somit entschied ich mich, einen DIY Sensor zu bauen, der ohne WiFi auskommt und dennoch aus meinem Keller heraus die Daten ins Netz funken kann: die LoraWAN Technologie und das offene The Things Network bot sich an, da ich bereits ein Indoor Gateway zur Verfügung hatte.
LoRa, LoRaWAN, The Things Network
LoRa (Long Range) ist eine Datenübertragungs-Technologie, mit der im Freien und bei klarer Sicht Reichweiten von über 10 km erreicht werden können. Vereinfacht gesagt, fügt das “WAN” in LoRaWAN dieser Technologie noch das Netzwerk hinzu, so dass die Daten an einen beliebigen Cloud-Server zur Verarbeitung geschickt werden können. Während diese Server für kommerzielle Anwendungen oftmals proprietär und geschlossen sind, stellt das The Things Network ein offenes und von jedermann benutzbares Netzwerk zur Verfügung. Als Ausgleich für die kostenlose Nutzung gibt es jedoch eine sogenannte Fair-Use-Policy, die sicherstellen soll, dass kein Anwender die wertvolle Airtime (Zeit für das Senden und Empfangen von Daten) überdurchschnittlich in Anspruch nimmt. Auch werden von den Nutzern in Betrieb genommene Gateways, welche die Daten an das Netzwerk senden, allen Teilnehmern zur Verfügung gestellt.
Mir ist bekannt, dass das Zählen der Blubbs zur Messung der Gäraktivität nicht unumstritten ist. Durch das Zählen der Blubbs wird die erzeugte Gasmenge gemessen, was natürlich nur bei einem dichten Behälter gut funktionieren kann. Ebenso ist bekannt, dass die Temperatur einen grossen Einfluss auf die Gäraktivität hat. Um die Anzahl der Blubbs oder die Zeitintervalle zwischen zwei Blubbs als Indikator der Aktivität nutzen zu können, sollte daher die Raumtemperatur weitgehend konstant sein. Zusätzlich kannst du dich auch immer dazu entscheiden, zum Ende der Gärung regelmäßig Proben zu entnehmen um den Zuckergehalt des Jungbieres zu überprüfen. Ein gleicher Messwert über mehrere Messungen hinweg bedeutet das Ende der Gärung.
Dieser Artikel richtet sich ganz klar an Hobbybrauer, die auch vor Elektronik, Software und Hardware nicht zurückschrecken. Die einzelnen Bestandteile von Fermenta sind keine Rocket Science, aber das Zusammenspiel der unterschiedlichen Technologien und die Integration und Kalibrierung benötigt etwas Zeit und Verständnis von Software & Hardware.
Es handelt sich um ein DIY Projekt, d.h. kleinere Anpassungen werden unvermeidbar sein. Alle Bestandteile sind Open Source unter der GPL v3 License und auf GitHub verfügbar (siehe Links). Sollte ein The Things Network (TTN) Gateway oder entsprechende Netzabdeckung bereits verfügbar sein, so belaufen sich die Kosten für diesen Sensor auf ca. 25 EUR. Um die TTN Abdeckung herzustellen kann auch ein lokales indoor Gateway wie das The Things Indoor Gateway gekauft werden, welches ca. 70 EUR kostet und nicht nur dem Betreiber sondern auch anderen Community-Mitgliedern den Zugang zum Things Network ermöglicht.
Ein Überblick
Beginnen wir mit einem kurzen Überblick um die Bestandteile des Projekts richtig einordnen zu können. Da Fermenta ein Internet of Things (IoT) Projekt ist, beginnen wir mit dem “Thing”, also dem “Ding” welches lokal vor Ort die Arbeit macht und arbeiten uns dann Schritt für Schritt bis zur “Cloud” (dem Internet) hoch. “The Thing” ist in diesem Fall der Fermenta Sensor, der die Daten alle 10 Minuten ins Netz funkt.
Das Hirn des Fermenta Sensors ist ein CubeCell Dev Board, welches über die bekannte Arduino Entwicklungsumgebung (IDE) programmiert werden kann. Um die Temperatur zu erfassen, benutze ich ein DS18B20 Modul, das direkt an die Pins vom CubeCell Dev Board angeschlossen wird. Während der Temperatur-Sensor absoluter Standard ist und beispielsweise auch problemlos durch einen wasserdichten Sensor zum Tracking der Temperatur im Gärbehälter ausgetauscht werden könnte , benutze ich zum Tracking der Blubbs eine Eigenkonstruktion. Diese besteht aus einem simplen Line Following Sensor Modul (ebenso sehr einfach anzuschließen) und einem weissen Stab, in diesem Fall ein 4mm Cake Pop Stick. Line Following Sensoren sind unglaublich günstig und können – vereinfacht gesagt – melden ob das, was vor Ihnen platziert wird, hell oder dunkel ist. Das normale Umgebungslicht spielt dabei keine Rolle, da der Sensor ein IR Sensor ist und somit das normal sichtbare Spektrum (wie Lampen) vom Sensor nicht wahrgenommen werden und der Sensor seine eigene IR Lichtquelle mitbringt. Der weisse Cake Pop Stick wird mittels 3D-gedruckten Halterungen an dem Gärspund angebracht und mittels des Line Following Sensors wird erkannt, ob sich der Stick gehoben oder gesenkt hat.
Die gezählten Blubbs, das zuletzt gemessene Blubb-Intervall, sowie die Temperatur wird nun alle 10 Minuten per LoraWAN-Technologie an das offene The Things Network gesendet. Die Verbindung zu dieser Cloud-Lösung wird über das entweder selbst aufgesetzte The Things Indoor Gateway oder bereits vorhandene Abdeckung geschaffen. In vielen Städten ist die Abdeckung übrigens sehr gut, ein Blick auf den TTN Mapper (https://ttnmapper.org/) lohnt sich auf jeden Fall. Auf den Servern von TTN angekommen werden die Daten zunächst von einem sogenannten Payload-Decoder in das JSON Format umgewandelt und dann mittels einer TTN Integration an eine AppScript Web Applikation gesendet. AppScript von Google steht jedem Drive/Sheets Benutzer zur Verfügung und kann dazu verwendet werden, um Daten von anderen Systemen (wie TTN) zu empfangen und dann als neue Zeile in einem Spreadsheet abzulegen. Genau das tun wird – und natürlich werden die Daten dann auch durch ein Chart visualisiert.
Noch an Bord? In den beiden nächsten Abschnitten beschreibe ich Schritt für Schritt den Bau eines Sensors und dann die notwendigen Schritte zum Setup der Cloud.
Bau des Sensors
Druck der Modelle
Um den Fermenta Sensor nutzen zu können, wird ein Original Speidel Gärspund benötigt. Zunächst schlage ich vor, alle 3D-Modelle auf einem 3D-Drucker in PLA oder PETG und in einem möglichst dunklen Filament zu drucken. Dunkel deshalb, da der Unterschied zum weissen Cake Pop Stick möglichst groß sein sollte.
Diese 3 Modelle können notfalls auch über die open source Software OpenSCAD angepasst und neu in druckbare STL Dateien konvertiert werden. Der dazu notwendige OpenSCAD Code ist Teil des Github Projektes.
Anpassung der Länge des Cake Pop Sticks
Um den Sensor am Gärspund im nächsten Schritt testen zu können, sollte nun die Anpassung der Länge Cake Pop Sticks vorgenommen werden. Dazu einfach den Cake Pop Stick von oben durch die Öffnung stecken und durch die Oeffnung am 3D Modell mit einem Stift die Länge markieren. Wenn der Deckel des Gaerspunds ganz unten ist, sollte der Cake Pop Stick nur leicht sichtbar sein. Den Stick rausnehmen und entsprechend kürzen. Später kann der Stick dann in der unteren Halterung am Deckel des Gärspund mit einem Tropfen Heisskleber befestigt werden, davor sollte man aber am Besten die Funktion ein paar mal getestet haben.
Durch die Gäraktivität wird sich später der Cake Pop Stick ein paar Millimeter heben und der Sensor kann dies entsprechend an das CubeCell Dev Board melden.
Die passende Füllung des Gärspunds ist ebenso wichtig für die richtige Funktionsweise. In meinen Tests hat es am besten funktioniert, wenn ich leicht unter dem eingezeichneten Füllstand eingefüllt habe. Es ist sicherzustellen, dass der Deckel des Gärspunds richtig nach unten fallen kann und der Cake Pop Stick somit für eine Statusänderung des Sensors sorgt.
Beschaffung und Anschluss der Sensoren
Es folgt nun der Anschluss und die Befestigung der Sensoren. Dies setzt natürlich die Bestellung der Sensoren voraus, in meinem Fall hatte ich eigentlich alle Sensoren schon in meinem Lab vorhanden und vor langer Zeit auf AliExpress gleich im Zehnerpack gekauft. Über lokale Versender, oftmals auf eBay und anderen Plattformen kann man diese Sensoren auch schnell in Deutschland beziehen – allerdings zu einem deutlich höheren Preis.
Bei den folgenden Links zu AliExpress ist zu beachten, dass die jeweilige Variante des Produkts auf der Webseite noch angeklickt werden muss. Ebenso sind dies auch nur Beispiele, es gibt sehr viele Shops, welche diese Produkte anbieten.
Benötigt werden im einzelnen:
- 1x Heltec CubeCell HTCC-AB01 Development Board mit Euro-Antenne
Achtung: Das 868MHZ Dev Board und die 868MHZ Antenne für Europa bestellen!
https://de.aliexpress.com/item/4000200371092.html - 1x TCRT5000 IR Line Following Sensor Module
Achtung: Auf jeden Fall sollte ein analoger Output vorhanden sein (oftmals A0 oder mit A gekennzeichnet)
https://de.aliexpress.com/item/1005001593848689.html - 1x DS18B20 Temp Sensor Module
https://de.aliexpress.com/item/1005001846310461.html - Wenn nicht vorhanden – female-to-female Jumper Wires
https://de.aliexpress.com/item/32898552190.html - Ebenso wird ein Micro-USB Ladegerät benötigt, dies wird sicherlich in fast jedem Haushalt schon vorhanden sein. Alternativ könnte der Sensor mit einer Power Bank betrieben werden, oftmals ist hier jedoch das Problem, dass durch den geringen Stromverbrauch die Powerbank nach ein paar Minuten abschaltet.
Wenn die Elektronik soweit vorhanden ist und die 3D Modelle gedruckt sind (insbesondere die Halterung) können diese mit dem Dev Board verbunden werden (siehe Abbildung unten). Den Line Following Sensor habe ich mittels einer Heißklebepistole befestigt und die Verkabelung durch die Kabelringe geführt.
Programmierung des CubeCell Dev Boards
Es folgt nun die Programmierung des CubeCell Dev Boards, welche mittels der Software Arduino (ebenso auf allen Betriebssystemen kostenlos verfügbar) erfolgt. Heltec, der Hersteller des CubeCell Dev Boards stellt zur Installation des Boards eine gute Dokumentation zur Verfügung.
Nach der Installation des CubeCell Frameworks, sollte in Arduino das CubeCell Dev Board im Board Manager ausgewählt werden. Es stehen dann im Tools-Menü einige weitere Settings zur Verfügung, die anhand der folgenden Abbildung gewählt werden sollten:
LoRaWAN Settings fuer das CubeCel Dev Board
Die LoRaWAN Settings im Arduino Tools Menu sollten wie links gezeigt gewählt werden. Besonders wichtig ist die Region (EU868 für Europa) sowie der Netmode (OTAA).
Auf den Programmier-Code kann an dieser Stelle nur flüchtig eingegangen werden, es würde einfach den Umfang des ohnehin schon langen Artikels sprengen. Es sei jedoch kurz etwas zum Payload, der übertragenen Daten pro Sendevorgang gesagt. Zunächst einmal findet überhaupt nur alle 10 Minuten ein Sendevorgang statt, da das The Things Network eine Fair-Use Policy hat, welche die Nutzung von vielen Teilnehmern gleichzeitig gewährleisten soll. Zu Testzwecken kann das Sendeintervall durch die Variable sendInterval kurzzeitig heruntergesetzt werden, eventuell auf 2–3 Minuten (Angabe in millisekunden, also z.B. 120000 für 2 Minuten), dies sollte später aber unbedingt wieder korrigiert werden.
In der Funktion prepareTxFrame wird eine Datenübertragung vorbereitet. Die Daten bestehen lediglich aus 4 Bytes – 2 für die Zahl der Blubbs und je ein Byte für das Intervall in Sekunden sowie die Temperatur. Um die Temperatur mittels eines Bytes (8 Bit, Werte von 0–255) abzubilden, werden zunächst 5 Grad abgezogen und dann die natürliche Zahl, welche durch Multiplikation mit 10 entsteht übertragen. Dies dient der Maximierung der Temperatur-Range, die nun von 5 bis 30.5 Grad reicht. Durch die Multiplikation ist die Temperatur dann bis auf eine Zehntel-Stelle genau. Vereinfacht kann man sagen, dass hiermit eine Optimierung auf den bei der Gärung relevanten Temperatur-Bereich erfolgt bei gleichzeitiger Optimierung der notwendigen Payload-Größe.
Um nur die Funktionsweise des Blubb-Sensors zu testen, muss man sich an dieser Stelle auch schon bei The Things Network registriert haben und eine neue Applikation sowie ein Device angelegt haben, da die Variablen für die Device EUI, Application EUI und der Application Key eingetragen werden müssen.
Sobald die Software aufgespielt wurde, kann man nun über den Serial Monitor die zahlreichen Debug-Statements sehen. Unter anderem kann so der Temperatursensor (zu jedem Sendevorgang alle 10 Minuten), die Registrierung bei TTN selbst sowie der Status (true/false) des Line/Blubb Sensors testen.
Ebenso kannst Du nun im Data-Tab der The Things Network Console etwas Aktivität entdecken – die Dekodierung der Payload in lesbare Werte besprechen wir aber erst im kommenden Abschnitt.
Hiermit ist nun der Sensor Node fertiggestellt und die Daten werden an The Things Network gesendet. Im nächsten Abschnitt werden wir diese Daten dekodieren und dann an ein Google Sheet weitersenden.
Die Cloud – vom Things Network über AppScript zum Datenlog auf Google Sheets
Nachdem wir die Daten des Fermenta Sensors nun in regelmäßigen Abständen zu TTN Übertragen bekommen, sind wir unserem Ziel schon recht Nahe. An dieser Stelle können die Daten auch recht problemlos zu IoT Plattformen wie Ubidots (vorhandene Integration mit TTN) geschickt werden, allerdings sind deren STEM (Education) Angebote meist recht limitiert. Daher habe ich mich dazu entschieden, die Daten letztendlich auf Google Sheets zu sammeln und zu visualisieren.
Google Sheets und AppScript Web Apps
Zunaechst legst du auf https://sheets.google.com ein neues Spreadsheet and und fügst diesem ein “Sheet” namens “Log” hinzu. Du kannst natürlich auch das Standard-Sheet umbenennen. Über Tools > Script editor gelangst du nun zum Script Editor und legst ein neues Script als Web Application an. Dazu kannst du einfach den Code aus dem Verzeichnis appscript benutzen. Du musst lediglich die ID des Spreadsheets eintragen – dazu gehst du zurück auf Google Sheets und entnimmst aus der URL einfach die ID:
https://docs.google.com/spreadsheets/d/2yPZt_2a6nQHBpnGKxxpGCmiAlCkdS40l4QG2emhC_Knpc/edit#gid=0
Die ID, welche du in dein AppScript eintragen musst ist oben in der Beispiel-URL rot gekennzeichnet (2yPZt_2a6n…).
Nach dem Deployment als Web Applikation hast du nun einen öffentlich im Web verfügbaren sogenannten Endpoint geschaffen, der von einem anderen System aufgerufen werden kann. Du solltest die angezeigte URL der Web Applikation auf jeden Fall notieren, da wir sie für den nächsten Schritt benötigen.
Ein Hinweis zur Sicherheit: um diesen öffentlichen Web-Endpoint abzusichern, kannst du zum Beispiel ein zufällig gewähltes Passwort als Parameter an diese URL anhängen. Im AppScript Beispiel ist dazu bereits ein Code-Block auskommentiert.
TTN Payload Dekoder
Bevor wir die Daten nun von TTN weitersenden können, müssen wir diese noch von der TTN Payload in Form von Bytes in ein sogenanntes JSON-Format umwandeln. Dazu gehst du auf TTN auf deine Applikation und klickst dann auf Payload Formats.
Den Code für den Payload Decoder findest du im Verzeichnis ttn in der Datei decoder.js.
Die The Things Network HTTP Integration
Jetzt müssen die Daten von The Things Network nur noch an unseren AppScript Web App Endpoint geschickt werden. Das ist wirklich super einfach, klicke einfach in der TTN App auf den Tab Integrations und wähle die HTTP Integration aus.
Du kannst der Integration einen beliebigen Namen (wie z.B. “fermenta”) geben und wählst einen beliebigen Access Key aus. Ich habe hier den Default Key ausgewählt – dieser ist eigentlich nicht relevant da wir keine Daten zurücksenden. Im Feld URL trägst du die zuvor notierte URL der AppScript Web App ein und wählst als Methode “POST” aus. Die anderen Felder kannst Du leer lassen.
Nach ein paar Minuten solltest du nun die ersten neuen Zeilen in deinem Google Sheets sehen. Über Insert>Chart kannst du ein neues Chart einfügen und deine Daten visualisieren.
Ausblick & Zusammenfassung
Fermenta ist ein DIY Projekt und hat nun ein paar Iterationen hinter sich. Somit sollten die gröbsten Bugs gefixt sein. Dank Open Source kannst du selbst beliebig Veränderungen vornehmen und diese dann gerne mit der Community teilen. Über Feedback und konkrete Verbesserungen an Software/Hardware würde ich mich sehr freuen!
Um das Projekt noch weiter auszubauen sehe ich einige Möglichkeiten. Beispielsweise könnte man sehr einfach einen zweiten Temperatursensor einbauen und somit die Temperatur im Gärtank sowie die Umgebungstemperatur messen. Sicherlich wird es ganz spannend sein, den Temperaturanstieg durch die Gärtätigkeit zu messen.
Des Weiteren kann dieses Projekt recht einfach mit Aktorik ausgestattet werden um somit aktiv den Gärprozess zu beeinflussen. Denkbar waere die Steuerung einer aktive Kuehlung oder eine aktiven Heizung um die Gärtemperatur optimal zu gestalten. Ob ich diese Erweiterungen angehe haengt eventuell von der Entwicklung der Corona-Pandemie ab…
Links
- Fermenta GitHub Page
https://github.com/hansamann/fermenta - The Things Network
https://www.thethingsnetwork.org/ - The Things Indoor Gateway
https://www.thethingsnetwork.org/docs/gateways/thethingsindoor/ - Cake Pop Sticks, 4mm
https://www.amazon.de/… - Heltec CubeCell Quick Start (Arduino Board Installation)
https://heltec-automation-docs.readthedocs.io/en/latest/cubecell/quick_start.html
Über den Autor
Sven ist Tech Strategist bei SAP in München und beschäftigt sich auch in seiner Freizeit oft mit diverser Software, Hardware und dem Internet der Dinge. Seit dem Pandemie-Sommer 2020 ist Sven Hobbybrauer und hat die SAP Munich Brewer’s Group gegründet. Neben regelmäßigen Bier-Tastings hat diese Gruppe das Ziel, ein eigenes SAP Munich Bier zu kreieren sowie das Rezept als open source zu veröffentlichen. Sven kann am besten per Twitter @hansamann erreicht werden.