ZaboBier - Brausysteme
Zerzabelshof | Nürnberg | Deutschland

Hardware

Raspberry PI und Peripherie


Teileliste

Komponenten

  • bis BKS-Version 3.0.0 Raspberry PI 2 (+WLAN-Stick), Raspberry PI 3/3B+ UND 4B
  • Micro SD Speicherkarte 32 GB
  • Temperaturfühler (DS18B20)
  • USB 1-wire Adapter (DS9097) Beachte: ein DS9097U wird anders ausgelesen, ich arbeite gerade an einer Konfigurationsmöglichkeit

    Alternative:

    es ist möglich die Temperaturfühler über den GPIO-Port 4 auszulesen!
    Eine Anleitung und die notwendigen Skripts hierzu befindet sich auf dem SD-Karten Klone im Verzeichnis:
    ~/bks/tempFuehler/tempFuehler-viaGPIO/HowToRaspi.txt
    (erst ab SD-Klone Version 2.1.2 !)
  • 433 MHz Empfänger und Funk- Sende Modul & Funksteckdose(n) (z.B. Intertechno 3500Watt)

    Alternative:

    es ist möglich Geräte (Topf, Rührwerk, Nachguss) über Solid-State-Relais zu schalten!
  • Kabel Steckbrücken / Drahtbrücken für Arduino Raspberry Pi. "female-female" genügt.

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.

Zusammenbau

Raspberry Pi

  • Beim Zusammenbau des Raspberry sollten zwei Kühlkörper auf die im Bild abgebildeten Chips geklebt werden (wärmeleitfähiges Doppelklebeband - ist im Kühlkörper Set enthalten - verwenden).
    Die Wäremeentwicklung ist zwar gering, aber sicher ist sicher.
  • Die Plantine wird in das passende Gehäuse geklickt.
  • Die WLAN USB Karte anstecken (nur bei Raspberry's bis einschliesslich Version 2 notwendig!).
  • Die BKS SD-Karte (vorher mit einem KloneProgramm das BKS Image auf die Karte spielen) in den dafür vorgesehenen Slot schieben.
  • und als nächstes muss für die weitere Konfiguration (WLAN, Funksteckdosen & Temperaturfühler) ein Monitor, eine Tastatur und eine Maus angesteckt werden.
  • Das passende Netzteil anschliessen und damit wird der Raspberry gestartet.
  • Nun sollte das WLAN konfiguriert werden oder falls gewünscht kann der Raspberry natürlich auch via LAN angesprochen werden.
    Fall kein WLAN oder LAN zu Verfügung steht, ist es auch eine gute Variante den Raspberry als WLAN AccessPoint, Bridge etc. zu konfigurieren.

Ansteuerung via Funksteckdosen / Empfänger


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!



Variante 1

Anlernen der Funksteckdosen mit den auf dem SD-Karten Klone befindlichen Werten.
VORAUSSETZUNG:

  • du verwendest auch die Funksteckdosen Model: Intertechno IT-3500!
  • Kein anderer Sud wird mit dem BKS und dieser Standardkodierung in Deiner unmittelbaren Umgebung eingesetzt!

Hiermit erspart man sich:

  • die Anschaffung einer Fernbedienung
  • die Anschaffung eines Empängermoduls
  • das Auslesen der Kodierung

Dies funktioniert nur wenn kein weiterer Sud in der unmittelbaren Umgebung ebenfalls mit dem BKS und den Standardkodierungen gesteuert wird!!!

  • Funksteckdosen und Fernbedienung (Variante 1)
    Das Sendemodul (siehe nächsten Installationsschritt) anschliessen.
  • 1.) Lernknopf (L) an der Funksteckdose die für den TOPF vorgesehen ist kurz drücken (1sec.).
    => die rote LED blinkt.
  • 2.)
    ENTWEDER mit folgendem Befehl bei angeschlossenem Sender die Programmierung der Intertechno Steckdosen über die Kommandozeile ausführen:
    // ON
    $pilight-send -p kaku_switch -i 16657026 -u 0 -t

    ODER ALTERNATIV kann die Programmierung direkt über das BKS vorgenommen werden!!!
    Einfach im SystemMonitor TOPF EIN anklicken! Der korrekt Befehl wird dann automatisch abgeschickt!

    Die Funksteckdose schaltet 2x, zum Zeichen, dass der neue Code wurde. FERTIG!

  • 3.) Lernknopf (L) an der Funksteckdose die für das RÜHRWERK vorgesehen ist kurz drücken (1sec.).
    => die rote LED blinkt.
  • 4.)
    ENTWEDER die Programmierung der Intertechno Steckdosen durchführen mit:
    // ON
    $pilight-send -p kaku_switch -i 16657026 -u 1 -t

    ODER ALTERNATIV kann die Programmierung direkt über das BKS vorgenommen werden!!!
    Einfach im SystemMonitor RÜHRWERK EIN anklicken! Der korrekt Befehl wird dann automatisch abgeschickt!

    Die Funksteckdose schaltet 2x, zum Zeichen, dass der neue Code wurde. FERTIG!

Variante 2

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!!!!

  • Funksteckdosen und Fernbedienung (nur Variante 2)
    Die Funksteckdosen gemäß der Verpackung beiliegenden Anleitung programmiert werden. Danach bitte einen grundsätzlichen Funktionstest mit der Fernbedienung durchführen.
  • Empängermodul anschliessen (nur Variante 2)
    Hinweis:
    Laut Beschreibung braucht das Empfängermodul 5V. Da an den Data-Pins aber maximal 3.3V anliegen dürfen wäre eine kleine Schaltung (Spannungsteiler) notwendig. Den Empfänger brauchen wir nur kurzfristig und senden aus direkter Nähe, dass funktioniert auch mit 3,3V. Auf der Rückseite der Empängerplatine sind VCC, DATA und GND aufgedruckt. Ich verwende den DATA-Pin direkt neben VCC (siehe Bild). Eine gute Beschreibung um den Empfänger und den Sender anzuschliessen, als auch um die Codierung der Steckdosen auszulesen, findet Ihr hier:
    Quelle: https://www.sweetpi.de/blog/258/funksteckdosen-mit-dem-raspberry-pi-und-pilight-schalten

    Danach können die Stecker auf die GPIO Ports gesteckt werden.
    PIN #01: 3.3v DC Power
    PIN #06: GND (Ground)
    PIN #12 / GPIO18: DATA (Receiver - auf abgebildeten Belegungsplan BLAU!)
    Beachte die entsprechende Bilder und prüfe lieber zweimal die korrekte Verdrahtung.
  • Empängermodul auslesen (nur Variante 2)
    Hinweis:
    Wenn Ihr meinen BKS SD-Karten Klone verwendet, spart Ihr euch u.a. auch das Installieren des pilight Packages.
    Ich verwende pilight Version 7 vom Mai 2015. Beim Start des Raspberry wird dann bereits der 'pilight-daemon' gestartet und funktioniert auch.

    Auslesen der Kodierung: Fernbedienungsschalter zu Funksteckdose.
    Hierzu muss ein Konsolen Fenster (Terminal) auf dem Raspberry geöffnet werden.
    1. $sudo service pilight stop
    2. $sudo service pilight start

    Der Empfangsmodus kann mit folgendem Befehl gestartet werden:
    3. $ pilight-receive
    Nun flitzen allerlei empfangene Signale an einem vorbei.
    Ich habe alle Protokolle der pilight Bibliotek installiert. D.h. es wird alles mögliche empfangen und es ist mitunter erst nach ein paar Versuchen eindeutig festzustellen welche ID die Fernbedienung sendet.
    Ich gehe immer folgendermassen vor:
    Wenn etwas Ruhe eingekehrt ist, auf der Tastatur einen beliebigen Buchstaben gedrückt halten, damit man einen Startpunkt hat. Dann einen Schalter der Fernbedienung drücken und die ersten 5 Signale mit der Maus markieren und herauskopieren. Eine Textdatei öffnen und den Inhalt einfügen und in Ruhe auswerten.
    Entscheident ist hierbei die jeweils ausgegeben 'ID' (Kodierung) und das entsprechende Protokoll. Die jeweiligen Steckdosen werden als 'UNIT' (z.B. bei InterTechno 0=erster Schalter, 1=zweiter Schalter ...) bezeichnet. Die ID und das Protokoll ist für beide Stecker identisch.
    Die Ausgabe schaut z.B. so aus:
    {
    "message": {
    "id": 16653794,
    "unit": 0,
    "state": "opened"
    },
    "origin": "receiver",
    "protocol": "arctech_contact",
    "uuid": "0000-74-da-38-6b0c3d",
    "repeats": 1
    }
    {
    "message": {
    "id": 16653794,
    "unit": 0,
    "state": "on"
    },
    "origin": "receiver",
    "protocol": "arctech_switch",
    "uuid": "0000-74-da-38-6b0c3d",
    "repeats": 1
    }
    {
    "message": {
    "id": 16653794,
    "unit": 0,
    "state": "up"
    },
    "origin": "receiver",
    "protocol": "arctech_screen",
    "uuid": "0000-74-da-38-6b0c3d",
    "repeats": 1v }
    {
    "message": {
    "id": "F0",
    "unit": 0,
    "state": "off"
    },
    "origin": "receiver",
    "protocol": "clarus_switch",
    "uuid": "0000-74-da-38-6b0c3d",
    "repeats": 1
    }

    Bei den InterTechno Steckern wird 'arctech_switch' ausgegeben, das zu konfigurierende Protokoll ist identisch mit 'kaku_switch'. Bitte hier 'kaku_switch' einstellen!
    Hinweis:
    Andere Stecker bedeutet andere Konfiguration!!!

    Das war der schwierigste Teil der Installation!
  • Hinweis:
    Wenn Ihr pilight selber installiert und beim Systemstart den 'pilight-daemon' via crontab automatisch starten möchtet ist hierbei folgendes zu beachten:
    Der 'pilight-daemon' kann nur gestartet werden, wenn das Netzwerk vollständig initialisiert ist, dass kann beim Systemstart etwas dauern. Lt. Hersteller wird dieser Fehler behoben wenn das Betriebssystem jessie das ältere weezie flächendeckend abgelöst hat. >>When all Raspberry Pi's will finally run Jessie i can start implement a systemd startup script that can properly wait for network availability. Until then, there is not much i can do about it.<<
    Es muss in der Datei /etc/init.d/pilight (Zeile 81 - dies ist natürlich verionsabhängig) ein 'sleep 10' hinzugefügt werden.
    Quelle: https://forum.pilight.org/Thread-Service-does-not-start-correctly-when-booting
    Die entsprechenden Dateiberechtigungen sind natürlich zu berücksichtigen.

  • Empfängermodul bekanntgeben (!!! WICHTIG !!!)
    Es muss nun noch die config.json Datei angepasst werden!

    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.

    Diese findet Ihr im Verzeichnis ($cd /etc/pilight/):
    /etc/pilight/
    Zum Bearbeiten der Datei verwende ich z.B. den nano Editor, man kann natürlich auch mit vi etc. arbeiten. Es ist darauf zu achten, dass Ihr diese Datei als SUPERUSER bearbeitet, da ihr als nomaler PI-Benutzer keine Schreibrechte habt! Den Editor startet Ihr also mit:
    $sudo nano config.json
    folgender Inhalt sollte hier enthalten sein:

    {
    "devices": {
    "Switch1": {
    "protocol": [ "kaku_switch" ],
    "id": [{
    "id": 16657026, (WICHTIG hier die richtige ID!!!)
    "unit": 0
    }],
    "state": "on"
    },
    "Switch2": {
    "protocol": [ "kaku_switch" ],
    "id": [{
    "id": 16657026, (WICHTIG hier die richtige ID!!!)
    "unit": 1
    }],
    "state": "off"
    }
    },
    "rules": {},
    "gui": {
    "Switch1": {
    "name": "Switch Nr 1",
    "group": [ "MeineSwitches" ],
    "media": [ "all" ]
    },
    "Switch2": {
    "name": "Switch Nr 2",
    "group": [ "MeineSwitches" ],
    "media": [ "all" ]
    }
    },
    "settings": {
    "log-level": 6,
    "pid-file": "/var/run/pilight.pid",
    "log-file": "/var/log/pilight.log",
    "webserver-enable": 1,
    "webserver-root": "/usr/local/share/pilight/",
    "webserver-http-port": 5001,
    "webserver-cache": 0
    },
    "hardware": {
    "433gpio": {
    "sender": 0,
    "receiver": 1
    }
    },
    "registry": {
    "pilight": {
    "version": {
    "current": "7.0"
    }
    }
    }
    }

Ansteuerung via Funksteckdosen / Sender

  • 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!
  • Sendemodul anschliessen
    Die Stecker des Senders auf folgende GPIO Ports stecken: PIN #01: 3.3v DC Power PIN #06: GND (Ground) PIN #11 / GPIO17: DATA (Transmitter - auf abgebildeten Belegungsplan GELB!) Beachte die entsprechende Bilder und prüfe lieber zweimal die korrekte Verdrahtung.
  • Sendemodul isolieren
    Um Kurzschlüsse zu vermeiden, sollte das gesamte Sendemodul isoliert werden. Hierbei kann Isolierband oder natürlich ein Schrumpfschlauch verwendet werden.
  • Sendemodul testen
    Mit folgendem Befehl kann bei angeschlossenem Sender die Funktionsweise getestet werden (Beispiel: InterTechno):
    // ON
    $pilight-send -p kaku_switch -i 16657026 -u 0 -t
    // OFF
    $pilight-send -p kaku_switch -i 16657026 -u 0 -f

    Systemparameter im BKS einpflegen
    Kodierung, ID und Protokoll bitte im BKS WebInterface im Menüpunkt 'Verwaltung' -> 'Funksteckdosen' eintragen. Nicht vergessen die Steckdosen mit einem Aufkleber entsprechend zu kennzeichnen (z.B. Topf, Rührwerk)!
    Im Menüpunkt 'System Kontrolle' kann die richtige Funktionsweise ebenfalls überprüft werden.

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.

Alternative: Ansteuerung via Solid-State-Relais

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.

Konfiguration SSR/GPIO im BKS

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 !!!

  • 'Typ': 'SWITCH'
    'TEMP-Kodierung / MQTT': beliebig - wird nicht verwendet
    'TEMP-Protokoll / SSR-Invers / MQTT': 0 : Steuerung schaltet den GPIO Port bei EIN/ON auf LOW | 1 : Steuerung schaltet den GPIO Port bei EIN/ON auf HI
    'TEMP-Unit-ID / SSR / MQTT': SSR (!!! WICHTIG !!!)
    'Bezeichnung': beliebig - wird nicht verwendet
    'aktiv': Haken setzen !

bis Version 3.0.0 wurden folgende Überschriften verwendet
(bis 3.0.0 -> ab 3.1.0):

  • 'Typ' -> 'Typ'
  • 'Seriennummer / Kodierung' -> 'TEMP-Kodierung / MQTT'
  • 'Protokoll (nur bei SWITCH)' -> 'TEMP-Protokoll / SSR-Invers / MQTT'
  • 'Unit-ID (nur bei SWITCH)' -> 'TEMP-Unit-ID / SSR / MQTT'
  • 'Bezeichnung' -> 'Bezeichnung'
  • 'aktiv' -> 'aktiv'

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

Alternative Ansteuerung via MQTT-Broker

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 und Umsetzung für das BKS (J. Schneider)

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.

Konfiguration MQTT im BKS

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 !!!

  • 'Typ': 'SWITCH'
    'TEMP-Kodierung / MQTT': ADRESSE des MQTT-Brokers
    'TEMP-Protokoll / SSR-Invers / MQTT': MQTT-Befehl (in Abhängigkeit des MQTT-Clients z.B. 'mosquitto_pub -h')
    'TEMP-Unit-ID / SSR / MQTT': MQTT (!!! WICHTIG !!!)
    'Bezeichnung': beliebig - wird nicht verwendet
    'aktiv': Haken setzen !

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

  • 'Typ': 'MQTT_POTT' / 'MQTT Topic f. Braukessel'
    'TEMP-Kodierung / MQTT': MQTT-TOPIC
    'TEMP-Protokoll / SSR-Invers / MQTT': MQTT-NACHRICHT zum EINSCHALTEN des Braukessels
    'TEMP-Unit-ID / SSR / MQTT': MQTT-NACHRICHT zum AUSSCHALTEN des Braukessels
    'Bezeichnung': beliebig - wird nicht verwendet
    'aktiv': Haken setzen !

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

  • 'Typ': 'MQTT_AGIT' / 'MQTT Topic f. Rührwerk'
    'TEMP-Kodierung / MQTT': MQTT-TOPIC
    'TEMP-Protokoll / SSR-Invers / MQTT': MQTT-NACHRICHT zum EINSCHALTEN des Braukessels
    'TEMP-Unit-ID / SSR / MQTT': MQTT-NACHRICHT zum AUSSCHALTEN des Braukessels
    'Bezeichnung': beliebig - wird nicht verwendet
    'aktiv': Haken setzen !

Notwendige Installation eines MQTT-Clients z.B. von mosquitto

WICHTIG: Diese Installation muss von dem selber durchgeführt werden und ist nicht Bestandteil des BKS SD-Karten Klone !!!

  • wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
  • sudo apt-key add mosquitto-repo.gpg.key
  • cd /etc/apt/sources.list.d/
  • sudo wget http://repo.mosquitto.org/debian/mosquitto-buster.list
  • sudo apt-get update
  • sudo apt-get install mosquitto (optional falls auch der MQTT-Broker installiert werden soll)
  • sudo apt-get install mosquitto-clients
  • rm Mosquitto-repo.gpg.key

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.

Temperaturfühler via USB Adapter

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

Hinweis:
Bei meiner zweiten Bestellung wurden Temperaturfühler, die lt. Beschreibung auch mit ROT/SCHWARZ/GELB farbigen Anschlusskabel geliefert werden sollten, mit ROT/GRÜN/GELB farbigen Kabeln geliefert.
Es ist anzumerken, dass die Belegung dieser Farbzusammenstellung lieferantenabhängig ist!

Temperaturfühler Version 2:

ROT    VCC +3.3V / 5V
GELB    GND
GRÜN    DATA

Hinweis:
Um dies herauszufinden habe ich eine Testverdrahtung durchgeführt (mit dem 3.3 Volt Anschluss!). Falls hierbei GND und DATA vertrauscht werden, verzeihen es einem die Temperaturfühler und funktionieren danach (meist) trotzdem.

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:

  • In dem Terminal Fenster sieht man mit dem Befehl pwd in welchem Verzeichnis man aktuell steht.
    Z.B.:
    /home/pi/
  • hier MUSS in das Unterverzeichnis 'temperature' gewechselt werden :
    $cd temperature
    mit dem Befehl pwd sollte folgendes Verzeichnis ausgegeben werden:
    /home/pi/temperature
  • Ggf. müssen die Berechtigungen bzgl. des Zugriffs auf den USB-Port erteilt werden:
    $sudo chmod a+rw /dev/ttyUSB0
  • Auslesen der Temperaturfühler mit:
    $digitemp_DS9097 -i -s /dev/ttyUSB0
    Hierbei wird auch gleich eine Datei .digitemprc angelegt, die entsprechenden Identifikationsnummern enthält.
    DIESE DATEI MUSS IN DEM VERZEICHNIS /home/pi/temperature/ STEHEN !!!

    Bitte mit dem Befehl:
    $ls -l -a
    überprüfen!
  • Mit folgendem Befehl, können die Temperaturwerte ausgelesen werden:
    digitemp_DS9097 -a

Temperaturfühler via GPIO

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

Konfiguration der Peripherie im BKS

WICHTIG:
Nun muss die Hardware noch im BKS bekanntgegeben werden!

- siehe 'Beschreibung der Software' VERWALTUNGSDIALOGE' -> Dialog: 'Hardware' -