Zurück zum Inhaltsverzeichnis
Zurück zu Kapitel 1
2. BSB-LAN: Die Software
In den folgenden Kapiteln wird auf die Installation und die Konfiguration der BSB-LAN-Software eingegangen. Eine Beschreibung des Webinterface findest du hingegen in Kap. 4, eine Beschreibung der Abfrage- und Steuermöglichkeiten in Kap. 5 und eine Beschreibung der Spezialfunktionen in Kap. 6.
2.1 Installation
Die BSB-LAN-Software muss zur Installation auf den jeweils verwendeten Mikrocontroller (Arduino Due oder ESP32) geflasht werden. Dies kann bspw. mittels der “Arduino IDE” erfolgen, selbstverständlich können aber auch andere Programme wie bspw. “PlatformIO” oder “Visual Studio Code” genutzt werden.
Hinweis |
---|
In diesem Handbuch wird davon ausgegangen, dass die Arduino IDE genutzt wird. Sämtliche Beschreibungen und Bezeichnungen beziehen sich daher auf die Arduino IDE. Solltest du Anfänger und mit der Arduino IDE noch nicht vertraut sein, so findest du eine Beschreibung zur Installation und Konfiguration der Arduino IDE in Kap. 12. |
Je nach verwendeter Plattform (Arduino Due oder ESP32) unterscheiden sich die notwendigen Einstellungen der Arduino IDE. So müssen die entsprechenden Boardtypen installiert und ausgewählt sein, die Einstellungen plattformspezifisch angepasst werden etc. Auf diese Einstellungen wird im Folgenden eingegangen. Dabei wird davon ausgegangen, dass die nötigen Bibliotheken für die jeweilge Plattform bereits installiert sind. Sollte dies nicht der Fall sein, so findest du Informationen hierzu in Kap. 12.
Darüber hinaus gibt es bei der Installation auf dem ESP32 noch weitere Dinge zu beachten, die im entspr. Kapitel ebenfalls behandelt werden.
2.1.1 Installation auf dem Due
Im Folgenden wird die Installation der BSB-LAN-Software auf einem Arduino Due beschrieben. Die Beschreibung bezieht sich dabei auf die Verwendung der Arduino IDE. Mit den Voreinstellungen der BSB-LAN-Software wird für die IP-Adressvergabe DHCP genutzt. Solltest du dies nicht wünschen und eine feste IP vergeben wollen, so lies bitte Kap. 2.2.2 und passe die Datei BSB_LAN_config.h vor dem Flashen an!
Hinweis |
---|
Solltest du Windows benutzen, so ist evtl. noch eine zusätzliche Treiberinstallation nötig. Auf der Seite https://www.arduino.cc/en/Guide/ArduinoDue findest du weitere Informationen. |
Führe die folgenden Schritte aus:
-
Verbinde das Arduino-Setup mit einem USB-Kabel mit deinem Computer. Nutze dabei den ‘Programming Port’ des Due, das ist der ‘mittlere’ USB-Port, der neben der Netzteilbuchse platziert ist. Sowohl das LAN-Shield als auch der BSB-LAN-Adapter sollte zuvor bereits auf den Due gesteckt sein, dies ist jedoch nicht zwingend nötig.
Das komplette Setup (Arduino Due + LAN-Shield + BSB-LPB-LAN-Adapter v3) inklusive der entsprechenden Kabel.
-
Downloade die aktuelle BSB-LAN-Version und entpacke die heruntergeladene Datei BSB-LAN-master.zip.
-
Wechsle in den Ordner “BSB-LAN-master”/”BSB_LAN” und benenne die Dateien BSB_LAN_custom_defs.h.default in BSB_LAN_custom_defs.h sowie BSB_LAN_config.h.default in BSB_LAN_config.h um!
-
Wenn du eigenen Code implementieren willst, benenne die Datei BSB_LAN_custom.h.default in BSB_LAN_custom.h um!
-
Öffne den BSB_LAN-Sketch mittels eines Doppelklicks auf die Datei BSB_LAN.ino im BSB_LAN-Ordner. Die dazugehörigen Dateien BSB_LAN_config.h, BSB_LAN_defs.h sowie BSB_LAN_custom_defs.h werden automatisch mit geladen.
-
Wähle “Arduino Due (Programming Port)” unter Tools/Board bzw. Werkzeuge/Board.
Hinweis Sollte das Board nicht aufgeführt sein, so muss der Atmel SAM Core hinzugefügt werden. Informationen hierzu findest du in Kap. 12.1.1. -
Wähle den korrekten Seriellen Port, an dem der Due am Rechner angeschlossen ist, unter Werkzeuge/Port aus.
Die Einstellungen für den Due in der Arduino IDE.
-
Solltest du BSB-LAN mittels Anpassung der Datei BSB_LAN_config.h konfigurieren wollen (s. Kap. 2.2.2), so tue dies bitte jetzt.
-
Starte den Flashvorgang und lade den Sketch mittels Klick auf “Sketch/Upload” bzw. “Sketch/Hochladen” auf den Arduino Due.
-
Nach Beenden des Flashvorgangs starte den Seriellen Monitor der Arduino IDE und beobachte die Ausgaben, die beim Start des Arduino Due erfolgen. Dort wird u.a. auch die IP ausgegeben, die dem Setup bei Verwendung von DHCP zugeteilt wird.
Herzlichen Glückwunsch - du hast BSB-LAN installiert!
Fahre nun mit der Konfiguration der BSB-LAN-Software und danach mit dem Anschluss und der Inbetriebnahme des Setups fort.
Wichtiger Hinweis |
---|
Um kompletten Zugriff auf alle Parameter deines Reglers zu erhalten, muss nach Abschluss aller hier genannten Schritte und dem erfolgreichen Flashen eine reglerspezifische Datei BSB_LAN_custom_defs.h erstellt und im Anschluss BSB-LAN mit dieser Datei neu installiert werden! Bitte beachte daher zwingend das Kap. 3.3 und führe die dort genannten Schritte aus! |
2.1.2 Installation auf dem ESP32
Im Folgenden wird die Installation der BSB-LAN-Software auf einem ESP32 beschrieben. Die Beschreibung bezieht sich dabei auf die Verwendung der Arduino IDE. Mit den Voreinstellungen der BSB-LAN-Software wird für die IP-Adressvergabe DHCP genutzt. Solltest du dies nicht wünschen und eine feste IP vergeben wollen, so lies bitte Kap. 2.2.2 und passe die Datei BSB_LAN_config.h vor dem Flashen an!
Hinweis |
---|
Sollte das ESP32-Board nicht von deinem Betriebssystem erkannt werden, so ist evtl. noch eine zusätzliche Treiberinstallation für den vom Board verwendeten USB-Chip nötig. |
Führe die folgenden Schritte aus:
-
Verbinde dein ESP32-Board mit mit einem USB-Kabel mit deinem Computer. Den BSB-LAN-Adapter kannst du vorher bereits auf bzw. unter dein ESP32-Board gesteckt haben, dies ist jedoch nicht zwingend nötig.
-
Downloade die aktuelle BSB-LAN-Version und entpacke die heruntergeladene Datei BSB-LAN-master.zip.
-
Wechsle in den Ordner “BSB-LAN-master”/”BSB_LAN” und benenne die Dateien BSB_LAN_custom_defs.h.default in BSB_LAN_custom_defs.h sowie BSB_LAN_config.h.default in BSB_LAN_config.h um!
-
Wenn du eigenen Code implementieren willst, benenne die Datei BSB_LAN_custom.h.default in BSB_LAN_custom.h um!
-
Öffne den BSB_LAN-Sketch mittels eines Doppelklicks auf die Datei BSB_LAN.ino im BSB_LAN-Ordner. Die dazugehörigen Dateien BSB_LAN_config.h, BSB_LAN_defs.h sowie BSB_LAN_custom_defs.h werden automatisch mit geladen.
-
Wähle den entspr. ESP32-Boardtyp unter Tools/Board bzw. Werkzeuge/Board aus:
-
Für den in diesem Handbuch empfohlenen Joy-It ESP32-NodeMCU (oder identische Clones mit einem “ESP32-WROOM”-Chip) lautet der passende Boardtyp “ESP32 Dev Module”.
-
Für das empfohlene Olimex ESP32-EVB & ESP32-PoE wähle bitte den gleichnamigen Eintrag aus der Liste aus.
Achtung, wichtiger Hinweis Falls das ESP32-Framework bereits installiert ist und dir die verschiedenen ESP32-Boardvarianten angezeigt werden, überprüfe bitte im “Boardverwalter” unter “Werkzeuge/Boards”, dass die Version 2.0.2 (oder höher, falls verfügbar) installiert ist.
Sollte das Board nicht aufgeführt sein, so muss die ESP32-Plattform in der Arduino IDE hinzugefügt werden. Informationen hierzu findest du in Kap. 12.1.2. -
-
Wähle den korrekten Seriellen Port, an dem das ESP32-Board am Rechner angeschlossen ist, unter Werkzeuge/Port aus.
-
Stelle die Übertragungsgeschwindigkeit/Baudrate auf 115200 ein (Achtung: In der Arduino IDE ist bei ESP32-Boards i.d.R. 921600 voreingestellt!).
-
“Partition Scheme”: Je nach gewähltem ESP32-Board sind hier entspr. Einstellungen vorzunehmen.
-
Für den empfohlenen ESP32-NodeMCU wähle bitte die Variante “Default 4MB with spiffs (1.2BM APP/1.5MB SPIFFS)” aus.
Der folgende Screenshot zeigt die gesamten Einstellungen für den ESP32-NodeMCU.Die Einstellungen für den ESP32-NodeMCU in der Arduino IDE.
-
Für die empfohlenen Olimex-Boards wähle bitte die Variante “Minimal SPIFFS (Large APPS with OTA)” aus.
-
-
Klicke nun auf den Reiter für die Datei BSB_LAN_config.h und passe zwingend die folgenden Einstellungen an:
-
Aktiviere das Definement
#define WIFI
in der Datei BSB_LAN_config.h, wenn du WiFi verwenden willst. Solltest du ein Olimex-Board verwenden und den LAN-Anschluss nutzen wollen, lasse das Definement bitte auskommentiert://#define WIFI
. -
Trage bei der Verwendung von WLAN die Zugangsdaten für dein WLAN-Netzwerk bei den Einträgen
char wifi_ssid[32] = "YourWiFiNetwork";
sowie
char wifi_pass[64] = "YourWiFiPassword";
ein.
-
-
Solltest du BSB-LAN mittels Anpassung der Datei BSB_LAN_config.h konfigurieren wollen (s. Kap. 2.2.2), so tue dies bitte jetzt.
-
Starte den Flashvorgang mittels Klick auf “Sketch/Upload” bzw. “Sketch/Hochladen”.
-
Nach Beenden des Flashvorgangs starte den Seriellen Monitor der Arduino IDE und beobachte die Ausgaben, die beim Start des ESP32 erfolgen. Dort wird u.a. auch die IP ausgegeben, die dem Setup bei Verwendung von DHCP zugeteilt wird.
Hinweise |
---|
Wenn der ESP32 sich nicht mit dem konfigurierten WLAN verbinden kann, richtet er seinen eigenen Accesspoint “BSB-LAN” mit dem Passwort “BSB-LPB-PPS-LAN” für 30 Minuten ein. Danach wird er neu starten und erneut versuchen, eine Verbindung zum eingerichteten WLAN-Netzwerk herzustellen. |
Obwohl die Logging-Funktion auch mit dem ESP32 funktioniert, ist es nicht empfehlenswert, diese Funktion aufgrund des Verschleißes des Flash-Speichers übermäßig zu nutzen. Sollte ein Olimex-Board zum Einsatz kommen, so kann anstelle des SPIFF-Flashspeichers eine microSD-Karte genutzt werden. Die Verwendung ist in der Datei BSB_LAN_config.h zu aktivieren (Definement #define ESP32_USE_SD ). |
Herzlichen Glückwunsch - du hast BSB-LAN installiert!
Fahre nun mit der Konfiguration der BSB-LAN-Software und danach mit dem Anschluss und der Inbetriebnahme des Setups fort.
Wichtiger Hinweis |
---|
Um kompletten Zugriff auf alle Parameter deines Reglers zu erhalten, muss nach Abschluss aller hier genannten Schritte und dem erfolgreichen Flashen eine reglerspezifische Datei BSB_LAN_custom_defs.h erstellt und im Anschluss BSB-LAN mit dieser Datei neu installiert werden! Bitte beachte daher zwingend das Kap. 3.3 und führe die dort genannten Schritte aus! |
2.1.3 Updates
Ein Updaten der BSB-LAN-Software erfolgt durch das gewohnte Flashen der neuen Version (Download als ZIP-File, per git o.ä.), wie es in den vorherigen Installationskapiteln beschrieben ist. Bitte beachte die folgenden Hinweise!
Für ESP32-basierte Boards (Olimex, NodeMCU) kann alternativ auch ein OTA-Update (“OverTheAir”-Update) erfolgen (diese Funktion ist NICHT mit dem Arduino DUE nutzbar!). Hierzu muss in der Webkonfig oder der Datei BSB_LAN_config.h die entspr. OTA-Funktion aktiviert werden. Die entspr. Firmware-Datei BSB_LAN_ino.bin kann man in der Arduino IDE unter “Sketch / Kompilierte Binärdatei exportieren…” erstellen lassen. Der Upload der Datei erfolgt dann per Browser auf Port 8080 der BSB-LAN-IP (http://<BSB-LAN-IP>:8080
bzw. http://bsb-lan:8080
bei aktiviertem MDNS).
Hinweise |
---|
Bei einem Update auf v3.x nutze bitte keinerlei bereits bestehenden Dateien - installiere BSB-LAN bitte komplett neu! Beachte außerdem die notwendige Erstellung einer reglerspezifischen BSB_LAN_custom_defs.h - das Vorgehen ist in Kap. 3.3 beschrieben. |
Solltest du in der Datei BSB_LAN_config.h bestimmte Änderungen bei der neu zu flashenden Version vorgenommen haben, wie bspw. die Zugangsdaten für dein WLAN oder eine fest vergebene IP, die dann nach dem Flashen offenbar nicht übernommen wurden, so liegt dies i.d.R. daran, dass die alten Einstellungen aus dem EEPROM gelesen wurden. Um die neuen Einstellungen wirksam werden zu lassen, stelle in der Webkonfiguration die Einstellung “Konfiguration aus EEPROM lesen” einmal auf “Aus”, speichere die Änderung und flashe nochmal neu. Danach sollten die neuen Einstellungen wirksam geworden sein, weil BSB-LAN diese nun aus der Datei BSB_LAN_config.h und nicht aus dem EEPROM eingelesen hat. Nach erfolgreicher Überprüfung stelle “Konfiguration aus EEPROM lesen” wieder auf “Ein”. |
Die bestehende und ggf. angepasste Datei BSB_LAN_config.h kann in der Regel bei einem Update auf eine neuere Version zwar übernommen werden, es jedoch ratsam, auch hier die jeweils aktuelle Datei BSB_LAN_config.h.default anstelle der bestehenden Datei BSB_LAN_config.h zu verwenden. Dazu muss die .default-Datei wie gehabt umbenannt und ggf. den vorherigen Einstellungen entspr. angepasst werden. So kann man sicher gehen, dass man ein komplettes Update der BSB-LAN-Software vorgenommen hat. |
Wenn der Adapter an den Bus des Heizungsreglers angeschlossen ist, so kann er angeschlossen bleiben, wenn der Due/ESP32 erneut geflasht werden soll. Es besteht keine Notwendigkeit den Adapter vom Regler abzuklemmen, wenn man BSB-LAN updaten möchte. |
Wenn in der Konfig die Funktion “üerprüfe auf Updates” aktiviert ist, so wird bei der Startseite von BSB-LAN eine etwaige neuere Version angezeigt. Dies beinhaltet jedoch auch Entwicklerversionen (also nicht nur ‘stable releases’) - möchtest du hingegen nur ‘stable releases’ einsetzen, so musst du manuell auf der Projektseite nachsehen, ob eine neuere Version verfügbar ist. |
2.2 Konfiguration
Die BSB-LAN-Software kann den individuellen Ansprüchen entsprechend konfiguriert werden.
Die Konfiguration kann dabei auf zwei Arten erfolgen: Mittels Anpassen der Datei BSB_LAN_config.h sowie mittels Webinterface (aufrufbar mittels Klick auf “Einstellungen” auf der BSB-LAN-Seite oder per direktem URL-Befehl /C
).
Im Folgenden werden die Konfigurationsmöglichkeiten eingehender erklärt. Die Beschreibungen in Kap. 2.2.2 sind i.d.R. ausführlicher, daher ist es sinnvoll, beide Kapitel eingehend zu studieren.
Eine Übersicht der BSB-LAN-Einstellungen kann mit dem URL-Befehl /CO
aufgerufen werden.
2.2.1 Konfiguration mittels Webinterface
Die Seite der Webkonfiguration ist mittels Klick auf “Einstellungen” auf der BSB-LAN-Seite oder per direktem URL-Befehl /C
aufrufbar. Die einzelnen Einstellungsmöglichkeiten sind zwar im Prinzip selbsterklärend, trotzdem seien die einzelnen Punkte hier nochmals mit einer kurzen Erklärung aufgeführt.
Für eine u.U. ausführlichere Erklärung zu den einzelnen Funktionen sieh bitte im Kap. 2.2.2 nach.
Eine reine Übersicht der Einstellungen kann mittels des URL-Befehls /CO
angezeigt werden.
Die Übersicht der Webkonfiguration gliedert sich in drei Spalten:
- In der linken Spalte wird der Übersichtlichkeit halber eine grobe Kategorie angezeigt (bspw. “Generell”, “Bus” etc.), so dass bereits auf den ersten Blick die Zuordnung des jeweiligen Eintrages ersichtlich ist.
- In der mittleren Spalte wird die Funktion genannt.
- In der rechten Spalte befindet sich das zugehörige Feld, das den derzeitigen Eintrag bzw. die Einstellung zeigt. Dabei werden die Einträge aus der Datei BSB_LAN_config.h übernommen, d.h. auch bei deaktivierten Funktionen sind die Voreinstellungen sichtbar, so dass deutlich wird, wie bspw. Parameter einzutragen sind. Je nach Art der Einstellung wird entweder ein PullDown-Menü mit den verfügbaren Einstellungen oder lediglich ein Feld angezeigt.
Wichtig |
---|
Zum Übernehmen geänderter Einstellungen muss schließlich unten auf den Button “Parameter speichern” geklickt werden! |
Im Folgenden nun die tabellarische Übersicht der Funktionen mit den (Vor-)Einstellungen und den entspr. Erklärungen (auf die Nennung der linken Spalte “Kategorie” muss an dieser Stelle aus Platz- und Darstellungsgründen leider verzichtet werden):
Funktion | (Vor-)Einstellung | Erklärung |
---|---|---|
Erweiterte Einstellungen anzeigen | Aus | Anzeige der erweiterten Einstellungen von BSB-LAN (Aus/Ein). Für Zugriff auf sämtliche Einstellungsmöglichkeiten von BSB-LAN muss “Ein” ausgewählt (und anschließend unten auf “Parameter speichern” geklickt) werden. |
Konfiguration aus EEPROM lesen | Ein | Liest die gespeicherte Konfiguration aus dem EEPROM beim Start des Due aus (Aus/Ein). Diese Einstellungen können von den Voreinstellungen abweichen, die in der Datei BSB_LAN_config.h hinterglegt wurden. Sollen die im EEPROM gespeicherten Einstellungen bspw. bei einem Update überschrieben werden, so ist vor dem Flashen auf “Aus” zu stellen und die Einstellung zu speichern! Wenn die Einstellung auf „Aus“ ist, werden Änderungen nur bis zum Neustart des Due aktiv bleiben. |
Schreibzugriff (Ebene) | Aus | Schreibzugriff des Adapters auf den Heizungsregler (Aus/Standard/Komplett). Soll Schreibzugriff auf den Heizungsregler gewährt werden, so ist es empfehlenswert, die Einstellung ‘Standard’ zu wählen, hierbei sind nahezu alle verfügbaren Parameter schreibbar. Im Unterschied zu ‘Komplett’ sind jedoch einige funktionskritische Parameter nicht veränderbar, die reglerintern nochmals geschützt vorliegen. Die Einstellung ‘Komplett’ sollte daher nur in Ausnahmefällen und mit Bedacht sowie einem sehr guten Kenntnisstand über die Reglerfunktionalität gewählt werden! |
Auf Updates überprüfen | Aus | Automatisches Überprüfen auf Updates von BSB-LAN (Aus/Ein) |
OTA Update | Aus | OTA-Updatefunktion für ESP32-basierte Boards (OTA = Over The Air) deaktiviert (Aus) / aktiviert (Ein). Zur weiteren Vorgehensweise für OTA-Updates lies bitte Kap. 2.1.3 Updates. |
RX Pin Nummer | 0 | 0 = Autoselect. Falls ein anderer Pin als der voreingestellte RX-Pin (s. Datei BSB_LAN_config.h) genutzt wird, ist dieser hier einzutragen. |
TX Pin Nummer | 0 | 0 = Autoselect. Falls ein anderer Pin als der voreingestellte TX-Pin (s. Datei BSB_LAN_config.h) genutzt wird, ist dieser hier einzutragen. |
Typ | BSB | Verwendeter Bustyp (BSB/LPB/PPS) |
Eigene Adresse | 66 | Eigene Adresse des Adapters |
Zieladresse | 0 | Zieladresse für die Abfragen |
PPS: PPS-Modus | Passiv | Nur PPS: Benutzer, die den Adapter an der PPS-Schnittstelle verwenden, müssen zwei Einstellungen vornehmen: Zum einen muss der Modus ausgewählt werden, in dem auf den Bus zugegriffen werden soll (Passiv/Als Raumgerät). Bei Verwendung eines QAA-Raumgerätes muss hier „passiv“ ausgewählt werden. Dann werden nur die Werte, die über den Bus gehen, in der Weboberfläche angezeigt, ein Schreiben von Werten ist dann nicht möglich. Wenn hier „als Raumgerät“ ausgewählt wird, können über die Weboberfläche auch Werte an die Heizung gesendet werden. Zum anderen ist dann noch der Typ des zu emulierenden Raumgerätes auszuwählen (s.u.). Es sollte dann kein weiteres Raumgerät am Bus hängen, da sonst beide Sender ihre jeweils eigenen Werte an den Heizungsregler schicken, so dass kein konsistenter Betrieb möglich ist. |
PPS: QAA Modell | QAA70 | Nur PPS: Modell des zu imitierenden Raumgerätes (QAA50/QAA70). |
Gerätefamilie | 0 | 0 = automatische Reglererkennung aktiv (empfohlene Einstellung). Bei einer fehlerhaften Erkennung kann die Gerätefamilie (Ausgabe von /6225 ) des angeschlossenen Reglers fest eingetragen werden. |
Gerätevariante | 0 | 0 = automatische Reglererkennung aktiv (empfohlene Einstellung). Bei einer fehlerhaften Erkennung kann die Gerätevariante (Ausgabe von /6226 ) des angeschlossenen Reglers fest eingetragen werden. |
URL Passkey | -keine Voreinstellung- | Optionale Sicherheitsfunktion: “URL Passkey” |
HTTP-Authentifizierung | -keine Voreinstellung- | Optionale Sicherheitsfunktion: “User-Pass” (Basic HTTP Auth) |
DHCP verwenden | Ein | DHCP verwenden (= automatische IP-Adressvergabe durch Router) (Aus/Ein) |
Statische IP-Adresse | 192.168.178.88 | Manuelle Netzwerkkonfiguration: Feste IP-Adresse |
Subnetzmaske | 255.255.255.0 | Manuelle Netzwerkkonfiguration: Subnetz |
Gateway | 192.168.178.1 | Manuelle Netzwerkkonfiguration: IP-Adresse des Gateways |
DNS Server | 192.168.178.1 | Manuelle Netzwerkkonfiguration: IP-Adresse des DNS-Servers |
TCP Port | 80 | TCP-Port des Setups |
MAC-Adresse | 00:80:41:19:69:90 | (Voreingestellte) MAC-Adresse des LAN-Shields oder MAC-Adresse des ESP |
Vertrauenswürdige IP-Adresse | 0.0.0.0 | Optionale Sicherheitsfunktion: “Trusted IP”, Zugriff nur von dieser IP möglich |
Vertrauenswürdige IP-Adresse | 0.0.0.0 | Optionale Sicherheitsfunktion: “Trusted IP”, Zugriff nur von dieser IP möglich |
WLAN SSID | -keine Voreinstellung- | SSID des WLAN |
WLAN Passwort | -keine Voreinstellung- | Passwort des WLAN |
mDNS Hostname | BSB-LAN | Einstellbarer Hostname |
Log-Modus | -keine Voreinstellung- | Auswählbare Optionen für die Loggingfunktion (Mehrfachauswahl möglich): Auf SD-Karte schreiben / 24-Stunden-Durchschnittswerte berechnen / An MQTT-Broker senden / Als UDP-Nachrichten senden |
Logintervall (Sekunden) | 3600 | Logintervall in Sekunden |
Parameter | 8700,8743,8314 | Zu loggende Parameter |
Bustelegramme | Aus | Loggen von Bustelegrammen aktivieren (Aus/-diverse Optionen-), die gewünschte Einstellung ist der jeweiligen Optionsbeschreibung entspr. vorzunehmen. |
Parameter | 8700,8326 | Parameter für die 24h-Durchschnittswertberechnung |
Verwenden | Plain Text | MQTT-Übertragung in Plain Text / JSON / Rich JSON |
IP-Adresse Broker | 192.168.178.20 | IP-Adresse des MQTT-Brokers |
Username | User | MQTT: Username bei Verwendung von Username/Passwort |
Passwort | Pass | MQTT: Passwort bei Verwendung von Username/Passwort |
Geräte ID | BSB-LAN | Gerätename (Header in JSON-Payload) |
Topic prefix | BSB-LAN | Topic prefix der MQTT-Nachrichten |
Berechnung | Aus | Berechnung von 24h-Durchschnittswerten ausgewählter Parameter (Aus/Ein) |
Pins | 0 | Verwendete(r) Pin(s) für OneWire-Sensoren (DS18B20) (0 = deaktiviert) |
Pins | 0 | Verwendete(r) Pin(s) für DHT22-Sensoren (0 = deaktiviert) |
Sensoren | 0 | Anzahl der angeschlossenen BME280-Sensoren (0 = deaktiviert) |
TWW-Push Taste: Pin | 0 | Raumgerät-Emulation: Verwendeter Pin für den TWW-Push Taster. |
RGT1 Temperatursensor Parameter | -keine Voreinstellung- | Raumgerät 1 Emulation: Trage hier die spezifische(n) Parameternummer(n) für den (die) Raumtemperatur-Sensor(en) ein. Bis zu fünf Sensoren können verwendet werden, die Aufzählung der Parameternummern ist lediglich durch ein Komma zu separieren. Wenn mehr als ein Sensor verwendet werden, wird automatisch der Mittelwert gebildet. |
RGT1 Präsenztaste: Pin | 0 | Raumgerät 1 Emulation: Verwendeter Pin für die HK1-Präsenztaste. |
RGT2 Temperatursensor Parameter | -keine Voreinstellung- | Raumgerät 2 Emulation: Trage hier die spezifische(n) Parameternummer(n) für den (die) Raumtemperatur-Sensor(en) ein. Bis zu fünf Sensoren können verwendet werden, die Aufzählung der Parameternummern ist lediglich durch ein Komma zu separieren. Wenn mehr als ein Sensor verwendet werden, wird automatisch der Mittelwert gebildet. |
RGT2 Präsenztaste: Pin | 0 | Raumgerät 2 Emulation: Verwendeter Pin für die HK2-Präsenztaste. |
RGT3 Temperatursensor Parameter | -keine Voreinstellung- | Raumgerät 3 Emulation: Trage hier die spezifische(n) Parameternummer(n) für den (die) Raumtemperatur-Sensor(en) ein. Bis zu fünf Sensoren können verwendet werden, die Aufzählung der Parameternummern ist lediglich durch ein Komma zu separieren. Wenn mehr als ein Sensor verwendet werden, wird automatisch der Mittelwert gebildet. |
RGT3 Präsenztaste: Pin | 0 | Raumgerät 3 Emulation: Verwendeter Pin für die HK3-Präsenztaste. |
Verwenden | Aus | MAX!-Geräte verwenden (Aus/Ein) |
IP-Adresse Cube | 192.168.178.5 | IP-Adresse des CUNO/CUNX/modifizierten MAX!Cube |
Geräte | KEQ0502326,KEQ0505080 | Seriennummern der zu verwendenden MAX!-Geräte |
Verwenden | Aus | IPWE-Erweiterung verwenden (URL/ipwe.cgi) (Aus/Ein) |
Parameter | 8700,8743,8314 | Darzustellende Parameter in der IPWE-Erweiterung |
Verwenden | Serial | Debugging-Funktion verwenden (Aus/Serial/Telnet) |
Verbositätsmodus | Ein | Verbositätsmodus aktiviert (Aus/Ein) |
Monitor Modus | Aus | Monitor Modus aktiviert (Aus/Ein) |
Unbekannte Parameter anzeigen | Ein | Unbekannte bzw. nicht verfügbare Parameter (“error 7 - parameter not supportet”) anzeigen (Ein/Aus). |
2.2.2 Konfiguration durch Anpassen der Datei BSB_LAN_config.h
Die Konfiguration der BSB-LAN-Software kann außerdem erfolgen, indem die Einstellungen in der Datei BSB_LAN_config.h angepasst werden. Hierzu werden nachfolgend sämtliche Einstellmöglichkeiten analog zu der Reihenfolge in der Datei BSB_LAN_config.h aufgeführt. Es ist daher ratsam, die Einstellungen Punkt für Punkt abzuarbeiten.
Hinweis |
---|
Wenn ein Definement deaktiviert ist oder werden soll, dann sind vor dem Hashtag zwei Slashes hinzuzufügen (“auskommentieren”): //#define XYZ = Definement XYZ ist deaktiviert. |
Wenn ein Definement aktiviert werden soll, dann sind die beiden Slashes vor dem Hashtag zu entfernen: #define XYZ = Definement XYZ ist aktiv. |
- Die Sprache der Benutzeroberfläche des Webinterface des Adapters sowie der Kategorie- und Parameterbezeichnungen muss
zwingend ausgewählt bzw. definiert werden. Für “Deutsch” ist dabei das folgende Definement zu wählen:
#define LANG DE
Ab BSB-LAN v.042 ist es möglich, BSB-LAN auch in anderen Sprachen zu nutzen, wobei prinzipiell jede Sprache unterstützt werden kann (es müssen dann ‘nur’ die entspr. Übersetzungen erstellt werden).
Vorhanden sind momentan: Tschechisch (CZ), Deutsch (DE), Dänisch (DK), Englisch (EN), Spanisch (ES), Finnisch (FI), Französisch (FR), Griechisch (GR), Ungarisch (HU), Italienisch (IT), Niederländisch (NL), Polnisch (PL), Russisch (RU), Schwedisch (SE), Slovenisch (SI) und Türkisch (TR). Wenn gewisse Ausdrücke nicht in der spezifischen Sprache vorliegen, wird automatisch der englische Ausdruck angezeigt. Sollte auch dieser nicht vorhanden sein, wird schließlich der deutsche Ausdruck dargestellt.
-
Konfigurationseinstellungen aus EEPROM oder der Datei BSB_LAN_config.h laden:
byte UseEEPROM = 1;
Gemäß Voreinstellung werden die Konfigurationseinstellungen beim Start von BSB-LAN aus dem EEPROM gelesen. Als Fallback kann die Variable auf ‘0’ gesetzt werden, dann werden die Einstellungen aus der Datei BSB_LAN_config.h gelesen.
Netzwerkeinstellungen:
-
MAC-Adresse des Ethernet-Shields:
byte mac[] = { 0x00, 0x80, 0x41, 0x19, 0x69, 0x90 };
Die voreingestellte MAC-Adresse kann beibehalten werden. Eine Änderung ist i.d.R. nur nötig, wenn mehr als ein Adapter verwendet wird (es sollte in jedem Fall darauf geachtet werden, dass jede MAC-Adresse im Netzwerk nur einmal vorkommt!). Änderungen sollten in dem Fall möglichst nur bei dem letzten Byte erfolgen (also bspw. 0x91, wenn ein zweiter Adapter zum Einsatz kommt).
Hinweis Die hier einstellbare MAC-Adresse bezieht sich nur auf das LAN-Shield. Sie beeinflusst nicht die MAC-Adresse des ESP bei der WiFi-ESP-Lösung, dort ist die MAC-Adresse nicht einstellbar. Die hier vergebene MAC-Adresse beeinflusst auch den Hostnamen (bzw. ist ein Bestandteil davon), der bei der Verwendung von DHCP (s.u.) vom Router vergeben wird: Der Hostname setzt sich aus der Kennung “WIZnet” und den drei letzten Bytes der MAC-Adresse zusammen.
Für die o.g. voreingestellte MAC-Adresse lautet der Hostname somit “WIZnet196990”. Dieser wird i.d.R. auch als solcher im Router angezeigt. Das Webinterface von BSB-LAN ist in dem Fall im Browser unterhttp://wiznet196990
erreichbar.
Wird die MAC-Adresse bei einem zweiten Adapter nun also bspw. in
byte mac[] = { 0x00, 0x80, 0x41, 0x19, 0x69, 0x91 };
geändert, so lautet der Hostname entsprechend “WIZnet196991” bzw.http://wiznet196991
. -
Ethernet-Port:
uint16_t HTTPPort = 80;
Port 80 für HTTP voreingestellt.
-
DHCP:
bool useDHCP = true;
Per default wird DHCP verwendet. Sollte dies jedoch nicht gewünscht sein, sondern soll selber eine feste IP vergeben werden, so ist false einzustellen.
Hinweis Bei der Nutzung von DHCP setzt sich der automatisch vergebene Hostname aus der Kennung “WIZnet” und den drei letzten Bytes der MAC-Adresse zusammen.
Für die o.g. voreingestellte MAC-Adresse lautet der Hostname somit “WIZnet196990”. Dieser wird i.d.R. auch als solcher im Router angezeigt. Das Webinterface von BSB-LAN ist in dem Fall im Browser unterhttp://wiznet196990
erreichbar.
Wird die MAC-Adresse bei einem zweiten Adapter nun also bspw. in
byte mac[] = { 0x00, 0x80, 0x41, 0x19, 0x69, 0x91 };
geändert, so lautet der Hostname entsprechend “WIZnet196991” bzw.http://wiznet196991
.
Die IP, die bei der DHCP-Nutzung vom Router automatisch vergeben wird, wird beim Start des Due/ESP32 im Seriellen Monitor der Arduino IDE angezeigt. -
IP-Adresse:
byte ip_addr[4] = {192,168,178,88};
IP-Adresse des Adapters, wenn DHCP nicht verwendet wird - bitte beachte die Kommata anstelle von Punkten!
Achtung Falls du die IP selbst fest vergeben willst, so vergewissere dich, dass die IP-Adresse nur einmal im Netzwerk vorkommt! -
Gateway-Adresse:
byte gateway_addr[4] = {192,168,178,1};
IP-Adresse des Gateways (i.d.R. die des Routers) - bitte beachte die Kommata anstelle von Punkten!
-
DNS-Server:
byte dns_addr[4] = {192,168,178,1};
IP-Adresse des DNS - bitte beachte die Kommata anstelle von Punkten!
-
Subnet:
byte subnet_addr[4] = {255,255,255,0};
Subnetz-Adresse - bitte beachte die Kommata anstelle von Punkten!
-
WiFi:
//#define WIFI
Dieses Definement ist zu aktivieren, wenn die WiFi-Funktion mittels der ESP8266-WiFi-Lösung oder mittels eines ESP32 genutzt werden soll.
char wifi_ssid[32] = "YourWiFiNetwork";
Bei Verwendung von WiFi, YourWiFiNetwork durch die SSID des WLAN-Netzwerkes ersetzen.
char wifi_pass[64] = "YourWiFiPassword";
Bei Verwendung von WiFi, YourWiFiPassword durch das Passwort des WLAN-Netzwerkes ersetzen.
#define WIFI_SPI_SS_PIN 12
Hier wird der beim DUE zu verwendende SS-Pin für die ESP8266-WiFi-Lösung definiert. Es ist ratsam, die Voreinstellung zu belassen. Soll dennoch ein anderer Pin genutzt werden, so ist zwingend darauf zu achten, dass der gewünschte Pin weder anderweitig genutzt wird, noch in der Liste der geschützten Pins aufgeführt ist.
Hinweis Die MAC-Adresse des ESP8266 lässt sich nicht einstellen!
-
Nutzung von Multicast DNS:
#define MDNS_SUPPORT
char mDNS_hostname[32] = "BSB-LAN";
Per default ist die Nutzung von Multicast DNS mit dem Hostnamen “BSB-LAN” aktiviert, so dass das Adaptersetup im Netzwerk unter diesem Namen zu finden ist.
Hinweis mDNS ist nur bei einer LAN-Anbindung verfügbar, bei der WiFi-Lösung mittels ESP8266 hingegen nicht!
-
Debugging und entspr. Einstellungen:
-
#define DEBUG
→ Debug-Modus aktivieren (s. nachfolgende Optionen) -
byte debug_mode = 1;
Folgende Debug-Optionen sind verfügbar:
0 - Debugging deaktiviert
1 - Debug-Nachrichten an das serielle Interface senden (einzustellen bei der Verwendung von bspw. dem Seriellen Monitor der Arduino IDE)
2 - Debug-Nachrichten an einen TelNet-Client anstelle des seriellen Interface senden
-
byte verbose = 1;
Per default ist der Verbose Modus aktiviert (= 1), so dass neben den Rohdaten auch der jeweilige Klartext (falls vorhanden) von Parametern und Werten dargestellt wird. Es ist ratsam, diese Einstellung so zu belassen, da es eine etwaige Fehlersuche erleichtert. Darüber hinaus ist diese Einstellung nötig, falls Telegramme und CommandIDs neuer Parameter dekodiert werden sollen. zum Deaktivieren ist ‘0’ anstelle der ‘1’ einzutragen.
-
byte monitor = 0;
Bus-Monitor-Modus, per default deaktivert (= 0); zum Aktivieren auf ‘1’ stellen.
-
bool show_unknown = true;
Alle Parameter mitsamt der unbekannten Parameter (Fehlermeldung „error 7 (parameter not supportet)”) werden bei einer Abfrage via Webinterface (bspw. bei einer Abfrage einer kompletten Kategorie) angezeigt (Voreinstellung).
Sollen der Übersichtlichkeit halber die vom Heizungsregler nicht unterstützten (also ‘unbekannten’) Parameter bei einer Abfrage ausgeblendet werden (bspw. bei der Abfrage einer kompletten Kategorie), so ist ‘false’ einzustellen (bool show_unknown = false;
). Die Parameter werden jedoch bei einer solchen Abfrage (bspw. einer komplette Kategorie) trotzdem mit abgefragt.
-
Sicherheitsfunktionen:
-
Passkey:
Um das System vor einem ungewollten Zugriff von außen zu schützen, kann die Funktion des Sicherheitsschlüssels (PASSKEY) genutzt werden (sehr einfach und nicht wirklich sicher!):
char PASSKEY[64] = "";
Für die Verwendung ist eine Zahlenfolge einzugeben, bspw.
char PASSKEY[64] = "1234";
→ in diesem Beispiel lautet der Passkey 1234. Wird keine Zahlenfolge eingegeben (also die Voreinstellung nicht geändert), so ist die Funktion deaktiviert.Achtung Falls die PASSKEY-Funktion genutzt wird, muss die URL bei einem Aufruf des Webinterfaces den definierten Schlüssel als erstes Element enthalten, bspw. http://<IP-Adresse>/<passkey>/
um die Startseite zu sehen.
Nur bei der URL der optionalen IPWE-Erweiterung darf der Passkey nicht zusätzlich eingegeben werden!Bitte nicht den Slash hinter dem Passkey vergessen! -
Trusted IP:
byte trusted_ip_addr[4] = {0,0,0,0};
byte trusted_ip_addr2[4] = {0,0,0,0};
Bei den Variablen
trusted_ip_addr
(undtrusted_ip_addr2
für eine weitere IP) kann man eine vertrauenswürdige IP eintragen (z.B. des FHEM-Servers), dann ist der Zugriff nur über diese IP. Lautet die vertrauenswürdige IP des Clients bspw.192.168.178.20
, so istbyte trusted_ip_addr[4] = {192,168,178,20};
einzustellen.
Wird die Voreinstellung{0,0,0,0}
nicht geändert und/oder die erste Zahl ist eine 0, ist diese Funktion deaktiviert. -
User-Pass:
char USER_PASS[64] = "";
Mit
USER_PASS[64]
kann eine Zugangssperre nach dem Muster Username:Passwort gesetzt werden:
//char USER_PASS[64] = "User:Password";
Ist kein String eingegeben (Voreinstellung), so ist die Funktion deaktiviert.
Einstellungen für optionale Sensoren:
-
OneWire-Temperatursensoren (DS18B20):
#define ONE_WIRE_BUS
byte One_Wire_Pin = 0;
Sollen OneWire-Temperatursensoren (DS18B20) verwendet werden, muss das Definement aktiviert sein sowie die entsprechende GPIO-Pinbelegung definiert werden.
Voreingestellt ist das Modul aktiviert und Pin 0 eingestellt (0 = OneWire-Verwendung deaktiviert). -
DHT22-Sensoren:
#define DHT_BUS
uint8_t DHT_Pins[10] = {0};
Sollen DHT22-Sensoren (Temperatur & Feuchtigkeit; max. Anzahl: 10) verwendet werden, muss das entsprechende Definement aktiviert sein und die entsprechende GPIO-Pinbelegung definiert werden.
Voreingestellt ist das Modul aktiviert und Pin 0 eingestellt (0 = DHT-Verwendung deaktiviert). -
BME280 Sensoren:
#define BME280
byte BME_Sensors = 0;
Wenn BME280 Sensoren zur Anwendung kommen sollen, so muss das Definement aktiviert und die Anzahl der angeschlossenen Sensoren angegeben werden (Voreinstellung 0 = deaktiviert, maximal 2). Die Sensoren müssen am I2C-Bus angeschlossen werden. Die Adresse des ersten Sensors muss 0x76 lauten, die des zweiten Sensors 0x77.
-
24h-Durchschnittswerte:
#define AVERAGES
Sollen 24h-Durchschnittswerte von bestimmten Parametern berechnet werden, so ist das Definement zu aktivieren (Voreinstellung: aktiviert).
Des Weiteren müssen die gewünschten Parameter (max. 40) bei der entsprechenden Variable eingetragen werden, bspw.:
parameter avg_parameters[40] = { {8700, -1}, // Außentemperatur {8326, -1} // Brenner-Modulation };
Beim Vorhandensein einer SD-Karte werden die jeweils aktuellen Werte dort regelmäßig gesichert, um nach einem Neustart die Berechnung lückenlos fortsetzen zu können.
Sollen die Durchschnittswerte der oben eingestellten Parameter zusätzlich bspw. in ein Logfile geschrieben und via URL-Befehl
/DG
angezeigt oder per MQTT verschickt werden, so sind sie als Spezialparameter mit den Nummern 20050-20099 bei den zu loggenden Parametern (s.u.) aufzuführen! Für diese gelten dann wiederum die entsprechenden Loggingeinstellungen (s.u.), wie bspw. das Logintervall.
-
Logging (auch auf microSD-Karte) und/oder Verwendung von MQTT/UDP:
#define LOGGER
→ Das Logging-Modul wird kompiliert.Achtung Das genannte aktivierte Definement ist sowohl Voraussetzung für das Loggen auf eine microSD-Karte als auch für die Verwendung von MQTT und UDP (s.u.)! Nachfolgend können/sollten verschiedene Einstellungen vorgenommen werden:
-
Logdaten via UDP broadcast senden:
#define UDP_LOG_PORT 6502
→ Logdaten werden zusätzlich per UDP broadcast an den Port 6502 (default) gesendet. Der gewünschte Port kann hier eingestellt werden. -
Wenn ein microSD-Kartenadapter an einem ESP32-basierten Board verwendet wird und das Loggen auf Karte (empfohlen!) anstatt des SPIFF-Flashspeichers erfolgen soll, so ist das folgende Definement zu aktivieren:
//#define ESP32_USE_SD
-
Sollen ‘rohe’ Bus-Datentelegramme geloggt werden, kann die Auswahl spezifiziert werden. Die Speicherung der Telegramme erfolgt in der Datei journal.txt auf der microSD-Karte. In der Voreinstellung ist das Loggen von Bustelegrammen deaktiviert:
int logTelegram = LOGTELEGRAM_OFF;
Folgende Einstelloptionen sind hier verfügbar:
LOGTELEGRAM_OFF
→ Bus-Telegramme werden nicht geloggt (Voreinstellung)LOGTELEGRAM_ON
→ alle Bus-Telegramme werden geloggtLOGTELEGRAM_ON + LOGTELEGRAM_UNKNOWN_ONLY
→ nur unbekannte Bus-Telegramme werden geloggtLOGTELEGRAM_ON + LOGTELEGRAM_BROADCAST_ONLY
→ nur Broadcast-Telegramme werden geloggtLOGTELEGRAM_ON + LOGTELEGRAM_UNKNOWNBROADCAST_ONLY
→ nur unbekannte Broadcast-Telegramme werden geloggt -
bool logCurrentValues = false;
Die Daten der zu loggenden Parameter werden bei Bedarf in der Datei ‘datalog.txt’ auf der microSD-Karte gespeichert. Dazu ist die Variable auf
true
zu setzen. -
unsigned long log_interval = 3600;
Das gewünschte Logintervall in Sekunden.
Achtung Dieses Intervall ist auch für die Nutzung von MQTT (s.u.) einzustellen, selbst wenn kein Loggen stattfinden soll! -
Die zu loggenden Parameter (max. 40) müssen dann zusammen mit der Ziel-Bus-Adresse (s.u.; -1 ist die default Zieladresse) bei der entsprechenden Variable eingetragen werden, bspw.:
parameter log_parameters[40] = { {8700, -1}, // Außentemperatur {8743, -1}, // Vorlauftemperatur {8314, -1}, // Rücklauftemperatur };
Wenn bspw. die Messwerte mehrerer DS18B20- oder DHT22-Sensoren geloggt werden sollen, müssen die spezifischen Spezialparameternummern bei den Log-Parametern ebenfalls entsprechend aufgeführt werden, bspw.:
{20301, -1}, // Spezialparameter 20300-20499: DS18B20-Sensoren 1-100 {20303, -1}, {20305, -1},
loggt die Messwerte der DS18B20-Sensoren 1-3.
Zum Loggen der Brennerstarts und -laufzeiten müssen die Spezialparameter 20000 und 20001 aufgeführt werden (siehe auch die Beschreibung in der Datei
BSB_LAN_config.h
). Bei einem zweistufiger Ölbrenner, dessen Regler die entsprechenden Broadcasts schickt und bei dem eine Differenzierung der Brennerstufen möglich ist (derzeit nur RVS43.325), müssen hier zusätzlich 20002 und 20003 mit aufgeführt werden.Weitere gängige Spezialparameter lauten:
- TWW-Laufzeit und TWW-Takte: 20004 und 20005,
- 24h-Durchschnittswerte: 20050-20099,
- DHT22-Sensoren: 20100-20299,
- BME280 Sensoren: 20200-20299,
- DS18B20-Sensoren: 20300-20499,
- MAX!-Sensoren: 20500-20699.
Für eine genauere Aufschlüsselung der Nummernbereiche einzelner optionaler Sensoren sieh bitte im entspr. Kapitel nach.
-
-
MQTT:
Soll MQTT zum Einsatz kommen, so sind neben den obigen Logging-Parametern die entspr. Variablen und Einstellungen anzupassen:
-
#define MQTT
→ Das MQTT-Modul wird kompiliert (Voreinstellung) -
byte mqtt_mode = 0;
→ MQTT ist deaktiviert (Voreinstellung); folgende Optionen sind verfügbar:1 = die Nachrichten werden im einfachen Textformat gesendet
2 = die Nachrichten werden im JSON-Format gesendet Struktur der JSON-Payload:
{"MQTTDeviceID": {"status":{"log_param1":"value1","log_param2":"value2"}, ...}})
3 = die Nachrichten werden im rich JSON-Format gesendet Struktur der rich JSON-Payload:
{"MQTTDeviceID": {"id": one_of_logvalues, "name": "program_name_from_logvalues", "value": "query_result", "desc": "enum value description", "unit": "unit of measurement", "error", error_code}})
-
byte mqtt_broker_ip_addr[4] = {192,168,1,20};
→ IP des MQTT-Brokers.
Bitte beachte die Kommata anstelle von Punkten!
Der Standardport ist 1883 und muss nicht extra definiert werden. -
char MQTTUsername[32] = "User";
→ Username; wird Username/Passwort beim MQTT-Broker nicht verwendet, ist das User zu entfernen. -
char MQTTPassword[32] = "Pass";
→ Passwort; wird Username/Passwort beim MQTT-Broker nicht verwendet, ist das Pass zu entfernen. -
char MQTTTopicPrefix[32] = "BSB-LAN";
→ Optional: Die MQTT-Nachrichten haben das Topic-Format (‘Thema’)BSB-LAN/<Parametername>
und den entsprechenden Wert dann in der Payload. Wenn nichts angegeben wird (char MQTTTopicPrefix[32] = "";
), wird der Standard-Themenname verwendet. -
char MQTTDeviceID[32] = "MyHeater";
→ Optional: Device-Name, der als Header in der JSON-Payload genutzt wird. Wenn nichts angegeben wird (char MQTTDeviceID[32] = "";
), wird “BSB-LAN” verwendet.
Hinweis Die zu übertragenden Parameter sowie das Übertragungsintervall für MQTT werden oben bei den zu loggenden Parametern und dem Logintervall für das Loggen auf microSD-Karte eingegeben! -
-
IPWE:
#define IPWE
→ Das IPWE-Modul wird kompiliert.
bool enable_ipwe = false;
Soll die IPWE-Erweiterung (URL/ipwe.cgi) verwendet werden, ist die Variable auf ‘true’ zu setzen.
Die gewünschten Parameter (max. 40) sind ebenfalls einzutragen:
parameter ipwe_parameters[40] = { {8700, -1}, // Außentemperatur {8743, -1}, // Vorlauftemperatur {8314, -1}, // Rücklauftemperatur };
-
MAX! (CUNO/CUNX/modifizierter MAX!Cube):
Sollen optionale MAX!-Thermostate zum Einsatz kommen, müssen folgende Einstellungen angepasst werden:
-
//#define MAX_CUL
→ Definement aktivieren (=#define MAX_CUL
) (deaktiviert by default) -
bool enable_max_cul = false;
→ Variable auf ‘true’ setzen -
byte max_cul_ip_addr[4] = {192,168,178,5};
→ IP-Adresse des CUNO/CUNX/modifizierten MAX!Cubes - bitte beachte die Kommata anstelle von Punkten! -
Liste der abzufragenden MAX!-Thermostate (max. 20):
char max_device_list[20][11] = { "KEQ0502326", "KEQ0505080" };
Hier bitte die entspr. 10-stellige Seriennummer / MAX!-ID eintragen.
Für weitere Informationen bzgl. der Einbindung von MAX!-Komponenten s. Kap. 7.3.
-
-
Anzahl der maximalen Wiederholungsversuche bei einer Abfrage:
#define QUERY_RETRIES 3
Hier kann bei Bedarf eingestellt werden, wieviele maximale Wiederholungsversuche ausgeführt werden, wenn bei einer Abfrage keine entsprechende Antwort vom Heizungsregler kommt. In der Regel kann die Voreinstellung (max. 3 Versuche) beibehalten werden.
Buseinstellungen (Pins und Typ):
-
RX-/TX-Pinkonfiguration:
byte bus_pins[2] = {0,0};
→ automatische Erkennung und Einstellung der RX-/TX-Pinbelegung (Voreinstellung); ansonsten gilt:- Hardware-Serial (ab Adapter v3) Arduino Due: RX-Pin = 19, TX-Pin = 18 (
{19,18}
); NodeMCU: 16,17; Olimex EVB 36,17. - Software-Serial (bis einschließlich Adapter v2 & Arduino Mega 2560): RX-Pin = 68, TX-Pin = 69 (
{68,69}
)
- Hardware-Serial (ab Adapter v3) Arduino Due: RX-Pin = 19, TX-Pin = 18 (
-
Bus-Typ/-Protokoll:
uint8_t bus_type = 0;
Je nach Anschluss des Adapters an einen BSB/LPB/PPS-Anschluss muss der entspr. Bus-Typ definiert werden (bereits nach Booten des Arduino wirksam).
Voreingestellt ist 0 für BSB, für LPB ist 1 einzustellen, für PPS hingegen 2:- 0 = BSB
- 1 = LPB
- 2 = PPS
-
Buseinstellungen:
Abhängig vom Bus-Typ müssen unterschiedliche Einstellungen vorgenommen werden.
→ BSB:
byte own_address = 0x42;
→ entspricht der eigenen Geräteadresse 66 des BSB-LAN-Adaptersbyte dest_address = 0x00;
→ entspricht der Zieladresse 0 (i.d.R. der Regler des Wärmeerzeugers)
→ LPB:
byte own_address = 0x42;
→ eigene Adresse (BSB-LAN-Adapter), entspricht der Segmentadresse 4 mit Geräteadresse 3byte dest_address = 0x00;
→ Zieladresse (Heizungsregler), entspricht der Segmentadresse 0 mit Geräteadresse 1
→ PPS:
-
bool pps_write = 0;
→ in der Standardeinstellung ist nur ein lesender Zugriff auf den via PPS angeschlossenen Heizungsregler möglich.
Soll Schreibzugriff ermöglicht werden, so ist eine1
einzutragen (bool pps_write = 1;
).Achtung Schreibzugriff NUR einstellen, wenn KEIN originales QAA50/QAA70-Raumgerät vorhanden ist! -
byte QAA_TYPE = 0x53;
→ Typ des zu imitierenden Raumgerätes:
0x53 = QAA70 (Voreinstellung) 0x52 = QAA50
0x37 = QAA95
0x66 = BMU
0xEA = MCBA/DC225
-
Erkennung bzw. Festlegung des Heizungsreglertyps:
static const int fixed_device_family = 0;
static const int fixed_device_variant = 0;
Wenn die Werte auf 0 gesetzt sind, ist die automatische Erkennung des angeschlossenen Reglers beim Starten des Arduino aktiviert (Voreinstellung). Dies kann i.d.R. so belassen werden.
Alternativ kann hier die Ausgabe vonhttp://<IP-Adresse>/6225/6226
eingetragen werden (6225 = Gerätefamilie / device family & 6226 = Gerätevariante / device variant).
Ein fest eingestellter Wert (laut Ausgabe von 6225&6226) stellt sicher, dass BSB-LAN auch dann noch korrekt arbeitet, wenn die Heizung bzw. der Regler erst nach dem Starten des Arduino/ESP eingeschaltet wird (da in dem Fall die automatische Erkennung des angeschlossenen Reglers nicht funktionieren kann, da ja keine Rückmeldung vom Regler kommt).
-
Schreib-/Lesezugriff auf den Heizungsregler:
#define DEFAULT_FLAG FL_SW_CTL_RONLY
In der Voreinstellung ist der Zugriff des Adapters auf den Heizungsregler auf Lesen beschränkt, d.h. ein Setzen bzw. Verändern von Parametern der Heizungssteuerung per Adapter ist in der Voreinstellung nicht möglich. Eine Änderung des Status auf generellen Schreibzugriff kann via Webinterface (Menüpunkt “Einstellungen”) erfolgen.
Hinweis für Mega-Nutzer Die Möglichkeit der Konfiguration via Webinterface bietet sich für Nutzer des Mega 2560 nicht, da das Modul WEBCONFIG mangels Speicher nicht kompiliert und nicht genutzt werden kann.
In diesem Fall muss der Schreibzugriff nach wie vor durch das Flag ‘0’ gewährt werden:
#define DEFAULT_FLAG 0
Ist der Schreibzugriff aus Sicherheitsgründen hingegen nur bei ausgewählten Parametern (z.B. 10000 oder 710) gewünscht, muss bei dem genannten Definement nach wie vor das genannte Flag auf
FL_SW_CTL_RONLY
(Hinweis für Mega-Nutzer mit deaktiviertem WEBCONFIG-Modul: Hier bitteFL_RONLY
setzen!) gesetzt sein und dann in der Datei BSB_LAN_defs.h dasDEFAULT_FLAG
des gewünschten Parameters durch 0 (Null) ersetzt werden.
Beachte hierbei jedoch bitte, dass es im Falle eines Updates von BSB-LAN nötig sein kann/wird, diese Änderungen erneut vorzunehmen!Im folgenden Beispiel wird Parameter 700 auf diese Weise schreibbar gemacht:
{0x2D3D0574, CAT_HK1, VT_ENUM, 700, STR700, sizeof(ENUM700), ENUM700, DEFAULT_FLAG, DEV_ALL}, // [-] - Heizkreis 1 - Betriebsart ***(virtuelle Zeile)***
→ aufgrund des „DEFAULT_FLAG” ist der Parameter momentan nur lesbar
{0x2D3D0574, CAT_HK1, VT_ENUM, 700, STR700, sizeof(ENUM700), ENUM700, 0, DEV_ALL}, // [-] - Heizkreis 1 - Betriebsart ***(virtuelle Zeile)***
→ das „DEFAULT_FLAG” wurde durch „0” (Null, ohne Anführungszeichen) ersetzt
-
Eigenen Code aus der Datei BSB_LAN_custom.h einfügen:
//#define CUSTOM_COMMANDS
Fügt die Befehle aus der Datei
BSB_LAN_custom.h
hizu, die am Ende jedes ‘main loops’ ausgeführt werden (per default deaktiviert).
-
Überprüfen der BSB-LAN-Version:
#define VERSION_CHECK
bool enable_version_check = false;
Diese Funktion überprüft bei jedem Aufruf der Startseite des Webinterface, ob eine neuere Version von BSB-LAN verfügbar ist; Internetzugriff nötig (deaktiviert by default). Zum Aktivieren ist die Variable auf ‘true’ zu setzen.
Hinweis Hierbei ist es unvermeidlich, dass die IP-Adresse an den Server übertragen wird. Wir erwähnen dies hier dennoch, da es sich hierbei um “persönliche Daten” handelt und diese Funktion daher standardmäßig deaktiviert ist. Mit der Aktivierung dieser Funktion erklärst Du Dich damit einverstanden, dass Deine IP-Adresse an den BSB-LAN-Server übermittelt wird, wo sie bis zu zwei Wochen in den Log-Dateien des Servers gespeichert wird, um sowohl technische als auch Missbrauchsanalysen zu ermöglichen. Wie Du dem Quellcode entnehmen kannst, werden bei diesem Vorgang keine weiteren Daten (z.B. alles, was mit Deiner Heizungsanlage zu tun hat) übertragen.
-
OTA-Updatefunktion (nur ESP32):
#define ENABLE_ESP32_OTA
boolean enable_ota_update = false;
OTA-Updatefunktion (OTA = OverTheAir) für ESP32-basierte Boards (Voreinstellung: deaktiviert). Zum Aktivieren der Funktion muss
boolean enable_ota_update = true;
eingestellt werden. Eine fertige Firmware-Datei kann man in der Arduino IDE unter “Sketch / Kompilierte Binärdatei exportieren…” erstellen lassen. Der Upload der Datei erfolgt dann auf Port 8080 der BSB-LAN-IP.
-
“Externer” Webserver:
//#define WEBSERVER
Wenn dieses Definement aktiviert ist, kann BSB-LAN als Webserver für statische Inhalte fungieren. Für weitere Informationen siehe bitte Kapitel 6.9.
-
Speichern der Konfiguration im EEPROM (nur Arduino Due und ESP32):
#define CONFIG_IN_EEPROM
Soll die Konfiguration nicht im EEPROM des Adapters (Due-Version) bzw. im Flashspeicher des ESP32 gespeichert werden, so ist das Definement zu deaktivieren.
-
Konfiguration via Webinterface:
#define WEBCONFIG
Ermöglicht die Konfiguration via Webinterface (bei Speicherung der Einstellungen im EEPROM des Adapters (Due-Version) bzw. im Flashspeicher des ESP32). Falls nicht gewünscht, dann ist dieses Definement zu deaktivieren.
- Compile JSON-based configuration and EEPROM config store module extension.
#define JSONCONFIG
-
Variablen für eine zukünftige Verwendung, derzeit noch ohne Funktion:
#define ROOM_UNIT
→ Raumgeräteersatz
byte UdpIP[4] = {0,0,0,0};
→ Ziel-IP-Adresse für UDP
uint16_t UdpDelay = 15;
→ Sendeintervall in Sekunden für UDP#define OFF_SITE_LOGGER
→ Off-Site-Logger Erweiterung
byte destinationServer[128] = "";
→ IP des Off-Site-Loggers
uint16_t destinationPort = 80;
→ Port des Off-Site-Loggers
uint32_t destinationDelay = 84600;
→ Sendeintervall in Sekunden
2.3 Manuelles Hinzufügen von Parametern aus v2.2
Im Vergleich zu früheren Versionen von BSB-LAN mag auffallen, dass einige Parameter nun in der gerätespezifischen Parameterliste nicht mehr auftauchen, auch wenn diese grundsätzlich funktioniert haben.
Es ist aber weiterhin möglich, ausgewählte Parameter aus der Parameterliste der Version 2.2 in die aktuelle Version aufzunehmen.
Hinweis |
---|
Wir empfehlen ausdrücklich, diese nicht offiziell vom Hersteller des Reglers unterstützten Parameter nur nach eingehender Prüfung hinzuzufügen, insbesondere, wenn diese Werte auch geschrieben werden sollen! |
Als sicheren Nummernbereich, in dem Parameter wie im Folgenden beschrieben hinzugefügt werden können, empfehlen wir 10600 und aufwärts. |
Im ersten Schritt lädt man sich dazu die Release-Version 2.2 unter https://github.com/fredlcore/BSB-LAN/releases herunter.
Nachdem man die Datei entpackt hat, findet man in dem Unterverzeichnis BSB_LAN die Datei BSB_LAN_custom_defs.h.default. Diese öffnet man mit einem Texteditor wie z.B. Notepad unter Windows oder TextEdit unter MacOS.
Parallel dazu öffnet man außerdem die Datei BSB_LAN_custom_defs.h aus der aktuellen BSB-LAN Version, die man benutzen möchte, in der Arduino IDE.
Wenn beide Dateien geöffnet sind, sucht man in der BSB_LAN_custom_defs.h.default der Version 2.2 nach der Parameternummer des Parameters, den man hinzufügen möchte.
Die weiteren Schritte werden anhand des Beispiels des früheren Parameters 701 – „Präsenztaste (temporäre Abwesenheit)“ erläutert. Dieser Parameter ist bei der gerätespezifisch erstellten Datei BSB_LAN_custom_defs.h mittlerweile per default enthalten, lediglich bei den ersten erstellten Dateien (in der damaligen Umstellphase auf die BSB-LAN-Version 3.x) fehlt dieser noch.
Die Suche nach „701“ ergibt zuerst diesen Eintrag:
const char STR701[] PROGMEM = STR701_TEXT;
Diese Zeile kopiert man in die Zwischenablage.
In der Datei BSB_LAN_custom.defs.h der aktuellen BSB-LAN Version sucht man nun nach dem Text const char S
und findet dann eine Reihe solcher Einträge. Dort fügt man die oben ausgewählte Zeile an eine beliebige Stelle ein.
Findet sich für einen Parameter kein Eintrag, der mit const char
beginnt, sondern ein Eintrag, der dem Muster #define STR<gesuchte Parameternummer> STR<referenzierte Parameternummer>
entspricht, sind zwei Schritte nötig:
Man kopiert zuerst die Zeile #define STR…
in die aktuelle BSB_LAN_custom_defs.h Datei und sucht dann in der BSB_LAN_custom_defs.h.default nach der referenzierten Parameternumer, bis man für diese Nummer die Zeile findet, die mit const char S
beginnt.
Am Beispiel der Parameternummer 702 würde man daher diese Zeile zuerst finden: #define STR702 STR701
.
Daraufhin sucht man dann erneut nach der referenzierten Parameternummer (in diesem Falle 701), so dass man bei einer erneuten Suche nach dieser Parameternummer dann die Zeile const char STR701[] PROGMEM = STR701_TEXT;
finden würde, die man dann ebenfalls kopieren würde.
Wichtig ist, dass die #define
-Zeile unter der const char S…
-Zeile stehen muss!
Das Ergebnis sähe also für Parameter 702 so aus:
const char STR701[] PROGMEM = STR701_TEXT;
#define STR702 STR701
Alle weiteren Einträge, wo die Parameternummer ggf. in der Position des referenzierten Parameters in #define
-Zeilen steht (wie z.B. #define STR1301 STR701
) können ignoriert werden – es sei denn, man will in diesem Fall die Parameternummer 1301 ebenfalls hinzufügen.
Da es sich bei dem Parameter 701 um einen Parameter mit Auswahloptionen handelt, finden sich auch noch Zeilen, die mit #define ENUM701_...
beginnen. Diese Zeilen sind ebenfalls in die aktuelle BSB_LAN_custom_defs.h zu kopieren.
In diesem Zusammenhang taucht dann noch ein Eintrag auf, der mit const char ENUM701[]
beginnt. Diese und die nachfolgenden Zeilen sind bis zur schließenden geschweiften Klammer ebenfalls in die aktuelle BSB_LAN_custom_defs.h zu kopieren:
const char ENUM701[] PROGMEM_LATEST = {
"\x00 " ENUM701_00_TEXT "\0"
"\x01 " ENUM701_01_TEXT "\0"
"\x02 " ENUM701_02_TEXT
};
Bei rein numerischen Parametern, die kein Auswahlmenü haben, sondern z.B. nur einen Temperaturwert anzeigen, entfällt dieser Schritt, weil es dazu dann keinen const char ENUM…
-Eintrag gibt.
Schlussendlich findet man den eigentlichen Tabelleneintrag für Parameter 701, der folgendermaßen aussieht:
{0x2D3D0572, VT_ENUM, 701, STR701, sizeof(ENUM701), ENUM701, DEFAULT_FLAG+FL_WONLY, DEV_ALL},
Die entsprechende Tabelle findet sich in der aktuellen BSB_LAN_custom_defs.h Datei am Ende der Datei. In der dritten Spalte sieht man dabei immer die Parameternummer. Nun geht man in dieser Datei soweit nach oben, dass der Parameter an der richtigen Stelle eingefügt wird. In unserem Beispiel wäre das nach der Zeile für Parameter 700.
Achtung |
---|
Es ist unbedingt wichtig, darauf zu achten, dass der Parameter in dieser Tabelle / cmdtbl-Struktur an der richtigen Stelle eingefügt wird (und nicht z.B. vor der Zeile für Parameter 700 oder irgendwo danach), weil sonst die Parameter in der Kategorienübersicht nicht mehr vollständig aufgelistet werden! |
Bei einigen Reglern wird jedoch der Parameter 701 schon von einer anderen Funktion belegt sein. Neuere LMS-Regler haben dort z.B. die Funktion für „temporär wärmer/kälter“ abgelegt. Das Verlegen des neu hinzuzufügenden Parameters ist jedoch einfach: Man wählt eine freie Parameternummer (abgesehen von der hier erwähnten Funktion “Präsenztaste” empfehlen wir dafür die Parameternummern 10600 und aufwärts) und fügt die Zeile
{0x2D3D0572, VT_ENUM, 701, STR701, sizeof(ENUM701), ENUM701, DEFAULT_FLAG+FL_WONLY, DEV_ALL},
an der entsprechenden Stelle in der Datei ein. Dann braucht man lediglich die Parameternummer in der dritten Spalte zu ändern, in diesem Fall auf 10110. Die Parameternummern, die bei STR…
oder ENUM…
eingetragen sind, können jedoch so bleiben, da sie so gewählt wurden, dass sie nicht mit den neuen Parametern kollidieren.
Die neue, finale Zeile sähe dann so aus:
{0x2D3D0572, VT_ENUM, 10110, STR701, sizeof(ENUM701), ENUM701, DEFAULT_FLAG+FL_WONLY, DEV_ALL},
Zusammengefasst noch einmal die Zeilen, die für die Funktion „Präsenztaste“ kopiert werden müssten, um sie in die Datei BSB_LAN_custom_defs.h als Parameternummer 10110 einzufügen:
const char STR701[] PROGMEM = STR701_TEXT;
const char ENUM701[] PROGMEM_LATEST = {
"\x00 " ENUM701_00_TEXT "\0"
"\x01 " ENUM701_01_TEXT "\0"
"\x02 " ENUM701_02_TEXT
};
Außerdem an der entspr. korrekten Stelle in der cmdtbl-Struktur:
{0x2D3D0572, VT_ENUM, 10110, STR701, sizeof(ENUM701), ENUM701, DEFAULT_FLAG+FL_WONLY, DEV_ALL},
Danach kann BSB-LAN erneut auf den Microcontroller geflasht werden und der neue Befehl ist einsatzbereit.
Möchte man in dem Zuge gleich die in diesem Fall evtl. uneindeutige Parameterbezeichnung „Präsenztaste“ auf z.B. die zutreffendere Bezeichnung „Zeitprogramm (temporär)“ ändern, kann man dies in dem Schritt auch gleich machen. Dazu würde man einfach nur die Zeile
const char STR701[] PROGMEM = STR701_TEXT;
in
const char STR701[] PROGMEM = “Zeitprogramm (temporär)”;
ändern müssen und dann erneut flashen. Da alle diese Änderungen in der BSB_LAN_custom_defs.h erfolgen, bleiben Sie auch bei einem Update der BSB-LAN-Software erhalten.
Möchte man bei der Gelegenheit auch gleich noch die Präsenztastenfunktion für HK2 (Parameter 1001 in v2.2) als Parameter 10111 hinzufügen, würden die entspr. Zeilen so aussehen:
#define STR1001 STR701
sowie diese Zeile an der entspr. korrekten Stelle in der cmdtbl-Struktur:
{0x2E3E0572, VT_ENUM, 10111, STR1001, sizeof(ENUM701), ENUM701, DEFAULT_FLAG+FL_WONLY, DEV_ALL}, // [-] - Heizkreis 2 - Präsenztaste ***(virtuelle Zeile)***
Parameter, die von Interesse sein könnten und die dafür zu kopierenden Zeilen |
---|
1602 – Status Trinkwasserbereitung const char STR1602[] PROGMEM = STR1602_TEXT; const char ENUM1602[] PROGMEM_LATEST = { "\x00\x02 " ENUM1602_00_02_TEXT "\0" "\x02\x02 " ENUM1602_02_02_TEXT "\0" "\x00\x04 " ENUM1602_00_04_TEXT "\0" "\x04\x04 " ENUM1602_04_04_TEXT "\0" "\x00\x08 " ENUM1602_00_08_TEXT "\0" "\x08\x08 " ENUM1602_08_08_TEXT <br> }; Außerdem an der entspr. Stelle in der cmdtbl-Struktur: {0x31000212, VT_BIT, 1602, STR1602, sizeof(ENUM1602), ENUM1602, DEFAULT_FLAG, DEV_ALL}, // Status Trinkwasserbereitung |
10100 – Status Brenner #define ENUM10100_01_TEXT ENUM_CAT_34_TEXT const char ENUM10100[] PROGMEM_LATEST = { "\x00" // index for payload byte "\x01\x01 " ENUM10100_01_TEXT "\0" "\x02\x02 " ENUM10100_02_TEXT "\0" "\x04\x04 " ENUM10100_04_TEXT "\0" "\x08\x08 " ENUM10100_08_TEXT "\0" "\x10\x10 " ENUM10100_10_TEXT "\0" "\x20\x20 " ENUM10100_20_TEXT "\0" "\x40\x40 " ENUM10100_40_TEXT "\0" "\x80\x80 " ENUM10100_80_TEXT }; Außerdem an der entspr. Stelle in der cmdtbl-Struktur: {0x053D0213, VT_CUSTOM_BIT, 10100, STR10100, sizeof(ENUM10100), ENUM10100, FL_RONLY, DEV_ALL}, // INFO Brenner |
10102 – Info HK1 {0x2D000211, VT_UNKNOWN, 10102, STR10102, 0, NULL, DEFAULT_FLAG, DEV_ALL}, // INFO HK1 |
10103 – Info HK2 {0x2E000211, VT_UNKNOWN, 10103, STR10103, 0, NULL, DEFAULT_FLAG, DEV_ALL}, // INFO HK2 |
10104 – Info HK3/P {0x2F000211, VT_UNKNOWN, 10104, STR10104, 0, NULL, DEFAULT_FLAG, DEV_ALL}, // INFO HK3/P |