Brauen mit Linux, Mash It und 1-Wire

Dieser Artikel beschreibt eine Lösung zur Brauprozessautomatisierung mittels der Software Mash It in kombination mit 1-Wire Sensoren und Aktoren auf einem Linux-PC. Die hier vorgestellte Vorgehensweise wurde auf Ubuntu 9.10 getestet, sollte aber auf jeder modernen Distribution funktionieren. Danke vorab an den Autor der MAC-Version, ich habe große Teile als Basis verwendet.

Verwendete Komponenten

Prinzipschaltbild

Die hier gezeigte Schaltung ist in Anlehnung an folgende Schaltungsvariante aufgebaut:

Schema siehe hier: Schema 1 wire hobbyboards.pdf.

Hardware-Komponenten

Grundsätzliches zu der 1-Wire Relaisplatine

Anregungen, Software und Teile des Layouts habe ich von Dunkelbrauer und Fangobräu, dafür herlzichen Dank fürs Teilen! Der Schaltplan und die Platine wurde mit der Software „Target 3001 V14“, welche als Gratisversion für Privatanwender verfügbar ist entworfen. Target Homepage Es ist mein erstes Projekt mit Target, daher bitte nicht gleich schimpfen, falls die eine oder andere Bohrung nicht passt, oder etwas eleganter gelöst werden hätte können. Die Platine ist zweigeteilt und teilbar, der linke Teil stellt die USB-Anbindung dar (DS9490R), der rechte Teil besteht aus einem 1-Wire 2-fach IO Baustein DS2413, den Transistoren zum Ansteuern beider Relais, und einem NE555N zum Takten des Relais1 (durch Entfernen von Jumper J1 deaktivierbar). Zur Besonderheit des Taktens der Pumpe: Ich habe diese Schaltung für meine Brauanlage (Glühweinkessel mit Kochtopf als Malzrohr a`la Cebulon) gemacht, da sich die verwendete Pumpe (Ablaufpumpe von Geschirrspüler) als zu stark erwiesen hat und ich bei meinem ersten Brauversuch zusehen durfte, wie der sich aufgrund von Verstopfung des oberen Siebes bildende Maischestrahl mich von oben bis unten vollgepieselt hat :P
Über die Kondensatoren C2 und C4 kann die Frequenz (bei C2 330uF und C4 leer ca. 0,5Hz) und über den Potentiometer R13 das Pump/Pause-Verhältnis eingestellt werden. Ich erziele mit diesem Verfahren einen gleichmäßigen Durchfluss durch das Maischerohr.

Download Zip-Archiv mit dem Target Projekt und der Platinen/Bestückungsseite als PDF Hier die Platine als Ansicht:

Software

Installation

Hardware

In dem folgenden Verdrahtung des Sudwerks (Elektrotopf/Glühweinautomant) werden die schon weiter oben beschriebenen Komponenten verwendet. Die Relais verwende ich als Schließer um eine Art Sicherheitsfunktion im Falle eines Rechnerabsturzes zu haben (sicher ist das noch nicht, es gibt ja keinen Watchdog, etc….) Nachdem aber die Übertemperatursicherung und das löblicherweise verbaute Schutzthermostat für die Heizung noch im Gerät aktiv verblieben sind, kann nicht viel passieren..

Die Verdrahtungsschritte:

  1. USB-Interface an den Rechner anschließen
  2. Mittels beiliegendem RJ12 auf RJ45 Kabel (Verdrahtung) den Adapter an das I/O-Board anschließen. (entfällt, wenn der linke Teil der Platine verwendet wird)
  3. Den Temperaturfühler mittels RJ45 Stecker ebenfalls gemäß Verdrahtung an die Relaisplatine anschließen. (eventuell RJ45-Stecker crimpen)
  4. Eine +5V Stromquelle ist in dieser Ausführung nicht notwendig, ein standard USB-Port sollte genug Leistung für die Platine, die Relais und den Temperatursensor liefern (ca. 350mA gesamt)
  5. Der Schließerkontakt von Relais1 wird zwischen eine der Stromphasen geschlossen, indem das Netzkabel aufgetrennt wird (brauner oder schwarzer DRaht) und das Relais als Schalter zwischen diese Enden gelötet wird. Es ist darauf zu achten, dass der Stromkreis geschlossen ist, wenn ein Signal anliegt
  6. Der Motor für die Pumpe, oder für ein Rührwerk wird analog an das Relais2 angeschlossen

Software

Anmerkung: Es müssen die gängigen build-utilities zum selber compilieren von Software installiert sein. Es werden für die Installation Admin-Berechtigungen benötigt (User muss in der sudoers liste eingetragen sein).

Öffnen einer Shell unter Linux:

  • Klicken auf: Anwendungen/Zubehör/Terminal
  • Oder ALT+F2 und Eingabe von gnome-terminal

Liste der vorab zu installierenden Pakete:

sudo apt-get install automake autoconf autotools-dev gcc g++ libusb-dev
sudo apt-get install fuse-utils libfuse-dev
sudo apt-get install sun-java6-jre

OWFS installieren

OWFS ist ein Open-Source-Treiber, der den Zugriff auf den 1-wire-bus ermöglicht. OWFS ist unter Linux und Mac OS verwendbar. (Es ist auch möglich OWFS, für Windows zu übersetzen, das ist aber aufwändiger, als die offizielle OWAPI zu verwenden.)

In unserem Fall muss das OWFS für Linux übersetzt und installiert werden:

cd ~

wget http://downloads.sourceforge.net/project/owfs/owfs/2.7p36/owfs-2.7p36.tar.gz
tar xzf owfs-2.7p36.tar.gz

* Wechseln in das entpackte Verzeichnis: 

cd owfs-2.7p36

* Konfigurieren:

./configure

* Kompilieren: 

make

* Ist make ohne Fehler durchgelaufen, können die binaries installiert werden: 

Hier benötigt man Adminrechte.

sudo make install

Alles OK? - gut, die ausführbaren Dateien befinden sich nun unter /opt/owfs/bin/

  • Umgebungsvariablen setzen, damit nicht jedesmal der Pfad /opt/owfs/bin/ mit angegeben werden muss:

cd ~

cp .bashrc .bashrc.bak
echo ' ' >> ~/.bashrc
echo 'PATH=$PATH:/opt/owfs/bin/' >> ~/.bashrc
echo 'export PATH' >> ~/.bashrc

Bei jeder neu geöffneten Shell ist /opt/owfs/bin/ nun auch mit im Sytempfad…

überprüft kann das ganz einfach werden:

echo $PATH

Testen

  • owserver starten:

sudo /opt/owfs/bin/owserver -u -p 3000 –error_level=5 –foreground

  • Alle verfügbaren Devices auflisten:
owdir -s localhost:3000

Bei mir sieht der Output so aus:

0@@

wobei /81.xxxx der USB-Adapter, 10.xxxx der Temperatursensor und /3A.xxxx der 2-Port IO Baustein ist.
Die zweistellige Zahl vor dem Punkt gibt die Produktfamilie an, also ob es nun bsp. ein Sensor oder ein Aktor ist, die nächsten 4 Stellen sind eine eindeutig zuordenbare Seriennummer (also bei jedem Device anders).

Funktioniert alles soweit, kann die Hardware auch schon „richtig“ angesprochen werden:

*Temperatur lesen:

owread -C -s localhost:3000 10.79A8DC010800/temperature

*Relais1 einschalten:

owwrite -s localhost:3000 3A.4CAE02000000/PIO.A 1
  • Relais2 einschalten:

owwrite -s localhost:3000 3A.4CAE02000000/PIO.B 1

  • Relais1 ausschalten:
owwrite -s localhost:3000 3A.4CAE02000000/PIO.A 0

Das sind auch gleich die „Adressen“, die bei MashIt eingefügt werden müssen, dazu aber später.

Mash It installieren

Mash It ist ein Java-Anwendung und kann unter http://www.dunkelbrauer.de/Software/Index.html heruntergeladen werden.

  • Download:

cd ~wget http://www.dunkelbrauer.de/downloads/Mash_It_v1.0.2.tar.gz

  • Entpacken:

tar -xf Mash_It_v1.0.2.tar.gz

* Starten:

cd ~/Mash_It_v1.0.2/
./MashIt.sh

Mash It konfigurieren

Jedes 1-wire-Element (Sensoren, Relais etc.) hat eine eigene - weltweit eindeutige - ID, mit der es am 1-wire-bus angesprochen wird. Jedes Hobbyboard und jeder Sensor hat eigene Ids, daher können diese nicht vordefiniert werden. Beim hier verwendeten OWFS (One-Wire-File-System) sind die Komponenten über Pfade ansprechbar, die auch die Id enthalten. Daher muss man in Mash-It erst die richtigen Ids der angeschlossenen Komponenten einstellen.

Als erstes muss man also die richtigen Ids der Komponenten herausfinden. Dies kann man z.B. mit dem Kommandozeilen-Programm owdir (in OWFS enthalten) machen. (Aufruf siehe oben).

Dann muss Mash-It konfiguriert werden. Erst wählt man im Rezeptplaner im Menü „Tools“ die Option „Hardware konfigurieren“. Dort wählt man das OWFS-Interface aus und klickt auf „Diese Hardware konfigurieren“. Im anschließenden Menü muss zunächst unter „owserver“ der Server-Port (meist einfach die lokale Portnummer, in unserem Fall z.B. „3000“) eingegeben werden. Damit weis das Programm, unter welchem Port der owserver (OWFS-Server-Dienst) erreichbar ist. In den anderen Feldern müssen die OWFS-Ids des Sensors und der Relais eingegeben werden, siehe Screenshot:

Jetzt alle Konfig-Dialoge mit Okay beenden (wichtig, sonst werden die Änderungen nicht übernommen) und am besten einen Test mit angeschlossener Hardware und der „Manuellen Hardware-Steuerung“ (im Mash-It-Menü „Tools“) vornehmen. Wenn jetzt Fehlermeldungen hochkommen, hat das in der Regel einen der folgenden Gründe:

  • Die Kommandozeilen-Befehle owread oder owwrite sind nicht ausführbar oder im „path“ (Auf der Konsole testen)
  • Das OWFS-Dienst-Programm owserver läuft nicht (Wie dieser gestartet wird, siehe weiter oben). Am besten man startet dieses Programm immer beim Rechnerstart oder vor dem Start von Mash-It
  • Die eingegebene port-Nummer stimmt nicht (muss mit der Konfiguration des owserver übereinstimmen)
  • Die eingegebenen Ids stimmen nicht oder fehlen
  • Wenn die falschen Relais gezogen werden beim Schalten (z.B. Rührwerk geht an beim Einschalten der Heizung etc.), sind die Relais-Ids im Konfig-Dialog vertauscht.

Start/Stop-Scripte für owserver erstellen:

  • Startscript:

sudo nano /opt/owfs/bin/run-owserver

Einfügen:

1@@

ausführbar machen:

sudo chmod +x /opt/owfs/bin/run-owserver
  • Stopscript:

sudo nano /opt/owfs/bin/kill-owserver

Einfügen:

2@@

ausführbar machen:

sudo chmod +x /opt/owfs/bin/kill-owserver

Der owserver kann nun ganz bequem mit run-owserver gestartet, und mit kill-owserver beendet werden.

MashIt.sh anpassen

cd ~/Mash_It_v1.0.2/
nano MashIt.sh
3@@

UFF - fertig Bitte fühlt euch frei, die sicher vorhandenen Fehler auszubessern, oder das eine oder andere zu ergänzen. Finden könnt ihr mich hier im Forum unter dem nic „automated“. cheers Rainer

Drucken/exportieren
QR-Code
QR-Code Brauen mit Linux, Mash It und 1-Wire (erstellt für aktuelle Seite)
*
^