Alternative:
es ist möglich die Temperaturfühler über den GPIO-Port 4 auszulesen!Alternative:
es ist möglich Geräte (Topf, Rührwerk, Nachguss) über Solid-State-Relais zu schalten!Ich habe mir einen Raspberry Pi als ALL IN Paket besorgt.
Temperaturfühler habe ich mir als 5er Pack im fernen Osten bestellt. Spart man sich zwar ein paar Euro, dauert aber mitunter sehr lange und würde ich nicht mehr dort bestellen. Man möchte ja schliesslich loslegen.
Den USB 1-wire Adapter gab es günstig auf der Bucht.
USB 1-wire 1wire DS9097 adapter for automation temperature Linux Mac Windows, ca. 10.00 Euro.
Lieferung kam schnell an.
Hinweis:
Es gibt den DS9097 auch als DS9097U !
Das Auslesen der Temperaturfühler erfolgrt hier mit einem anderen Befehl (digitemp_DS9097U anstatt
digitemp_DS9097).
Ich erweitere gerade das BKS bzgl. einer Konfigurationsmöglichkeit diesbezüglich (in Arbeit).
Sich gleich mehrere Temperaturfühler zu bestellen ist eine gute Idee, dann kann man sich gleich ein
Notfallset basteln.
Natürlich braucht man dann auch zwei USB 1-wire Adapter.
Bislang wurde mir von einem Set gemeldet, dass ein am Bussystem angeschlossener Temperaturfühler
Totalschaden erlitt,
und dann gar keine Messwerte mehr übertragen wurden. Dann ist ein Notfallset eine feine Sache :).
Hinweis:
Ich werde mir demnächst ein weiteres Ersatzset an Temperaturfühler bestellen und werde diese hier
verwenden.
DS18B20 wasserdichte Temperaturfühler
mit Silikon Kabel
Diese Temperaturfühler wurden mir von einem Kollegen empfohlen, sind bis 125°C angegeben und
qualitativ besser!
Ich braue mit Elektrotopf oder Waschmaschine und somit mit Strom!
Es ist aber auch möglich einen Gasbrenner mit Hilfe eines Magnetventils und ein paar
sicherheitsrelefanten Ventilen zu steuern.
Hierzu findest Du weitere Informationen auf der Seite Maschinen -> Brauen mit Gas
Zur Ansteuerung der Funksteckdosen verwende ich in meinem Projekt die pilight.org Bibliothek und
empfehle vor dem Kauf auf die Liste der unterstützen Switches zu achten.
Funktsteckdosen mit DIP-Schaltern zum Einstellen eines Codes sind kaum noch erhältlich. Die neuen
Modelle sind fast alle selbstlernend!
Zuerst hatte ich die Mumbi Steckdosen bestellt in der Hoffnung die seien noch mit DIP-Schaltern zu
konfigurieren. Dies ist nicht mehr so, darüberhinaus waren sie gar nicht für die notwendige Leistung
ausgelegt.
Meine Funksteckdosen (Model: Intertechno IT-3500) gabs beim Baumarkt um die Ecke am günstigsten.
Das Auslesen der Codes und die Ansteuerung mit dem Transmitter ging problemlos die Steckdosen machen
einen soliden Eindruck.
BEACHTE: Die Funksteckdosen müssen die Leistung Deines Topfs aushalten! Mein Topf hat eine Leistungsaufnahme von 2000 Watt. Die IT-3500 sind für 3500 Watt ausgelegt. Es können ab der Version 2 des BKS 3000 aber auch mehrere Funksteckdosen für den Temperaturregelkreis angegeben werden. Diese werden dann parallel geschaltet. Damit kann man die Leistung erhöhen. Hierbei ist natürlich auf eine entsprechende Stromversorgung zu achten.
Es ist auch eine Ansteuerung des Topfes und des Rührwerks via GPIO-Ports möglich. Mehr dazu hier.
433 MHz Funk-Empfänger und Funk-Sender findest Du auch im Web z.B. bei einem grossen Online Buchhandel.
Für unseren Aufbau reichen aber "female-female" Steckbrücken!
Z.B. Aukru "female-female" jumper wire cable Kabel Steckbrücken / Drahtbrücken für Arduino Raspberry
Pi.
Gibt es u.a. auch beim dem Online Buchversand.
BEACHTE ab Version 4.0.0:
Da in dem SD-Karten Klone die MQTT Einstellungen vorkonfiguriert sind, müssen bei der Verwendung von Funksteckdosen die Einträge: SWITCH, MQTT_POTT, MQTT_AGIT und MQTT_SPAR aus der System-Konfiguration entfernt werden!
Anlernen der Funksteckdosen mit den auf dem SD-Karten Klone befindlichen Werten.
VORAUSSETZUNG:
Hiermit erspart man sich:
Dies funktioniert nur wenn kein weiterer Sud in der unmittelbaren Umgebung ebenfalls mit dem BKS und den Standardkodierungen gesteuert wird!!!
Individuelles Programmieren der Funksteckdosen mit eindeutigen Kodierungen!
Dies ist notwendig wenn mehrere BKS Steuerungen gleichzeitig in unmittelbarer Umgebung laufen!
Z.B. bei gemeinschaftlichen Brauen mit anderen Brauern die auch das BKS einsetzen!!!!
Hinweis:
Achtung: Bevor Änderungen an der Konfiguration von pilight vorgenommen werden können, ist
der pilight-Daemon unbedingt zu stoppen (sudo service pilight stop).
Andernfalls werden die Einstellungen von der config.json nicht korrekt gespeichert bzw. vom
pilight-Daemon wieder überschrieben.
Mit dem Befehl: 'sudo service pilight start' könnt Ihr den notwendigen Daemon Prozess, nach
der Konfiguration der config.json, wieder starten.
Info / Tipp:
Es kann wie auf dem Bild - siehe roter Draht - dargestellt eine 'selbstgebaute' Antenne
angeschlossen werden.
Hierzu gibt es unterschiedliche Erfahrungen, bei dem einen war eine Sendeleistungssteigerung
festzustellen.
Bei anderen hat das Anbringen einer Antenne erst zu Sendeproblemen geführt.
Es hängt hier wohl stark von der Umsetzung einer solchen Antenne ab.
Ich habe mich damals für eine Ansteuerung über Funksteckdosen entschieden,
weil ich die hohe Leistung eines Elektrotopfes nicht direkt an meinem Raspberry anschliessen wollte.
Darüberhinaus wollte ich es vermeiden, dass der ggf. nicht erfahrene Bastler an Schaltungen die 220V
oder mehr führen herumbasteln muss.
Nachdem ich mehrfach gefragt wurde ob es nicht möglich wäre mit dem BKS auch direkt potentialfreie
Kontakte (GPIO's) zu schalten
habe ich auch diese Variante mit aufgenommmen.
Über den GPIO-Port 22 (PIN #15) für den Topf, GPIO-Port 23 (PIN #16) für das Rührwerk und GPIO-Port
24 (PIN #18) für den Nachguss.
Als GND kann z.B. der PIN #39 verwendet werden.
An die o.g. GPIO Ports muss dann einen Solid-State-Relais Karte angeschlossen werden. Viele
verwenden hierfür eine sog. 'sainsmart 4 channel relay' Karte oder baugleiche.
Der Rasperry PI setzt die GPIO OUT-Ports standardmäßig auf HI.
Es gibt ab der Version 2.1.3 die Möglichkeit über einen Konfigurationsparameter die Schaltweise
vorzugeben.
D.h. das BKS kann zum Regeln die GPIO Ports HI oder LOW schalten.
Soll eine Ansteuerung via GPIO-Ports erfolgen muss dies in der Verwaltung konfiguriert werden.
BEACHTE:
Der Eintrag vom Typ=SWITCH ist nur dann notwendig wenn via GPIO oder MQTT geschaltet wird
und muss im Menüpunkt: Verwaltung - Hardware (System - Peripherie) hinzugefügt werden!!!
Die Einträge POTT und AGITATOR müssen immer vorhanden sein !!!
bis Version 3.0.0 wurden folgende Überschriften verwendet
(bis 3.0.0 -> ab 3.1.0):
Da der Raspberry beim Hochfahren standardmäßig die GPIO-Ports auf HI setzt, müssen im Modus 'invers
Schalten' alle GPIO-Ports ausgeschaltet werden.
In Kommandozeile folgendes eingeben:
sudo nano /usr/local/bin/start-gpio.sh
INHALT:
#!/bin/bash
gpio export 22 out
gpio export 23 out
gpio export 24 out
gpio -g write 22 0
gpio -g write 23 0
gpio -g write 24 0
exit 0
Eine Anleitung und ein Skript hierzu befindet sich auf dem SD-Karten Klone im Verzeichnis:
~/bks/bks_SSR-Invers/update_SSR-INVERS.txt
Vielen Dank Jonathan für Deine Unterstützung!
MQTT ist ein Leichtgewicht-Protokoll, das Publish-Subscribe-Mechanismen nutzt
und sich dafür sehr
gut für IoT-Applikation eignet.
Bei MQTT gibt es einen MQTT-Broker und x MQTT-Clients.
Die Clients kommunizieren ausschließlich mit dem Broker und müssen daher keine
Verbindungen zu
anderen Clients verwalten.
Clients schicken dem Broker Nachrichten mit einem Topic (publish), das wiederum
von anderen Clients
abonniert werden kann (subscribe) und der Broker dann die Nachrichten an diese
Clients weiterleitet.
Topics sind hierarchisch aufgebaut, z. B.
cmnd/motor/power
(Best practice ist, Topics mit einem Präfix zu versehen, das kennzeichnet, ob es
sich um einen
Befehl (cmnd) oder Status-Update (stat) handelt.)
Für MQTT gibt es viele open-source und freeware Tools, wie z. B. mosquitto für
Linux, wodurch das
Veröffentlichen einer Nachricht ein Einzeiler ist:
mosquitto_pub -h 'Adresse_des_Brokers' -t 'Topic' -m 'Nachricht'
Idee für die Ansteuerung von MQTT-Steckdosen via BKS 3000 ist, dass ein
einfacher MQTT-Client
implementiert wird, der zum Steuern der Steckdosen MQTT-Nachrichten
veröffentlicht.
Vermutlich hat jemand, der MQTT-fähige Steckdosen hat, auch bereits einen
MQTT-Broker in seinem
Netzwerk laufen hat, aber auch einen MQTT-Broker auf dem BKS zu installieren,
sind nur ein paar
Zeilen mehr.
Das BKS veröffentlicht alle Statusänderungen per MQTT und der Anwender abonniert
die Topics.
Soll eine Ansteuerung via MQTT erfolgen muss dies in der Verwaltung konfiguriert
werden.
BEACHTE:
Der Eintrag vom Typ=SWITCH ist nur dann notwendig wenn via GPIO oder MQTT geschaltet wird
und muss im Menüpunkt: Verwaltung - Hardware (System - Peripherie) hinzugefügt werden!!!
Die Einträge POTT und AGITATOR müssen immer vorhanden sein !!!
Eintrag für das Topic zum Steuern Einkochautomaten/Braukessels und der Nachrichten zum Einschalten und Ausschalten in Menüpunkt: Verwaltung - Hardware (System - Peripherie) hinzufügen
Eintrag für das Topic zum Steuern Rührwerk und der Nachrichten zum Einschalten und Ausschalten in Menüpunkt: Verwaltung - Hardware (System - Peripherie) hinzufügen
WICHTIG: Diese Installation muss von dem selber durchgeführt werden und ist nicht Bestandteil des BKS SD-Karten Klone !!!
Mehr ist gar nicht zu tun, wenn man die Default-Konfiguration beibehält und
keine
Sicherheitsmaßnahmen benötigt.
Die Installationsschritte wurden von
http://www.steves-internet-guide.com/install-mosquitto-linux/ übernommen.
Mit ein bischen Recherche hat man den 1-wire to USB Adapter, der einen DS9097 Serial Port Adapter
simuliert, für ca. 10 Euro erworben.
z.B. hier: http://www.ebay.de/itm/231356086788
Beachte:
Ein DS9097U wird anders ausgelesen, ich arbeite gerade an einer
Konfigurationsmöglichkeit im BKS (ist z.Zt. in Arbeit, wird aber noch dauern, daher besser den
DS9097 -ohne U- nehmen)
Diese Adapter kommunizieren über eine virtuelle serielle Schnittstelle via USB.
Die Temperaturfühler können so vom Raspberry sehr einfach an- bzw. abgesteckt werden.
1-wire to USB Adapter:
ROT | VCC +5V (100mA max) | |
WEISS | VCC +3.3V (20mA max) | |
SCHWARZ | GND | |
GRÜN | DATA |
Hinweis:
Bislang habe ich immer mit 3.3 Volt angesteuert.
Die Empfehlung des Herstellers des 1-wire to USB Adapter ist - nach Rücksprache mit Ihm - die 5 Volt
zu verwenden.
Darüberhinaus kann bei Verwendung eines 1-wire to USB Adapter (DS9097, DS9097U) auf einen Pull-Up
Widerstand verzichtet werden!
Ich habe mir nun ein Set wie oben beschrieben zusammengebaut und es gab keine Probleme damit!
Eine gute Beschreibungen findet man auch hier:
http://www.netzmafia.de/skripten/hardware/RasPi/Projekt-Onewire/index.html
Alle Verbindungen können natürlich auch über eine sog. Lüsterklemme erfolgen.
Es muss somit nicht gelötet werden!
Temperaturfühler Version 1:
ROT | VCC +3.3V / 5V | |
SCHWARZ | GND | |
GELB | DATA |
Temperaturfühler Version 2:
ROT | VCC +3.3V / 5V | |
GELB | GND | |
GRÜN | DATA |
Verdrahtung:
Schrumpfschläuche verschiedener Dicke über alle Temperaturführerkabel stecken !
...oder später alles mit Isolierband isolieren.
...oder Steckverbindungen verwenden. Diese haben den Vorteil, dass falls wirklich mal ein
Temperaturfühler kaputt geht nicht der ganze Kram auseinandergelötet werden muss!
1. Alle ROTEN Kabel der Tempfühler mit dem ROTEN (5 Volt) des USB-Adapters verbinden.
2. Die Daten (DATA) Leitungen miteinander verbinden.
3. GND Leitungen verbinden.
4. Alle Verbindungen isolieren.
Konfigurationsdatei .digitemprc anlegen:
Nun kann das USB Kabel angesteckt und die Temperaturfühler ausgelesen werden:
Vorgehensweise:
Anschluss der Temperaturfühler mittels GPIO Ports.
Hierbei kann die Datenleitung des Temperaturfühlers mit GPIO Port 4 (PIN 7) verbunden werden.
VCC bekommt man z.B. via PIN 4 und GND gibt es auf PIN 9.
Wichtig hierbei ist, dass Ihr einen 4,7k Ohm Pull-Up Widerstand zwischen VCC und Daten schaltet!
Bei dem auf den Bildern dargestellten Verbindung habe ich WAGO Klemmen genommen. Die haben den
Vorteil,
dass der Zusammenbau einfach ist und falls mal ein Temperaturfühler kaputtgeht, dieser leicht
ausgetauscht werden kann.
folgende Einstellungen sind vorzunehmen:
sudo nano /boot/config.txt
# Enable 1-Wire devices
dtoverlay=w1-gpio,gpiopin=4,pullup=on
sudo nano /etc/modules
# /etc/modules
w1-gpio pullup=1
w1-therm
Beide Skripts (wenn Temperaturfühler via GPIO):
~/bks/tempfFuehler-viaGPIO/log_temp_to_cmd.pl
~/bks/tempfFuehler-viaGPIO/log_temp_to_sql.pl
müssen in das Verzeichnis;
~/temperature/
kopiert werden!
Evtl. die bestehenden (Temperaturfühler via USB-Skript vorher sichern)
Der Temperatursensor via GPIO funktioniert - mit dem beigefügtem Skript - an:
GPIO-Port 4!
Die Adressen (Seriennummer/Kodierung im BKS) der Temperaturfühler findet man hier:
/sys/bus/w1/devices/
WICHTIG: Der Sensor muss wie bei USB vorher angesteckt sein.
PROBLEMBEHANDLUNG:
sudo modprobe w1-gpio
sudo modprobe w1-therm
cd /sys/bus/w1/devices
ls -l
cd 00-xxxxxxxxx
ls -l
=> file: w1_slave
MUSS VORHANDEN SEIN !
=> ID's
bekannte Probleme:
- es werden immer wieder unterschiedliche IDs angezeigt
- es wird immer nur 85°C ausgegeben
=> Verdrahtung nicht sauber !!!
TEST:
cd temperature
perl ./log_temp_to_cmd.pl
WICHTIG:
Nun muss die Hardware noch im BKS bekanntgegeben werden!
- siehe 'Beschreibung der Software' VERWALTUNGSDIALOGE' -> Dialog: 'Hardware' -