Nachdem der Artikel von Entwickler Manuel in der letzten Ausgabe des brau!magazins leider nicht zustande gekommen ist, habe ich mich entschlossen, einen Selbstversuch mit dem CraftBeerPi anzugehen. In meinem Computerschrott-Regal lag noch ein alter Raspberry-Pi 1B, der auf eine neue Aufgabe wartete - und die ist mit CraftBeerPi nun gefunden.
Aufgaben der Brausteuerung
Prozesssteuerungen haben im Allgemeinen die Aufgabe, aus Messdaten des überwachten Prozesses Regelgrößen zu berechnen, die die Prozessbedingungen in einem vorgegebenen Zustand halten. Die weithin verfügbaren Mikrocomputer machen es einfach und billig, auch Abläufe zu steuern, also die Regelgrößen in einem zeitlichen Ablauf zu verändern.
In der (Hobby-)Brauerei sind die Eingänge der Steuerung meist Temperatursensoren, die die Temperatur in Kesseln und Pfannen, aber auch beispielsweise Gärbehältern oder Kühlschränken messen. Auch andere Messgrößen sind denkbar, beispielsweise Füllstandssensoren oder Durchflussmesser.
CraftBeerPi kennt im Grundzustand als Eingangsgrößen lediglich OneWire-Temperatursensoren, die parallel an einem GPIO-Anschluss hängen. Er kann aber mit Plugins erweitert werden, um zum Beispiel einen Durchflussmesser oder die iSpindel zu unterstützen.
Gesteuert werden können neben Heizungen auch andere Verbraucher wie Rührwerke und Pumpen. Das CraftBeerPi-Basissystem kann Aktoren über GPIO-Pins ansteuern, sprich an- und ausschalten. Die eigentlichen Aktoren hängen in der Regel nicht direkt an den RasPi-Pins, sondern sind über Relais oder SSRs (Solid State Relais) angeschlossen. Andere Aktoren können wieder über Plugins nachgerüstet werden.
In diesem Artikel beschränken wir uns auf die Grundkonfiguration mit einem Temperatursensor und einem über GPIO gesteuerten Stromkreis für eine Heizung.
Das Projekt CraftBeerPi
CraftBeerPi ist ein Open-Source-Software-Projekt von Manuel Fritsch, dass seit vielen Jahren aktiv entwickelt wird. Um das Projekt herum hat sich eine aktive Community entwickelt, die über eine (englischsprachige) facebook-Gruppe Erfahrungen austauscht. Die Gruppe hat mittlerweile weltweit mehrere Tausend Mitglieder.
Die Entwicklung konzentriert sich im Moment auf die Version 3 der Steuerungssoftware, die mit einem Plugin-Konzept vielfältige Erweiterungsmöglichkeiten für Mit-Entwickler bietet. Aktuell gibt es bereits 17 verschiedene Plugins, die zum größten Teil aus der Anwender-Community kommen. Manuel selbst arbeitet allerdings schon an Version 4, die wohl einige Neuerungen speziell beim User-Interface bringen wird.
Eine Brausteuerung mit CraftBeerPi kann in beliebigen Ausbaustufen realisiert werden. Das reicht von einem frei verdrahteten Temperaturwächter mit einem einzigen Sensor und einer Schaltsteckdose für die Heizung bis hin zu kompletten Schaltschränken mit LCD-Touchscreen-Bedienung, vielen Sensoren an Braukesseln und Gärbottichen und Ausgängen für Heizungen, Pumpen und Ventile, die eine komplette Brauerei mit Sudhaus und Gärkeller steuern.
Voraussetzungen
Für die reine Software-Installation brauchen wir nichts als einen funktionierenden Raspberry Pi mit Netzwerkanbindung. Ob RasPi Zero, 1, 2, 3 oder 3+ spielt dabei keine Rolle; selbst die Rechenleistung des langsamsten RasPi reicht für die Steuerungsaufgaben aus. Nur, wenn ein Display direkt am RasPi betrieben werden soll, wird mindestens ein Raspberry Pi 3 empfohlen. Eine Übersicht über die verschiedenen Pi-Modelle gibt .
Zum funktionierenden Pi gehört natürlich ein Netzteil (5V, 2A mit Micro-USB-Stecker), eine Speicherkarte (min. 4GB) und eine Netzwerkverbindung. Zumindest für die ersten Schritte empfiehlt sich eine Anbindung über Ethernet; später kann je nach Modell auch auf WLAN umgestellt werden.
Für die Installation sind Monitor, Tastatur und Maus am Raspberry nicht zwingend nötig. Wenn alles glatt läuft, können alle Arbeiten vom PC aus per ssh und http erledigt werden. Bei Problemen sind sie zur Fehlersuche aber ganz hilfreich und sollten zumindest in Reichweite sein.
Betriebssystem-Installation
Die Installation startet mit dem Betriebssystem. Für unsere Zwecke brauchen wir keinen grafischen Desktop direkt am RasPi, daher reicht das schlanke Raspbian Lite als Betriebssystem vollkommen aus. Es passt auch auf eine 4 GB SD-Karte, während das vollständige Raspbian schon 8 Gigabyte verlangt. Das aktuelle Image (im Moment Version 9 oder "Stretch") kann man unter downloaden; die 350MB sind innerhalb weniger Minuten auf der PC-Festplatte. Nach dem Download wird die zip-Datei entpackt und sollte dann als yyyy-mm-dd-raspbian-stretch-lite.img etwa 1,9GB groß sein (yyyy-mm-dd ist das Datum, an dem das Image erzeugt wurde).
Unten gehe ich noch näher auf die CraftBeerPi-Version ein. Wenn nicht Version 3, sondern noch Version 2.2 zum Einsatz kommen soll, muss wegen inkompatibler Bibliotheken auch eine ältere Version des Betriebssystems, nämlich Raspbian Jessie , installiert werden . Schon deswegen sollte man gleich auf CraftbeerPi 3 setzen.
Die Image-Datei muss jetzt noch auf eine SD-Karte geschrieben werden. Das geschieht noch am PC zum Beispiel mit Win32DiskImager (Windows) oder Etcher (Linux).
Um den Raspberry später leichter im Netz finden zu können, sollten wir ihm noch vor dem ersten Start eine feste IP-Adresse geben. Dafür wird auf der boot-Partition der SD-Karte die Datei cmdline.txt editiert. Sie enthält in einer Zeile einige Kommandos, die beim Booten des Systems ausgeführt werden und sieht etwa so aus:
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=c7cb7e34-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh
An das Ende der Zeile wird mit dem Editor noch die statische IP-Adresse (hier: 192.168.2.20) angefügt, die der Pi später im LAN bekommen soll:
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=c7cb7e34-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh ip=192.168.2.20
Schließlich wird noch der ssh-Daemon aktiviert, indem im root-Verzeichnis (/) der boot-Partition eine leere Datei namens "ssh" angelegt wird.
Nach Auswerfen der SD-Karte wird sie in den Kartenleser des RasPi gesteckt und der Mini-Rechner mit dem Netzteil verbunden.
Das erste Booten dauert etwas länger als üblich. Wenn das Blinken der Aktivitäts-LEDs des RasPi etwas ruhiger wird, kann man versuchen, sich mit ihm zu verbinden. Ein ping der Adresse verrät, ob der Pi grundsätzlich erreichbar ist.
$ ping 192.168.2.20 PING 192.168.2.20 (192.168.2.20) 56(84) bytes of data. 64 bytes from 192.168.2.20: icmp_seq=1 ttl=64 time=0.539 ms 64 bytes from 192.168.2.20: icmp_seq=2 ttl=64 time=0.596 ms 64 bytes from 192.168.2.20: icmp_seq=3 ttl=64 time=0.596 ms ^C --- 192.168.2.20 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2025ms rtt min/avg/max/mdev = 0.539/0.577/0.596/0.026 ms $
Um ein Terminal mit der RasPi-Kommandozeile zu öffnen, benutzt man unter Windows am besten das grafische PuTTY . Von der Linux-Kommandozeile aus geht das so:
$ ssh pi@192.168.2.20 pi@192.168.2.20's password: ********* Linux raspberrypi 4.14.34+ #1110 Mon Apr 16 14:51:42 BST 2018 armv6l The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Tue Apr 24 22:50:42 2018 from 192.168.2.10 SSH is enabled and the default password for the 'pi' user has not been changed. This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password. pi@raspberrypi:~ $
Der Nutzer "pi" ist das von Raspbian angelegte Standardkonto. Das Standardpasswort "raspberry" sollte nach dem ersten Einloggen mit "passwd" geändert werden. Alle anderen wichtigen Konfigurationen wie beispielsweise Lokalisierung und Zeitzone können mit
sudo raspi-config
erledigt werden.
Installation von CraftBeerPi
Jetzt können wir uns endlich dem eigentlichen CraftBeerPi widmen. CraftBeerPi ist eine Applikation, die auf dem Betriebssystem des Raspberry installiert wird. Momentan wird bei GitHub noch Version 2.2 als stabile Version angeboten, während Version 3 im beta-Zustand ist. Auch der Installations-Link auf der CraftBeerPi-Homepage zeigt noch auf die 2er Version
Das widerspiegelt aber die aktuelle Situation nicht ganz korrekt, denn Version 3 ist fertig entwickelt, und es wird sogar schon an Version 4 gearbeitet. Die Empfehlung ist daher, bei einer Neuinstallation gleich mit CraftBeerPi 3 zu beginnen.
Der Entwickler stellt die Software auf einem git-repository bereit, von dem wir uns per clone-Befehl eine Kopie auf den RasPi holen:
git clone https://github.com/Manuel83/craftbeerpi3
Soll noch die alte Version 2.2 benutzt werden, ersetzt man in der Adresse einfach "craftbeerpi3" durch "craftbeerpi" - dann aber bitte die Hinweise oben zur Betriebssystemversion beachten.
Falls der Befehl "git" nicht gefunden wird, muss die git-Software zuvor mit
sudo apt-get install git
installiert werden. In dem gerade heruntergeladenen Verzeichnis begeben wir uns in das creaftbeerpi-Verzeichnis und starten die Installation.
cd craftbeerpi3 sudo ./install.sh
Die Installation beginnt mit diesem Hauptmenü:
Die Pfeiltasten bewegen den roten Balken zur Auswahl des Menüpunkts, Tab bewegt den Cursor zu Ok oder Cancel, und Return startet die Auswahl. Im ersten Menü reicht es also, Return zu drücken.
Da das System frisch von einem aktuellen Image installiert wurde, brauchen wir jetzt keine updates installieren, also reicht auch hier ein Return.
Wenn die GPIO-Pins zur Steuerung von Relais benutzt werden sollen, brauchen wir wiringPi; hier also "Yes" auswählen. Es werden eine Vielzahl von Dateien heruntergelanden, compiliert und installiert. Das kann je nach RasPi-Modell erhebliche Zeit dauern.
Die Frage nach dem 1-wire-Support wird ebenfalls mit "Yes" beantwortet.
Nach einigen Augenblicken ist die eigentliche Installation beendet; hier mit Ok quittieren.
Jetzt wird CraftBeerPi noch zum Autostart hinzugefügt, damit es nach jedem Booten gleich mitgestartet wird.
Ja wir sind sicher, also "Yes" auswählen.
Schließlich kann man im Menü CraftBeerPi auch gleich starten. Danach sollte man die CraftBeerPi-Homepage im Browser unter
http://192.168.2.20:5000
erreichen (Die IP-Adresse 192.168.2.20 muss durch die aktuell für den RasPi vergebene ersetzt werden). Unter "System" wird die installierte Softwareversion gelistet.
Damit ist die Software-Installation zunächst abgeschlossen.
Hardware-Aufbau
Eine typische Verkablung ist auf der CraftBeerPi-Seite dargestellt. Dort sind 3 OneWire-Sensoren DS18B20 parallel an GPIO 4 (Pin 7) angschlossen. Der Eingang ist über einen Pullup-Widerstand von 4,7kΩ an die Versorgungsspannung 3V3 (Pin 1) gelegt, um die Stabilität des Signals zu verbessern. Die Sensoren werden ebenfalls direkt mit der Spannung aus Pin 1 des GPIO-Steckverbinders versorgt. Auch das dient der Verbesserung der Signalqualität, obwohl die Sensoren selbst auch mit parasitärer Spannung aus der Signalleitung arbeiten würden. Die dritte Leitung der Sensoren liegt auf Masse (GPIO 5/Pin 9).
Beim Raspberry Pi 1 existiert nur der obere, in der Abbildung dunkel hinterlegte Teil des Steckverbinders, dessen 26 Pins für unsere Zwecke aber auch ausreichend sind.
Auf der Ausgangsseite sind 3 Aktoren angeschlossen. Jeder benötigt ein Solid-State-Relay (SSR) und ein Pin des GPIO. Die SSRs werden mit der Spannung der Raspberry-GPIO-Ausgänge (GPIO 16, 23 und 24/Pin 12, 16 und 18) geschaltet; die andere Seite liegt jeweils auf Masse (Ground/Pin 6). Ausgangsseitig liegt an den SSRs Netzspannung an, daher sollte zumindest dieser Teil der Verkabelung von einem Fachmann vorgenommen werden.
Extension Board
Die Verdrahtung direkt über die Stiftleiste des RasPi ist nicht optimal. Einerseits sind die GPIO-Ports wild über die Pins verteilt, so dass mit einzelnen Jumperkabeln gearbeitet werde müsste. Andererseits sind Ein- und Ausgänge nicht galvanisch vom Rechner getrennt, so dass der Pi bei einem Verkabelungsfehler oder Kurzschluss schnell Schaden nehmen kann. Schließlich funktioniert auch längst nicht jedes Solid State Relais schon zuverlässig mit der GPIO-Ausgangsspannung von 3,3 Volt.
Vereinfachen lässt sich die Beschaltung mit einem Zusatzboard, das Manuel Fritsch entwickelt hat und über seinen facebook shop vertreibt .
Das Extension Board wird auf die GPIO-Leiste des Raspberry gesteckt und liefert Schraubklemmen für bis zu 4 Sensoren und 8 Aktoren. Die Aktoren können mit einer Spannung von 5 oder 12 Volt betrieben werden, was die Auswahl geeigneter SSRs vereinfacht. Zusätzlich ist auf dem Board ein Piezosummer zur Ausgabe von Alarmtönen installiert. Eine zweite Version mit Relais und Eingängen für PT100-Sensoren ist gerade fertig geworden .
Unter dem Namen terregady werden in den USA verschiedene Versionen eines CraftbeerPi Extension Boards vertrieben. Sie können bestückt oder unbestückt über bezogen werden; Verfügbarkeit für Europa, Versandkosten und Lieferzeiten sind mir aber nicht bekannt.
Alternativ kann man auch ein preisgünstiges GPIO Prototype Board verwenden, wie es in verschiedensten Varianten angeboten wird, und die wenigen benötigten Bauelemente selbst auflöten und mit den Schraubklemmen verbinden.
Beschaltung der Sensoren
Die DS18B20-Sensoren kann man zwar auch selbst basteln, aber sie wasserdicht in ein Gehäuse zu verbauen macht schon etwas Arbeit. Einfacher sind vorkonfektionierte Sensoren mit Edelstahlhülle und wasserdicht angepresstem Kabel. Auf die ganz billigen Angebote, bei denen das Kabel am Tauchrohr lediglich mit einem Schrumpfschlauch abgedichtet ist, sollte man aber verzichten.
Sensoren mit RJ-11 Steckverbinder (6-polig) haben nach folgende Belegung:
- Pin 1: +5V
- Pin 3: 1-wire Daten
- Pin 4: Masse
Sensoren mit RJ-45 Steckverbinder (8-polig) haben nach folgende Belegung:
- Pin 2: +5V
- Pin 4: 1-wire Daten
- Pin 5: Masse
Mein über eBay aus China georderter vorkonfektionierter Sensor mit wasserdichtem, angepressten Edelstahlgehäuse besitzt lediglich vorverzinnte Drähte als Anschluss, die folgende Farbkodierung haben:
- Rot: +3,3...5V
- Gelb: 1-wire Daten
- Schwarz: Masse
Die Farben variieren je nach Hersteller, also immer die Herstellerbeschreibung konsultieren.
Testaufbau
Temperatursensor
Der erste Testaufbau erfolgt auf einem Extension-Board, das über ein Flachbandkabel mit dem GPIO-Steckverbinder verbunden wird. Es wird mit einer Dreifach-Schraubklemme für des Anschluss des Sensors ausgestattet.
Sie wird über Steckkabel mit Masse (schwarz), +3,3V (gelb) und GPIO04 (weiß) verbunden. Ein 4,7kΩ-Widerstand zwischen Daten und +3,3V sorgt für den Pullup der Datenleitung.
Bei allen Hardware-Arbeiten empfiehlt es sich übrigens, den RasPi von der Stromversorgung zu trennen.
Mein China-Board ist allerdings missverständlich beschriftet. Bis ich gelernt hatte, dass GPIO04 nicht auf P4 (wie "Port 4"), sondern auf P7 (wie "Pin 7" ?) liegt, verging eine Weile. Erst der Durchgangsprüfer führte mich auf die richtige Fährte.
Danach tauchte der Temperatursensor aber in der Auswahl der Sensoren der CraftbeerPi-Settings (System → Hardware Settings → Sensor) unter seiner ID 28-0417030d01ff auf. Dort kann man ihm auch einen sprechenden Namen geben.
Um den Sensor im Brewing-Dashboard zu sehen, richten wir uns unter "System → Hardware Settings → Kettle" einen Braukessel ein, in dem zunächst der Sensor und später auch eine Heizung installiert werden soll. Die Auswahl von "Actor" (Heizung) und "Agitator" (Rührwerk) lassen wir zunächst noch frei, bei "Logic" und den Offsets belassen wir es zunächst bei der Standard-Einstellung.
Die Nummern der Sensoren sind übrigens vom Hersteller fest vergebene UUIDs. Hat man mehrere Sensoren, muss man die Zuordnung gegebenenfalls ausprobieren. Im Dashboard ist das leicht durch Erwärmen oder Abkühlen eines Sensors möglich, da die Sensortemperatur live angezeigt wird.
Heizung
Für die Steuerung der Heizung über ein SSR montieren wir auf dem Prototype-Board einen weiteren Schraubverbinder, der per Steckkabeln mit Masse und GPIO18 (Pin 12) verbunden wird (auf meinem China-Board ist das lustigerweise P1). In der Konfiguration muss ein "Actor" angelegt werden, der diesen Port benutzt. Als Typ wird GPIOSimple benutzt, dann geht der Port von 0 auf +3.3 Volt, wenn die Heizung laufen soll. Dieses Signal bildet den Eingang des SSR.
Außerdem muss dieser Actor im Kettle-Setup (System → Hardware Settings → Kettle) dem entsprechenden Braukessel zugeordnet werden (der Sensor wurde schon oben dem Kettle zugeordnet).
Erster Test
Jetzt ist alles für einen ersten Test vorbereitet. Am Heizungs-Ausgang sollten im Ruhezustand 0 Volt anliegen. Im "Brewing" Dialog wird der Braukessel mit Heizung und Sensor angezeigt. Aktuell sollte etwa die Raumtemperatur zu sehen sein. Klickt man am Braukessel auf die 100%-Schaltfläche, muss die Heizungsanzeige grün werden und die Ausgangsspannung an GPIO18 auf 3,3 Volt springen. Ist ein SSR mit Verbraucher angeschlossen, sollte dieser eingeschaltet werden.
Fehlt in der Anzeige Sensor oder Heizung, hat die Zuweisung im Konfigurationsdialog nicht geklappt - dann unter "System → Hardware Settings" prüfen. Reagiert der GPIO-Ausgang nicht, sollte man die Zuweisung des GPIO-Ports in den Hardware-Settings kontrollieren und die Verkabelung des Testaufbaus nochmals durchmessen.
Ausblick
Mit diesem einfachen Aufbau könnte man jetzt schon direkt losbrauen und dem CraftbeerPi die Steuerung der Heizung während des Maischens und Kochens überlassen. Ein Rührwerk könnte einfach parallel zur Heizung angeschlossen werden.
Der jetzige fliegende Aufbau verbietet allerdings einen produktiven Einsatz, insbesondere in feuchter Umgebung. Mindestvoraussetzung dafür ist ein geeignetes Gehäuse. Den Aufbau der Starkstromseite sollte man einem Fachmann überlassen.
Anwender ohne Elektrik-Kenntnisse können mit dem HTTPActor-Plugin als Aktoren auch über web-Befehle steuerbare Schaltsteckdosen nutzen. Damit entfällt jeglicher Eingriff in die Starkstromverkabelung.
Mit einem modularen System wie dem CraftbbeerPi kann man die Steuerung beliebig erweitern. Bei mir wäre die nächste Stufe die Konfiguration des PID-Reglers, mit dem die Rasttemperaturen genauer getroffen und gehalten werden können.
Andere Ausbaumöglichkeiten wären die Temperatursteuerung der Gärbottiche oder die Einbeziehung einer iSpindel . In der facebook-Gruppe findet man auch viele eindrucksvolle Installationen als Standalone-Steuerung mit Touchscreen-Bedienung und aufwändiger Verkabelung in speziellen Schaltkästen. Der Phantasie sind kaum Grenzen gesetzt.
Mit diesen und anderen Plugins wird sich ein späterer Artikel beschäftigen - vielleicht dann schon auf Grundlage von CraftBeerPi 4.
Quellen:
Abbildungen:
- Raspberry Pi Model B Rev. 2, Tors / Wikimedia Commons / CC-BY-SA-3.0-DE
- Wiring with GPIO and Solid State Relay DS18B20 Temperature Sensors web.craftbeerpi.com/hardware
- CraftBeerPi facebook Shop www.facebook.com/commerce/products/1596566283724177/?rid=447339558808210&rt=6
Gibt es eigentlich einen Plan für einen weiteren Artikel zu CraftbeerPi4. Auch wenn Manuel nicht mehr sehr aktiv ist, entwickelt sich gerade einiges in der Community. Die Repositories werden gerade auf eine neue Org umgestellt und es gibt nun mehrere aktive, die zur Zukunftssicherung der Software beitragen. Eine detaillierte Beschreibung des Servers gibt es auch https://openbrewing.gitbook.io/craftbeerpi4_support/.
Der Server kann mittlerweile auch auf Brewfather Rezepte direkt zugreifen und die Gärung läuft auch Rezeptbasiert.
Im Moment ist noch nichts geplant, und ich stecke selbst auch nicht in der CraftbeerPi-Entwicklung, aber wenn sich jemand aus dem Entwicklerkreis findet, der den Status zusammenfassen will, können wir gern einen Artikel daraus machen. Der obige ist ja schließlich schon fast 5 Jahre alt.
Wie immer: Meldung gern an joerg@braumagazin.de
Habe irgendwie den Reply nicht mitbekommen. Ich habe das von Manuel übernommen und wir sind in der Gruppe gerade dabei, das Projekt auf eine breitere Basis zu stellen (https://github.com/PiBrewing). Somit hängt das dann nicht mehr nur an einer Person. Wir können dann sicherlich auch mal etwas für hier zusammenstellen. Gruß, Alex