Manual BSB LPB LAN Adapter
Manual BSB LPB LAN Adapter
Table of Contents
Introduction
1.1 Adapter
1.1.1 Due Version
1.1.2 ESP32 Version
1.3 ESP32
1.3.1 ESP32 With Specific "BSB-LAN ESP32"-Adapter
1.3.1.1 ESP32: NodeMCU "Joy-It"
1.3.1.2 ESP32: Olimex ESP32-EVB & ESP32-PoE
1.3.2 ESP32 With Due-Compatible BSB-LAN-Adapter From V3
1.3.3 ESP32 With Outdated BSB-LAN-Adapter V2
1.4 Raspberry Pi
1.5 Housing
2.1 Installation
2.1.1 Installation onto the Due
2.1.2 Installation onto the ESP32
2.1.3 Updates
2.2 Configuration
2.2.1 Configuration via Webinterface
2.2.2 Configuration by Adjusting the Settings Within BSB_LAN_config.h
8.1 FHEM
8.2 openHAB
8.2.1 openHAB-Binding
8.2.2 openHAB with Javascript Transformation
8.2.3 openHAB with Javascript Transformation, MQTT, Network and Expire
8.3 HomeMatic (EQ3)
8.4 ioBroker
8.5 Loxone
8.6 IP-Symcon
8.7 MQTT, InfluxDB, Telegraf and Grafana
8.12 SmartHomeNG
8.13 Node-RED
8.15 Volkszaehler
8.16 Homebridge
8.17 Jeedom
11.1 Broetje
11.2 Elco
11.3 Other Manufacturers
12.1 Installation
12.1.1 Arduino Due
12.1.2 ESP32
16. FAQ
16.1 Can I Use the Adapter & Software with a Raspbery Pi?
16.2 Can I Connect One Adapter to Two Controllers at the Same Time?
16.3 Can I Connect an Adapter via LPB And Query Different Controllers?
16.4 Is a Multifunctional Input of the Controller Directly Switchable via Adapter?
16.24 I Don't Find a LPB or BSB Connector, Only L-BUS And R-BUS?!
16.25 Is There An Alternative Besides Using LAN?
16.26 I Am Using The Outdated Setup Adapter v2 + Arduino Mega 2560 - Is There Anything I Have To Take Care Of?
16.27 I Am Getting Error Messages from the Arduino IDE - What Can I Do?
16.30 I cannot find the setting for writing the parameters / The "set" button is missing
16.31 Why can't I find the parameter XYZ anywhere?
16.32 The LED flickers, but no connection to the heating is established.
16.33 I Have Further Questions, Who Can I Contact?
Appendix B: Pinouts
B1 Arduino DUE
Appendix D: Notes For Users Of The Outdated Setup Adapter v2 + Mega 2560
It is suggested to read the manual completely before starting the installation and usage of the adapter and the software.
Quick Start Guides for the installation and commissioning of the BSB-LAN setups are available here:
WATCH OUT:
There is NO WARRANTY or GUARANTEE of any kind that this adapter will NOT damage your heating system!
Any implementation of the steps described here, any replica of the adapter and any use of the hardware and software described is at
your own risk!
None of the contributors or authors can be held liable for any damages of any kind!
the hardware, which basically is a logic level converter and which is called "BSB-LAN adapter" in the following and
The BSB-LAN adapter converts the 12V bus signals from the heating system to a suitable 3,3V signal for the necessary microcontroller.
The adapter has to be connected to the compatible controller of the heating system and has to be used in conjunction with a compatible
microcontroller (Arduino Due or ESP32).
The microcontroller itself then will be integrated in your home network (either via LAN oder WiFi, depending on the chosen microcontroller).
The controller of the heating system must be equipped with a "Boiler System Bus" (BSB), a "Local Process Bus" (LPB) or a "Point-to-Point
Interface" (PPS). These are mostly heating systems in which a SIEMENS controller is used (or, depending on the heater manufacturer, usually a
branded OEM version).
The BSB-LAN software then converts the logic levels to specific 'bus telegrams'. It basically gives access to the controller of the heating system.
It offers various functions like monitoring values and the state of parameters, logging and (if wanted) controlling and changing settings via a
webinterface.
An optional integration into an existing SmartHome system is also possible. An integration in systems such as FHEM, openHAB, HomeMatic,
ioBroker, Loxone, IP-Symcon, EDOMI, Home Assistant, SmartHomeNG or Node-RED can be done via HTTPMOD, JSON or MQTT.
In addition, the use of the adapter as a standalone logger without LAN/WiFi or internet connection when using a microSD card is also possible.
Furthermore, optional temperature and humidity sensors can be connected and their data can also be logged and evaluated.
You also have the ability to integrate your own code into the BSB-LAN software, which offers a wide range of expansion options.
As a first rough orientation, whether your own heating system is compatible or not, you can search for a connection option for optional room units
in the operating instructions of your heater.
If room units of the QAA55 / QAA75 type are listed as compatible (Broetje also refers to these as "RGB Basic" and "RGT B Top"), then the
adapter can be connected via BSB. This is the case with most oil fired, gas fired and heat pump systems of the last years.
The following overview shows the most common used controllers of the different heating systems which will work with BSB-LAN.
As a basic rule we can say, that the controller types of the last years which are named with an S at the end (RVS and LMS) are compatible with
BSB-LAN and offer (mostly) the full range of funtionality.
For further and more detailed informations about the different controllers and the connection see the corresponding chapters.
To see a detailed listing of the reported systems which are sucessfully used with BSB-LAN please follow the corresponding link:
Broetje
Elco
Authors:
Software, schematics v1, first documentation EN, support
up to v0.16:
Gero Schumacher
Based upon the code and the work of many other users and developers! Thanks!
Note:
It is possible to use the adapter v2 with an ESP32 (after making some small changes). This way, one could use the current version of
BSB-LAN without the need to use a new adapter. Please read chap. 1.3.3 for further informations.
But: It has been shown by several users that even the v1.1 still runs without major restrictions, but due to the lack of memory of the Mega
2560 probably already no longer with all available options that BSB-LAN offers.
Starting from v2.x it is then definitely necessary to deactivate some modules which BSB-LAN offers. Hints concerning this can be found in
chap. 5.2 or in the comments of the file BSB_LAN_config.h. Special attention should be paid to the last points, which offer a comfortable
deactivation of individual modules (e.g. Webconfig, MQTT, IPWE etc.) at central place.
1) You can reduce the size of some variables like PASSKEY[] , avg_parameters[] , log_parameters[] , ipwe_parameters[] ,
max_device_list[] for saving RAM (if you don't need as much parameters as maximum possible for example).
2) Within the file BSB_LAN_config.h you find a section at the end of the file where certain functions of BSB-LAN can be deactivated if you
don't use them anyway. Notes regarding this you'll find in the file itself.
Retrieve parameter 6225 "Device family" via BSB-LAN and note the value.
Before executing, copy the file selected_defs.pl or selected_defs.exe respectively in the same folder, where the file BSB_LAN_defs.h is
located.
Open a terminal, enter the corresponding folder and create the reduced file named BSB_LAN_defs_filtered.h using the Perl script or the
Move the original file BSB_LAN_defs.h from the "BSB_LAN" directory to a different location. Move the newly created file
BSB_LAN_defs_filtered.h to the directory "BSB_LAN" (if you didn't already create the file within that directory).
With a version of BSB-LAN before v2.x it is absolutely necessary to adapt the line BSB bus(19,18); : The DUE uses (in contrast to the
Mega) the HardwareSerial interface and other RX/TX pins than the Mega, which is already preset here. When used with the Mega, the
line must therefore be changed to BSB bus(68,69); !
With a version of BSB-LAN since v2.x an automatic detection of the used pins is implemented. Therefore BSB-LAN autodetects if a
Mega (= software serial) or a Due (= hardware serial) is used.
Can I continue to use the adapter v3/v4 with my previous Mega 2560?
No! Even if it would be possible after some changes to the adapter v3/v4, it would not offer any added value compared to the adapter v2.
New functions of BSB-LAN would still not be able to be used due to the lack of memory of the Mega 2560. So if you want to use the new
adapter v3/v4, then only in combination with an Arduino Due.
Back to TOC
It is suggested to read the manual completely before starting the installation and usage of the adapter and the software.
Quick Start Guides for the installation and commissioning of the BSB-LAN setups are available here:
WATCH OUT:
There is NO WARRANTY or GUARANTEE of any kind that this adapter will NOT damage your heating system!
Any implementation of the steps described here, any replica of the adapter and any use of the hardware and software described is at
your own risk!
None of the contributors or authors can be held liable for any damages of any kind!
the hardware, which basically is a logic level converter and which is called "BSB-LAN adapter" in the following and
The BSB-LAN adapter converts the 12V bus signals from the heating system to a suitable 3,3V signal for the necessary microcontroller.
The adapter has to be connected to the compatible controller of the heating system and has to be used in conjunction with a compatible
microcontroller (Arduino Due or ESP32).
The microcontroller itself then will be integrated in your home network (either via LAN oder WiFi, depending on the chosen microcontroller).
The controller of the heating system must be equipped with a "Boiler System Bus" (BSB), a "Local Process Bus" (LPB) or a "Point-to-Point
Interface" (PPS). These are mostly heating systems in which a SIEMENS controller is used (or, depending on the heater manufacturer, usually a
branded OEM version).
The BSB-LAN software then converts the logic levels to specific 'bus telegrams'. It basically gives access to the controller of the heating system.
It offers various functions like monitoring values and the state of parameters, logging and (if wanted) controlling and changing settings via a
webinterface.
An optional integration into an existing SmartHome system is also possible. An integration in systems such as FHEM, openHAB, HomeMatic,
ioBroker, Loxone, IP-Symcon, EDOMI, Home Assistant, SmartHomeNG or Node-RED can be done via HTTPMOD, JSON or MQTT.
In addition, the use of the adapter as a standalone logger without LAN/WiFi or internet connection when using a microSD card is also possible.
Furthermore, optional temperature and humidity sensors can be connected and their data can also be logged and evaluated.
You also have the ability to integrate your own code into the BSB-LAN software, which offers a wide range of expansion options.
As a first rough orientation, whether your own heating system is compatible or not, you can search for a connection option for optional room units
in the operating instructions of your heater.
If room units of the QAA55 / QAA75 type are listed as compatible (Broetje also refers to these as "RGB Basic" and "RGT B Top"), then the
adapter can be connected via BSB. This is the case with most oil fired, gas fired and heat pump systems of the last years.
The following overview shows the most common used controllers of the different heating systems which will work with BSB-LAN.
As a basic rule we can say, that the controller types of the last years which are named with an S at the end (RVS and LMS) are compatible with
BSB-LAN and offer (mostly) the full range of funtionality.
For further and more detailed informations about the different controllers and the connection see the corresponding chapters.
To see a detailed listing of the reported systems which are sucessfully used with BSB-LAN please follow the corresponding link:
Broetje
Elco
Authors:
Software, schematics v1, first documentation EN, support
up to v0.16:
Gero Schumacher
Based upon the code and the work of many other users and developers! Thanks!
Caution: Electrostatic charges can cause irreparable damage - ground yourself before starting work!
Prepare the setup by plugging the LAN shield and the adapter onto the Arduino Due, plug in a LAN cable and connect the Arduino setup to your
computer with a USB cable. Make sure you are using the 'Programming Port' of the Due, which is the USB port in the middle, right next to the
power supply.
If your computer does not recognize the Due automatically, you have to install the appropriate driver for your operating system.
The complete setup (Arduino Due + LAN shield + BSB-LPB-LAN adapter v3), belonging cables included.
4. Enter the folder "BSB-LAN-master"/"BSB_LAN" and rename the files BSB_LAN_custom_defs.h.default to BSB_LAN_custom_defs.h and
BSB_LAN_config.h.default to BSB_LAN_config.h!
5. Start the ArduinoIDE by double-clicking the file "BSB_LAN.ino" in the BSB_LAN folder.
Check the correct serial port where the Arduino Due is connected to the computer under "Tools/Port".
| Note | |:-----| | If you encounter problems until here (e.g. the board is not recognized), please read the detailed description in chapter 2.1.1.
|
6. Adjust the settings in the file "BSB_LAN_config.h" according to your wishes and circumstances.
This applies in particular to settings regarding the use of DHCP, a possibly different IP address, and the optional security functions.
When all settings are adjusted, start the flash process by clicking on "Sketch/Upload" or "Sketch/Upload".
| Note | |:-----| | In addition to the adjustment of the file "BSB_LAN_config.h" the adjustment of the configuration of BSB-LAN can also be
7. After finishing the flash process start the Serial Monitor of the Arduino IDE and watch the output which is done when starting the Arduino.
Among other things, the IP that is assigned to the setup when using DHCP is displayed there.
After finishing the startup process, it's advisable to disconnect the power supply of the Arduino , that means removing the board from
the USB port of your computer. This is not mandatory, but recommended for safety reasons.
8. Switch off your heating system so that the controller is no longer power supplied.
| Note | |:-----| | For detailed instructions on how to connect a controller with PPS connections and illustrations of various controllers and the
corresponding connections to be used, please refer to chapter 3.1! |
10. Restart the setup by pressing the reset button or restore the power supply of the Arduino setup, ideally with a specific power supply with
connection to the hollow plug socket.
If you do not (yet) have a suitable power supply at hand, you can also supply the Arduino setup with power via the USB socket. This can be
done either via a powerful USB power supply or via your USB port on the computer.
The latter variant is advantageous in that you can use the Serial Monitor of the Arduino IDE in parallel to control the startup behavior of the
setup.
11. Start an internet browser and go to the page of the BSB-LAN web interface.
It can be found at the IP address you previously set in step 6 (the default is "192.168.178.88").
When using DHCP, the IP can be read out from the start sequence of the Arduino Due by using the Serial Monitor of the Arduino IDE.
If everything is installed correctly, you will now have (limited) access to the controller of your heating system. To gain access to all of the
parameters your controller offers, see step 12!
| Note | |:-----| | If -contrary to expectations- errors or problems arise, then in addition to the chapters already mentioned, also read chapters
13, 14 and 15. |
12. You now have to create a device specific file BSB_LAN_custom_defs.h to get access to all of the parameters of your controller! Therefore
please read chap. 3.3 and perform the steps mentioned there!
Caution: Electrostatic charges can cause irreparable damage - ground yourself before starting work!
If your computer does not recognize the Olimex automatically, you have to install the appropriate driver for your operating system.
The complete setup: Olimex ESP32-PoE with the plugged on "BSB-LAN ESP32" adapter v4.4.
4. Enter the folder "BSB-LAN-master"/"BSB_LAN" and rename the files BSB_LAN_custom_defs.h.default to BSB_LAN_custom_defs.h and
BSB_LAN_config.h.default to BSB_LAN_config.h!
Open the file "BSB_LAN_config.h" and activate the definition '#define WIFI' if you want to use WiFi. If you are using an Olimex board
and want to use LAN, please leave the definement deactivated: //#define WIFI .
If you want to use WiFi, enter the access data for your WiFi network at the entries
char wifi_ssid[32] = "YourWiFiNetwork"; and
char wifi_pass[64] = "YourWiFiPassword"; .
5. Start the ArduinoIDE by double-clicking the file "BSB_LAN.ino" in the BSB_LAN folder.
Check the correct serial port to which the ESP32 board is connected to the computer under "Tools/Port".
| Attention | |:----------| | Now select the appropriate ESP32 board type under Tools/Board or Tools/Board and adjust the board settings! |
For the Joy-It ESP32-NodeMCU recommended in this manual (or identical clones with an "ESP32-WROOM" chip) the appropriate
board type is "ESP32 Dev Module".
Then select the variant "Default 4MB with spiffs (1.2BM APP/1.5MB SPIFFS)" for "Partition Scheme".
For the recommended Olimex ESP32-EVB & ESP32-PoE please select the entry with the same name from the list.
Then select the variant "Minimal SPIFFS (Large APPS with OTA)" for "Partition Scheme".
| Note | |:-----| | If you encounter problems until here (e.g. that the board is not recognized), please read the detailed description in chapter
2.1.2! |
6. Adjust the settings in the file "BSB_LAN_config.h" according to your wishes and circumstances.
This applies in particular to settings regarding the use of DHCP, a possibly different IP address, and the optional security functions.
When all settings are adjusted, start the flash process by clicking on "Sketch/Upload" or "Sketch/Upload".
| Note | |:-----| | In addition to the adjustment of the file "BSB_LAN_config.h" the adjustment of the configuration of BSB-LAN can also be
done later via web interface. |
| Further hints as well as a description of all configuration options can be found in chapter 2.2! |
7. After finishing the flash process start the Serial Monitor of the Arduino IDE and watch the output which is done when starting the ESP32.
Among other things, the IP that is assigned to the setup when using DHCP is displayed there.
After finishing the startup process, it's advisable to disconnect the power supply of the ESP32 , that means removing the board from the
USB port of your computer. This is not mandatory, but recommended for safety reasons.
8. Switch off your heating system so that the controller is no longer power supplied.
| Note | |:-----| | For detailed instructions on how to connect a controller with PPS connections and illustrations of various controllers and the
corresponding connections to be used, please refer to chapter 3.1! |
10. Restart the setup by pressing the reset button or restore the power supply of the ESP32 board setup, ideally with a specific power supply
with connection to the microUSB socket (NodeMCU) or hollow plug socket (Olimex).
11. Start an internet browser and go to the page of the BSB-LAN web interface.
It can be found at the IP address you previously set in step 6 (the default is "192.168.178.88").
When using DHCP, the IP can be read out from the start sequence of the Arduino Due by using the Serial Monitor of the Arduino IDE.
If everything is installed correctly, you will now have (limited) access to the controller of your heating system. To gain access to all of the
parameters your controller offers, see step 12!
| Note | |:-----| | If -contrary to expectations- errors or problems arise, then in addition to the chapters already mentioned, also read chapters
13, 14 and 15. |
12. You now have to create a device specific file BSB_LAN_custom_defs.h to get access to all of the parameters of your controller! Therefore
please read chap. 3.3 and perform the steps mentioned there!
BSB-LAN can be operated with an Arduino Due as well as on an ESP32 together with the specific adapter. The respective platform specific
adapter allows a simple and exact fitting on the corresponding microcontroller. In some cases, a platform-specific adapter can also be used with
the other microcontrollers, but in this case it is not possible to fit the adapter exactly. Further information can be found in the respective note
boxes in the corresponding chapter.
Since there are platform and design specific differences between the compatible microcontrollers (Arduino Due / ESP32 NodeMCU / Olimex
ESP32-EVB), which have to be considered for certain applications (e.g. if further hardware should be connected), the most relevant differences
are briefly presented in the following as a tabular overview.
A possible retrofitting of individual components (such as a microSD card reader for a NodeMCU for example) is not considered here!
Power-over-Ethernet No No No Yes
Notes
Especially the few free pins at an Olimex ESP32-EVB, which can be used without problems for the connection of further hardware (like
sensors, relays, pushbuttons for example), may be an exclusion criterion to be considered!
If the internal logging function of BSB-LAN on microSD card is to be used, the NodeMCU should not be used, because the possibly frequent
write cycles when saving the data on the EEPROM chip of the ESP32 can lead to an early failure ("wear out").
Before deciding for one of the mentioned microcontrollers, it is therefore advisable to thoroughly consider the future application and possible
extensions on hardware basis. For this purpose it is recommended to read the manual carefully in advance.
As described in chap. 1.4, connecting the adapter to a Raspberry Pi is possible in principle, but using the BSB-LAN software is not. Apart
from that, we cannot recommend the use of an RPi as a microcontroller for this purpose. In our opinion, the main arguments against this are
price, power consumption and the operating system that has to be maintained.
1.1 Adapter
Attention
It should be noted at this point that the ESP32-specific adapter version can only be used with an ESP32 due to the missing EEPROM - the
Due-specific version, on the other hand, can also be used with an ESP32 (even if it cannot be plugged in comfortably).
The adapter can be built on your own by experienced users, a corresponding schematic for the Due-compatible version including EEPROM can
be found in Appendix A1 - for the ESP32-compatible version only the EEPROM is omitted, the rest of the circuit is identical.
In addition to the complete self-build, there is the possibility to buy ready-made adapter boards from Frederik Holst (bsb [ät] code-
it.de).
The PCBs available from Frederik can be plugged onto the compatible microcontrollers presented in the following (Arduino Due / Joy-It ESP32-
NodeMCU / Olimex ESP32-EVB) with an exact fit, so that you should consider thoroughly in advance which microcontroller you want to use for
the setup in the further course.
The BSB-LAN adapter board, Due version, v4.1, top side, unpopulated.
Note
Using the Due-specific adapter on an ESP32 is possible in principle, despite the EEPROM, but the adapter cannot be plugged onto an
ESP32 board without problems, as is the case with a Due. If the adapter should nevertheless be used with an ESP32 board, care must be
taken to ensure that the connections between the adapter and ESP32 are made correctly and reliably.
This BSB-LAN adapter board is designed for the 30 pin ESP32 NodeMCU board from Joy-It (WROOM32 chip).
The "BSB-LAN ESP32" adapter, v4.2, assembled for the recommended NodeMCU.
In addition, the adapter can also be used with an Olimex ESP32-EVB and an Olimex ESP32-PoE. It can be plugged directly into the ten-pin
UEXT connector of Olimex boards by adding a double-row five-pin connector (2x5 pin, RM 2.54mm) on the bottom of the PCB.
The "BSB-LAN ESP32" adapter, v4.4, assembled for the Olimex boards.
Note
Using the ESP32 specific adapter on a Due is not possible due to the missing EEPROM!
ATTENTION: The GPIOs of the Arduino Due are only 3.3v compatible!
Notes
Regarding to the tech specs of the Arduino Due, it is recommended to use an external power source (recommended: 7-12V, limits: 6-16V) at
the intended connection of the Arduino (e.g. 9V/1000mA).
If you want to power the Due via USB, please use the "Programming Port".
It's possible to power the Due via the DC-IN and use USB connection at the programming port for connecting it to the computer at the same
time.
You can let the adapter be connected to the controller bus of the heater when flashing the Due.
Make sure that you are using an USB cable of good quality! This applies to the case that you want to power the Due via USB as well as to
the case that you want to connect the Due to your PC for flashing. Especially long and thin cables (e.g. accessories of smartphones) can
cause problems with the power supply and thus the stability of the Due and/or are not always fully wired, so that a use for data transfer is not
possible.
With some Due models/clones it can happen that they do not seem to work properly after an initial start (e.g. after a power failure) and only
work correctly after pressing the reset button. A possible solution for this problem could be to add a capacitor.
There are / have been two different versions of LAN shields available on the market: one with a WIZnet W5100 chip (v1) and one with a W5500
chip (v2). The usage of a v2-shield is recommended, it's also available at the official Arduino store.
Note
As a LAN cable one should preferably use a S/FTP type with a minimum length of one metre.
If no further component connected via SPI (e.g. LAN shield, card reader) is used, the connection of "SS" (SlaveSelect, DUE pin 12 = D08 at
ESP8266) can be omitted.
In case of the use of SS the connection can also be made to another pin than pin 12, the corresponding pin must be defined accordingly in the
file BSB_LAN_config.h. In this case, however, it must be ensured that the pin to be used is not one of the protected pins and is not used
elsewhere. It is therefore recommended to leave it at the default setting (pin 12).
It is suitable to remove the LAN shield, place an unpopulated circuit board on the Due and provide it with the appropriate connections. So the
Wemos D1 / NodeMCU can be placed stable onto the Due. Depending on the housing, the height may have to be taken into account.
Note
However, this solution does not allow data to be logged to a microSD card. If this still should be possible using the WiFi connection, either a
corresponding card module must be connected additionally or the ESP must be connected in parallel to the existing LAN shield. In both
cases, the SS pin must be connected (see pin assignment/connection).
If a parallel usage of LAN shield and ESP8266 is possible without problems has not been tested yet though.
The required firmware WiFiSpiESP for the ESP8266 is already available as a zip-file in the BSB-LAN repository. The zip-file must be unpacked in
another folder than BSB_lan! The ESP8266 has then to be flashed with the file WiFiSPIESP.ino.
Configuration of BSB-LAN:
To use the WiFi function, the definement #define WIFI must be activated in the file BSB_LAN_config.h. Furthermore, the two variables
wifi_ssid and wifi_pass must be adapted accordingly and the SSID of the WLAN and the password must be entered. These entries can also
be changed afterwards via the web interface.
Notes
When using DHCP, the IP address assigned by the router can be read out in the Serial Monitor of the Arduino IDE when starting the DUE.
When using the ESP WiFi solution, the host name is not WIZnetXYZXYZ, but usually ESP-XYZXYZ, where the digit-letter combination
"XYZXYZ" after "ESP-" is composed of the last three bytes (the last six characters) of the MAC address of the ESP.
When using the ESP WiFi solution, the MAC address of the ESP can't be set on your own.
1.3 ESP32
The BSB-LAN software can also be run on an ESP32. However, it is mandatory to make certain adjustments, which are described in chap. 2.1.2.
If the ESP32 framework is already installed within the Arduino IDE and you are shown the different ESP32 board variants, please check in
the "Board Manager" under "Tools/Boards" that version 2.0.2 (or higher, if available) is installed.
If the board is not listed, the ESP32 platform must be added to the the Arduino IDE. You find the belonging informations in Chap. 12.1.2.
Basically any ESP32 can be used, but due to the specific board design the use of the following boards is recommended:
Olimex ESP32-EVB
Olimex ESP32-PoE
In case you want to use different boards than the recommended ones, always check the specific datasheet and make sure that you are using
pins for RX/TX which are free and safe to use. You must change the settings of the used pins within the file BSB_LAN_config.h then!
Note that the autodetection function within BSB-LAN for the connected controller only works with the recommended boards!
Make sure to use an ESP32-WROOM32 module if you are looking for different ESP32 models than the ones we recommend!
If you want or have to use a WROVER type, you'd either have to use other pins than 16/17 for RX/TX because these pins are used internally
within the WROVER for the SPI PSRAM module or deactivate the usage of PSRAM within the code of BSB-LAN.
This BSB-LAN adapter board is designed for the 30 pin ESP32 NodeMCU board from Joy-It (WROOM32 chip).
The "BSB-LAN ESP32" adapter, v4.2, assembled for the recommended NodeMCU.
The ESP32 adapter version can also be used with an Olimex ESP32-EVB and an Olimex ESP32-PoE. It can be plugged onto the ten pin UEXT
connector of Olimex boards after adding a double row five pin socket (female pinheader, 2x5 pins, grid dimension 2.54mm) to the bottom side of
the PCB (instead of the two 15 female pinheader which have to be used for the ESP32-NodeMCU).
This BSB-LAN adapter board is designed for the 30 pin ESP32 NodeMCU board from Joy-It (WROOM32 chip). A user manual is available for the
board from the manufacturer. There are both the board-specific pinout scheme and a general guide to using ESP32 boards with the Arduino IDE!
The "BSB-LAN ESP32" adapter, v4.2, assembled for the recommended NodeMCU.
If the Joy-It board is not available and another NodeMCU-ESP32 board is used, two things must be taken care of in any case, so that the ESP32-
specific BSB-LAN adapter fits:
1. The board must be a 30 pin ESP32 NodeMCU! There are also 38 pin NodeMCUs - these do not fit!
If the ESP32 framework is already installed within the Arduino IDE and you are shown the different ESP32 board variants, please check in
the "Board Manager" under "Tools/Boards" that version 2.0.2 (or higher, if available) is installed.
If the board is not listed, the ESP32 platform must be added to the the Arduino IDE. You find the belonging informations in Chap. 12.1.2.
The ESP32 adapter version can also be used with an Olimex ESP32-EVB and an Olimex ESP32-PoE. It can be plugged onto the ten pin UEXT
connector of Olimex boards after adding a double row five pin socket (female pinheader, 2x5 pins, grid dimension 2.54mm) to the bottom side of
the PCB (instead of the two 15 female pinheader which have to be used for the ESP32-NodeMCU).
This Olimex board variant offers, among other things, a LAN port and a microSD card reader in addition to the ESP32-based WLAN functionality
and is therefore highly recommended.
The "BSB-LAN ESP32" adapter, v4.4, assembled for the recommended Olimex ESP32-EVB.
The Olimex ESP32-PoE with the plugged on "BSB-LAN ESP32" adapter v4.4.
When plugging on the adapter board, make sure meticulously that the UEXT1 socket of the board is plugged on * exactly in the
middle* of the Olimex socket and that all pins of the Olimex have contact! Otherwise, when the adapter is correctly connected to the
heating controller, the LED of the adapter lights up, but no access to the controller is possible.
Also ensure that the circuit board is plugged onto the Olimex in the correct orientation (see photo)!
Additional hardware can only be connected to the GPIO pins 13 (I2C-SDA) and 16 (I2C-SCL) at the Olimex ESP32-EVB.
If the ESP32 framework is already installed within the Arduino IDE and you are shown the different ESP32 board variants, please check in
the "Board Manager" under "Tools/Boards" that version 2.0.2 (or higher, if available) is installed.
If the board is not listed, the ESP32 platform must be added to the the Arduino IDE. You find the belonging informations in Chap. 12.1.2.
Power supply:
The Olimex boards can be powered in two ways: using the hollow plug socket or using the microUSB socket. In either way the power supply
should provide minimum 5V(DC)/1A. The power supply for using the hollow plug socket should have a 5.5/2.1mm (positive pole inside) hollow
plug (the referring part numbers at the Olimex web page are "SY0605E" / "SY0605E-CHINA").
Attention: In exceptional cases it turned out that the 1A of the power supply was not sufficient to guarantee a stable operation of the board.
If problems with the data transfer or later with the operation via microUSB port occur, try another USB cable first. There are cables that are pure
charging cables and do not have a data line, and there are also cables that only have very thin strands and can therefore cause problems in
terms of the power supply during operation.
BSB-LAN boards from board revision 4.2 are no longer affected by this problem.
As an example, an "ESP32 D1 R32 developer board" (WROOM32 chip) in the size of an Arduino Uno with a self-made adapter board (Uno-
compatible prototyping board) for the inclusion of the BSB-LAN adapter v3 (Due version) is shown below. Of course, other variants are also
possible, such as with an ESP32 NodeMCU and an appropriately adapted breadboard.
Note
The ESP32 "D1 R32 developer board" shown below I personally can explicitly NOT recommend, because it obviously has much worse
reception properties than other ESP32 boards. Although the router was only a few meters away, it was not possible for me to establish a
stable WLAN connection. When I asked the seller, this impression was confirmed to me stating that the "cause for this is rooted in the
design".
Left the "ESP32 D1 R32" board, right the corresponding selfmade plug-on board for the BSB-LAN adapter v3 (due version).
If the ESP32 framework is already installed within the Arduino IDE and you are shown the different ESP32 board variants, please check in
the "Board Manager" under "Tools/Boards" that version 2.0.2 (or higher, if available) is installed.
If the board is not listed, the ESP32 platform must be added to the the Arduino IDE. You find the belonging informations in Chap. 12.1.2.
Attention
The steps described below to 'convert' the adapter to 3.3V are only valid for use on an ESP32 - on a Due the adapter v2 cannot be used due
to the missing EEPROM!
To successfully operate the adapter v2 on an ESP32, the adapter must be 'adjusted' to operate with 3.3V. This is already provided for use with a
Raspberry Pi. The following steps need to be taken:
The adapter must be completely assembled. If the adapter is so far only equipped for use with the Arduino Mega 2560, the following
components must be retrofitted:
The solder jumpers SJ2 and SJ3 are to be closed by a solder point.
The following picture shows a correspondingly equipped adapter v2. The yellow "X" at SJ1 marks the removed solder jumper (the non-closed
contact), the two yellow outlines at SJ2 and SJ3 mark the solder jumpers to be closed.
It is advisable to solder additional pins for the four contacts on the adapter and build yourself a small adapter board from a perforated board and
pin headers, on which the adapter and the ESP32 board can be plugged to ensure a stable setup and a secure connection.
If the ESP32 framework is already installed within the Arduino IDE and you are shown the different ESP32 board variants, please check in
the "Board Manager" under "Tools/Boards" that version 2.0.2 (or higher, if available) is installed.
If the board is not listed, the ESP32 platform must be added to the the Arduino IDE. You find the belonging informations in Chap. 12.1.2.
1.4 Raspberry Pi
The adapter v3 could also be used in conjunction with a Raspberry Pi. Therefore you have to pay attention to some points:
The ESP32 adapter v4.4 with the corresponding female connector strip for a RPi.
Attention
For the usage of the adapter in conjunction with an RPi you have to use a complete different software: "bsb_gateway" by J.
Loehnert!
For any support please contact the author of bsb_gateway!
From our side, the use of the adapter with the above mentioned software was only tested on an RPi 2. We are not able to judge whether it
works properly with more recent RPi versions!
For the usage of the adapter with an RPi at the PPS interface, the Python script PPS-monitor by D. Spinellis can be used.
1.5 Housing
The market offers just a small range of housings which are compatible for an Arduino Due or a ESP32-NodeMCU plus additional shields. If you
search for them, you probably won't find anything. In the case of an Arduino Due, look out for housings which are designed for an Arduino Mega
2560, because it has the same form factor as the Due. Try to find a housing, which can accommodate the whole setup including the LAN shield
though, because many housings are only designed to accommodate the plain Mega. This kind of housing has some cutouts in the top cover to
plug in additional shields, but in that case the LAN shield and the adapter won't be protected at all.
Besides commercial products and creative own built solutions, a 3D printer could be used to create a great housing.
The member "EPo" of the German FHEM forum was so kind to create and offer STL datafiles for a housing.
Thanks a lot!
The STL data files for Due, ESP32-NodeMCU and the Olimex ESP32-EVB housings including the BSB-LAN adapter are already included
in the repository of BSB-LAN (subfolder "schematics".
3D printer model of the housing for the recommended ESP32 NodeMCU and the adapter.
3D printer model of the housing for the Olimex ESP32-EVB and the adapter.
Further on to chapter 2
Back to TOC
2.1 Installation
The BSB-LAN software must be flashed to the used microcontroller (Arduino Due or ESP32) for installation. This can be done e.g. with the
"Arduino IDE", but of course other programs like "PlatformIO" or "Visual Studio Code" can be used as well.
Note
In this manual it is assumed that the Arduino IDE is used. All descriptions and terms therefore refer to the Arduino IDE.
If you are a beginner and not yet familiar with the Arduino IDE, you will find a description of how to install and configure the Arduino IDE in
chap. 12.
Depending on the used platform (Arduino Due or ESP32) the necessary settings of the Arduino IDE differ. Thus the appropriate board types must
be installed and selected, the settings must be adapted platform-specifically etc. These settings will be mentioned in the following. It is assumed
that the necessary libraries for the respective platform are already installed. If this is not the case, then you find information for this in chap. 12.
Beyond that there are still further things to consider with the installation on the ESP32, which are likewise treated in the appropriate chapter.
Note
If you are using Windows, an additional driver installation may be necessary. See the page https://www.arduino.cc/en/Guide/ArduinoDue for
further informations.
1. Connect the Arduino setup with a USB cable to your computer. Use the 'Programming Port' of the Due, which is the USB port in the 'middle',
placed next to the power supply socket. Both the LAN shield and the BSB-LAN adapter should already be plugged onto the Due beforehand,
but this is not mandatory.
2. Download the current BSB-LAN version and unzip the downloaded file BSB-LAN-master.zip.
3. Enter the folder "BSB-LAN-master"/"BSB_LAN" and rename the file BSB_LAN_custom_defs.h.default to BSB_LAN_custom_defs.h and
BSB_LAN_config.h.default to BSB_LAN_config.h!
4. Open the BSB_LAN sketch by double clicking on the file BSB_LAN.ino in the BSB_LAN folder. The corresponding files BSB_LAN_config.h,
BSB_LAN_custom_defs.h and BSB_LAN_defs.h are loaded automatically.
| Note | |:-----| | If the board is not listed, you have to add the Atmel SAM Core. Information about this can be found in chap. 12. |
6. Select the correct serial port where the Due is connected to the computer under "Tools/Port".
7. If you want to configure BSB-LAN by customizing the file BSB_LAN_config.h (see chap. 2.2.2), please do so now.
8. Start the flash process and upload the sketch to the Arduino Due by clicking on "Sketch/Upload".
9. After finishing the flash process start the serial monitor of the Arduino IDE and watch the outputs which are generated when starting the
Arduino Due. Among other things, the IP that is assigned to the setup when using DHCP will be diplayed there.
Important Note
In order to gain access to all of the parameters your controller offers, a controller specific file BSB_LAN_custom_defs.h must be
created. Afterwards BSB-LAN must be reinstalled with this new file. Therefore please read the chap. 3.3 and perform the steps
mentioned there!
If the ESP32 board is not recognized by your operating system, you may need to install an additional driver for the USB chip used by the
board.
1. Connect your ESP32 board with a USB cable to your computer. You may have already plugged the BSB-LAN adapter on or under your
ESP32 board, but this is not mandatory.
2. Download the current BSB-LAN version and unpack the downloaded file BSB-LAN-master.zip.
3. Enter the folder "BSB-LAN-master"/"BSB_LAN" and rename the files BSB_LAN_custom_defs.h.default to BSB_LAN_custom_defs.h and
BSB_LAN_config.h.default to BSB_LAN_config.h!
4. Open the BSB_LAN sketch by double clicking on the file BSB_LAN.ino in the BSB_LAN folder. The corresponding files BSB_LAN_config.h,
BSB_LAN_custom_defs.h and BSB_LAN_defs.h are loaded automatically.
For the Joy-It ESP32-NodeMCU (or identical clones with an "ESP32-WROOM" chip) recommended in this manual the appropriate
board type is "ESP32 Dev Module".
For the recommended Olimex ESP32-EVB & ESP32-PoE please select the entry with the same name from the list.
| Notes | |:-----| | If the ESP32 framework is already installed and you see the different ESP32 board variants, please check in the "Board
Manager" under "Tools/Boards" that version 2.0.2 (or higher, if available) is installed.
If the board is not listed, the ESP32 platform must be added in the Arduino IDE. Information about this can be found in Chapter 12.1.2. |
6. Select the correct serial port, where the ESP32 board is connected to the computer, under "Tools/Port".
7. Set the transfer speed/baudrate to 115200 (Attention: In the Arduino IDE usually 921600 is preset for ESP32 boards!)
8. "Partition Scheme": depending on the type of board, you need to choose the specific partition scheme.
For the recommended ESP32-NodeMCU please choose "Default 4MB with spiffs (1.2BM APP/1.5MB SPIFFS)".
The following screenshot shows the configuration for the ESP32-NodeMCU.
For the recommended Olimex boards select the variant "Minimal SPIFFS (Large APPS with OTA)".
9. Now click on the tab for the file BSB_LAN_config.h and adjust necessarily the following settings:
Activate the definition #define WIFI in the file BSB_LAN_config.h if you want to use WiFi. If you are using an Olimex board and want to
use LAN, please leave the definement deactivated: //#define WIFI .
If you want to use WiFi, enter the access data for your WiFi network at the entries
char wifi_ssid[32] = "YourWiFiNetwork"; and
char wifi_pass[64] = "YourWiFiPassword"; .
10. If you want to configure BSB-LAN by adapting the file BSB_LAN_config.h (see chap. 2.2.2), please do this now.
11. Start the flash process and upload the sketch to the Arduino Due by clicking on "Sketch/Upload".
After finishing the flash process, start the serial monitor of the Arduino IDE and observe the outputs that occur when the ESP32 is started. Among
other things, the IP that is assigned to the setup when using DHCP will be displayed there.
Notes
If the ESP32 cannot connect to the configured WLAN, it will set up its own access point "BSB-LAN" with the password "BSB-LPB-PPS-LAN"
for 30 minutes. After that, it will reboot and try again to connect to the configured WLAN network.
Although the logging feature also works with the ESP32, it is not recommended to overuse this feature due to wear and tear of the flash
memory. If the Olimex board is to be used, a microSD card can be used instead of the SPIFF flash memory. The usage has to be activated
in the file BSB_LAN_config.h.
In order to gain access to all of the parameters your controller offers, a controller specific file BSB_LAN_custom_defs.h must be
created. Afterwards BSB-LAN must be reinstalled with this new file. Therefore please read the chap. 3.3 and perform the steps
mentioned there!
2.1.3 Updates
Updating the BSB-LAN software is done by the usual flashing of the new version (download as ZIP file, via git or similar), as described in the
previous installation chapters. Please pay attention to the following notes!
For ESP32 based boards (Olimex, NodeMCU) an OTA update ("OverTheAir" update) can be done alternatively (this function is NOT usable with
the Arduino DUE!). For this, the corresponding OTA function must be activated in the web config or the file BSB_LAN_config.h. The belonging
firmware file BSB_LAN_ino.bin can be created in the Arduino IDE under "Sketch / Export compiled binary file...". The file has to be uploaded via
browser to port 8080 of the BSB-LAN IP ( http://<BSB-LAN-IP>:8080 or http://bsb-lan:8080 with activated MDNS).
Notes
When updating to v3.x please do not use any existing files - please install BSB-LAN completely new!
Also note the necessary creation of a controller specific BSB_LAN_custom_defs.h - the procedure is described in chap. 3.3.
If you have made certain changes in the file BSB_LAN_config.h for the new version to be flashed, e.g. the access data for your WLAN or a
fixed IP, which were apparently not accepted after flashing, this is usually due to the fact that the old settings were read from the EEPROM.
To make the new settings effective, set the setting "Read configuration from EEPROM" in the Web configuration once to "Off", save the
change and flash again.
After that the new settings should have become effective, because BSB-LAN has now read them from the file BSB_LAN_config.h and not
from the EEPROM.
After successful check set "Read configuration from EEPROM" again to "On".
The existing and (if necessary) adapted file BSB_LAN_config.h can usually be taken over when updating to a newer version, but it is
advisable to use the current file BSB_LAN_config.h.default instead of the existing file BSB_LAN_config.h. To do this, the file
BSB_LAN_config.h.default must be renamed as before and, if necessary, adapted to the previous settings. This way you can be sure that
you have made a complete update of the BSB-LAN software.
If the adapter is connected to the bus of the heating controller, it can remain connected if the Due/ESP32 is to be flashed again. There is no
need to disconnect the adapter from the controller when updating BSB-LAN.
If you enable the function "check for updates" within the config, newer versions of BSB-LAN will be mentioned at the start page of the
webinterface. This includes development versions also though (and not only 'stable' releases) - so if you only want to use a 'stable' release,
you have to check for that manually at the project page.
2.2 Configuration
The BSB-LAN software can be configured according to individual requirements. The configuration can be done in two ways: by adapting the
BSB_LAN_config.h file and via the web interface. The configuration options are explained in more detail below. The descriptions in chapter 2.2.2
are generally more detailed, so it makes sense to study both chapters in detail.
In the right column is the corresponding field, which shows the current entry or setting. The entries from the file BSB_LAN_config.h are taken
over, that means that also with deactivated functions the default settings are visible, so that it becomes clear, how (e.g.) parameters should
be entered. Depending on the type of setting either a pull down menu with the available settings or only a field is displayed.
Important
To apply changed settings, you must finally click on the button "Save parameter" at the bottom!
In the following, the tabular overview of the functions with the (default) settings and the corresponding explanations (unfortunately, the naming of
the left column "Category" must be omitted here for reasons of space and presentation):
Display
Displays the advanced settings of BSB-LAN (Off/On). For accessing all setting options of
extended Off
BSB-LAN "On" must be selected (and then click on "Save parameters" below).
configuration
Reads the stored configuration from the EEPROM when starting the Due (Off/On).
These settings can deviate from the default settings, which were made in the file
Read config BSB_lan_config.h.
On
from EEPROM If the settings stored in the EEPROM should be overwritten, e.g. during an update, set to
"Off" and save the setting before flashing!
If the setting is "Off", changes will only remain active until the Due is restarted.
Check for
Off Automatically check for updates of BSB-LAN (Off/On)
updates
OTA update function (OTA = Over The Air) deactivated (Off) / activated (On).
OTA Update Off
For the further procedure for OTA updates please read chap. 2.1.3 Updates.
0 = autoselect. If another pin than the preset RX pin (see file BSB_LAN_config.h) is
RX pin number 0
used, it must be entered here.
0 = autoselect. If another pin than the preset TX pin (see file BSB_LAN_config.h) is
TX pin number 0
used, it must be entered here.
Destination
0 Destination address for queries
address
PPS only: Users who use the adapter on the PPS interface must make two settings:
First, the mode in which the bus is to be accessed (passive/as room unit) must be
selected. When using a QAA room device, "passive" must be selected here. Then only
the values that go via the bus are displayed in the web interface, writing of values is then
PPS: PPS not possible.
passive
mode If "as room unit" is selected here, values can also be sent to the heating system via the
web interface. The type of the room device to be emulated must then still be selected
(see below). There should then be no other room device on the bus, otherwise both
transmitters send their own values to the heater, so that no consistent operation is
possible.
PPS: QAA
QAA70 PPS only: Type of the room unit that should be imitated (QAA50/QAA70).
model
URL Passkey -no default setting- Optional security function: "URL Passkey"
HTTP
-no default setting- Optional security function: "User-Pass" (Basic HTTP Auth). Syntax: Username:Password
authentification
DHCP usage On DHCP usage (= automatic allocation of the IP address by the router) (Off/On)
IP address
192.168.178.88 Manual network configuration: fixed IP address
(fixed)
DNS Server 192.168.178.1 Manual network configuration: IP address of the DNS server
MAC address 00:80:41:19:69:90 (Preset) MAC address of the LAN shield or MAC address of the ESP
Trusted IP
0.0.0.0 Optional security function: "Trusted IP", access is only possible from this IP
address
Trusted IP
0.0.0.0 Optional security function: "Trusted IP", access is only possible from this IP
address
WLAN SSID -no default setting- SSID of the WLAN when using the WiFi-ESP-solution
WLAN
-no default setting- Password of the WLAN when using the WiFi-ESP-solution
password
mDNS
BSB-LAN Hostname
Hostname
Different options for the logging mode (multiple options possible): Write to SD card /
Logging mode -no default setting-
Calculate 24h averages / Send to MQTT broker / Send to UDP
Interval
3600 Loginterval in seconds
(seconds)
IP address
192.168.178.20 IP-Adresse des MQTT-Brokers
broker
DHW push
0 Room unit emulation: used pin for the DHW push
button: pin
RU1 Room unit 1 emulation: enter the specific parameter number(s) for the optional room
temperature temperature sensor(s) here. Up to five sensors are possible, parameter numbers must
-no default setting-
sensor be separated only with a comma. If more than one sensor is used, an automatic average
parameter will be calculated.
RU1 presence
0 Room unit 1 emulation: used pin for the presence button for HC1
button: pin
RU2 Room unit 2 emulation: enter the specific parameter number(s) for the optional room
temperature temperature sensor(s) here. Up to five sensors are possible, parameter numbers must
-no default setting-
sensor be separated only with a comma. If more than one sensor is used, an automatic average
parameter will be calculated.
RU2 presence
0 Room unit 2 emulation: used pin for the presence button for HC2
button: pin
RU3 Room unit 3 emulation: enter the specific parameter number(s) for the optional room
temperature temperature sensor(s) here. Up to five sensors are possible, parameter numbers must
-no default setting-
sensor be separated only with a comma. If more than one sensor is used, an automatic average
parameter will be calculated.
RU3 presence
0 Room unit 3 emulation: used pin for the presence button for HC3
button: pin
IP address
192.168.178.5 IP address of the CUNO/CUNX/modified MAX!Cube
cube
Parameters 8700,8743,8314 Parameters that should be displayed within the IPWE extension
Verbosity
On Verbosity mode activated (Off/On)
mode
Display
Displays unknown / not supportet parameters ("error 7 - parameter not supportet")-
unknown On
(On/Off).
parameters
Note
To 'activate' or a definement you have to delete the two slashes in front of the hashtag, to 'deactivate' a definement you have to add two
slashes in front of the hashtag. E.g.:
A deactivated definement: //#define XYZ
The language of the user interface of the web interface of the adapter as well as the category and parameter designations must be
selected or defined. For "English" the following definition must be selected: #define LANG EN
Starting with BSB-LAN v.042 it is possible to use BSB-LAN in other languages, too, whereby in principle any language can be supported
(only' the corresponding translations have to be created).
Currently available are: Czech (CZ), German (DE), Danish (DK), English (EN), Spanish (ES), Finnish (FI), French (FR), Greek (GR),
Hungarian (HU), Italian (IT), Dutch (NL), Polish (PL), Russian (RU), Swedish (SE), Slovenian (SI) and Turkish (TR). If certain expressions
are not available in the specific language, the English expression is automatically displayed. If this is also not available, the German
expression is finally displayed.
byte UseEEPROM = 1;
According to the default setting, the configuration settings are read from the EEPROM when BSB-LAN is started. As a fallback the variable
can be set to '0', then the settings are read from the file BSB_LAN_config.h.
Network settings:
Note
By default, the usage of DHCP is activated, so you don't have to change any network settings. If you want to use a fixed IP though,
deactivate DHCP and set the IP and the addresses of the Gateway and the Subnet accordingly.
The default MAC address can be kept. A change is usually only necessary if more than one adapter is used (in any case, you should make
sure that each MAC address only occurs once in the network!). In this case, changes should only be made to the last byte (e.g. 0x91, if a
second adapter is used).
| Note | |:-----| | The MAC address which can be set here doesn't apply to the WiFi-ESP-solution! There the MAC address can't be set! | |
The MAC address assigned here also influences the host name (or is a part of it), which is assigned by the router when using DHCP (see
below): The host name consists of the identifier "WIZnet" and the last three bytes of the MAC address. | | For the default MAC address
mentioned above, the host name is thus "WIZnet196990". This host name is usually also displayed as such in the router. In this case the
Ethernet port:
DHCP:
By default DHCP is used. If this is not desired and you want to assign a fixed IP address by yourself, set the variable to false.
| Note | |:-----| | Please see the notes above regarding the hostname based on the MAC address. The IP given by the router will also appear
within the start process of the Arduino Due within the serial monitor of the Arduino IDE. |
IP address:
Fixed IP address of the adapter, if DHCP is not used - please note the commas instead of dots!
| Note | |:-----| | If you want to give the adapter a fixed IP, please make sure that it occurs only once in your network! |
Gateway address:
IP address of the gateway (usually the one of the router itself) - please note the commas instead of dots!
Subnet:
WiFi:
//#define WIFI
This definement has to be activated if the WiFi function of the ESP8266-WiFi-solution or the ESP32 should be used.
For the usage of WiFi, YourWiFiNetwork has to be replaced by the SSID of the WiFi network.
For the usage of WiFi, YourWiFiPassword has to be replaced by the password of the WiFi network.
#define WIFI_SPI_SS_PIN 12
The SS pin to be used at the DUE when using the ESP8266-WiFi-solution is defined here. It is advisable to leave the default setting. If,
however, another pin should be used, it is essential to ensure that the desired pin is neither used elsewhere nor is included in the list of
protected pins.
| Note | |:-----| | The MAC address can't be set within the WiFi-ESP-solution! |
| Note | |:-----| | mDNS is only available when using LAN, it is not available if you are using the WiFi solution using an ESP8266! |
#define USE_NTP // Disable this in case you don't want to use NTP
| Note | |:--------| | Aquiring time and date via NTP server only works with ESP32 boards! |
#define DEBUG
byte debug_mode = 1;
0 - debugging deactivated
1 - send debug messages to the serial interface (e.g. for using the aerial monitor of the Arduino IDE); default setting
byte verbose = 1;
By default the verbose mode is activated (= 1), so that (besides the raw data) the respective plaintext (if available) of parameters and
values is displayed. It is advisable to leave this setting as it facilitates possible trouble shooting. Furthermore, this setting is necessary if
telegrams and command IDs of new parameters should be decoded.
byte monitor = 0;
All parameters including the unknown parameters (error message "error 7 (parameter not supported)") are displayed when querying via
web interface (e.g. when querying a complete category); default setting.
If you want to hide the 'unknown' parameters that are not supported by the controller of your heating system (e.g. when querying a
complete category), you have to set the variable to 'false' ( bool show_unknown = false; ). The parameters are still queried in such a
query (e.g. for a complete category) though.
Security functions:
There are several options to control and protect access to your heating system. However, keep in mind, that even activating all three options are
no guarantee that a versatile intruder with access to your (W)LAN won't be able to gain access. In any case, no encryption of data streams is
Passkey:
To protect the system from unwanted access from outside, the function of the security key (PASSKEY) can be used (very easy and not
really secure!):
To use this function, add a certain sequence of alphanumerical characters as a simple security function, e.g. char PASSKEY[64] = "1234";
→ in this example the passkey is '1234'. If no alphanumerical sequence is set (default), the passkey function remains deactivated.
| Note | |:-----| | If PASSKEY is defined, the URL has to contain the defined passkey as first element, e.g.: URL/1234/ to view the main
website!
Only within the URL of the optional IPWE extension the passkey has NOT to be added! | | Don't forget the trailing slash!. |
Trusted IP:
Within these variables you can define up to two IP addresses from which the access to BSB-LAN will then be possible (e.g. sever of your
home automation system).
If the default setting will not be changed or if the first number is a '0', this function is deactivated (default setting).
User-Pass:
Provides a username:password based access (default setting: deactivated). No encryption! Syntax is Username:Password as shown in the
deactivated example:
#define ONE_WIRE_BUS
byte One_Wire_Pin = 0;
If you want to use OneWire temperature sensors (DS18B20), the definition must be activated and the corresponding GPIO-pin number must
be defined.
By default, the module is activated and pin 0 is set (0 = OneWire usage deactivated).
DHT22 sensors:
#define DHT_BUS
If you want to use DHT22 sensors (temperature & humidity; max. amount: 10), the definement must be activated and the corresponding
pin(s) must be be defined.
By default, the module is activated and pin 0 is set (0 = DHT usage deactivated).
BME280 sensors:
If you want to use BME280 sensors (temperature, humidity & barometric pressure), the definement must be activated and the corresponding
amount of sensors (default 0 = deactivated, maximum 2) must be be defined. The sensors have to be connected to the I2C bus. The
address of the first sensor mus be 0x76, the one of the second sensor 0x77.
#define AVERAGES
If you want to create 24h averages from certain parameters, the definement must be activated (default setting).
Further more you have to list the specific numbers of the parameters (up to 40) you want to be calculated. E.g.:
parameter avg_parameters[40] = {
{8700, -1}, // Außentemperatur
{8326, -1} // Brenner-Modulation
};
If an SD card is available, the current values are saved there regularly in order to be able to continue the calculation without gaps after a
restart.
If the average values of the parameters set above are also to be written to a log file and displayed via URL command /DG or sent via
MQTT, for example, they must be listed as special parameters with the numbers 20050-20099 in the parameters to be logged (see below)!
The corresponding logging settings (see below), such as the log interval, then apply to them.
| Attention | |:----------| | The activated definement is a requirement for logging to a microSD card as well as for using MQTT and UDP! |
#define UDP_LOG_PORT 6502 → Logdata will additionally be send as a UDP broadcast message to port 6502 (default). You can set the
desired UDP port here.
If you are using a microSD card adapter on an ESP32-based board and want to log data to the card (recommended!) instead of the
SPIFFs flash storage, activate the following definement:
//#define ESP32_USE_SD
If 'raw' bus telegrams should be logged, the selection can be specified. The telegrams are stored within the file journal.txt on the
microSD card. By default the logging of these bus messages is deactivated:
The data of the parameters to be logged are stored in the file 'datalog.txt' on the microSD card (deactivated by default). For activating
this function the variable must be set to 'true'.
| Attention | |:----------| | This interval must also be set for using MQTT, even though if no data should be logged! |
The parameters that should be logged must be listed as follows (destination address -1 means the default destination address):
MQTT:
| Note | |:-----| | The parameters that should be queried and the interval for sending the values must be defined within the logger definement
as mentioned above. |
If you want to use MQTT the belonging variables and settings besides the above mentioned settings have to be adjusted:
byte mqtt_mode = 0; → MQTT is deactivated (default setting); the following options are available:
2 = send messages in JSON format. Use this if you want a json package of your logging information printed to the mqtt topic
3 = send messages in rich JSON format. Use this if you want a json package of your logging information printed to the mqtt topic
byte mqtt_broker_ip_addr[4] = {192,168,1,20}; → IP of the MQTT broker (standard port 1883). Please note the commas insted of
dots!
char MQTTUsername[32] = "User"; → Set username for MQTT broker here or set zero-length string if no username/password is used.
char MQTTPassword[32] = "Pass"; → Set password for MQTT broker here or set zero-length string if no password is used.
char MQTTTopicPrefix[32] = "BSB-LAN"; → Optional: Choose the "topic" for MQTT messages here. If zero-length string here, default
topic name used.
char MQTTDeviceID[32] = "MyHeater"; → Optional: Define a device name to use as header in json payload. If zero-length string here,
"BSB-LAN" will be used.
IPWE:
By default, the usage of the ipwe extension (URL/ipwe.cgi) is deactivated. If you want to use it, set the variable to 'true'.
Define the parameters that should be displayed (max 40):
parameter ipwe_parameters[40] = {
{8700, -1}, // Außentemperatur
{8743, -1}, // Vorlauftemperatur
{8314, -1}, // Rücklauftemperatur
};
bool enable_max_cul = false; → set the variable to 'true' (default value: 'false')
Define the MAX! thermostats that should be queried (max 20) by entering the 10 digit serial number / MAX! ID:
char max_device_list[20][11] = {
"KEQ0502326",
"KEQ0505080"
};
Define the number of retries for the query command (default value is 3, doesn't need to be changed usually):
#define QUERY_RETRIES 3
RX/TX pinconfiguration:
byte bus_pins[2] = {0,0}; → automatic detection and selection of the used pins (RX,TX)
Possible options:
Hardware serial (since adapter v3) Arduino Due: RX = 19, TX = 18 ( {19,18} ); NodeMCU: 16,17; Olimex EVB 36,17.
Software serial (up to adapter v2 & Arduino Mega 2560): RX = 68, TX = 69 ( {68,69} )
uint8_t bus_type = 0; → Depending on the connection of the adapter to the controller of your heating system (BSB/LPB/PPS), the
corresponding bus type must be set (default value is 0 = BSB).
Possible options:
0 = BSB
1 = LPB
2 = PPS
Bus settings:
BSB:
byte own_address = 0x42; → sets own address of the BSB-LAN adapter; default setting is '0x42' = 66, which is 'LAN' in serial monitor
LPB:
byte own_address = 0x42; → own address of the BSB-LAN adapter; preset: segment 4, device 3
byte dest_address = 0x00; → destination address of the heating system; preset: segment 0, device 1
PPS:
If you want to enable writing to the controller of the heating system, set the variable to '1'.
byte QAA_TYPE = 0x53; → type of the room unit which should be imitated:
0x53 = QAA70 (default setting) 0x52 = QAA50
0x37 = QAA95
0x66 = BMU
0xEA = MCBA/DC225
By default, the automatic detection of the controller type is active. Usually there is no need to change this setting. However, you can set the
type manually though, but you should only change this if you really know what you are doing! In that case set the variables of
fixed_device_family and fixed_device_variant to your device family and variant (parameters 6225 and 6226).
By default, only read-access to the controller of the heating system is granted for the BSB-LAN adapter. If you want to make all parameters
writeable / settable, then you can adjust this setting within the webinterface of BSB-LAN (menu "settings").
| Note for Mega-user | |:-------------------| | The possibility to configure BSB-LAN via the webinterface doesn't exist within the usage of the
Mega 2560, because the module WEBCONFIG can't be compiled and used due to the limited memory of the Mega. In this case you still
have to grant write access by setting the flag '0': #define DEFAULT_FLAG 0 |
//#define CUSTOM_COMMANDS
This includes commands from the file BSB_lan_custom.h to be executed at the end of each main loop (deactivated by default).
#define VERSION_CHECK
Check for new versions when accessing BSB-LAN's main page (internet access needed). Doing so will poll the most recent version number
from the BSB-LAN server. This function is deactivated by default; to activate this function, set the variable to 'true'.
| Note | |:-----| | In this process, it is unavoidable that your IP address will be transferred to the server, obviously. We nevertheless mention
this here because this constitutes as 'personal data' and this feature is therefore disabled by default. Activating this feature means you are
consenting to transmitting your IP address to the BSB-LAN server where it will be stored for up to two weeks in the server's log files to allow
for technical as well as abuse analaysis. No other data (such as anything related to your heating system) is transmitted in this process, as
you can see in the source code. |
#define ENABLE_ESP32_OTA
OTA update (OTA = OverTheAir) for ESP32 based boards (default: deactivated). To enable this function boolean enable_ota_update =
true; must be set. The belonging firmware file can be created in the Arduino IDE under "Sketch / Export compiled binary...". The file has to
be uploaded to port 8080 of the BSB-LAN IP.
//#define WEBSERVER
Usage of the "external" web server if definement is active. Please see chapter6.9 for further informations.
#define CONFIG_IN_EEPROM
Stores the configuration in the EEPROM. If you don't want to use this function, deactivate the definement.
#define WEBCONFIG
#define JSONCONFIG
Note
We strongly recommend to add these parameters, which are not officially supported by the controller manufacturer, only after a thorough
check, especially if these values should also be written!
As a safe number range in which parameters can be added as described below, we recommend 10600 and warm up.
The further steps are explained using the example of the former parameter 701 "Presence button (temporary absence)". This parameter
is now included by default in the device-specific BSB_LAN_custom_defs.h file; it is only missing in the first files created (during the conversion
phase to BSB LAN version 3.x at that time).
If no entry starting with const char is found for a parameter, but an entry corresponding to the pattern #define STR<searched parameter number>
All other entries where the parameter number is possibly in the position of the referenced parameter in #define lines (like #define STR1301
STR701 ) can be ignored - unless you want to add the parameter number 1301 as well in this case.
Since the parameter 701 is a parameter with selection options, there are also lines starting with #define ENUM701_... . These lines must also be
copied into the current BSB_LAN_custom_defs.h.
In this context another entry appears, which starts with const char ENUM701[] . This and the following lines must also be copied to the current
BSB_LAN_custom_defs.h up to the closing curly bracket:
For purely numeric parameters, which have no selection menu, but e.g. only display a temperature value, this step is omitted, because there is
then no const char ENUM... entry for this.
Finally, we find the actual table entry for parameter 701, which looks like this:
{0x2D3D0572, VT_ENUM, 701, STR701, sizeof(ENUM701), ENUM701, DEFAULT_FLAG+FL_WONLY, DEV_ALL}, .
The corresponding table can be found in the current BSB_LAN_custom_defs.h file at the end of the file. In the third column you always see the
parameter number. Now you go up in this file so far that the parameter is inserted at the correct place. In our example this would be after the line
for parameter 700.
Attention
It is absolutely important to make sure that the parameter is inserted at the right place (and not e.g. before the line for parameter 700 or
somewhere after), because otherwise the parameters will not be listed completely in the category overview!
For some controllers, however, parameter 701 will already be occupied by another function. Newer LMS controllers have stored there e.g. the
function for "temporarily warmer/cooler". However, relocating the new parameter to be added is simple: Select a free parameter number (apart
from the "presence button" function mentioned here, we recommend parameter numbers 10600 and upwards for this purpose) and add the line
{0x2D3D0572, VT_ENUM, 701, STR701, sizeof(ENUM701), ENUM701, DEFAULT_FLAG+FL_WONLY, DEV_ALL},
at the appropriate place in the file. Then you only need to change the parameter number in the third column, e.g. to 10600. The parameter
numbers entered for STR... or ENUM... can, however, remain as they are, since they were chosen in such a way that they do not collide with
the new parameters.
The new, final line would then look like this:
{0x2D3D0572, VT_ENUM, 10110, STR701, sizeof(ENUM701), ENUM701, DEFAULT_FLAG+FL_WONLY, DEV_ALL},
Summarized once again the lines that would have to be copied for the function "Presence key (temporary absence)" to be inserted in the current
version as parameter number 10600:.
After that BSB-LAN can be flashed to the microcontroller again and the new command is ready for use.
If you want to change the somewhat unspecific parameter name "presence button (temporary absence)" to e.g. the more appropriate name
"Time program (temporary)", you can do this in the same step. To do this, you would simply change the line
const char STR701[] PROGMEM = STR701_TEXT;
to
const char STR701[] PROGMEM = "Time program (temporary)";
and then flash again. Since all these changes are made in BSB_LAN_custom_defs.h, they are retained even if the BSB LAN software is updated.
If you also want to add the presence button for HC2 (which was 1001 in the v.2.2) as parameter 10111, then the belonging lines would look like
this:
#define STR1001 STR701
Parameters that might be of interest and the lines to copy for them
10100 – Burnerstate
#define ENUM10100_01_TEXT ENUM_CAT_34_TEXT
};
Further on to chapter 3
Back to TOC
Basically the connection of the BSB-LPB-LAN adapter to the controller is made in the same way and at the same port where a room unit will be
connected.
To localize the specific port at your controller, please read the manual of your heating system.
In cases where only one BSB port is available at the controller (e.g. RVS21 controller within heat pumps) you can connect the adapter parallel to
an already installed room unit.
Notes
Because BSB is a real bus, you can also connect the adapter in your living area if there's already a wired room unit installed.
If you don't already have a wired room unit, you can still think about if it's maybe easier to put a long thin bus cable to the heater than a LAN
cable.
So it's not necessary at all to connect the adapter exactly at the place where the heater is located.
When connecting or disconnecting the adapter, please make sure that you switched off both units before (Arduino and controller of your
heating system)!
Please make sure you are using the right pins and regard the polarity! A wrong connection might harm your system.
Adapter:
The PCB of the adapter is already labeled with "CL+ / DB" and "CL- / MB".
If you are building an adapter completely by your own, please look at the schematics.
The complete setup (Arduino Due, LAN shield, BSB-LAN adapter), belonging cables included.
BSB:
The connection of the adapter takes places at the already described ports and pins.
Please connect "CL+" (adapter) to "CL+" (controller) and "CL-" (adapter) to "CL-" (controller).
An additional pin "G+" which could be found sometimes at the controller is only for the backlight of a QAA75 room unit (because it offers 12V
constantly) - please make sure that you DON'T use that pin by accident!
LPB:
The connection of the adapter takes places at the already described ports and pins.
Please connect
"DB (adapter)" to "DB (controller)" and
"MB (adapter)" to "MB (controller)".
PPS:
The connection of the adapter takes places at the already described ports and pins.
In most of the cases it's "A6" and "M", therefore please connect
"CL+" (adapter) to "A6" (controller) and
"CL-" (adapter) to "M" (controller).
The following pictures show some examples of these connectors at different controllers:
BSB (FB with CL+ & CL-) and LPB (DB & MB) at a Broetje ISR-RVS43.222 controller.
Connectors b = BSB (CL+ & CL-) and a = LPB (DB & MB) at a Siemens RVS63.283 controller.
BSB (CL+ & CL-) at the four pin service plug at the front of the operating unit ISR Plus. The (permament) usage of this connector isn't advisable
though.
Notes on connectors
The connection of the cables to the respective contacts should always be done with the specific connectors if available. A general list of the
respective connectors can't be named here though, because some controllers need special connectors.
For the most common three poled "FB" port (connector for the room unit) which is available at most of the controllers, this connector seem to
fit though: Broetje Connector Room Unit ISR, Rast 5- 3pol. = 627528.
BSB / LPB / PPS: If the original connectors are not available, (insulated) 6,3mm cable lugs can be used instead.
Four pin service plug: For the (temporary) connection at the four pin service plug at the front of the operating unit, 2,54mm DuPont
connectors (female) can be used. You can find them (e.g.) at the typical breadboard connection cables or at many cables used within the
internal parts of desktop computer hardware (e.g. internal speaker, fan).
Notes on cables
LPB: In order to be as protected as possible from interference, the official Siemens document "CE1N2032D Local Process Bus LPB project
planning basics" states that the connection cables for the LPB connection should have a cross-section of 1.5mm² in accordance with LPB
design principles, twisted two-core and shielded (cable length 250m max per bus node, max total length 1000m). However, it is not
mentioned where or how to connect the shield of the cable.
BSB: For the BSB connection, Cu cables with a minimum cross-sectional area of 0.8mm² (up to 20m) should be selected, eg LIYY or LiYCY
2 x 0.8. For cable lengths up to 80m 1mm² should be selected, up to 120m 1,5mm² cross section.
In general, a parallel installation with mains cables should be avoided (interference signals).
Even though these are the official notes, users reported success with cables like phone installation cables, 0.5-0.75mm speaker cables, LAN
cable (where two or three wires are connected together to each connector) and so on. Before you have to buy something new, you probably
can just give it a try and see if you have some cables already at home which will do the job.
1. Switch off the controller of the heater and connect the adapter at the right pins to the BSB (or LPB / PPS). Watch the polarity!
2. Switch the controller back on and check if the red LED at the adapter is lit. If you see the LED flackering a little bit from time to time then
that's no malfunction - it schows activity on the bus.
3. Connect the Arduino Due (of course fully assembled with the lan shield and the adapter) via USB (use the "Programming Port" in the center)
with your computer and via LAN with your network.
4. Now start the Arduino IDE, choose the right COM port where the Arduino is connected to and start the serial monitor (menu "Tools" or the
little magnifying glass symbol at the top right corner).
5. If the connected controller has successfully been detected automatically by BSB-LAN it should appear an output in the serial monitor where
the value/number behind "Device family" and "Device variant" is NOT 0.
A correct output looks (e.g.) like that (with different numbers due to a different controller type):
[...]
Device family: 96
Device variant: 100
[...]
The following screenshot shows an output of the serial monitor after a successful start.
The adapter is configured by deafult as "LAN" and queries the parameters 6225 and 6226 initially for autodetection of the controller.
The following lines already are telegrams.
The display of the operating unit of the controller shows the temperature of the boiler unit (here: "Boiler temp actual value") which comes in
periodically as a so called broadcast message (BC).
If only weird character strings appear in the serial monitor, check the baud rate at the lower right corner of the serial monitor window. It
should be set to 115200 baud.
The procedure described below applies to controllers that are connected to the BSB-LAN setup via BSB or LPB. If you have connected a
controller via PPS, the following is not necessary, because the function /Q is not available for PPS controllers and the creation of a specific
file BSB_LAN_custom_defs.h is not necessary!
There are also restrictions with controllers that are connected via an LPB that has become available through retrofitting the OCI420 bus
module clip in (LMU54/64 and LMU74/75 controllers). Here the corresponding device data should be listed at the beginning, but the
"complete dump" is also not available. If this is also the case with LMS14/15 controllers and the newer OCI345 bus module ClipIn isn't clear
yet.
In the basic version, only very few selected parameters are supported by all controllers (e.g. time, device identification, comfort
temperature heating circuit 1, outdoor temperature). However, in order to get complete access to your specific controller, a suitable
BSB_LAN_custom_defs.h file must first be created, which contains exactly the parameters that your controller has!
To generate the text file needed to create the BSB_LAN_custom_defs.h file, click on the "Controller-specific parameter list" button at the top of the
web interface and then on "Download" at the bottom.
Attention: This query takes a while - please wait until the whole 'complete dump' or download of the text file is finished!
This function now queries all available parameters of the connected controller and saves the result in a text file.
This text file must then be sent to Frederik (bsb(ät)code-it.de), from which the device-specific file BSB_LAN_custom_defs.h for the
connected controller will be generated. Please also specify the language version you want to use for BSB-LAN later (i.e. German or
English).
After you have received this file from Frederik, you have to replace the previous BSB_LAN_custom_defs.h with this one and reflash BSB-
LAN once. Only then you have complete access to all functions of your controller!
Note
The device-specific parameter list should only be called up via the bus system that will be used later!
If there is an LPB network, the device-specific list must also be called up via LPB, as otherwise not all parameters of all controllers will be
transmitted.
Once a list has been created, it retains its functionality even when BSB-LAN is updated. It is therefore not necessary to create a new list as
long as no controllers have been replaced or added.
In an LPB network, the category list is taken from the main device. However, parameters from other controllers in the network can be called
up directly by addressing them using the exclamation mark (see URL commands), even if they do not appear in the category list.
Only the parameter definitions of the controller are queried, in no case configuration settings are read, set or changed!
Alternatively, you can find the BSB_LAN_custom_defs.h which was used in previous versions of BSB-LAN in release version 2.2. However,
since this parameter list is missing hundreds of parameters from newer devices and contains a lot of ambiguities and sometimes also errors,
its use is not recommended and should only be done after carefully examining the parameters you want to use.
As a first step it is always a good idea to check the cabling and see if the red LED on the BSB-LAN adapter is lit.
As a further step it is always useful to connect the microcontroller additionally to the PC and to start the Serial Monitor (SerMo) of the Arduino
IDE. There you can check the startup process. If only cryptic strings appear in the output, check the set baud rate (bottom right). This should be
set to 115200 baud.
If the connected controller is not automatically recognized correctly, there is a "0" at "Device family" and "Device variant", additionally there are
six lines "query failed" in front of "Device family".
Example:
[...]
query failed
query failed
query failed
query failed
query failed
query failed
Device family: 0
Device variant: 0
[...]
Mostly the reason is then a problem of the hardware setup or the cabling, because the parameters 6225 and 6226 could not be retrieved
successfully (error message "query failed"").
Further reasons for malfunctions are listed in chapters 13, 14 and 15.
Further on to chapter 4
Back to TOC
Within the webinterface there are some buttons at the top for an easy and direct access to certain functions:
Heater functions
Sensors
Settings
URL commands
Manual
FAQ
The button "Display log file" will be displayed in black letters, if the logging function isn't active (like shown in the screenshot above). If logging ist
activated, the button is named "Plot log file".
If you want to use this function, you need to activate it. Please see chapter 2.2.
Note
If you don't want these parameters to be shown, you can deactivate the output (see chap. 2.2). However, they will still be queried though if a
whole category is queried.
Sensors:
If optional sensors are connected and configured correctly, the sensors will be listed after clicking this button.
The following screenshot shows the output of a connected BME280 and five DS18B20 sensors.
Mouseover, click and mouse wheel actions within the graphical display provide various control options:
better legibility for value numbers with plot lines close to each other (mouseover on plot)
user can interactively disable plot lines for improved overview and vertical scaling (click on legend entries)
added zoom (mousewheel/pinch on plot) and pan capability (drag zoomed-in plot)
Note
To display the logfile graphically it's neccessary to allow the JavaScriptFramework from cdn.jsdelivr.net and d3js.org to work, so please don't
use adblockers on that, if you want to use this function.
URL commands:
The button leads to the chapter URL Commands of this manual, where the URL commands are listed in a short overview. Internetaccess
needed.
Manual:
The button leads to the table of content of this manual. Internetaccess needed.
Further on to chapter 5
Back to TOC
The values and parameters in the following list of the URL commands must be written without the brackets.
E.g.: URL command /<x> for the simple query of parameter 8700 = /8700 .
URL
Effect
Command
/K<x>!
Query all parameters of category <x> for destination address <addr>
<addr>
/<x>!<addr>-
Query values/settings of parameters <x> to <y> for destination address <addr>
<y>
deactivation, uncomment all parameters for that function in the file BSB_LAN_config.h.
/D or /DD Displays the logfile datalog.txt which contains the values of the logged parameters defined in the file
BSB_LAN_config.h.
/D0 This command deletes the content of the files datalog.txt and journal.txt and creates a new csv-header for
datalog.txt. This command should be executed before first logging.
Displays the data from the logfile which are between <a>,<b>
/D<a>,<b>
<a> and <b> have to be set in the format yyyy-mm-dd (e.g. /D2023-04-01,2023-04-30)
Note: If you use Javascript blockers, make sure you allow access to cdn.jsdelivr.net and d3js.org, because the
microcontroller just loads the csv-file into the browser and the D3-framework converts the data. Alternatively,
these frameworks can also be stored and used locally - notes on this can be found in the
*BSB_LAN_config.h.default* file.
If the log file is opened via web interface by clicking on "Display log file", the log data of the most recent n
default. Subsequently, controls on the web page can be used to select a different range, depending on the data
- better legibility for value numbers with plot lines close to each other (mouseover on plot)
- user can interactively highlight plot lines for improved overview (mouseover on legend entries)
- user can interactively disable plot lines for improved overview and vertical scaling (click on legend entries)
- added zoom (mousewheel/pinch on plot) and pan capability (drag zoomed-in plot)
Displays the logfile journal.txt which shows the content of received and transmitted telegrams. This log is useful
/DJ
for debugging and the search for unknown parameters. To use this function, you must enable the LOGGER module in the
file BSB_LAN_config.h and set the first element of the log_parameters array to 30000.
/DK<n> Deletes the data of the logfile except the last <n> calender days
VT_CUSTOM_BITS.
BSB_lan_config.h.
If e.g. a coupling relay is connected to a GPIO pin and the state should just be queried, this command should be
/G<x>,I
used. It sets the GPIO pin to input (default they are set to output) and keeps this as long until it's changed by
using G<x>=<y>. After that, it's set to output again until the next "I" sets it to input again.
/I<x>=<y> Some values can't be set directly, the controller gets these values by a TYPE_INF-message. As an example, the room
/JB JSON: Backup of all settable parameters of the controller of the heating system (restore with /JS)
JSON: Query possible values for parameters <x>, <y> and <z> for ENUM type parameters
/JC=<x>,<y>,
The format of the returned data is the same as the command /JK=<x>. Unlike the /JQ command, it does not return the
<z>
current parameter values.
/JQ=<x>,<y>,
JSON: Query parameters <x>, <y> and <z>
<z>
/JR<x> Within the integrated operational unit of the heating system there are reset options available for some
parameters. A reset is done by asking the system for the reset value and setting it afterwards.
/JV JSON: Queries the version of the JSON-API. Payload: {"api_version": "major.minor"}
/JW JSON: Reads the list of configuration created with /JL and adjusts the settings.
BSB-LAN.
BSB-LAN.
Set logging interval to <x> seconds with (optional) logging parameter <y1>,<y2>,<y3>
/L=<x>,<y1>, This command can be used to change the logging interval and the parameters that should be logged during runtime.
<y2>,<y3> All parameters that should be logged have to be set. After a reboot of the microcontroller, again only the
/LB=<x> When logging bus telegrams (log parameter 30000 as the only parameter), only the broadcast messages (<x>=1) or all
/LN Forces logging irrespective of current interval and restarts the configured interval at this point of time
/M<x> When setting <x> to 1, all bytes on the bus are monitored. Each telegram is displayed in hex format with a
timestamp in miliseconds at the serial monitor. The html output isn't affected though.
Reset & reboot microcontroller (takes approx. 15 seconds) and erase EEPROM
/NE Reset and reboot of the microcontroller with additional erasing of the EEPROM.
BSB_lan_config.h accordingly.
Set bus type/protocol <x>, own address <y>, target address <z> (temporarily)
/R<x> Within the integrated operational unit of the heating system there are reset options available for some
parameters. A reset is done by asking the system for the reset value and setting it afterwards.
Set value <y> for parameter <x> with optional destination address <z>
/S<x>!<z>= Command for setting values (therefore, write-access must be defined previously in BSB_lan_config.h!). Additionally
<y> a destination address can be set by using <z>. If <!z> isn't used, the standard destination address will be used.
For the creation of one’s own subroutines in BSB_lan_config.h two arrays of 20 bytes size, custom_floats[] und
/U
custom_longs[], are available. If used, these can be displayed via URL command /U and can be useful to query own
sensors in BSB_lan_custom.h and display the results on the web-interface via /U.
The preset verbosity level is 1, so the bus is 'observed' and all data are displayed in raw hex format
additionally.
card. Therefore the card could run out of space quickly, so it's advisable to deactivate the verbosity mode
already in the BSB_lan_config.h: byte verbose = 0
With a preceding /W the URL commands C, S and Q return data without HTML header and footer (e.g.: /WC or /WS<x>=
/W
<y!z>); module WEBSERVER has to be compiled!
5.2 MQTT
BSB-LAN supports the MQTT protocol, so the values and settings of the heating controller can be retrieved via MQTT.
To use MQTT with BSB-LAN, it is mandatory that the definition "#define LOGGER" in the file BSB_LAN_config.h is activated. This is already the
case in the default setting.
The parameters to be sent (queried by BSB-LAN, the transmission interval (only one interval possible for all parameters!) and the other MQTT-
specific settings (broker, topic, etc.) are to be set either via web configuration or directly in the file BSB_LAN_config.h. Please refer to the
explanations in the corresponding subchapters of chap. 5.
Examples for an integration of BSB-LAN can be found in the corresponding subchapters of chap. 11.
Note
If you use the MQTT function with fixed logging parameters and logging interval, make sure that you adjust the logging interval (= MQTT
send interval)!
By default 3600 is set here, which means that the parameters are sent every 3600 seconds, so every 60 minutes and thus hourly! So if you
set up your MQTT broker and you wonder why you don't receive values, check the logging interval at first place!
BSB-LAN uses the subtopic "status" below the defined "MQTTTopicPrefix" to publish its online state. Based on the default setting this would be
"BSB-LAN/status". This allows you to track whether BSB-LAN is actually publishing current readings and able to receive commands.
If BSB-LAN is available, the topic contains the value "online", otherwise you'll see "offline". The message is made persistant via the retain-flag,
thus, the subscriber does not have to have the topic subscribed during BSB-LAN startup.
Any restart initiated by the firmware (e.g. the URL-command /N) will immediately set the topic to "offline". Any uncontrolled shutdown (e.g. a
power outage or some firmware flashing) will cause the broker to transmit the offline-message after a (broker specific) timeout.
In addition to (broker-side) pure receiving, it is also possible to query and/or send control commands (URL commands /S and /I) to BSB-LAN
from the broker via MQTT. Of course, BSB-LAN must be granted write access to the controller if one wants to change settings.
<topic> = Default setting is "BSB-LAN", otherwise the defined "MQTTTopicPrefix" in the file BSB_LAN_config.h accordingly. If no topic is
defined (not advisable), "FromBroker" must be taken as topic.
<command> = The query of the specific parameter or the corresponding parameter-specific URL command S or I .
| Attention | |:----------| | Only one query/command is possible at a time, so no parameter ranges can be queried!|
Example
The command set mqtt2Server publish BSB-LAN S700=1 sends from the MQTT broker named "mqtt2Server" the command "S700=1" with
the topic "BSB-LAN" and causes a mode switch to automatic mode.
The command set mqtt2Server publish BSB-LAN 700 sends from the MQTT broker named "mqtt2Server" the command "700" with the topic
"BSB-LAN" and causes a query of parameter 700.
Command for querying parameter 1010 (incl. username & password): mosquitto_pub -h 192.168.178.35 -u USER -P PASSWORD -m "1010" -t
BSB-LAN -d
Command for setting parmeter 1610 to 41° (incl. username & password): mosquitto_pub -h 192.168.178.35 -u USER -P PASSWORD -m
"S1610=41" -t BSB-LAN -d
5.3 JSON
Query of categories:
http://<ip-address>/JK=<xx>
http://<ip-address>/JK=ALL
http://<ip-address>/JQ
Send: "Parameter"
Receive: "Parameter", "Value", "Unit", "DataType" (0 = plain value (number), 1 = ENUM (value (8/16 Bit) followed by space foll
owed by text), 2 = bit value (bit value (decimal) followed by bitmask followed by text/chosen option), 3 = weekday, 4 = hour:mi
nute, 5 = date and time, 6 = day and month, 7 = string, 8 = PPS time (day of week, hour:minute)), "readonly" (0 = read/write, 1
= read only parameter), "error" (0 - ok, 7 - parameter not supported, 1-255 - LPB/BSB bus errors, 256 - decoding error, 257 -
unknown command, 258 - not found, 259 - no enum str, 260 - unknown type, 261 - query failed), "isswitch" (1 = it VT_ONOFF or VT
_YESNO data type (subtype of ENUM), 0 = all other cases)
http://<ip-address>/JS
Send: "Parameter", "Value", "Type" (0 = INF, 1 = SET)
Receive: "Parameter", "Status" (0 = error, 1 = OK, 2 = parameter read-only)
Example for setting parameters via Linux command line or „Curl for Windows“ with parameter 700 (operating mode heating circuit 1) → set
to 1 (= automatic mode):
User "hacki11" developed a detailed and interactive documentation of the JSON API.
Thanks a lot!
The API can be tested on your own system using Postman. To do this you have to add the URL
https://raw.githubusercontent.com/fredlcore/bsb_lan/master/openapi.yaml in File/Import/Link and (if necessary) change the specific settings
like address, basic auth data etc.
JSON commands can also be used via Linux command line or "Curl for Windows". In the above mentioned interactive API documentation,
the corresponding Curl commands can be generated and then copied for further use (the IP must be adjusted). To do this, proceed as
follows:
1. Click on the desired operation, e.g. "/JQ={parameterIds}".
2. Click on "Try it out" on the right side of the window.
3. Enter the desired parameter(s) (in the example shown below: 700,8300).
4. Click on "Execute".
In the "Responses" field you will see the URL and Curl commands you can copy.
Attention: The character combination %2C when listing multiple parameters is inserted by Swagger instead of the comma. If you want to
copy and use the URL/Curl commands, please replace each %2C with a , (comma)!
10110 Presence Button HC1 (temporary heating mode change) SET - see chap. 6.4
10111 Presence Button HC2 (temporary heating mode change) SET - see chap. 6.4
10112 Presence Button HC3 (temporary heating mode change) SET - see chap. 6.4
Number Ranges
The following overview shows how the number ranges are divided or assigned.
10000-10019 Functions of the room unit (room temperature & DHW push)
Further on to chapter 6
Back to TOC
Before flashing, activate the definement #define LOGGER in the file BSB_LAN_config.h, add the parameters to be logged to the variable
log_parameters and determine the log interval with the variable log_interval . Please also note the corresponding points in chapter 5.1.
Later, during the runtime, both the interval and the logging parameters can be changed by using the command "/L=[Interval],[Parameter1],...,
[Parameter20]" .
If an Olimex ESP32-EVB is used (or a microSD card adapter is used on an ESP32-based board) and the logged values are to be written to the
microSD card instead of the flash memory (which is highly recommended!), then the following definition must be activated in the
BSB_LAN_config.h file: #define ESP32_USE_SD .
All data is stored within the file datalog.txt on the card in csv format. Thus the data can easily be imported in Excel or OpenOffice Calc.
The file contents can be viewed with the URL command /D , a graphical representation of the log files is done by /DG .
To delete and rebuild the file datalog.txt, use the URL command /D0 .
The URL command /D0 should also be executed on first use! This will initiate the file with the appropriate CSV header.
Notes
Occasionally it may happen that certain microSD cards are not easily recognized by the LAN shield. If an error occurs, you'll get a warning
message. In that case please try a different card which is as up to date as possible.
Please note that the microcontroller is not an exact clock. Even if the interval has been set up to e.g. 60 seconds, the time displayed in the
file (which is received by the heating control) possibly will differ - this can take up to a second per minute.
If an exact log time is absolutely necessary, you can measure the average time difference between the microcontroller time and the real time
and adjust the log interval accordingly (e.g. set 59 seconds instead of 60 seconds).
In addition to the use of complex systems such as FHEM and the specific logging solutions, you can e.g. execute the following command
periodically (for example via cron job):
DATE=`date +%Y%m%d%H%M%S`; wget -qO- http://192.168.178.88/8310/720/710 | egrep "(8310|720|710)" | sed "s/^/$DATE /" >> log.txt
The log file log.txt resulting from this example contains the recorded values of parameters 8310, 720 and 710.
Later you can sort the log file based on the parameter numbers, use the command \'sort\' for this:
Note
If the optional security function of the passkey is used, the passkey has NOT to be added within the URL in this case!
To use the function of the IPWE extension, one has to make two settings in the file BSB_LAN_config.h before flashing the microcontroller:
Additionally to the set parameters, the values of optional connected sensors (DHT22 / DS18B20) will be listed automatically.
If DS18B20 sensors are connected, the specific sensor id of each sensor will also be displayed. You can see this in the last row of the IPWE
example above, the specific sensor id of the one and only connected DS18B20 sensor is "284c453d07000082".
Notes
If there are -by accident- parameters defined which aren't supported by the specific heating system, the non-existent values will be displayed
as "0.00". So don't get that wrong - it doesn't mean, that that specific value is "0.00"! Before you define the parameters, it's best to check
before and make sure, that the heating system really offers these parameters.
Because the IPWE extension was originally designed to implement values of a specific wireless weather station, there will be some columns
which doesn't seem to make sense, like "Windgeschwindigkeit" (wind speed) or "Regenmenge" (amount of rain water) - you can just ignore
that. Basically, there are just two columns which are relevant for the normal parameters: "Beschreibung" and "Temperatur", because here
you can find the name of the parameter and the belonging value.
The states of certain parameters aren't shown in clear text, only in numerical values. In the above example you can see this e.g. in the row
with the parameter "1. Brennerstufe T1": There doesn't appear "Ein" (on), it only shows the value "255" - which means "Ein" (on).
Note
Example:
This command transmits a room temperature of 19.5°C to the circuit 1: http://<ip-address/I10000=19.5
This function can be used in automatic mode to switch between comfort and reduced heating modes within the time program. The respective
switchover is valid until the next switchover takes place according to the time program (or by using the presence button again).
Example:
The command <URL>/S10110=2 switches HC1 to the heating mode 'comfort' within the operating mode 'automatic', <URL>/S10110=1 switches HC1
to the heating mode 'reduced'.
Notes
The above listed parameters must be writeable, therefore BSB-LAN needs write-access (see chap. 2.2).
The function of the presence button is only available when the heater is in operating mode 'automatic'!
The respective change is valid until the next changeover of the heating mode according to the time program.
For users of BSB-LAN version v3.x, in whose controller-specific file BSB_LAN_custom_defs.h this command is not yet implemented, it can
be added manually afterwards. A corresponding description of the necessary steps can be found in chap. 2.3.
With some controllers this function can also be used with BSB-LAN using a SET-command: http://<ip-address>/S10019=1 - of course the
parameter 10019 must be made settable before (see chapter 2.2).
Until now it seems that only controllers of the types LMS and RVS are compatible. Older types of controllers (e.g. LMU and RVA) don't seem to
be compatible.
For using this function the wired temperature sensor has to be deconnected from the controller. The transmission of the alternative outside
temperature has to be done regularly within a time windows of (approx.) max. 10 minutes, but it is adviseable to transmit the value every 60 to
120 seconds.
To use this function, BSB-LAN needs write access (see chap. 5). The outside temperature has to be transmitted as an INF message (with the
virtual parameter 10003) using the URL command
<ip-address>/I10003=xx
where xx is the outside temperature in °C (degrees celcius); fractional values are possible.
Example:
With <ip-address>/I10003=16.4 the outside temperature of 16.4°C is transmitted; <ip-address>/I10003=9 transmits 9°C.
Integration:
The following code must be inserted into the file BSB_lan_custom_global.h :
void Filtern(float &FiltVal, int NewVal, int FF){ //gleitender Mittelwert bilden aus den 10 letzten Werten
FiltVal= ((FiltVal * FF) + NewVal) / (FF +1);
}
Filtern(akkuSpg, akkuWert, 9); //gleitender Mittelwert bilden aus den 10 letzten Werten
if (j++ > 10) akkuWert=1; // nach 10 Werten Sprung auf 1
if (!MQTTClient.connected()) {
MQTTClient.setServer(MQTTBroker, 1883);
int retries = 0;
while (!MQTTClient.connected() && retries < 3) {
MQTTClient.connect("BSB-LAN", MQTTUser, MQTTPass);
retries++;
if (!MQTTClient.connected()) {
delay(1000);
DebugOutput.println(F("Failed to connect to MQTT broker, retrying..."));
}
MQTTClient.publish("AkkuSpannung",dtostrf(akkuSpg, 6, 1, tempBuffer));
MQTTClient.disconnect();
}
}
}
By activating the belonging definement '#define webserver' within BSB_LAN_config.h, BSB-LAN can act as a webserver which even supports
static compression. For using that function, a few points must be noticed:
All files are / must be stored on the microSD card, but files can be placed in different directories and subdirectories though. E.g.:
http://<bsb-lan-ip-address>/foo/bar.html gets the file bar.html from the directory foo of the microSD card.
Supported file types are: html, htm, css, js, xml, txt, jpg, gif, svg, png, ico, gz.
The web server supports the following headers: ETag, Last-Modified, Content-Length, Cache-Control.
As already mentioned, the web server supports static compression. If possible (if the client's browser supports gzip), it's always trying to
deliver gzipped content (e.g. /d3d.js.gz for the URL /d3d.js).
If there's no file named index.html located in the root directory of the microSD card, the regular web interface of BSB-LAN will be displayed
by the query of the URL http://<ip-address>/ .
If there's a file named index.html located in the root directory of the microSD card, that file will be displayed by the query of the URL
http://<ip-address>/ instead of the regular webinterface of BSB-LAN.
If the file index.html is located in a subdirectory of the microSD card, that file will only be displayed when the complete URL will be queried:
http://<ip-address>/foo/bar/index.html . If (in this case) only http://<ip-address>/foo/bar/ would be queried, the regular webinterface of
BSB-LAN would still be displayed, because directory listing or URL rewriting isn't implemented in the special webserver function.
Note
If you are using the PASSKEY function, you have to add the passkey to the URL.
Integration fo connected sensors for measuring and transmitting the room temperature(s) to the desired heating circuit(s),
using the presence function for the heating circuits 1-3 by using a pushbutton (automatic detection of the present state with the
corresponding change between comfort and reduced mode in the automatic mode).
To use the functions, the corresponding entries must be made in the configuration. This can be done either by changes in the file
BSB_LAN_config.h or via the web interface (menu item "Settings").
Room temperature
Up to five connected sensors can be specified for the room temperature measurements.
If more than one sensor is used, an average value is automatically calculated and transmitted to the heating controller.
To assign the respective sensors to the desired heating circuits, the specific parameter numbers of the respective sensors must be entered.
An overview of the connected sensors together with the associated parameter number can be found in the category "One Wire, DHT & MAX!
Sensors" (menu item "Heating functions" or by clicking on the menu item "Sensors").
When entering several sensors for one HC, the parameter numbers are only to be separated from each other by a comma, no space may be
used after the comma.
The GPIO pins used for connecting the pushbuttons (one pin per pushbutton) must be set in the configuration.
Please make sure that you do not use any other pins (e.g. those of connected sensors)! For Due-users: explicitly don't use the pins 12, 16-
21, 31, 33, 53!
The pushbuttons are to be connected microcontroller-typically for HIGH, that means you must connect a pull-down resistor (approx.
100kOhm) additionally to the respective pin.
If you are not sure how to connect a pushbutton to an microcontroller for HIGH, please have a look at the internet, where you can find
countless examples.
Nevertheless, it should be briefly mentioned here how to proceed:
The push button with the two connectors A and B has to be connected at one connector (A) to the desired GPIO digital pin of the Due.
Additionaly, to the same terminal of the pushbutton (A) the pull-down resistor has to be connected, which in turn has to be connected to
GND of the Due.
This is important, the use of the resistor must not be omitted! Due to the pull-down resistor a defined potential is applied to the GPIO
when the button is not operated and the so-called 'floating' of the input is prevented. If the pull-down is not used and the input would
'float', unwanted level changes could occur at the pin, which in turn would result in the respective function (DHW push or heating mode
switchover) being triggered unintentionally.
The other pin of the button (B) is connected to a 3.3V pin of the Due.
Caution: The inputs of the Due are only 3.3V tolerant, so don't ever connect the pushbutton to a 5V pin of the Due!
If the button is pressed now, the circuit is closed - the signal is recognized as HIGH and the respective command (TWW push/presence
button) is triggered.
Additional note: If you disconnect the pushbutton(s) (e.g. because you don't want to use them anymore) make sure that you set the
For this, the following pins must be connected to each other when starting or rebooting the device:
After successful erase, the LED of the Arduino/ESP32 flashes for four seconds.
At restart the (pre-)settings from the file BSB_LAN_config.h are taken over, an adjustment can be done afterwards as usual via (e.g.) the web
interface.
The above mentioned pins for erasing can also be set individually in the file BSB_LAN_config.h via the definition #define EEPROM_ERASING_PIN XX
if required.
Alternatively, the microcontroller can also be connected via the serial interface and the character string /NE can be sent via the serial monitor, if
necessary with a preceding passkey (e.g. /1234/NE ). Then the EEPROM will also be erased.
ESP32 users can also set the entry "Erase All Flash Before Sketch Upload" in the ArduinoIDE under "Tools" to "Enabled", then the entire flash
area is erased once before the upload.
Further on to chapter 7
Back to TOC
If you have implemented your own interesting project that works with the BSB-LAN setup and extends its functionality and you would like to share
it with other users, please contact me (Ulf) by email (adapter (at) quantentunnel.de)!
When connecting optional hardware like sensors, relays etc. to the Arduino Due or the specific ESP32 board you have to make sure that
the used pin is not used elsewhere or is not already used internally! Information about the pin assignement can be found in the
respective pinout scheme of the specific Arduino-/ESP-board. Also pay attention to the serial pins of the adapter and additional components
like a LAN-shield, a relay-shield etc.
The necessary libraries for the Arduino IDE are already included in the repository of the BSB-LAN software.
If you are using an ESP32 board, there is also a (unofficial) possibility to use Xiaomi Mijia BLE sensors. Please see chap. 7.4.4 for further
informations.
Notes
In the default configuration of BSB-LAN "Pin 0" is set for all sensors. This corresponds program-internally to the deactivation of this function
and designates not the pin GPIO0! After connecting a sensor the corresponding pin must be set in the configuration of BSB-LAN - for this
the GPIO pin number must be entered (e.g. 7 for the connection of a sensor to GPIO7). The localizations and designations of the pins are
to be taken from the board-specific pinout scheme.
Usually, the sensors can be connected to GND and +3,3V of the adapter/microcontroller (by usage of the necessary additional pullup-resistors!).
For the usage of these sensors, one has to activate the belonging definements in the file BSB_LAN_config.h and has to set the specific pins
which are used for DATA (also see chapter 5). Make sure you don't use any of the protected pins listed in the file BSB_LAN_config.h!
After successful installation you can access the values of the sensors either by clicking at the button "sensors" at the top of the webinterface, by
clicking at the category "One Wire, DHT & MAX! Sensors" or by using the url command with the specific number of that category.
Besides that, they are also displayed in the IPWE extension by default, which can be accessed by using the URL <ip-address>/ipwe.cgi . For
using the IPWE extension, one has to activate the belonging definement in the file BSB_lan_config.h though.
If you want to log the measured values or if you want to create 24h average calculations, you can realize that by adjusting the belonging
parameters in the file BSB_LAN_config.h.
Usually these sensors have four pins, but only three of these are connected internally. Most in the time it's the third pin from the left (when viewed
from the front) which isn't connected, but you should verify this before soldering.
The most common pinout is:
Pin 2 = DATA
When you connect the sensor, an additional pullup resistance has to be placed between VCC (pin 1) and DATA (pin 2) which should be in the
range between 4,7kΩ to 10kΩ. In most cases a value of 10kΩ is suggested, but this should be determined individually (especially if any problems
with the sensor occur).
Please note:
If more than one DHT22 sensor should be used, you have to use an own pin at the microcontroller for each DATA pin of the sensor.
Furthermore you have to define them in the file BSB_LAN_config.h.
Besides the 'plain' sensors there are models which are already soldered onto a little circuit board, where the three necessary pins are lead out
and labeled. The following picture shows one of these types with the identical sensor AM2302.
The query of the sensors/measured values can be done either via direct parameter call ( URL/20100-20199 ) or by calling the corresponding
category. The following screenshot shows the web output of a connected DHT22 sensor.
Display of the measured values of a DHT22 in the web interface (category "One Wire, DHT & MAX! Sensors").
Note:
You can find various tutorials and examples within the internet about the installation and usage of DHT22 sensors.
Especially for the usage within heating system installations the capsuled type is very interesting, because you can realize an individual (and
waterproof!) installation easily and const-effective.
The query of the sensors/measured values can be done either via direct parameter call ( URL/20300-20399 ) or by calling the corresponding
category. The following screenshot shows the web output of four DS18B20 sensors connected to pin 7.
Display of the measured values of four DS18B20 in the web interface (category "One Wire, DHT & MAX! Sensors").
Note:
If you are using DS18B20 sensors, the specific sensor id of each sensor will also be listed within the output of the category sensors (and the
output of the IPWE extension, if used). Especially if more than one sensor will be added to the system, these unique sensor ids are
necessary to identify a specific sensor later. So if you integrate BSB-LAN and/or these sensors in your home automation software, you
should consider this (e.g. use RegEx on the sensor ids).
It's adviseable to read out the sensor id (e.g. by using /K49) and label each sensor, so that you don't get confused later. For this, you can
raise or lower the temperature of one sensor (e.g. hold it in your hand) and query the category sensors again after a certain time. Now you
can see the changed value of one sensor and write down the specific sensor id.
Besides that, if any sensor will be exchanged or added, most of the time the displayed order (within the output of the category sensors or the
IPWE extension) of the sensors will change also, because internally they are listed following the specific sensor ids. So if you only adjust the
reading following the order and name the sensors like that, it can happen, that the belonging name doesn't show the correct sensor
anymore. The following screenshots show this circumstance.
If any changes within the installation of the sensors occur (e.g. if you exchange, add or remove something), you have to reboot the Arduio,
so that the sensors will be initially read out and added to the software.
Yellow = DATA
If you are using more than one sensor and/or larger cable lengths, it's advisable to add a 100nF ceramic capacitor (and maybe also an
Besides the (optional but advisable) usage of capacitors, you have to use a pullup resistance (only one!) at the output of the
adapter/microcontroller and place it between DATA and VCC (+3,3V). If you are using more than one sensor and/or larger cable lengths, you
probably have to evaluate the correct dimension of the resistor, which can be smaller than the 4,7kΩ which is suggested most of the times.
Furthermore, in more complex or larger installations, it seems in individual cases that the voltage supply with the 3.3V of the Due does not always
allow a problem-free operation of the sensors. Since these OneWire sensors are "open drain", they can also be operated with 5V of the Due,
which seems to result in a more stable operation. However, it must then be ensured that the 5V is never applied to the GPIO of the Due!
For the installation this means that VCC of the sensors is connected to the 5V pin of the Due, but the PullUp resistor to be used must be placed
between DATA and a 3.3V pin of the Due!
Notes:
If you are using the mentioned capsuled and already wired types, it's usually sufficient to place the capacitors where the wires will be
connected. So you don't have to cut the wires at the capsule to place the capacitor there (according to experience, at least with the types
which come with a cable length of 1m or 3m it's not necessary).
In contrary to ceramic capacitors you have to pay attention to the correct polarity if you are using additional tantal capacitors!
It's advisable to use a shielded cable for the connection. The shield should be connected to GND at one end of the cable.
To minimize the risk of electrical interference, try not to lead the cable parallel to power cords. Besides that, you can also add a ferrite ring to
minimize the risk of electrical interference which maybe can come from the power supply of the microcontroller. Just lead the cable a few
times through the ferrite ring.
If you have to use larger cable lengths, it's necessary to pay attention to the correct network topology. Have a look at the tutorial which was
written from the manufacturer: "Guidelines for Reliable Long Line 1-Wire Networks".
Note:
You can find various tutorials and examples within the internet about the installation and usage of DS18B20 sensors.
three-wired cable (if shielded, connect the shield at one end to GND)
one pullup resistance 4,7kΩ or maybe smaller, positioned between VCC and DATA at the adapter/microcontroller
ceramic capacitor 100nF, one for each sensor, positioned between VCC and GND close to the sensor
optional: tantal capacitor 10µF, one for each sensor (additional to the ceramic capacitor!), positioned between VCC and GND close to the
sensor (please pay attention to the correct polarity!)
If you want to use the capsuled types of sensors, especially within bigger installations it can be adviseable to use the version with 3m cable
instead of 1m cable. They are only a little bit more expensive but offer a greater freedom of movement when you want to place the sensors.
If you want to place the sensors at some pipes, it's adviseable to create a little bed made of thermal paste for the contact area. Fasten the
sensor with a metal pipe clamp to the pipe and also fasten the cable itself with a cable tie, so that tensile forces won't work on the sensor
itself and that the sensors stays in place. Of course you need to place the sensor between the pipe an the insulation and close the insulation
after you are done with the installation. If there is no pipe insulation it's advisable to -at least- cover the sensor with a piece of insulation, so
that it's not affected by any cold air or so.
In general, the sensors should me mounted one or two meters away from a heat source, so that they aren't affected by that.
Please note:
Already installed sensors which belong to the heating system (e.g. sensors for a warm water tank or a heating buffer tank) are always
more important than any sensor for your home automation system! The given installation of your existent heating system should never
be adversely affected by any optional installed DS18B20 sensor!
Notes
In principle BME280 can also be connected to an SPI, but not at the microcontroller of our BSB-LAN setup!
If you need more than two BME280 sensors, you can use an I2C multiplexer TCA9548A for that.
You can also use a BMP280. It doesn't offer humidity measurements though, so we recommend using a BME280.
Make sure that the sensor is of type BME280 (and not e.g. a BMP280, BMP180,..).
Make sure that you use a module that already has pull-up resistors on the breakout board (like on the picture above). If your variant does not
have pull-up resistors installed, you have to add them when connecting it to the microcontroller (approx. 10kOhm, connect between SDA
and 3.3V and between SCL and 3.3V)!
Make sure that the first sensor has the I2C address 0x76! This is usually the case with the module shown above.
The second sensor must get the address 0x77. How to do this on the module shown above is described below.
Make sure you connect the sensor to the 3.3V pin of the microcontroller! The module shown above has a voltage regulator and level shifter
built in, so in this case you could connect it to 5V - but to make sure that there is never 5V at SDA/SCL, you should always prefer to connect
it to 3.3V.
Connection
The breakout board is usually already clearly labeled, so the connections can be clearly identified here.
Depending on the microcontroller used, a different I2C connector must be used:
The Arduino Due has two I2C bus connections: SDA/SCL at pins 20/21 and SDA1/SCL1. Care must be taken to use the SDA1 & SCL1
connectors, as the BSB-LAN adapter already uses the SDA/SCL connectors. SDA1/SCL1 are located next to the "AREF" pin. They are
usually covered by the LAN-Shield and are not carried out upwards to/through the LAN shield. However, they are accessible below the LAN
shield directly on the Due. For an exact positioning of SDA1/SCL1 please have a look at the pinout diagram in appendix B.
The Arduino Mega 2560, on the other hand, has only one I2C bus connector: SDA/SCL on pins 20/21. This is not occupied by the old
adapter v2, the connector can be used for the BME280.
Addressing
Common breakout boards like the BME280 module shown above have three solder pads on the front side below the actual sensor, where usually
the left and the middle solder pad are connected by a conducting path. This usually corresponds to the address 0x76. The following picture
shows this connection circled in yellow.
If you want to connect a second sensor in parallel, you have to cut this conducting path carefully(!) and conscientiously with a fine sharp object
(e.g. cutter, scalpel). After that the right and the middle pin have to be connected by some solder. The following picture shows the necessary
steps: the red line on the left marks the necessary 'cut' on the board, the green line on the right marks the connection to be made afterwards
using solder.
Address 0x77: The red line marks the cut trace, the green line marks the new connection to be made.
Readout
The measured values of the connected BME280(s) can be read out as usual, e.g. by calling up the category "One Wire, DHT & MAX! Sensors"
under "Heating Functions", by a direct click on the button "Sensors" or also by entering the specific parameter numbers. BME280 sensors can be
found in the number range 'URL/20200-20299'. If a logging, a display within the IPWE extension etc. should be done, the specific parameter
numbers of the desired measured values of the respective sensor have to be used.
The following screenshot shows the corresponding display of a BME280 within the category "One Wire, DHT & MAX! sensors".
The often cheap relaymodules available for the usage with an microcontroller are often already supplied with a relay which can handle high
voltage like 125V or 230V. However, due to poor quality or just an overload, different risky damage can occur. Because of that one should
consider to (additionally) use common couple or solid state relays which are used by electricians. in that case one should see the specific data
sheet to confirm that the electrical current of the microcontroller is strong enough to trigger the swithcing process of the relay.
Attention
Electrical installations should only be done by an electrician! High voltage like 230V or 125V can be deadly! It's adviseable to already
include an electrician at the state of planning.
Before using a relay/relay board, make sure that it is suitable for the desired task! For the switchable multifunctional inputs of the
heating controllers, for example, it is often required that the relay is suitable for low voltage or current - not all relays meet this criterion!
It is NOT possible to connect the microcontroller directly with the multifunctional inputs of the controller!
Example
If the controller of a solarthermic installation isn't already connected with the controller of the heating system, it's possible to query the state
of the pump by installing a coupling relay parallel to the pump and connect the other 'side' of the relay with the specific pins of the
microcontroller. Now you can query the state of the relay and therefore the state of the pump with the microcontroller.
In BSB_LAN_custom.h you can use the following variables for using MAX! devices:
custom_timer
This variable is set to the value of millis() with each iteration of the loop() function.
custom_timer_compare
This variable can be used in conjunction with custom_timer to create timed executions of tasks, for example to execute a function every x
milliseconds.
In addition to that, all global variables from BSB_LAN.ino are available. In regard to MAX! functionality, these are most notably:
max_devices[]
This array contains the DeviceID of each paired MAX! device. You can use this for example to exclude specific thermostats from
calculations etc.
max_cur_temp[]
This array contains the current temperature of each thermostat. However, only temperatures from wall thermostats are reliable because they
transmit their temperature constantly and regularly. Other thermostats do this only when there is a change in the valve opening or upon a
new time schedule.
max_dst_temp[]
This array contains the desired temperature of each thermostat.
max_valve[]
This array contains the current valve opening of a thermostat (wall thermostats only carry this value when they are paired with a heater
thermostat).
The order inside of these arrays is always the same, i.e. if max_devices[3] is wall thermostat with ID xyz in the living room, then
max_cur_temp[3] contains the current temperature in the living room, max_dst_temp[3] the desired temperature in the living room etc.
Display of connected MAX! sensors within the output of the category "One Wire, DHT & MAX! Sensors").
Important note for those users who use a Max!Cube that has been flashed to CUL/CUNO (see information here):
If BSB-LAN was not running (or was busy otherwise) when the CUNO was set up, then you have to press the pairing button again on these
devices, because only in that specific pairing process the ID printed on the devices label is sent together with the internally used device ID (and is
also used by FHEM).
You can also use the MAX! thermostats to calculate a weighted or average current or desired temperature (see here for configuring MAX devices
under FHEM and here for using the average temperature in FHEM).
FHEM forum user „Andreas29" has created an example on how to use MAX! thermostats with BSB-LAN without using FHEM. A detailed
description can be found in this forum post here. The "Arduino room controller light" is described in chapter 12.6.2.
If you also created something by your own of which you think that it could be interesting for other users, please feel free to contact me (Ulf) via
email at adapter (at) quantentunnel.de , so that I eventually can present it here in the manual. Thanks!
7.4.1 Substitute for a Room Unit (Arduino Uno, LAN Shield, DHT22, Display, Push Button Switch)
The member „Andreas29" of the German FHEM forum has built a substitute for a room unit, based on an Arduino Uno. Besides the data from a
DHT22 sensor, the current state of function of the heating system is displayed on a 4x20 LCD. With a little push button he imitates the function of
the presence button of a common room unit.
A more detailed description including the circuit diagram and the software is available here in the German FHEM forum.
Also, he expanded the functionality and implemented push messaging for certain error cases. The description and the software can be found here
in the German FHEM forum.
A more detailed description of his project you can find in his GitHub Repo.
FHEM forum member "fabulous" has built a substitute for a room unit based on the above-mentioned variant of user "Andreas29", which
communicates with the BSB LAN adapter via UDP. An Arduino Uno including LAN shield, a 20x4 LCD and a push button are used. A detailed
description and the corresponding code can be found here.
BSB-LAN user "-cr " has extended the above mentioned variant of user "fabulous" and adapted it to an ESP32 including ssd1306 display. His
project BSBmonCR allows among other things a graphical display of selected parameters over time and a presence detection. In addition, it is
even possible to do without a display, since the graphical representation can also be accessed via http and logging to a Dropbox account is also
possible.
Attention
The possible integration of Xiaomi Mijia BLE sensors described in the following only works with ESP32 boards!
User DukeSS developed the support for BLE (bluetooth low energy) sensors within a special version of BSB-LAN and offers it in his
GitHub repository.
Many thanks!
If you are using an ESP32 board, you can use an alternative branch which offers support for BLE sensors .
With this, you can use different BLE sensors, here you can see a list of the supported types.
This solution has been tested with Xiaomi Mijia BLE sensors of the type LYWSD03MMC.
At this point only unencrypted messages are supported, so you have to use an alternative firmware for the sensors. For the mentioned Xiaomi
Mijia BLE sensors of the type LYWSD03MMC you can find it here.
The limitations within this solution right now are e.g. that the OTA functionality won't work, because the BLE implementation takes too much
memory.
To use that function, you have to adjust two settings within the configuration of that special BSB-LAN version:
In addition to the use of a 'normal' router, there are small devices on the market that offer a RJ45 jack and a WLAN client or a WLAN client
bridge mode. These devices connect to the network via WLAN (like the FritzBox solution described above). The Arduino can be connected via
LAN cable to the device. These kinds of devices are often very small and can be plugged in a power outlet, so that the installation of the
hardware can usually be done quite easily.
However, a stable and reliable WLAN connection should be achieved. Especially, if you are using additional smart home software to create
logfiles, if you are using additional hardware like thermostats or if you want to control and influence the behaviour of your heating system.
Further on to chapter 8
Back to TOC
Because the adapter is just an interface which makes it possible to gain access to the controller of the heating system, it is of course possible to
use external programs in addition to BSB-LAN. By this you can integrate your heating system in complex home automation systems and e.g.
create comprehensive logfiles and realize their graphical output.
Due to the many different software solutions out there, neither a comprehensive presentation, nor a comprehensive description about the
integration in specific programs can be given here. Also the whole topic about heating systems in general and how to optimize their functionality
can not be treated here.
However, the following subchapters supported by kind users offer some example code and scripts for some common software solutions to show
you how the integration of BSB-LAN works. Hopefully this will be helpful for your first steps.
If any question about these example scripts arises, please try to find the answer by yourself (e.g. in a specific forum). Maybe the author of the
specific example may also be willing to help you, so you can try to contact him, but please don't send me (Ulf) any questions about these topics.
If you are a programmer or a user of a system which isn't already mentioned here and you want to contribute an example script to make the first
steps easier for other users, of course you can contact me by email!
At this point, there's just one advise I'd like to give you: always make sure, that the whole process of heat generation and the whole functionality
of your heating system will still work without any problems in the case that your home automation system may be faulty or without functionality at
all! Every intervention you may want to trigger with this system should not have any impact on the basic functionality of your heating system.
Keep in mind that it's (in most of the cases) still a certain kind of controlled explosion and a burning process which generates the heat!
Notes:
Of course the following examples always have to be adjusted to your individual needs and settings. Especially the correct IP, probably activated
security options and the setting that gives BSB-LAN writeable access should be mentioned here (see chapter 5 for the specific options).
8.1 FHEM
The following example scripts for the FHEM integration using HTTPMOD were contributed by FHEM forum member „freetz".
Thanks a lot!
To gain access to the adapter via FHEM, you can use the module HTTPMOD.
Example script for the query of parameters and the transmission of the room temperature:
The example script queries the parameters 8700, 8743 and 8314 every 300 seconds. It assigns them to the device \"THISION\" (name of the
heating system) and the readings \"Aussentemperatur\", \"Vorlauftemperatur\" und \"Ruecklauftemperatur\".
Furthermore it provides a reading \"Istwert\" which can be set via FHEM to transmit the current room temperature to the heating system
(parameter 10000).
Last but not least it calculates the difference between \"Vorlauftemperatur\" and \"Rücklauftemperatur\" and assigns this difference to the reading
\"Spreizung\".
Please note:
There seems to be a problem within the HTTPMOD-module and readings which start with "0" ( reading0Name and reading0Regex ), so please
start the readings counting from "1".
With that example the readings are displayed as numerical values. If you want them to be displayed in plain text like it's done within the
webinterface of BSB-LAN, you have to adjust the regular expressions according to that. The following example shows for the parameters '700 -
Betriebsart' and '8000 - Staus Heizkreis 1'.
The numbering of the previously listed readings are continued with this, the readings should be added to the line 'attr THISION userattr'.
Furthermore the URL has to be expanded with the parameters 700 and 8000. At the end it looks like this:
Example script for the query and control of a connected relay board:
The following script is an example for a FHEM configuration, where the three relay ports named \"Heater\", \"Fan\" and \"Bell\" are queried and
controlled, with the relays connected to the GPIO pins 7, 6 and 5.
8.2 openHAB
When using openHAB >v2.5.4, you can implement BSB-LAN using the specific binding - for openHAB versions earlier than v2.5.4 there doesn't
exist a binding. With these older versions you have to use e.g. the bindings for HTTPMOD and Javascript Transformation to read and set
parameters.
Logging can be realized by (e.g.) InfluxDB and visualisation by (e.g.) Grafana.
8.2.1 openHAB-Binding
BSB-LAN user „hypetsch“ developed a binding for openHAB, which is officially part of openHAB since v2.5.4!
Thanks a lot!
NOTE:
The neccessary addons like the the Javascript Transformations have to be installed previously!
Example script for the query of parameters which report a value (bsbinput.js):
do {
match = re.exec(value1);
if (match){
results.push(match[0]);
}
} while (match);
outputres = results[0]
//extract actual value from the output
var output=outputres.substr(outputres.indexOf("VALUE='")+7,outputres.length);
return output;
})(input)
(function(i) {
var outputres;
var results = [];
value1 = i;
// define regex to search for the line in the http response
var regEx = '<option value=\'[0-9]+\' SELECTED>.*</option>';
var re = new RegExp(regEx, 'gim');
do {
match = re.exec(value1);
if (match){
results.push(match[0]);
}
} while (match);
outputres = results[0]
//extract actual value from the output
var l=outputres.indexOf("</o")-outputres.indexOf(">")-1
var output=outputres.substr(outputres.indexOf(">")+1,l);
return output;
})(input)
rule "RoomTemp"
when
Item iSet_temp changed
then
sendHttpGetRequest("http://192.168.178.88/I10000="+iSet_temp.state.toString)
end
NOTE:
The neccessary addons like the the Javascript Transformation, MQTT, Network and Expire have to be installed previously!
The following example is shown as a sitemap in BasicUI like in the following screenshot:
Example script for the query of parameters which report a value (/transform/bsbinput.js):
do {
match = re.exec(value1);
if (match){
results.push(match[0]);
}
} while (match);
outputres = results[0]
//extract actual value from the output
var output=outputres.substr(outputres.indexOf("VALUE='")+7,outputres.length);
return output;
})(input)
(function(i) {
var outputres;
var results = [];
value1 = i;
// define regex to search for the line in the http response
var regEx = '<option value=\'[0-9]+\' SELECTED>.*</option>';
var re = new RegExp(regEx, 'gim');
do {
match = re.exec(value1);
if (match){
results.push(match[0]);
}
} while (match);
outputres = results[0]
//extract actual value from the output
var l=outputres.indexOf("</o")-outputres.indexOf(">")-1
var output=outputres.substr(outputres.indexOf(">")+1,l);
return output;
})(input)
Automatik=1
Reduziert=2
Komfort=3
Schutzbetrieb=0
Display of the values in a sitemap (/sitemaps/bsblan.sitemap, e.g. for BasicUI, ClassicUI, iOS and Android App):
It's not necessary to create a variable before, that's done by the script.
The type of the variable (number, bool, value list) will be adjusted automatically to the queried parameter.
string CuxGeraetAbfrage = "CUX2801001:1"; ! GeräteAdresse des CuxD Execute Gerätes, welches die Abfragen ausführt
string CuxGeraetLogging = "CUX2801001:1"; ! GeräteAdresse des CuxD Execute Gerätes, welches das Logging ausführt, Leer ("") lassen,
wenn kein Cuxd-Highcharts Logging gewünscht
string IPAdresseBSB = "192.168.178.100"; !IP_Adresse des BSB-Adapters
string Wort = "8700"; !Parameternummer: Beispiel Außentemperatur = 8700, Betriebsmodus = 700
string Variablename = "Wetter_Temperatur_Heizung"; ! Name der Systemvariable
boolean Durchschnitt24h = false; ! true = Durchschnittswert holen, false = aktuellen Wert holen - diese muss vorher in der BSB_lan_c
onfig.h konfiguriert wurden sein!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!Ab hier keine Anpassungen mehr notwendig!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! URL Zusammenführen
string url="";
if (Durchschnitt24h) { url="http://" # IPAdresseBSB # "/A" # Wort; }
else { url="http://" # IPAdresseBSB # "/" # Wort; }
! Variable anlegen, wenn nicht vorhanden:
! Werte holen
dom.GetObject("CUxD." # CuxGeraetAbfrage # ".CMD_SETS").State("wget --tries=5 --timeout=20 --quiet --output-document=- '"# url #"'")
;
dom.GetObject("CUxD." # CuxGeraetAbfrage # ".CMD_QUERY_RET").State(1);
var stdout = dom.GetObject("CUxD." # CuxGeraetAbfrage # ".CMD_RETS").State();
! Prüfe, ob eine Ausgabe vorhanden ist, sonst z.B. IP-Adresse falsch, oder Netzwerkfehler
if (stdout != null && stdout != "")
{
! Ausgabe filtern
integer pos = (stdout.Find(Wort# " "));
if (pos == -1)
{
WriteLine("Position vom Wort '" # Wort # "' konnte nicht ermittelt werden");
}
! Sonderzeichen ersetzen
if (stdout.Contains("°")){ stdout = stdout.Replace("°","°"); }
if (stdout.Contains("%")){ stdout = stdout.Replace("%","%"); }
stdout = stdout.ToLatin();
!WriteLine("Nach Sonderzeichenumwandlung: " # stdout); !Debug: Welchen Wert hat stdout aktuell
svObject.ValueType(ivtInteger);
svObject.ValueSubType(istEnum);
svObject.ValueList(newvalues);
!prüft, ob der ermittelte Wert innerhalbe der möglichen Werte liegt
BSB-LPB-LAN Manual (c) Ulf Dieckmann | URL: https://1coderookie.github.io/BSB-LPB-LAN_EN 112/230
!prüft, ob der ermittelte Wert innerhalbe der möglichen Werte liegt
if (Wert < inewvalues) { if (Wert != svObject.Value()) { svObject.State(Wert); } }
else { WriteLine("Der ermittelte Wert entspricht keinem gültigen Enum-Wert. Bitte Ausgabe prüfen!") }
}
elseif (Einheit.Contains("- Aus") || Einheit.Contains("- Ein"))
{
! Setzen des Systemvariabel Wertetyp
svObject.ValueType(ivtBinary);
svObject.ValueSubType(istBool);
svObject.ValueName0("Aus");
svObject.ValueName1("Ein");
if (Wert != svObject.Value()) { svObject.State(Wert); }
}
elseif (Einheit.Contains("°"))
{
! Setzen des Systemvariabel Wertetyp
svObject.ValueType(ivtFloat);
svObject.ValueSubType(istGeneric);
svObject.ValueMin(-50);
svObject.ValueMax(100);
if (Wert != svObject.Value()) { svObject.State(Wert); }
}
elseif (Einheit.Contains("%"))
{
! Setzen des Systemvariabel Wertetyp
svObject.ValueType(ivtFloat);
svObject.ValueSubType(istGeneric);
svObject.ValueMin(0);
svObject.ValueMax(100);
if (Wert != svObject.Value()) { svObject.State(Wert); }
}
else
{
! Setzen des Systemvariabel Wertetyp
svObject.ValueType(ivtFloat);
svObject.ValueSubType(istGeneric);
if (Wert != svObject.Value()) { svObject.State(Wert); }
}
dom.RTUpdate(0); ! Interne Aktualisierung der Systemvariabelen
! Logging
if (CuxGeraetLogging != "") { dom.GetObject("CUxD."#CuxGeraetLogging#".LOGIT").State(dom.GetObject(ID_SYSTEM_VARIABLES).Get(V
ariablename).Name()#";"#dom.GetObject(ID_SYSTEM_VARIABLES).Get(Variablename).Value()); }
}
Create a program where all system variables that should be observed are associated with ODER and bigger than or equal with 0 and "bei
Aktualisierung auslösen" (triggered by actualisation).
Example:
This variable need to include the value of the parameter in the info first (will be named by the read-out-script from above automatically). Example:
700 heating circuit 1 - operating mode
The number of the parameter will be detected automatically from the system variable 'Info'.
If the variable will be changed, the changed value will be send and actualized to the adapter automatically!
! Funktionsbeschreibung:
! Ein Programm, wo alle Systemvariabeln die Überwacht werden sollen mit ODER Verknüpft und größer oder gleich 0 und "bei Aktualisie
rung auslösen" , anlegen.
! Beispiel:
! WENN Variablename größer oder gleich 0 "bei Aktualisierung auslösen"
! DANN Dieses SKRIPT sofort ausführen
! die Variable muss in der Info zuerst den Parameter-Wert enthalten (wird von meinem Auslese Skript automatisch so benannt. Beispiel
: 700 Heizkreis 1 - Betriebsart
! Die Parameternummer wird dann automatisch aus der Systemvariable Info ermittelt.
! Wird die Variable geändert, so wird der geänderte Wert automatisch an den BSB-Adapter übermittelt und aktualisiert!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!Ab hier keine Anpassungen mehr notwendig!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
if (source)
{
! Wort ermitteln
string Wort = source.DPInfo().ToString().Substr(0,source.DPInfo().Find(" "));
!WriteLine("Wort: "#Wort);
if (Wort != null && Wort != "")
{
string Wert = source.Value().ToString();
!WriteLine("Wert: "#Wert);
if (Wert != null && Wert != "")
{
! Anweisung senden
string urlset="http://" # IPAdresseBSB # "/S" # Wort # "=" # Wert;
dom.GetObject("CUxD." # CuxGeraetSetzen # ".CMD_SETS").State("wget -t 5 -T 20 -q -O - '"# urlset #"'");
dom.GetObject("CUxD." # CuxGeraetSetzen # ".CMD_QUERY_RET").State(1);
var stdout = dom.GetObject("CUxD." # CuxGeraetSetzen # ".CMD_RETS").State();
if (stdout != null && stdout != "")
{
if (stdout.Contains("FEHLER: "))
{
stdout = stdout.Substr(stdout.Find("FEHLER: "), stdout.Length());
stdout = stdout.Substr(0, stdout.Find("/td"));
WriteLine("Fehlermeldung: "# stdout);
WriteLine("Wurde der BSB-Adapter zum Schreiben berechtigt? Handbuch Seite 26 beachten...");
}
else
{
! Kontrollabfrage
string url="http://" # IPAdresseBSB # "/" # Wort;
dom.GetObject("CUxD." # CuxGeraetSetzen # ".CMD_SETS").State("wget -t 5 -T 20 -q -O - '"# url #"'");
dom.GetObject("CUxD." # CuxGeraetSetzen # ".CMD_QUERY_RET").State(1);
stdout = dom.GetObject("CUxD." # CuxGeraetSetzen # ".CMD_RETS").State();
! Ausgabe filtern
integer pos = (stdout.Find("tr td \r\n" # Wort # " ") + 9);
stdout = stdout.Substr(pos, stdout.Length());
pos = stdout.Find("/td");
stdout = stdout.Substr(0, pos);
! Sonderzeichen ersetzen
if (stdout.Contains("°")){ stdout = stdout.Replace("°","°"); }
if (stdout.Contains("%")){ stdout = stdout.Replace("%","%"); }
!WriteLine("Nach Sonderzeichenumwandlung: " # stdout); !Debug: Welchen Wert hat stdout aktuell
string CuxGeraetAbfrage = "CUX2801001:1"; ! GeräteAdresse des CuxD Execute Gerätes, welches die Abfragen ausführt
string IPAdresseBSB = "192.168.178.100"; !IP_Adresse des BSB-Adapters
string Variablename = "Heizung_Fehlercodes"; ! Name der Systemvariable
integer AnzahlFehler = 10;
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!Ab hier keine Anpassungen mehr notwendig!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Parameter Zusammenbauen
integer i =0;
string Woerter ="";
while (i < AnzahlFehler)
{
BSB-LPB-LAN Manual (c) Ulf Dieckmann | URL: https://1coderookie.github.io/BSB-LPB-LAN_EN 114/230
{
if (Woerter != "")
{
Woerter = Woerter + "," + ((6801) + (10 * i)).ToString();
}
else { Woerter = Woerter + ((6801) + (10 * i)).ToString(); }
i = i + 1;
}
! URL Zusammenführen
string Ergebnis = "";
string Wort = "";
foreach(Wort, Woerter.Split(","))
{
string url="http://" # IPAdresseBSB # "/" # ((Wort.ToInteger() - 1).ToString());
! Werte holen
dom.GetObject("CUxD." # CuxGeraetAbfrage # ".CMD_SETS").State("wget --tries=5 --timeout=20 --quiet --output-document=- '"# url #
"'");
dom.GetObject("CUxD." # CuxGeraetAbfrage # ".CMD_QUERY_RET").State(1);
var stdout = dom.GetObject("CUxD." # CuxGeraetAbfrage # ".CMD_RETS").State();
! Prüfe, ob eine Ausgabe vorhanden ist, sonst z.B. IP-Adresse falsch, oder Netzwerkfehler
if (stdout != null && stdout != "")
{
! Ausgabe filtern
integer pos = (stdout.Find((Wort.ToInteger() - 1).ToString() # " "));
stdout = stdout.Substr(pos, stdout.Length());
pos = stdout.Find("/td");
stdout = stdout.Substr(0, pos);
! Sonderzeichen ersetzen
if (stdout.Contains("°")){ stdout = stdout.Replace("°","°"); }
if (stdout.Contains("%")){ stdout = stdout.Replace("%","%"); }
stdout = stdout.ToLatin();
Ergebnis = Ergebnis # stdout.RTrim() # "\n\r";
}
! Prüfe, ob eine Ausgabe vorhanden ist, sonst z.B. IP-Adresse falsch, oder Netzwerkfehler
if (stdout != null && stdout != "")
{
! Ausgabe filtern
integer pos = (stdout.Find(Wort# " "));
stdout = stdout.Substr(pos, stdout.Length());
pos = stdout.Find("/td");
stdout = stdout.Substr(0, pos);
! Sonderzeichen ersetzen
if (stdout.Contains("°")){ stdout = stdout.Replace("°","°"); }
if (stdout.Contains("%")){ stdout = stdout.Replace("%","%"); }
stdout = stdout.ToLatin();
Ergebnis = Ergebnis # stdout.RTrim() # "\n\r\n\r";
}
}
Query of parameters and additionally connected DS18B20 temperature sensors, using the specific sensor ids and the query of /T:
string CuxGeraetAbfrage = "CUX2801001:11"; ! GeräteAdresse des CuxD Execute Gerätes, welches die Abfragen ausführt
string CuxGeraetLogging = "CUX2801001:10"; ! GeräteAdresse des CuxD Execute Gerätes, welches das Logging ausführt, Leer ("") lassen,
wenn kein Cuxd-Highcharts Logging gewünscht
string IPAdresseBSB = "192.168.178.88"; !IP_Adresse des BSB-Adapters
string Wort = "T"; !Parameternummer: Beispiel Außentemperatur = 8700, Betriebsmodus = 700, eigene Temperatursensoren = T
string TemperatursensorID = "28aa44085414010b"; !Wenn Wort = "T", dann hier die ID des auszulesenden Temperatursensors eingeben, wir
d sonst ignoriert!
string Variablename = "Wetter_Temperatur"; ! Name der Systemvariable
boolean Durchschnitt24h = false; ! true = Durchschnittswert holen, false = aktuellen Wert holen - diese muss vorher in der BSB_lan_c
onfig.h konfiguriert wurden sein!!! (Bei Wort = T wird dieser Parameter ignoriert)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!Ab hier keine Anpassungen mehr notwendig!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! URL Zusammenführen
string url="";
if (Durchschnitt24h && Wort != "T")
{
url="http://" # IPAdresseBSB # "/A" # Wort;
}
else
{
url="http://" # IPAdresseBSB # "/" # Wort;
}
! Werte holen
dom.GetObject("CUxD." # CuxGeraetAbfrage # ".CMD_SETS").State("wget --tries=5 --timeout=20 --quiet --output-document=- '"# url #"'")
;
dom.GetObject("CUxD." # CuxGeraetAbfrage # ".CMD_QUERY_RET").State(1);
var stdout = dom.GetObject("CUxD." # CuxGeraetAbfrage # ".CMD_RETS").State();
! Prüfe, ob eine Ausgabe vorhanden ist, sonst z.B. IP-Adresse falsch, oder Netzwerkfehler
if (stdout != null && stdout != "")
{
integer pos = (stdout.Find(Wort# " "));
! Ausgabe filtern
if (Wort == "T")
{
pos = (stdout.Find(TemperatursensorID # ": "));
}
if (pos == -1)
{
WriteLine("Position vom Wort '" # Wort # "' konnte nicht ermittelt werden");
}
! Sonderzeichen ersetzen
if (stdout.Contains("°")){ stdout = stdout.Replace("°","°"); } !& d e g ; ohne Leerzeichen
if (stdout.Contains("%")){ stdout = stdout.Replace("%","%"); } !& # 0 3 7 ; ohne Leerzeichen
!WriteLine("Nach Sonderzeichenumwandlung: " # stdout); !Debug: Welchen Wert hat stdout aktuell
svObject.ValueType(ivtInteger);
svObject.ValueSubType(istEnum);
svObject.ValueList(newvalues);
!prüft, ob der ermittelte Wert innerhalbe der möglichen Werte liegt
if (Wert < inewvalues) { if (Wert != svObject.Value()) { if (Wert != "") { svObject.State(Wert); }} }
else { WriteLine("Der ermittelte Wert entspricht keinem gültigen Enum-Wert. Bitte Ausgabe prüfen!") }
}
elseif (Einheit.Contains("- Aus") || Einheit.Contains("- Ein"))
{
! Setzen des Systemvariabel Wertetyp
svObject.ValueType(ivtBinary);
svObject.ValueSubType(istBool);
svObject.ValueName0("Aus");
svObject.ValueName1("Ein");
if (Wert != svObject.Value()) { if (Wert != "") { svObject.State(Wert); } }
}
elseif (Einheit.Contains("°"))
{
! Setzen des Systemvariabel Wertetyp
svObject.ValueType(ivtFloat);
svObject.ValueSubType(istGeneric);
svObject.ValueMin(-50);
svObject.ValueMax(100);
if (Wert != svObject.Value()) { if (Wert != "") { svObject.State(Wert); } }
}
elseif (Einheit.Contains("%"))
{
! Setzen des Systemvariabel Wertetyp
svObject.ValueType(ivtFloat);
svObject.ValueSubType(istGeneric);
svObject.ValueMin(0);
svObject.ValueMax(100);
if (Wert != svObject.Value()) { if (Wert != "") { svObject.State(Wert); } }
}
else
{
! Setzen des Systemvariabel Wertetyp
svObject.ValueType(ivtFloat);
svObject.ValueSubType(istGeneric);
if (Wert != svObject.Value()) { if (Wert != "") { svObject.State(Wert); } }
}
dom.RTUpdate(0); ! Interne Aktualisierung der Systemvariabelen
! Logging
if (CuxGeraetLogging != "") { dom.GetObject("CUxD."#CuxGeraetLogging#".LOGIT").State(dom.GetObject(ID_SYSTEM_VARIABLES).Get(V
ariablename).Name()#";"#dom.GetObject(ID_SYSTEM_VARIABLES).Get(Variablename).Value()); }
}
For implementation in HomeMatic the usage of CuxD and wget is a good option.
Example for the query of the parameter '8326 burner modulation' by using CuxD:
! Skriptanfang:
! BSB-Abfrage
string url='http://192.168.178.88/8326'; !IP anpassen
! WriteLine("URL: " # url); !nur Kontrolle
! --timeout=seconds ! während der Dauer der Abfrage werden von der CCU
! keine anderen Skripte ausgeführt !!!
! siehe CUxD-Handbuch 5.8.2 System.Exec
! dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State
! ("wget -t 5 -T 20 -q -O - '"# url #"'"); ! abgekürzte Wget Syntax
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget --tries=5 --timeout=20 --quiet --output-document=- '"# url #"'");
! ausführliche Wget Syntax
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
var stdout = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
! WriteLine("Antwort: " # stdout);
! Beim stdout den ueberfluessigen Vorspann entfernen
integer laenge = stdout.Length();
integer pos = stdout.Find("body");
! ab hier kommen auswertbare Informationen
pos = pos + 10;
stdout = stdout.Substr(pos, (laenge - pos));
! wenn Rückmeldung mit allen Daten angezeigt werden soll,
! Ausrufezeichen nächste Zeile entfernen
! WriteLine("Antwort ohne Vorspann: " # stdout);
string wort = "8326"; !Brennermodulation
integer laenge = wort.Length();
! WriteLine("laenge: " # laenge); zum Testen für andere Parameter
! für Skripttest Ausrufezeichen entfernen
integer pos = stdout.Find(wort);
! WriteLine("pos:" #pos);
pos = pos + 39; !bei anderen Parametern meist zwischen 25 und 50
string daten = stdout.Substr((pos + laenge +1), 100);
! WriteLine("daten :"#daten);
integer pos = daten.Find(wort);
daten = daten.Substr(0, (pos));
integer zahl = daten.ToFloat();
! keine Prüfung, da auch 0 sein kann
dom.GetObject("H_Brennermodulation").State(zahl);
WriteLine("H_Brennermodulation: "#zahl);
! nur für Chart CUxD
dom.GetObject("CUxD.CUX2801001:1.LOGIT").State
("H_Brennermodulation"#";"#zahl);
WriteLine("Hallo Welt!");
! Skriptende:
Example for setting the mode to comfort with ‚S700=3' using CuxD:
!H_Aussentemperatur Zahl
!H_Brennermodulation Zahl
!H_Vorlauftemperatur Zahl
!H_Kesselruecklauftemperatur Zahl
!H_Trinkwassertemperatur Zahl
!H_Heizbetrieb Zeichenkette
!H_Trinkwasserbetrieb Zeichenkette
string url='http://192.168.10.13/632/633/648/700/1600/8700/8326/8743/8314/8830/T';
!--timeout=seconds ! während der Dauer der Abfrage werden von der CCU keine anderen Skripte ausgeführt
! CUxD-Handbuch 5.8.2 System.Exec "Es ist zu beachten, dass die Verarbeitung des HM-Scripts erst fortgesetzt wird, nachdem das aufge
rufene Programm beendet wurde. Während dieser Zeit werden keine anderen HM-Scripts ausgeführt!"
!Übertrag der Raumtemperatur Esszimmer ...4d6 an die Heizung als Parameter 8740
WriteLine("Hallo Welt!");
string url='http://192.168.10.13/700';
!--timeout=seconds
!Werte aktualisieren
var programObj = dom.GetObject("Heizungswerte abfragen");
programObj.ProgramExecute();
!http://192.168.10.13/Passwort/S700=0 (Schutzbetrieb)
!http://192.168.10.13/Passwort/S700=1 (Automatik)
!http://192.168.10.13/Passwort/S700=2 (Reduziert)
!http://192.168.10.13/Passwort/S700=3 (Komfort)
string url='http://192.168.10.13/700';
!--timeout=seconds
!Werte aktualisieren
var programObj = dom.GetObject("Heizungswerte abfragen");
programObj.ProgramExecute();
WriteLine("Hallo Welt!");
!http://192.168.10.13/Passwort/S700=0 (Schutzbetrieb)
!http://192.168.10.13/Passwort/S700=1 (Automatik)
!http://192.168.10.13/Passwort/S700=2 (Reduziert)
!http://192.168.10.13/Passwort/S700=3 (Komfort)
! Anweisung senden
string urlset ='http://192.168.10.13/S700=3';
WriteLine("Befehl: " # urlset);
! Kontrollabfrage
string url='http://192.168.10.13/700';
!--timeout=seconds
WriteLine("Hallo Welt!");
!http://192.168.10.13/Passwort/S700=0 (Schutzbetrieb)
!http://192.168.10.13/Passwort/S700=1 (Automatik)
!http://192.168.10.13/Passwort/S700=2 (Reduziert)
!http://192.168.10.13/Passwort/S700=3 (Komfort)
string url='http://192.168.10.13/700';
!--timeout=seconds
!Werte aktualisieren
var programObj = dom.GetObject("Heizungswerte abfragen");
programObj.ProgramExecute();
WriteLine("Hallo Welt!");
string url='http://192.168.10.13/A';
!--timeout=seconds
!----------------------------------------------------------------------------
!----------------------------------------------------------------------------
!----------------------------------------------------------------------------
!----------------------------------------------------------------------------
!----------------------------------------------------------------------------
!----------------------------------------------------------------------------
string wort = "8830"; !Trinkwassertemperatur
integer laenge = wort.Length();
!WriteLine("laenge: " # laenge);
integer pos = stdout.Find(wort);
!WriteLine("pos:" #pos);
pos = pos + 28;
string daten = stdout.Substr((pos + laenge +1), 100);
!WriteLine("daten :"#daten);
integer pos = daten.Find(wort);
daten = daten.Substr(0, (pos));
integer zahl = daten.ToFloat();
dom.GetObject("H_Trinkwassertemperatur_24h").State(zahl);
WriteLine("H_Trinkwassertemperatur_24h: "#zahl);
WriteLine("Hallo Welt!");
Query connected DS18B20 temperature sensors and save the output as a system variable:
string url='http://192.168.10.13/ipwe.cgi';
!--timeout=seconds
WriteLine("Hallo Welt!");
8.4 IoBroker
BSB-LAN-User „hacki11“ developed an adapter for ioBroker, which he kindly made available in his GitHub-Repo.
Thanks a lot!
The following examples for ioBroker integration were written by FHEM forum member „Thomas_B".
Thanks a lot!
Afterwards under 'ioBroker Admin → Instances' open the added Open adapter instance 'parser.0' for configuration:
There click on the '+', then under 'Name' assign the name 'TWW_nominal_setpoint'. Under 'URL or filename' enter the IP of the BSB-LAN adapter
including parameter number. Afterwards click on the Edit' icon.
The input mask opens, in which the following string must be entered under 'RegEx'. string must be entered:
asser\s+-\s+TWW Nennsollwert\:\s+(\d{2}.\d)
The query interval can be set as required, then click on 'Save and close'. Save and close'. The adapter configuration is finished.
Under 'ioBroker Admin → Objects' you will now find the folder 'parser.0' and the data names created under the instance 'parser.0' and their
values:
[{"tpl":"tplValueFloat","data":{"oid":"parser.0.TWW_Nennsollwert","visibility-cond":"==","visibility-val":1,"is_comma":"true","fact
or":"1","html_append_singular":" ºC","html_append_plural":" ºC","gestures-offsetX":0,"gestures-offsetY":0,"is_tdp":false,"signals-c
ond-0":"==","signals-val-0":true,"signals-icon-0":"/vis.0/bluefox_ehome/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":fa
lse,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"
/vis.0/bluefox_ehome/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-
hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis.0/bluefox_ehome/lowbattery.png","signals-icon-s
ize-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide
","lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"ri
ght","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color
":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"digits":"1"},"style":{"le
ft":"398px","top":"428px","width":"59px","height":"18px","color":"white","text-align":"right","font-family":"Arial, Helvetica, sans
-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"","z-index":"20"},"widgetSet":"basic"}]
[{"tpl":"tplJquiButtonState","data":{"oid":"javascript.0.scriptEnabled.Heizung_Automatik_Schalter(2)","g_fixed":false,"g_visibility"
:false,"g_css_font_text":true,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signal
s":true,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","buttontext":"Heizung Auto
matik (AN)","signals-cond-0":"==","signals-val-0":"Betriebsart: 1 - Automatik","signals-icon-0":"/vis.0/main/img/on.png","signals-ic
on-size-0":"33","signals-blink-0":false,"signals-horz-0":"-1","signals-vert-0":"6","signals-hide-edit-0":false,"signals-cond-1":"!="
,"signals-val-1":"Betriebsart: 1 – Automatik","signals-icon-1":"/vis.0/main/img/off.png","signals-icon-size-1":"20","signals-blink-1
":false,"signals-horz-1":"2","signals-vert-1":"17","signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-
icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signal
s-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-
position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-c
olor":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"value":
"","signals-oid-1":"parser.0.Betriebsart","signals-oid-0":"parser.0.Betriebsart"},"style":{"left":"14px","top":"426px","width":"219p
x","height":"27px","z-index":"1","font-size":"x-small"},"widgetSet":"jqui"}]
The inclusion of the respective values at 'Object ID [0]' and 'Object ID [1]' ('parser.0.mode') is explained below.
In the adapter configuration for 'parser.0' create a rule called 'mode', then enter the IP (including the parameter number) of the of the BSB LAN
adapter and open it for editing.
(\w+:\s+\d\s+-\s+\w+)
Parameter query:
Querying parameters is done in Loxone using virtual HTTP inputs and the JSON function of BSB-LAN (URL command /JQ= ). A more detailed
description of the virtual HTTP inputs and the commands can be found in the Loxone documentation and in the Loxone Wiki.
Attention: The development of the JSON function in BSB-LAN is not yet finalized, changes may occur at any time. The configuration must then be
adapted accordingly.
The following example shows the setup using the parameter "8700 outdoor temperature".
To add a virtual HTTP input, the line "Virtual inputs" must first be selected in the "Peripherals" window. Now click on the "Virtual HTTP input"
button that appears at the top:
In the properties you enter the name and the corresponding values (for the query cycle you should choose an appropriate value), the URL of the
BSB-LAN adapter is extended by the command
/JQ=8700
Then add a virtual HTTP input command to the virtual HTTP input:
Here you define what should be read from the JSON export. The JSON export is structured as follows:
{
"8700": {
"name": "Aussentemperatur","value": "16.6",
"unit": "°C",
"desc": "",
"dataType": 0
}
}
Under "Visualization" in the properties, a designation should be entered for "Category" and "Room" so that the later display in the Loxone app
functions accordingly (here: outdoor area, weather). The now read values of the outdoor temperature sensor can then be displayed in the Loxone
app and the statistics can be visualized via graph.
8.6 IP-Symcon
The BSB-LAN users „sokkederheld" and „Joachim" presented their IPS scripts plus screenshots in the Symcon forum: here and here.
Thanks a lot!
BSB-LAN user Ronald also wrote a well documented example, you can find it here (German language).
Thanks a lot!
The following example script uses the integrated MQTT server of FHEM and is written for a gas fired burner including the calculation of the
heating power. So the last part isn't neccessary for / available within oil fired burners, heat pumps and so on.
The notify uses a perl function in 99_myUtils.pm to create the reading "Leistung":
sub setHzgLeistung{
my $drehzahl=ReadingsVal("Hzg_Therme", "Geblaesedrehzahl",0);
my $leistung;
if ($drehzahl > 0) {
$leistung = ($drehzahl- 1039.1)/383.1; # Heizungspezifische Parameter
}
else {
$leistung = 0;
}
fhem("setreading Hzg_Therme Leistung $leistung");
}
This example uses the integrated MQTT2 server in FHEM, after the successful configuration the readings are displayed automatically.
As soon as you set the IP of the FHEM server in the file BSB_lan_config.h, the MQTT2 device with the readings appears:
*The following example was written by the member "Luposoft" of the FHEM forum. You can see the original post here.
Thanks a lot!
This publish output sends the MQTT telegram to the world undirected, without knowing if anyone is listening (a basic principle of MQTT).
8.10 EDOMI
The following example comes from BSB-LAN-User Lutz.
Thanks a lot!
The query of values from BSB-LAN is done by means of the created logic block 19001820.
The module accesses the gateway via the JSON interface of BSB LAN and returns the corresponding values depending on the specified
parameter.
The values A1 to A5 can then be further processed via other blocks. In this example, the outdoor temperature is written to an internal
communication object in order to output the contents in the Visu, for example, or the values for the operating time are stored in a data archive in
order to determine running times of the heating system from them later.
Home Assistant from version 2024.2.0 does not support self-configured (MQTT) entities that use the device name in the name!
BSB-LAN-User herr.vorragend has created a detailed description for the integration into HomeAssistant via MQTT.
Thanks a lot!
The following description shows how BSB-LAN can be integrated into Home Assistant via MQTT and without additional automation workarounds.
This method does not require a REST API and writes configuration changes directly to the heating controller using the available on-board means.
It is advisable to work with Packages at this point. This way all configurations of all domains can be managed and edited in one YAML file.
There are several possibilities for the manual drinking water push. Either via the switch domain or just a button that triggers the DHW push. Since
there is no feedback from the therme, the button is probably the better solution. The switch will never know in which status the drinking water
push is currently.
switch:
- name: "BSB-LAN Manueller TWW-Push"
unique_id: bsb_lan_switch_manueller_tww_push
state_topic: "BSB/10019"
command_topic: "BSB"
payload_on: "S10019=1"
payload_off: "S10019=0"
state_on: "1 - Ein"
state_off: "0 - Aus"
availability_topic: "BSB/status"
device:
{
identifiers: ["00000002"],
name: "Heizung",
model: "Arduino Due",
manufacturer: "Github",
}
button:
- name: BSB-LAN Trinkwasserpush #war in v2.x noch 1603
unique_id: bsb_lan_button_trinkwasserpush
command_topic: "BSB"
payload_press: "S10019=1"
qos: 0
retain: false
availability_topic: "BSB/status"
device:
{
identifiers: ["00000002"],
name: "Heizung",
model: "Arduino Due",
manufacturer: "Github",
}
If you want to use not only the Climate entity, but also Select entities for the operating mode, this is done as follows:
binary_sensor:
- name: BSB-LAN Kesselpumpe Q1
state_topic: "BSB/8304"
payload_on: "255 - Ein"
payload_off: "---"
unique_id: bsb_lan_kesselpumpe_q1
availability_topic: "BSB/status"
device:
{
identifiers: ["00000002"],
name: "Heizung",
model: "Arduino Due",
manufacturer: "Github",
}
The number domains are extremely useful if you want to write numeric values directly back to the Therme via MQTT:
number:
- name: BSB-LAN Heizkreis Komfortsollwert # Heizkreis 1 - Komfortsollwert
unique_id: bsb_lan_heizkreis_komfortsollwert
state_topic: "BSB/710"
command_topic: "BSB"
command_template: "S710={{ value }}"
mode: slider
min: 12
max: 26
step: 0.1
unit_of_measurement: °C
device_class: temperature
icon: mdi:temperature-celsius
availability_topic: "BSB/status"
entity_category: "config"
device:
{
identifiers: ["00000002"],
name: "Heizung",
model: "Arduino Due",
manufacturer: "Github",
}
sensor:
- name: "BSB-LAN Aussentemperatur"
state_topic: "BSB/8700"
unique_id: bsb_lan_aussentemperatur
unit_of_measurement: °C
device_class: temperature
state_class: measurement
availability_topic: "BSB/status"
device:
{
identifiers: ["00000002"],
name: "Heizung",
model: "Arduino Due",
manufacturer: "Github",
}
# ================================
# FEHLERHISTORIE 1
# ================================
In addition to the MQTT sensors above, one could still calculate the spread using a template sensor:
template:
- sensor:
- name: bsb_lan_temperaturspreizung
unique_id: bsb_lan_temperaturspreizung
state: "{{ (states('sensor.bsb_lan_kesseltemperatur_istwert') | float(0) - states('sensor.bsb_lan_ruecklauftemperatur_istwer
t') | float(0) ) | round(1) }}"
unit_of_measurement: °C
device_class: temperature
Sidenote:
The following lines were added here for all configurations. This looks unusual and only causes many redunant lines of code. But it has the
advantage that all entities in Home Assistant are merged to one device.
device:
{
identifiers: ["00000002"],
name: "Heizung",
model: "Arduino Due",
manufacturer: "Github",
}
So you can delete it, but then there are only many single entities.
The following screenshots show the display in HomeAssistant.
The following examples demonstrate how it is possible to integrate BSB-LAN into Home Assistant individually by defining sensor and switch
entities by yourself. As always when it comes to Home Assistant, the same applies here: There are many ways to reach your goal, there is no
"one" best solution. Therefore all examples are to be seen as a suggestion for further development.
A comprehensive BSB-LAN dashboard in Home Assistant could look like this, for example:
MQTT sensor
Reading out data via MQTT is recommended for all values that change continuously, such as temperature values. The prerequisite for this is, of
course, that you use an MQTT broker and the values to be read out are all published via MQTT.
Example for a sensor, which reads out the supply temperature of the heating circuit:
This sensor will appear in Home Assistant under the name sensor.bsb_lan_flow_temperature.
The following sensor definition creates a sensor for reading out various heating parameters that rarely or almost never change (operating mode,
comfort setpoint, etc.). The state (value) of the sensor contains the "SW diagnostic code" in this example, all other values are set as attributes of
the sensor. The sensor makes a request against BSB-LAN every 60 seconds.
sensor:
- platform: rest
name: BSB-LAN Status
resource: "http://<BSB-LAN-IP>/JQ=700,1600,8000,8003,6705,710,712,720,721,1610,1612,5400"
method: POST
username: !secret bsb_lan_user
password: !secret bsb_lan_pass
scan_interval: 60
value_template: "{{ value_json['6705'].value }}"
json_attributes:
- "700"
- "1600"
- "6705"
- "8000"
- "8003"
- "710"
- "712"
- "720"
- "721"
- "1610"
- "1612"
- "5400"
To make the attributes of this sensor available as separate sensors to be comfortably integrated in the UI, further definitions are necessary.
Shown in the following example using parameters 700 (operating mode) and 1610 (TWW nominal setpoint):
sensor:
- platform: template
sensors:
bsb_lan_betriebsart:
unique_id: bsb_lan_betriebsart
friendly_name: BSB-LAN Betriebsart
value_template: "{% if states('sensor.bsb_lan_status') is defined and states('sensor.bsb_lan_status') != 'unavailable' %}{{
state_attr('sensor.bsb_lan_status', '700')['value'] }}{% else %}{{ states('sensor.bsb_lan_betriebsart') }}{% endif %}"
attribute_templates:
desc: "{% if states('sensor.bsb_lan_status') is defined and states('sensor.bsb_lan_status') != 'unavailable' %}{{ state_at
tr('sensor.bsb_lan_status', '8000')['desc'] }}{% else %}{{ state_attr('sensor.bsb_lan_betriebsart', 'desc') }}{% endif %}"
bsb_lan_tww_nennsollwert:
unique_id: bsb_lan_tww_nennsollwert
friendly_name: BSB-LAN TWW Nennsollwert
value_template: "{% if states('sensor.bsb_lan_status') is defined and states('sensor.bsb_lan_status') != 'unavailable' %}{{
state_attr('sensor.bsb_lan_status', '1610')['value'] }}{% else %}{{ states('sensor.bsb_lan_tww_nennsollwert') }}{% endif %}"
unit_of_measurement: °C
device_class: temperature
The if queries in the code ensure that the sensors keep their previous value even if the "BSB-LAN Status" sensor is temporarily unavailable (e.g.
when HA is restarting). The above example would create the sensors sensor.bsb_lan_operating_mode and sensor.bsb_lan_tww_setpoint in
Home Assistant.
This creates a service named rest_command.bsb_lan_set_parameter. This service can now be used to set any parameter.
The following example creates a switch that can be used to turn the automatic mode of the heater on and off:
switch:
- platform: template
switches:
bsb_lan_betriebsart_automatik:
friendly_name: BSB-LAN Betriebsart Automatik
value_template: "{{ is_state('sensor.bsb_lan_betriebsart', '1') }}"
turn_on:
service: rest_command.bsb_lan_set_parameter
data:
parameter: 700
value: 1
turn_off:
service: rest_command.bsb_lan_set_parameter
data:
parameter: 700
value: 0
In Home Assistant this switch can now be used as switch.bsb_lan_operating_mode_automatic. If it is activated, the value 1 ("automatic") is set
for parameter 700, deactivating it sets the value 0 ("protection mode"). As you can see, the switch uses the sensor
sensor.bsb_lan_operating_mode defined above to determine its current state (on/off).
The following code creates two automations, which can be used as a basis for an input field for setting the TWW nominal setpoint. The input field
will also show the currently set value of course. Note: The code must be inserted into the automations.yaml file! You must have created the
input field manually in the interface under "Configuration/Helpers" before:
input_number:
bsb_lan_tww_nennsollwert:
name: BSB-LAN TWW Nennsollwert Input
icon: mdi:thermometer
mode: box
min: 20
max: 65
step: 0.5
unit_of_measurement: °C
The first trigger listens to a change in the input field and sets the heater paramater accordingly using the REST command defined above. The
second trigger responds to a change of the parameter coming from the heater and updates the content of the input field accordingly.
The previous solution was expanded by BSB-LAN user Florian for being able to control two controllers and four heating circuits. He
made his solution available in his GitHub Repo.
Thanks a lot!
Attention
The above mentioned integration is currently only compatible with BSB-LAN version 1.0, NOT with the current version! For the integration of
the current BSB-LAN version it is therefore recommended to use the following integration options via MQTT or JSON.
8.12 SmartHomeNG
BSB-LAN-User Thomas wrote a plugin for SmartHomeNG and made it available in his GitHub Repo.
Thanks a lot!
8.13 Node-RED
BSB-LAN user Konrad wrote a module for Node-RED which makes it easy to implement BSB-LAN.
Thanks a lot!
BSB-LAN user n300 has written a "queuing flow" extension for the above-mentioned Node-RED module. This avoids timeouts and/or
connection refuses (ECONNECTREFUSE) caused by simultaneous requests as far as possible, since requests are now processed in
chronological order. The flow and a more detailed description can be found here.
Thanks a lot!
Karl-Heinz's solution is interesting for those users who do not (want to) use complex home automation software to retrieve data from the heating
8.15 Volkszaehler
BSB-LAN user Michael has written a script to include BSB-LAN data in the Volkszaehler project. He provides the script including a
description in his GitHub repo.
Thanks a lot!
8.16 Homebridge
BSB-LAN user Michael has written a plugin for Homebridge that allows an easy integration of BSB-LAN.
Thanks a lot!
8.17 Jeedom
BSB-LAN-User bernard-dandrea has written a plugin for Jeedom (description in French) that allows an easy integration of BSB-LAN.
Thanks a lot!
Further on to chapter 9
Back to TOC
To now read out the telegram / command ID of a new parameter, all you need is to connect your microcontroller to a Laptop/PC via USB while it
is connected to your heating system and follow these steps (BSB only, LPB is similar, but telegram structure is a bit different):
Enable logging to the serial console and turn on verbose output with URL-Parameter /V1 (if you deactivated the verbose mode in the file
BSB_lan_config.h before) on the microcontroller, e.g. http://192.168.178.88/V1. Alternatively, you can log bus telegrams to SD card by using
(only) logging parameter 30000 (see logging section above) and set variable log_unknown_only to 1 (URL command /LU=1) and follow
logging entries with URL command /D.
On the heating system, switch to the parameter you want to analyze (using the command wheel, arrows or whatever input mode your
heating system has).
Wait for "silence" on the bus and then switch forward one parameter and then back again to the parameter you want. You should now have
something like this on the log:
The first four lines are from the parameter you switched forward to, the last four lines are from the parameter you want to analyze (doing the
switching back and forth only makes sure that the last message on the bus is really the parameter you are looking for). Instead of DSP1 you
might see RGT1, depending on what device you are using to select the parameter.
Note:
If the parameter you want to read out has different optional setting between which you can choose, you should try to read out the command
ID for each option. For that you (usually) have to change the optional setting and confirm the change by pressing the OK-button. But:
Please only do this if you are sure that these settings are not critical for the function of your heating system or your installation! If you change
the settings, then you also have to write down the specific name for the chosen option where the command ID belongs to. At the end you
should go back to the preset setting. If the parameter you are decoding has a unit like degrees, volt or so, please also write that one down.
Important:
Write down the command ID with the specific name and unit (if available) of the new function. If you also read out the different optional settings
for a new parameter, don't forget to also write it down. In the end you should have a list which exactly shows the specific command ID together
with the name of the parameter, the state or shown value at the time you read it out and (if available) the unit (like degrees or so). The same goes
for the optional settings. Your work will be useless if e.g. you just write down the command ID togehter with the name of the new parameter -
because then we still don't know what the specific command ID means (in terms like on/off etc.).
Further on to chapter 10
Back to TOC
Clarification:
Whenever I'm talking about the "controller", I mean the so called "BMU" (boiler management unit). That's the device with all the electronics inside,
which controls the whole function of the heating system and which is located inside the housing of the heating system. At this device the sensors,
pumps and the operating and room units are connected to.
The 'operating unit' and the optional room units are the devices located outside at the housing of the heating system, the ones with a display and
some buttons to interact with the BMU/controller.
Note:
Some recent models of Broetje don't have a BSB and are NOT compatible with BSB-LAN. Please see chapter 10.2.3 for further
informations.
In the following subchapters I'll give a short overview of the main aspects and differences of these bus/connection systems.
BSB (Boiler System Bus) and LPB (Local Process Bus) are two different bus types, which can be divided into two different usage purposes:
1. The BSB is a 'local' bus, where e.g. parts like the operating unit or a room unit are connected to the controller of the heating system. It offers
'local' access to the controller.
2. The LPB is a bus, which offers access across connected controllers (if the installation was set up right!). Using the LPB you could e.g.
connect two or more heating units to realize a burner cascade or to connect the controller of you heating system with the controller of your
solarthermic system.
If you have an existing installtion like that you could connect the BSB-LPB-LAN adapter to one of the mentioned controllers and would have
access to certain parameters of both controllers. in that case you would have to pay attention to use the correct bus address of the units to
make sure you reach the desired controller.
Even though it's possible to use one adapter in an existing LPB structure with different controllers and query each controller by its own address,
it's advisable to use one adapter-setup (microcontroller + adapter) for each controller if they also offer a BSB port. It's just more comfortable
because you wouldn't have to change the destination address every time you want to query another controller.
10.1.1 BSB
The BSB (Boiler System Bus) is basically a 'local' bus. By 'local' in this case, I mean the specific controller that is used in the heat generator.
The control panel, room units and expansion modules, for example, are connected to the BOD. These devices then have 'local' access to the
controller. If the BSB-LAN setup is connected to the BSB, all bus devices of this controller can be accessed due to the unique addressing.
The BSB is available at the following presented controllers of the TYps RVS, LMS1x as well as LMU7x. If your controller has a BSB and an LPB
connection and no other controller via LPB (e.g. another heat generator in a cascade connection, a solar system controller or similar) and you
only want access to this one controller, then the connection of the BSB-LAN setup to the BSB connection is recommended.
Addressing Because of the bus structure, each participant gets a specific address. The following addresses are already defined:
Note:
The preset bus address 0x42 of the BSB-LPB-LAN adapter is the BSB device address 66. This address is set in the file BSB_LAN_config.h .
10.1.2 LPB
The LPB (Local Process Bus) is an 'overlapping' bus for the use of several connected controllers in a communication-capable network.
Via the LPB, several controllers can be connected to each other and (if the parameters are set correctly) they can share certain values or
influence each other (like sending a telegram for starting the burner).
In this way, for example, a cascade circuit of several burners can be realized or a gas or oil heating system can be 'connected' (in terms of control
technology) with a solar system or a solid fuel boiler.
The correct installation and connection of the individual components and the correct set up of the respective controllers should normally already
be done by the installer of the heating system.
A comprehensive query of values or parameters of two or more controllers in the LPB network via the BSB-LAN setup can be done by adding the
specific address of the bus participant.
The specific technical data, performance characteristics and requirements for corresponding installations and parameterizations with regard to
the device and segment addresses can be found in the respective technical documentation of the manufacturers.
Since the installation, which can be quite complex, is usually already carried out by the respective installer during installation, no further special
features are discussed here.
For the interested user, two documents from "Siemens Building Technologies - Landis & Staefa Division" are recommended:
Addressing
The addressing within the LPB is different than the one within the BSB. Basically there are two 'addresses': an address of a segment and an
address of a unit. Both have different meanings. Because the topic LPB is pretty complex, please search for further informations by yourself.
Especially the documents about the LPB of "Siemens Building Technologies - Landis & Staefa Division" should be regarded as they are the main
sources for these informations.
Note:
10.1.3 PPS
Right now, the PPS will just be mentioned really short here, because it's only available at old controllers and therefore not relevant for most of the
users. As already said, PPS is not a real bus. It's more a point-to-point communication protocol for the usage of connecting a room unit to a
controller for example. So if you have an old heating system like a Broetje WGB 2N.x and you have (or can connect) a room unit like a QAA50 or
QAA70, then you are using PPS.
The adapter has to be connected the same way the room unit would have to be. Please read the manual of your heating system to find out about
that. In most cases though the two pins of the connectors at the controller are labeled as "A6" and "MD" (or just "M"). In that case, you have to
connect "A6" to "CL+" and "MD"/"M" to "CL-" of the adapter.
The functionality of this 'bus' is very limited, so you probably only have a dozen of parameters available. In the webinterface of BSB-LAN you
only have access to the category "PPS-Bus".
Note:
If there's already a room unit like QAA70 connected to the controller, BSB-LAN only can read values. If you want BSB-LAN to be able to set
certain values, you would have to disconnect the room unit for the time you want to have the BSB-LAN adapter connected!
Please take notice of the comments at the specific PPS definements in the file BSB_LAN_config.h when using PPS!
Important note for users of the old (retired) setup adapter v2 + Arduino Mega 2560:
Because of the time-critical communication of the PPS, it is recommended to adjust the setup for using the hardware serial. Therefore the
following adaptions have to be done:
The adapter has to be plugged in one pinrow towards the center of the the arduino.
The configuration has to be changed: set the pins within the variable "BSBbus" to 19 (RX) and 18 (TX) (instead of "68,69").
The entire range of functions of the respective controller types is generally available via BSB-LAN. However, this is naturally different with regard
to the available parameters: A controller of the latest generation has more parameters and setting options than a controller of the oldest
generation. However, this does not necessarily make the heating system more inefficient or make it 'outdated' and unusable per se! By using
BSB-LAN, even the oldest supported controller usually can be made a little 'smarter' and integrated into the home automation system though.
Note
In the following, the basic controller series such as LMU, LMS, RVS are roughly introduced. This is only intended to provide a basic
understanding and overview of the different controller series.
As a further subdivision, the two digits after the letter combination are usually also used, e.g. "RVS43.xxx". However, in order to keep the
scope of this chapter manageable, a further, more detailed subdivision of the respective controller series with the complete controller
designation, e.g. "RVS43.222/xyz" or "RVS43.325/xyz" and their specific differences to each other will be omitted as far as possible.
If more detailed, controller-specific information on the respective controller type is required, the relevant instructions of the heating
manufacturer should be consulted. If these are not available or not comprehensive enough, it is recommended to search for the manuals of
the controller manufacturer "Siemens Albatros" by specifying the complete controller identification.
Controllers of the series LMU54/LMU64 are installed in older systems, they are out of date. These controllers are based upon the OpenTherm
protocol which is incompatible with the BSB-LAN project - they do not have BSB/LPB/PPS. This type of controller can be retrofitted with LPB by
means of a ClipIn module (OCI420) though.
Using BSB-LAN with these controller models is, according to experience, only possible to a limited extent. More detailed information can be
found in chapter 10.2.4.
For retrofitting LPB with a ClipIn module (OCI420), please see chapter 10.2.6.
Controllers of the series LMU74/LMU75 appear to be the successors of the LMU54/LMU64 controller series and are also no longer installed.
The LMU7x controller type usually just offers BSB connection. If needed, LPB needs to be retrofitted using a ClipIn module (OCI420) (this is not
necessary for using BSB-LAN though!).
The control unit usually is a variant of the Siemens AVS37.294 (so called "ISR Plus" whithin Broetje).
Usually NTC10k (QAD36, QAZ36) and NTC1k (QAC34 = outdoor temperature sensor) are used as sensors.
Controllers of the series LMS seem to be the successors of the LMU series and thus the current controller generation.
The (functional) difference between the LMS14 and the LMS15 seems to be the "Sitherm Pro" application to optimize the overall combustion
process, which apparently only the LMS15 controller seems to offer.
The LMS controller type usually just offers a BSB connection. If needed, LPB can be retrofitted using a ClipIn module (OCI345) (this is not
necessary for using BSB-LAN though!).
The operating unit usually is a variant of the Siemens AVS37.294 (so called "ISR Plus" whithin Broetje).
Usually NTC10k (QAD36, QAZ36) and NTC1k (QAC34 = outdoor temperature sensor) are used as sensors.
Controllers of the type RVA seem to belong to the previous controller generation and, depending on the model, only offer a PPS (RVA53) or a
PPS and a LPB connection (RVA63) but no BSB.
As an (included) operating unit usually a variant of the so called "Eurocontrol" (Broetje) is installed.
An RVA53 controller.
Controllers of the type RVP seem to be even older than RVA controllers and only offer a PPS interface.
RVSx1 controllers are used within heat pumps, the RVS21 seems to offer only a BSB connector.
RVS23 controllers are used on a particular Weishaupt model (WTU) and seem to only offer a LPB. These controllers seem to be labeled by
Weishaupt as "WRS-CPU Bx". Further information on this controller model can be found in [chapter 3.5] (chap03.md#35-special-case-
weishaupt-heating-systems).
Usually NTC10k (QAD36, QAZ36) and NTC1k (QAC34 = outdoor temperature sensor) are used as sensors.
The following gives a short overview of the main RVS controller types.
RVS21.xxx
The RVS21 is the type of controller which is used in heatpumps. It offers BSB and a pair of connectors for an optional room unit.
An RVS21 controller.
If needed, LPB can be retrofitted using a ClipIn module (OCI345) (this is not necessary for using BSB-LAN though!).
RVS41.xxx
The RVS41 is another type of controller which is used within heat pumps. it offers BSB and LPB and seems to be pretty identical to the RVS43
(at least judging by the look of it).
RVS43.xxx
The RVS43 is the series that is used, for example, in oil condensing boilers, the Broetje pellet boiler SPK, the Broetje cascade controller "ISR-
BCA" and the Broetje heating system manager "ISR-HSM"; some manufacturers (e.g. Boesch) also use this controller type in heat pumps.
However, depending on the respective heat generator or device (e.g. BCA, HSM), there are model-specific differences with regard to the
connections and the scope of functions.
RVS43 series controllers are usually equipped with (at least) one BSB and one LPB connection.
The number of connectors and functions could be expanded with an AVS75 expansion module.
The model RVS43.325 is designated by Broetje as a replacement controller and can be used, among others, for oil condensing systems of the
series BOB, SOB, WOB and the pellet heater SPK. In direct comparison to the RVS43.222 shown above from a Broetje SOB C for example, this
controller has additional connections. In case that this controller type should be used as a replacement, it must be parameterized accordingly
depending on the heating model. Further informations about this can be found within the specific replacement manual.
RVS46.xxx
The RVS46 is a small zone controller, which offers one (ZR1) or two (ZR2) connections for a pump/heating circuit. The RVS46 can control
zones/circuits by it's own, or integrated in the system via LPB connection to a main controller. It offers BSB and LPB.
The ZR1/2 is not designed for controlling the whole functionality of e.g. a complete oil fired burner.
RVS51.xxx
The RVS51 is the 'bigger' type of controller which is used in heatpumps. It offers BSB and LPB and seems to be pretty identical to the RVS63 (at
least judging by the look of it).
RVS61.xxx
The RVS61 is the 'bigger' type of controller which is used in heatpumps. It offers BSB and LPB and seems to be pretty identical to the RVS63 (at
least judging by the look of it).
RVS63.xxx
The RVS63 seems to be the 'biggest' controller with the most connectors and functions. Basically he is designed to control systems which are
more complex, e.g. additionally solar thermic systems or an integrated oven. Therefore it is named "Solar System Controller" within Broetje.
The RVS63 can already be built in within complex heating systems or it could optionally added. In that case it comes with an external housing
and must be connected via LPB to the already existing controller. In that case, all the sensors, pumps etc. of the main system have to be
connected to the RVS63, because it becomes the 'main' controller for the whole system.
An RVS63 controller.
The RVS65.xxx seems to be pretty identical to the RVS63 and -until now- was reported only once by a user as being a wall-mounted "Solar
System Controller" from Broetje.
These systems seem to have 'IWR CAN'-based controllers built in (at the heater unit "IWR Alpha", room unit "IWR IDA"), which have neither a
LPB nor a BSB.
Connectors of the new controller model at a Broetje WLC24 - this controller is incompatible with BSB-LAN!
In addition to a service socket (probably IWR CAN) there are not further documented 'L-Bus' and 'R-Bus'.
At the 'R-bus' (room unit bus) either a room thermostat (on / off) or the new 'smart' room unit "Broetje IDA" can be connected.
WATCH OUT:
At none of these connectors the BSB-LPB-LAN adapter can be connected!
However, the functionality of this type of controller (even when using BSB-LAN) is relatively limited and also dependent to a certain extent on the
software version of the controller (tested with LMU64, SW v2.08 vs. SW v3.0 vs SW v3.03): controllers with SW from v3.0 seem to offer more
functions (controllable via BSB-LAN) than controllers with SW <v3.0. In particular, the two setpoint temperature parameters 709 and 711 should
be mentioned here. On their basis the burner behavior could be determined to a certain extent - these can only be used or changed with SW
from v3.0. (Note: There is still an attempt if the burner behavior can be satisfactorily influenced by relays on another contact, but up to now we
didn't find a solution for that.)
However, according to current knowledge, parameters such as outside temperature, boiler temperature, DHW temperature, flow temperature,
etc. can be accessed within all mentioned software versions.
To be fair, it must be said here that the additional financial expense for purchasing an OCI420 LPB-ClipIn module may not be 'worthwhile'.
However, this depends on the pursued goal. If you only want to log temperatures to get a rough overview of the actual state of the heating
system, a more reasonable solution with a corresponding DS18B20 temperature sensor installation would be sufficient. If you want to be able to
e.g. query the error log of the controller, then you'll need the additional OCI420+BSB-LAN setup.
However, it has to be said clearly again that 'controlling' of the beahviour of the burner is only possible in a very limited way (if it's possible at all).
Hints for connection and configuration of an OCI420-ClipIn are given in chapter 10.2.6.
The following is an example of a complete query of an LMU64 with SW v3.03 (the 'latest' version with the most parameters available) - this gives
you an impression of what can be retrieved via BSB-LAN at best.
The Weishaupt devices also seem to have a service socket in addition to the regular operating unit, with two of the four pins provided and led
out. According to the statement of a Weishaupt user (Thanks to BSB-LAN user Philippe!), the upper one of the two pins seems to be MB and the
lower one seems to be DB.
There are, however, a few key points that usually can't be found in the operating instructions although they are necessary for a successful
operation. This mainly concerns the settings that have to be made for the LPB power supply. Furthermore, the LPB device address 1 with
segment address 0 must be set and the setting as the time master has to be made.
As always, the following information comes without any guarantee!
If you follow the instructions on the OCI420, you will most likely encounter error 81, which means "short circuit in the LPB bus or no LPB bus
power supply". If the OCI420 has been connected correctly, the LPB bus power must be activated in this case. The parameter is "LPBKonfig0".
If you call up the 'overview' of the LPBKonfig0 settings, however, the bit order is displayed from back to front (from bit 7 to bit 0!) and should be
as follows after the successful setting: 00011110.
Furthermore, the following settings have to be made:
After successful setting, no error code should occur and the red LED on the OCI420 should flash at a regular interval.
If, on the other hand, error 82 is displayed, the LPB addresses must be checked, since in this case there is an LPB address collision (which,
however, should not occur with the above settings and the default address of BSB-LAN).
Note:
If you want to retrofit an expansion module, of course see the specific manual of your heating system for further informations and call a heating
engineer for the installation.
Expansion modules of the type AVS75.xxx are used within the RVS and LMS controller types. The bus connection usually takes places via the
connector "Bus-EM".
Expansion modules for LMU controller types are named "ClipIn-module". There seem to be different types for the specific needs (e.g. relay
module, solar module). In general, the main appelation seems to be AGU2.5x (where the "x" seems to label the respective version), the bus
connection usually takes place via the connector "X50".
ClipIn-module AGU2.55.
The successor to the AVS37 model is the AVS74.xxx. It is equipped with a 3.8" LCD display and a rotary/push knob with which all settings are
made. It is also used as a room unit under the designation QAA74.
Recently some manufacturers are using a new type of operating unit though, it's called QAA75.91x. It seems to be possible to detach these units
from the heater itself and -by using an optional connection setup- to install them in your living area. In that case they are still working as the main
operating unit for the controller, but with the additional benefits of a room unit.
In addition, there has recently been another model, the AVS77.xxx. This operation unit has so far only been reported to us from a user with a
certain Baxi heating system (Baxi Luna Duo Tec MP). This unit offers (among other) buttons for changing the DHW and HC target temperature in
small steps (degrees), but no longer has a rotary knob.
Note
It seems that changing the operating mode using the DHW/HC button (in the center of the operating unit) for certain modes has the
consequence that changing it via BSB-LAN and the 'regular' parameters 1600 (DHW) and 7xx (HC) is no longer possible if an operating
mode other than "both" has been selected by using the mentioned key. The function of this new key is not (yet) implemented in BSB-LAN. If
a change of the operating modes via BSB-LAN is desired, it must be ensured that the operating mode is set to "both" by using the mentioned
key.
As optional 'local' accessory parts of the heating system, they are connected to the BSB. That's why the connector for room units is what you are
looking for, when you want to connect the adapter. So if you connect a room unit and adjusted the settings of the specific parameters (e.g. usage
and influence of the room unit and room temperature), you can directly access the measured room temp. If you don't have an external room unit,
but you can or want to measure your room temperature(s) in a different way, then you can imitate a room unit by transmitting these measured
temperatures via BSB-LAN to the controller and influence the behaviour. For that, look up the function itself and the description of the URL
The following description starts with the room units for the current heating system controllers (RVS and LMS), which are also fully supported by
BSB-LAN (so called "Broetje ISR").
Note: It seems as if the product portfolio has been supplemented with new room units and other accessories. On occasion, I'll add relevant
products here.
In addition to the optional measurement of the room temperature, it offers a presence button and the options for switching the operating mode
and for changing the room set temperature. It only has a small LCD display that shows the current room temperature. It is connected via a two-
pole cable to the BSB.
The QAA58 is the wireless version of the QAA55. It is battery operated, the AVS71.390 radio frequency receiver (868 MHz frequency) must in
turn be connected to the X60 connection of the boiler controller via cable.
At Broetje the QAA75.61x is called "room unit RGT", sometimes it is also called "room unit RGT B Top", "ISR RGT" or similar. It is also connected
by cable to the BSB, with a third connection for the optional backlight available (terminal "G +" on the controller).
The QAA78.61x is the wireless version of the QAA75.61x. It is battery operated, the AVS71.390 radio frequency receiver (868 MHz frequency)
must in turn be connected to the X60 connection of the boiler controller via cable. The above named "RGT" is extended by an "F" at Broetje, so
it's "RGTF".
Note:
At this point it has to be mentioned, that obviously two different versions of the QAA75 are available: the already mentioned room unit QAA75.61x
and the different looking QAA75.91x.
Whenever I'm referring to the "QAA75" in this manual, I mean the above described model QAA75.61x.
The QAA75.91x seems to offer the same functionality like the QAA75.61x, but it seems to be used only with some types of heating systems by
certain manufacturers (e.g. Broetje WMS/WMC C, BMK B, BMR B and Baxi Luna Platinum+). At these types of heating systems, it seems to be
used as the operating unit which is located at the housing of the heating system itself, but (in conjunction with an optional adapter, e.g. Broetje
"ISR RGA") could also be used as a room unit. In that case it seems to be still used as the operating unit, just with the additional benefit of the
functions of a room unit.
10.5.3 QAA74
The QAA74 is a pretty new type of room unit at the market, which should/will replace the QAA75 in long term. At Broetje it's called "ISR RGP"
(room unit premium), at Siemens "UI400". It is equipped with a 3,8" LCD display and a turn/push button for control purposes. Within some
specific types of heating system, it's also used as the main operating unit, named AVS74.
IDA is integrated into the domestic WLAN and requires Internet access, if you want to control the unit via app. In the case of purely local use of
the room unit (without remote access via the app), no WLAN access is required. Incidentally, the WLAN access also updates the IDA firmware.
An interesting analysis of the traffic was made here by FHEM forum member "freetz".
For connection to the BSB of the boiler controller, a BSB interface (GTW17) must be connected. Interested user must look for "ISR IDA" in this
case, so that the GTW17 is included in the package.
For controllers with the communication protocol OpenTherm (e.g. the older controller generation Broetje LMU6x), the OT interface (GTW16) must
be used.
IWR-CAN-based controllers (see chapter 3.3) can directly be connected to the service dongle GW05 (WLAN gateway).
The exact functionality and installation steps of IDA are to be taken from the corresponding instructions of the manufacturer.
The parallel use of IDA and BSB-LAN is possible in principle, however, due to the report of a user ( Thanks to FHEM-Foums member "mifh"!) a
few restrictions regarding the functional scope of BSB-LAN are known:
If IDA is connected to the BSB, then it is the master for the settings or values of
room temperature.
If these settings / values are changed via BSB-LAN, they will be overwritten with the settings / values from IDA after a short time.
It is thus no longer possible, for example, to detect the room temperatures from different rooms and to transmit them to the controller via
BSB-LAN, since IDA overwrites this.
The function of the presence button via BSB-LAN should still be available.
Further information on these room units can be found in the corresponding instructions.
The webserver OZW672 (Broetje: "ISR OZW") is connected via bus cable to the controller and with a LAN cable to the network (and, if desired,
also to the internet). If desired, one could connect with the fee-based dataportal of Broetje and offers remote access (via PC, tablet or
smartphone+app) to the controller.
The OCI700 is the servicetool used by the installation engineer. It is connected to a local computer running a special software and offers an
overview of the settings of the controller.
The following list does not replace the specific description of the used plant-specific sensor types! It only serves as an illustration and is
intended to show that, for example, it may also be possible to use more cost-effective, universal contact sensors as flow or return sensors!
When replacing sensors or expanding the system with additional sensors, it is therefore always necessary to check the specific system
documentation to see which sensors are used for the specific system!
The current controller series use (labeled) Siemens sensors, which can be roughly divided into two different sensor types as follows:
the outdoor temperature sensor QAC34 is a sensor of the type NTC 1k Ohm (NTC 1000 Ohm resistance at 25°C, resistance characteristic
decreasing with approx. 4%/K at increasing temperature, measuring range -50...70°C, tolerance +/- 1K),
the other sensors QAD36, QAL36, QAK36, QAR34, QAZ36 are sensors of the type NTC 10k Ohm (NTC 10k Ohm resistance at 25°C;
resistance characteristic decreasing with increasing temperature).
However, these sensors differ, among other things, in their design and the measuring range of the sensor element used, even within a
product category (e.g. QAD36 in the BMU or collector sensor version), so that it is not always possible to replace them with universal and
more cost-effective standard sensors of the type NTC 10k Ohm (at 25°C). However, especially in the case of two or three sensor
types/applications, the use of more cost-effective standard sensors of the NTC 10k Ohm (at 25°C) type is possible in principle, so these are
briefly described below.
The Siemens QAD36 contact sensor, called "Universal contact sensor UAF6C" at Broetje.
As a cost-effective alternative to this sensor, a universal NTC 10k Ohm (at 25°C) pipe contact sensor can be used. These standard sensors are
available in various versions, all of which have a concave bulge on one side of the metal sleeve, which makes it easier to attach the sensor to a
pipe and increases the heat-transferring surface. In my opinion, the version with a brass sleeve and an additional, slightly bent brass strip is
recommended here, since this version can be pushed well under a pipe insulation due to its slim design, the bending radius of the brass strip can
be adapted somewhat to the pipe, and the brass conducts the heat well.
It is recommended to use a corresponding heat conductive paste for the contact surface. To prevent slipping, it is advisable to fix it with a cable
tie or hose clamp.
Due to the higher ambient temperatures, it is essential to pay attention to the higher measuring range and the silicone cable when using a less
expensive NTC 10k Ohm (at 25°C) standard sensor - PVC cable types are not suitable!
A Siemens QAZ36 immersion sensor, called "Universal immersion sensor UF6C" at Broetje.
This sensor can also be replaced by a corresponding less expensive standard sensor of the type NTC 10kOhm (at 25°C).
Attention
The above-mentioned 'immersion sensors' are not suitable for direct immersion in liquid media! The name refers to the use in so-called
'immersion sleeves', such as those found in buffer or domestic hot water tanks.
*For older controller types, other sensor types may be used, which can be recognized by the product designation (for the outdoor
temperature sensors, for example, these are "QAC21" and "QAC31") - these sensors have other resistance values and characteristics and
must not be confused with the above-mentioned sensor types!
Information on the sensor types used can be found in the specific system documentation.
11.1 Broetje
Broetje BBK 22E [LMS14] (gas fired) {BSB}
Broetje EcoCondens BBS 2N (LMU64 + OCI420) (gas fired) {LPB via OCI420}
Broetje EcoCondens Kompakt BMK 20/24 RSP 160 [LMS15] (gas fired) {BSB}
Broetje EcoSolar Kompakt BMR 20/24 [LMS15] (gas fired + solar) {BSB}
Broetje EcoTherm Kompakt WBC 22/24 [LMU64 + OCI420] (gas fired) {LPB via OCI420}
Broetje EcoTherm Plus WGB2N.20 [LMU 64] (gas fired) {+ OCI420 via LPB}
Broetje EcoTherm Plus WGB EVO 15H [LMS15] (gas fired) {BSB}
Broetje EcoTherm Plus WGB-M EVO 20H [LMS15] (gas fired) {BSB}
Broetje NovoCondens SOB 26C [RVS43.222] (oil fired) + EWM [RVS75.390] {BSB}
11.2 Elco
Elco Aerotop G07-14 [RVS61.843] (heat pump) {BSB}
Atlantic Alféa Extensa AOYA 18 LALL / AOYA 30 LBTL [RVS21] (heat pump) {BSB}
Atlantic Varmax
Chappée Luna Platinum Duo 3.24 HTE [LMS15] (gas fired) {BSB}
General Waterstage (aka Fujitsu Waterstage) WC13F / WOC13RIYF [RVS21] (heat pump) {BSB}
Thermital TBox Clima TOP [RVS63] (gas fired + solar + pellet stove) {BSB/LPB}
Further on to chapter 12
Back to TOC
12.1 Installation
Installation of the Arduino IDE
Download and install the latest version of the Arduino IDE from https://www.arduino.cc/en/Main/Software for your operating system (Windows,
Mac and Linux version available).
1. Start the Arduino IDE and open the "Board Manager" under "Tools/Board".
2. In the dialog box that opens, type "Arduino SAM Boards" in the search line at the top where the Due is included.
3. Click on the entry "Arduino SAM Boards (32-bits ARM Cortex-M3) by Arduino" and then on the "Install" button.
The correctly installed SAM framework (ARM Cortex-M3) for the Arduino Due in the board manager.
Now you should be able to find and select the Due in the listing at "Tools/Board".
12.1.2 ESP32
Installation of the Specific Libraries
2. In the dialog window that opens now insert the following link in the input field at the bottom of "Additional board manager URLs":
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json . If there are already one or more URLs in
the field, the additional entry can simply be added to the existing entries separated by a comma.
5. In the dialog box that opens, type "ESP32" in the search line at the top.
7. Click on the entry, select version 2.0.2 (or higher if available) and then click on the "Install" button. If you have a version lower than 2.0.2
installed, please update to 2.0.2 (or higher).
Now you should be able to find and select the ESP32 board in the listing at "Tools/Board".
The Serial Monitor (short: SerMo) is a useful tool to observe e.g. the startup behavior and the data traffic of the microcontroller. So it is possible
to find errors or to record unknown telegrams.
Now start the "Serial Monitor". This can be done either via "Tools/Serial Monitor" (Shortcut: Ctrl+Shift+M) or simply by clicking on the
magnifying glass icon in the upper right corner of the Arduino IDE toolbar.
The moment you start the Serial Monitor, the connected microcontroller (Due/ESP32) will be restarted.
If you have configured everything correctly, you can observe the startup process and the sending and receiving of telegrams (an exemplary
output can be found at the end of this chapter).
However, if only illegible cryptic characters appear, check the setting of the transmission rate: this is at the bottom right and should be set to
115200 baud.
It is also a good idea to check "Timestamp" and to set "Both NL and CR" in the field to the left of the transmission rate.
If you send URL commands via the web interface, for example, you will see the corresponding commands or telegrams in the SerMo output.
Regularly arriving INF telegrams are broadcasts that are sent by the heating controller or by the connected control unit and possibly also by an
additional room device. The boiler temperature is sent from the control unit approximately every ten seconds, and the room temperature is usually
sent from a room unit.
If you now call up a certain parameter on the control unit, for example, then this parameter and the corresponding value are not only shown on
the display of the control unit, but also in SerMo. In this way, for example, unknown, new parameters of a heating controller and their associated
telegrams can be decoded (see chap. 09).
Note:
If you contact us (Frederik and me, Ulf) with questions or problems, you will most likely get a request to send a "SerMo log". This means that you
should create a log of the SerMo output.
To do this, uncheck "Autoscroll" at the bottom left of the SerMo window (so that the output doesn't scroll regularly) and then select the desired
lines with the mouse. With copy&paste you can paste the output into a text editor and save the file as txt-file (or post it in the forum pasted in
codetags).
The following is an example of a SerMo output of a successful start of a BSB LAN setup with an Arduino Due and a connected RVS43 controller
including INF messages of the connected control unit, which sends the boiler temperature as a broadcast approx. every ten seconds:
Further on to chapter 13
Back to TOC
home.com ), where you then set up a subdomain (here in the example bsb-lan.my-home.com ), which then has to be configured accordingly
together with the dynamic DNS provider.
Further on to chapter 14
Back to TOC
To solve this problem, the respective telegram / command ID of the relevant parameter and the associated value should be read out and
reported. Should there be multiple setting options for one parameters available, each option must also be read out, so that a clear assignment
can take place. See chap. 9 for further instructions.
Error messages of this type are hidden by default since v0.41 (but will still be queried within a complete query for example). If you still want them
to be displayed, you have to comment out the definement #define HIDE_UNKNOWN in the file BSB_lan_config.h (so that it looks like //#define
HIDE_UNKNOWN ).
To check whether the Command ID in principle is supported by the controller but not yet released for your specific device family, please execute
the URL command /Q (also see chapter 8.2.5). If any 'error 7'-messages appear with this query, please report them with the complete output of
/Q.
Possible causes are mostly to be found on the hardware side (e. g. faulty RX and/or TX connection, wrongly installed components or even a
timeout due to a switched off or not connected controller).
To update this for the specific type of controller / heating system, the belonging data packet, the exact value and the specific unit is needed.
Please see chap. 9 for further instructions.
Probably hardware fault of the adapter (defect component, eroor in the construction
Security functions passkey , TRUSTED_IP and/or USER_PASS_B64 activated/deactivated → URL not adjusted, access from wrong IP etc.
Usage of a microSD card for logging → format as FAT32, execute URL command /D0 , maybe try a different card and/or smaller capacity
→ see chapter 9.1
(Adapter,) LAN shield and/or Arduino/microcontroller is faulty (→ sometimes diffuse problems occured within the usage of cheap clones,
maybe try other/original units)
Furthermore, BSB-LAN can not connect to hidden WiFi networks. The only way to do this is by entering the BSSID of the WiFi network into the
variable bssid in the configuration file BSB_LAN_config.h .
See subchapter „The Red LED Is Lit, but a Query Isn't Possible"
Rx and/or Tx assignment isn't correct, pinout and/or connection of the adapter doesn't fit to the settings in BSB_lan_config.h
Controller was switched on after the microcontroller (automatic detection of the controller doesn't work in that case) → restart the
microcontroller
Controller is not or not in the right way connected with the adapter
Device family and variant of the controller isn't known yet → check http://<IP-Adresse>/6225/6226 and report the output
Possible access of the adapter is readonly → write access must be granted (webconfig /C : "write access" must be set to "standard" or
"complete")
Possible access of the adapter is readonly → write access must be granted (webconfig /C : "write access" must be set to "standard" or
"complete")
The logfile can get quite big, a query may take quite a long time
The graphical display ( http://<IP-Adresse>/DG ) of the logfile can't occur because of JavaScript-blockers within the browser
15.18 The 'Serial Monitor' of the Arduino IDE Doesn't Provide Data
Adapter isn't (additionally) connected via USB to your computer
Adapter isn't connected to the controller and/or controller is switched off → see subchapters above
Further on to chapter 16
Back to TOC
16. FAQ
16.1 Can I Use the Adapter & Software with a Raspbery Pi?
Yes and no.
The adapter itself can be used in conjuction with a Raspberry Pi, if you use certain parts. Please see the following chapters for further
informations: chap. 1.4 and appendix a2.2.
The BSB-LAN software can NOT be used with a RPi, it is only usable with the described microcontrollers. Further informations are
available in chap. 1.4.
16.2 Can I Connect One Adapter to Two Controllers at the Same Time?
No, this isn't possible. If you want to connect the hardware setup (microcontroller + adapter) to the BSB of the controllers, you have to use one
hardware setup for each controller. If the contollers are already connected via LPB though, please see the following FAQ.
16.3 Can I Connect an Adapter via LPB And Query Different Controllers?
Yes, if the existing controllers are already connected with each other via LPB. This LPB setup of the controllers already has to work without any
problems, so the setup has to be done correctly (e.g. device and segment addresses have to be set right).
For querying data of each controller, the specific address has to be set within BSB-LAN. See chapter 5.1 for further informations.
The multifunctional inputs of the controllers (e.g. H1, H2, H3 etc.) are not connectable directly to the adapter/microcontroller!
These inputs must be switched potential free, so you have to use a relay in conjunction with the adapter/microcontroller. See chapter 7.2 for
further informations.
Besides that, if the controller has been powered on after the microcontroller already started, the automatic detection of the connected controller
doesn't work. In this case just restart the microcontroller, so that the connected controller can be recognized by BSB-LAN.
If still certain parameters don't appear which are available via the operational unit of the heating system, please do a query of /Q (see chapter
3.3).
If the desired parameters still don't appear there (reported as 'error 7' parameters), please follow the instructions in chapter 10.
Besides that it could be helpful to put as many BSB-LAN specific readings as possible in one group for a query, so that collisions could be
avoided.
16.22 Why Isn't the Adapter Reachable Sometimes (Without a Power Failure)?
This problem only occured in rare cases, there is no clear solution for this behaviour. The only solution was a reset and reboot of the
microcontroller.
16.24 I Don't Find a LPB or BSB Connector, Only L-BUS And R-BUS?!
In this case you have a controller which isn't compatible with BSB-LAN - please DON'T try to connect the adapter!
You can see chapter 10.2.3 for further informations.
^~~~~~~~~~~~~~~~~
then the #define WIFI definition in the BSB_LAN_config.h file was not activated. To activate it, the two slashes // in front of it must be removed
and BSB-LAN must be flashed again (see also chapter 2.2.2).
16.30 I cannot find the setting for writing the parameters / The "set" button is
missing
The write mode must be allowed in the web-based configuration; to do this, the advanced settings in the web interface must first be activated.
Further on to chapter 17
All documentation for the hardware and software presented here as well as the different software versions can be found here.
This manual is also available here as a PDF version.
The software and related documentation for the use of the here presented adapter in conjunction with a Raspberry Pi 2 is available here.
For the use of the adapter with an RPi at the PPS interface the Python script "PPS-monitor" can be used.
The initial idea of connecting some kind of adapter for gaining access via BSB/LPB and the process that led to this solution can be found here
and here.
As a relatively extensive source with many parameter descriptions the "Brötje System Manual ISR Plus" is recommended to read. Besides
numerous other and model-specific instructions it's like a basic 'reference' for the parameter definitions.
For informations about the different controllers it's always worthy searching for "Albatros 2".
In-depth informations such as specifications and technical requirements of the bus types can be found in the respective documents of the
manufacturer. Especially regarding the LPB, two documents from "Siemens Building Technologies - Landis & Staefa Division" are recommended:
Regarding the installation and usage of DHT22 and OneWire sensors such as the DS18B20 there are numerous sources of information.
Especially the official DataSheets of the manufacturers should be read. Besides the already mentioned documents in the specific chapters, there
are many free tutorials, example installations and scripts available throughout the internet.
Further on to appendix A1
Back to TOC
Further on to appendix A2
ARD = Arduino
RPI = Raspberry Pi
Arduino Due:
Pin header (male, grid dimension 2,54mm), optional IC sockets for optocouplers and/or EEPROM..
For the usage of the adapter v4 in conjunction with an Arduino Due you basically only need to assemble the pins for RX1, TX1, SDA, SCL, GND
and pin 53. Other pins could be assembled due to a better stability and/or other usage.
Absolutely necessary pins for the usage in conjunction with an Arduino Due.
Raspberry Pi:
Female pinheader (double row, grid dimension 2,54mm), optional IC sockets for optocouplers and/or EEPROM..
For the usage of the adapter v4 in conjunction with a Raspberry Pi you have to put your attention on different things, which are collectively
named within the chapter 12.9.
ESP32:
Female pinheader (grid dimension 2,54mm; ESP32: single row; Olimex: double row 2x5), optional IC sockets for optocouplers..
For the use of the ESP32 specific adapter v4 on the recommended ESP32 NodeMCU from Joy-It only the pins RX2, TX2, GND and 3.3V are
needed and must be equipped with corresponding pin headers. However, for stability reasons it is recommended to equip both sides completely
with one row of pin headers each.
The following instructions do not replace any fundamental electronic knowledge, but maybe one or two of these hints could be helpful for
electronics beginners.
Generally it is helpful to position the components, bend the 'legs' of them a little bit to hold them in position on the board and check again the
positioning of each component. Start with the smallest parts first. Pay attention to the correct alignment of parts like diodes, transistors and ICs! If
everything seems fine, you can turn around the board and start soldering. Be careful that you just solder where you should so that you don't
produce shortcuts by accident.
A previous breadboard test setup (if you don't use the PCB) of course could be an option, though due to non-exclude problem sources (usage of
a wrong plug row, possible loose contacts and so on) not necessarily recommended.
Please make sure that the components do not get too hot during soldering, since they can be damaged. Therefore it is appropriate to use
corresponding IC sockets for the optocoupler ICs and the EEPROM. Once you are done with the soldering, you can just plug in the ICs. Pay
attention to the correct alignment of the sockets and optocouplers/EEPROM as well as of the diodes and transistors!
Before putting the adapter into operation, it is advisable to thoroughly check the assembly again and (if possible) measure the circuit with a
multimeter. Cold solder joints, accidentally bridged contacts and so on can cause inexplicable and difficult to diagnose misconduct of the
adapater up to an eventual controller defect!
Good luck!
Further on to appendix B
Back to TOC
Appendix B: Pinouts
B1 Arduino DUE
The following 'inofficial' Arduino DUE pinout diagram was made by Rob Gray.
It is also directly available as a PDF.
Many thanks for that great work!
Note: Please note that the pinout of some cheap clones may vary from the original pinout!
Here you can find the GPIO numbers with the corresponding pin names which are printed onto the Due.
B3 Olimex ESP32-EVB
The pinout scheme for the Olimex ESP32-EVB is depicted within the schematics from the manufacturer. The following figure shows the
corresponding section and refers to the 40-pin header.
ATTENTION: Several variables in BSB_LAN_config.h.default have changed their variable type, it's probably best to re-create your
BSB_LAN_config.h from scratch.
Parameter numbers are now floating point (i.e. XXXX.Y) because some parameters contain two different kinds of information. These are
now shown in decimal increments of 0.1. You can still qurey the "main" parameter via XXXX (without .Y)
Version 2.1
ATTENTION: New categories for LMU64 and RVD/RVP controllers due to their different numbering schemes. Will be filled over time. PPS
and sensor categories have moved up by two.
Improved built-in chart display (/DG), new configuration definement #define USE_ADVANCED_PLOT_LOG_FILE - thanks to Christian
Ramharter
Lots of bugfixes
Version 2.0
ATTENTION: LOTS of new functionalities, some of which break compatibility with previous versions, so be careful and read all the docs if
you make the upgrade!
ATTENTION: Added and reorganized PPS parameters, almost all parameter numbers have changed!
ATTENTION: Change of EEPROM layout will lead to loading of default values from BSB_LAN_config.h! You need to write settings to
EEPROM in configuration menu again!
ATTENTION: Folder locations and filenames have been adjusted for easier installation! If you update your installation, please take note that
the configuration is now in BSB_LAN_config.h (LAN in caps), and no longer in BSB_lan_config.h (lower-caps "lan")
ATTENTION: HTTP-Authentication configuration has changed and now uses plain text instead of Base64 encoded strings!
Thanks to GitHub user do13, this code now also compiles on a ESP32, tested on NodeMCU-ESP32, Olimex ESP32-POE and Olimex
ESP32-EVB boards. ESP32 code uses SDK version 2.0.2, please take note when configuring Arduino IDE!
Webinterface allows for configuration of most settings without the need to re-flash, also split into basic and extended configuration
Added better WiFi option for Arduinos through Jiri Bilek's WiFiSpi library, using an ESP8266-based microcontroller like Wemos D1 mini or
LoLin NodeMCU. Older WiFi-via-Serial approach no longer supported.
Added MDNS_SUPPORT definement in config so that BSB-LAN can be discovered through mDNS
If BSB-LAN cannot connect to WiFi on ESP32, it will set up its own access point "BSB-LAN" with password "BSB-LPB-PPS-LAN" for 30
minutes. After that, it will reboot and try to connect again.
New MQTT functions, including allowing any parameter to be set by an MQTT message and actively query any parameter once by sending
Setting a temporary destination address for querying parameters by adding !x (where x is the destination id), e.g. /6224!10 to query the
identification of the display unit
URL commands /A, /B, /T and /JA have been removed as all sensors can now be accessed via parameter numbers 20000 and above as
well as (currently) under new category K49.
HTTP Authentification now uses clear text username and password in configuration
PPS users can now send time and day of week to heater
URL command /JR allows for querying the standard (reset) value of a parameter in JSON format
Consolidated data and value types: New data types VT_YEAR, VT_DAYMONTH, VT_TIME as subsets of VT_DATETIME for parameters 1-
3, replacing VT_SUMMERPERIOD and adjusting VT_VACATIONPROG. New value types DT_THMS for time consisting of
hour:minutes:seconds
MQTT: Use MQTTDeviceID as a client ID for the broker, still defaults to BSB-LAN. ATTENTION: Check your config if you're broker relies on
the client ID in any way for authorization etc.
Version 1.1
ATTENTION: DHW Push ("Trinkwasser Push") parameter had to be moved from 1601 to 1603 because 1601 has a different "official"
meaning on some heaters. Please check and change your configuration if necessary
ATTENTION: New categories added, most category numbers (using /K) will be shifted up by a few numbers.
New parameters for device families 25, 44, 51, 59, 68, 85, 88, 90, 96, 97, 108, 134, 162, 163, 170, 195, 209, 211
Added definement "BtSerial" for diverting serial output to Serial2 where a Bluetooth adapter can be connected (5V->5V, GND->GND, RX-
>TX2, TX->RX2). Adapter has to be in slave mode and configured to 115200 bps, 8N1.
Version 1.0
/JC URL command gets list of possible values from user-defined list of functions. Example: /JC=505,700,701,702,711,1600,1602
Logging telegrams (log parameter 30000) now writes to separate file (journal.txt). It can be reset with /D0 (same time with datalog.txt)
command and dumped with /DJ command.
lots of bugfixes
Version 0.44
Added webserver functionality via SD card and various other improvements from GitHub user dukess
last version completely tested on Mega 2560. Future versions may still run on the Mega, but will only be tested on the Arduino Due.
Version 0.43
Added support for HardwareSerial (Serial1) connection of the adapter. Use RX pin 19 in bus() definition to activate. See manual/forum for
hardware details.
Added definement DebugTelnet to divert serial output to telnet client (port 23, no password) in BSB_lan_config.h
Added possibility to control BSB-LAN (almost?) completely via USB-serial port. Most commands supported like their URL-counterparts, i.e.
//xxx to query parameter xxx or //N to restart Arduino.
Many new parameters, please run /Q to see any possible changes for your device family and report back to us!
Added global variables (arrays of 20 bytes) custom_floats[] and custom_longs[] for use with BSB_lan_custom.h, for example to read sensors
etc. Output of these variables is done via new URL command /U
Added device fmilies 91, 92, 94, 118, 133, 136, 137, 165, 184, 188 (various controllers like QAA75 or AVS37)
Added STL files to print a case with a 3D printer (thanks to FHEM user EPo!)
New data types VT_CUSTOM_ENUM and VT_CUSTOM_BYTE to extract information from non-standard telegrams (such as 702/703)
Added localization! Now you can help translate BSB-LAN into your language! Simply copy one of the language files from the localization
folder (LANG_DE.h is the most complete) and translate whatever you can. Non-translated items will be displayed in German. Attention:
Language definition in BSB_lan_config.h is now #define LANG For example: #define LANG DE
Added export to MQTT broker, use log_parameters[] in BSB_lan_config.h to define parameters and activate MQTTBrokerIP definement.
Added support for WiFi modules such as an ESP8266 or a Wemos Mega connected to Serial3 (RX:15/TX:14) of the Arduino. The ESP8266
has to be flashed with the AT firmware from Espressif to work. Please take note that WiFi over serial is by design much slower (only
115kpbs) than "pure" TCP/IP connections.
Added new category "34 - Konfiguration / Erweiterungsmodule". All subsequent categories move one number up!
Lots of new parameters coming from device family 123, please run /Q to see if some parameters also work for your heater!
Lots of new yet unknown parameters through brute force querying :) (parameter numbers 10200 and above)
Added further PPS-Bus commands, moved parameter numbers to 15000 and above
Default PPS mode now "listening". Use third parameter of bus definition to switch between listening and controlling, 1 stands for controlling,
everything else for listening, i.e. BSB bus(68,67,1) sends data to the heater, BSB bus(68,67) only receives data from heater / room
controller. You can switch between modes at run-time with URL command /P2,x where x is either 1 (for controlling) or not 1 (for listening
only)
Added JSON export; query with /JQ=a,b,c,d... or push queries to /JQ or push set commands to /JS
Rewrote device matching in cmd_tbl to accomodate also device variant (Gerätevariante). Run /Q to see if transition has worked for your
device!
Added BSB_lan_custom_setup.h and BSB_lan_custom_global.h for you to add individual code (best used in conjunction with
BSB_lan_custom.h)
Marked all (known) OEM parameters with flag FL_OEM. OEM parameters are set by default as read-only. To make them writeable, change
FL_OEM from 5 to 4 in BSB_lan_defs.h
Increased performance for querying several parameters at once (similar to category query)
Bugfix in reset function (/N), clear EEPROM during reset with /NE
Added favicon.ico
Split of cmdtbl into cmdtbl1 and cmdtbl2 due to Arduino's(?) limit of 32kB size of struct, opening up more space for new parameters.
Version 0.41
Interim release containing all changes from 0.42 above, except locaization, i.e. all text fragments are still part of the main code.
Added new category \"22 - Energiezähler\" - please note that all subsequent categories move one up!
Added optional definement \"#define GatewayIP\" in BSB_lan_config.h to enable setting router address different from x.x.x.1
Added function to check all known CommandIDs on your own heating system. Use /Q after enabling definement \"#define DEBUG\" in
BSB_lan_config.h
Updated analyze.sh
Implementation of PPS-Bus protocol. See /K40 for the limited commands available for this bus. Use setBusType(2) to set to PPS upon boot
or /P2 to switch temporarily.
Definement \"#define CUSTOM_COMMANDS\" added. Use this in your configuration to include individual code from \"BSB_lan_custom.h\"
(needs to be created by you!) which is executed at the end of each main loop. Variables \"custom_timer\" and \"custom_timer_compare\"
have been added to execute code at arbitrary intervals.
Version 0.38 -- 22.11.2017 ATTENTION: New BSB_lan_config.h configurations! You need to adjust your configuration when upgrading to this
version!
IP address is now defined in #define IPAddr 88,88,88,88 form - note the commas instead of dots!
Special log parameters 20002 to 20006 have changed, see BSB_lan_config.h for their new meaning
Added new virtual parameter 701 (Präsenztaste) which enters reduced temperature mode until next timed switch
Added Brötje BOB device family (138), including many new parameters!
Included support for W5500 Ethernet2 shields. Activate definement ETHERNET_W5500 in BSB_lan_config.h
Including two-stage oil furnaces BC-counters and logging - please note that logging parameters have been adjusted, see BSB_lan_config.h
for new values!
Added new options for commands /P and /S to allow specifying a different destination device during runtime
Added new configuration definement CUSTOM_COMMANDS which includes BSB_lan_custom.h at the end of each main loop. You may use
custom_timer (set to current millis()) and custom_timer_compare to execute only every x milliseconds.
LPB implementation! More than 450 parameters supported! Switch temporarily between LPB and BSB with the Px command (0=BSB,
1=LPB) or use the setBusType config option to set bus-type at boot-time. Parameter numbers are the same as for BSB.
bugfix: brought back VT_BIT list of options which were erroneously deleted :(, fixed/freed several memory issues
new category \"Sitherm Pro\"; caution: category numbers all move up by one, starting from category \"Wärmepumpe\" (from 20 to 21)
onwards.
graph display of logging data now comes with crosshair and shows detailed values as tooltip
improved SD-card output by factor 3 (from 16 to 45 kbps), switching SD-card library from from SD.h to SdFat.h
(https://github.com/greiman/SdFat) brings another 10% performance boost
adjusted paths and directory layout of SdFat to enable compiling from sketch directory.
new data type vt_sint for signed int data, currently only used in some Sitherm Pro parameters
Webinterface can now display and set vt_bit type parameters in human-readable form
added KonfigRGx descriptions; caution: various sources used, no guarantee that descriptions match your individual heating system!
vt_bit is generally read-only in the webinterface. To set, use URL command /S with decimal representation of value
moved libraries from folder libraries to src so they can be included without copying them to the Arduino libraries folder
no more heating system definements anymore due to new autodetect function based on device family (parameter 6225), or set device_id
variable to parameter value directly
two more security options: TRUSTED_IP to limit access to one IP address only, and HTTP authentication with username and password
Average values are saved on SD-card if present and LOGGER definement is activated
deactivate logging by setting /L0=0 - this way you can enable LOGGER definement without filling up SD card but still save average values
enable logging of telegrams (log parameter 30000) also in monitor mode (bsb.cpp and bsb.h updated)
time from heating system is now retreived periodically from broadcast telegrams, further reducing bus activity
new data type vt_bit for parameters that set individual bits. Display as binary digits, setting still using decimal representation
new data type vt_temp_short5_us for unsigned one byte temperatures divided by 2 (so far only 887 Vorlaufsoll NormAussentemp)
new data type vt_percent5 for unsigned one byte temperatures divided by 2 (so far only 885 Pumpe-PWM Minimum)
new data type vt_seconds_word5 for two byte seconds divided by 2 (so far only 2232, 9500 and 9540)
new data type vt_seconds_short4 for (signed?) one byte seconds divided by 4 (so far only 2235)
new data type vt_seconds_short5 for (signed?) one byte seconds divided by 5 (so far only 9500, 9540)
new data type vt_speed2 for two byte rpm (so far only 7050)
added cases for vt_temp_word, vt_seconds_word5, vt_temp_short, vt_temp_short5, vt_seconds_short4 to set() function
newly designed webinterface allows control over heating system without any additional software or cryptic URL commands. URL commands
of course are still available, so no need to change anything when using FHEM etc.
new URL-command /LB=x to log only broadcast messages (x=1) or all bus messages (x=0)
new URL-command /X to reset the Arduino (need to enable RESET definement in BSB_lan_config.h)
new logging parameters 20002 and 20003 for hot water loading times and cycles
moved DS18B20 logging parameters from 20010-20019 to 20200-20299 and DHT22 logging parameters from 20020-20029 to 20100 to
20199
set numerous parameters to read-only because that\'s what they obviously are (K33-36)
various bugfixes
increased dumping of logfile by factor 5 / as long as we still have memory left, you can increase logbuflen from 100 to 1000 to increase
transfer speed from approx. 16 to 18 kB/s
adjusted burner activity monitoring based on broadcast messages for Brötje systems
removed definement PROGNR_5895 because so far, it has only disabled an ENUM definition.
removed definement PROGNR_6030 because double command ID could be resolved via BROETJE / non-BROETJE definements
renamed BROETJE_SOB to BROETJE in order to allow for fine-grained distinction between different BROETJE cases (e.g. 6800ff). This
means you have to activate TWO definements when using a Brötje system now: The general BROETJE as well as BROETJE_SOB or
BROETJE_BSW. Have a look at your serial log for parameters 6800 to see which command IDs fit your system and activate one of both
accordingly.
changed 16-Bit addressing of flash memory to 32-Bit to address crashes due to ever growing PROGMEM tables - now we have lots of air to
breathe again for new command IDs :)
removed trailing \0 string from several ENUMs that led to wrong ENUM listings. Please keep in mind not to end ENUMs with a trailing \0 !
Time library by Paul Stoffregen ( https://github.com/PaulStoffregen/Time) is now required and included in the library folder.
adds command /LU=x to log only known (x=0) or unknown (x=1) command IDs when logging telegram data
adds option for command /A to set 24h average parameters during runtime
adds special parameter 20002 for logging /A command (24h averages, only makes sense for long logging intervals)
adds special parameters 20000++ for SD card logging of /B, /T and /H commands (see BSB_lan_config.h for examples)
adds date field to log file (requires exact time to be sent by heating system)
added \"flags\" field to command table structure. Currently, only FL_RONLY is supported to make a parameter read-only
added DEFAULT_FLAG in config. Defaults to NULL, i.e. all fields are read/writeable. Setting it to FL_RONLY makes all parameters read-
only, e.g. for added level of security. Individual parameters can be set to NULL/FL_RONLY to make only these parameters writable/read-
only.
added functionality for logging on micro SD card, using the slot of the w5100 Ethernet shield
minor bugfix
added numerous parameters for Fujitsu Wärmepumpe, including new #define FUJITSU directive to activate these parameters due to
different parameter numbers
minor bugfixes
minor bugfixes
included Rob Tillaart\'s DHT library because there are various libraries implementing the protocol and this one is used in the code for its
ability to address multiple sensors with one object.
collated the commands from a Python project and this project, merged the two versions, corrected obvious errors. Inserted hypothetical
numerical values in ENUM definitions where Broetje manuals documented only the message texts.
added option T for querying one wire temperature sensors in mixed querys
simplified settings
minor bugfixes
bugfixes
fixed indentation
Further on to appendix D
Back to TOC
Note:
It is possible to use the adapter v2 with an ESP32 (after making some small changes). This way, one could use the current version of
BSB-LAN without the need to use a new adapter. Please read chap. 1.3.3 for further informations.
But: It has been shown by several users that even the v1.1 still runs without major restrictions, but due to the lack of memory of the Mega
2560 probably already no longer with all available options that BSB-LAN offers.
Starting from v2.x it is then definitely necessary to deactivate some modules which BSB-LAN offers. Hints concerning this can be found in
chap. 5.2 or in the comments of the file BSB_LAN_config.h. Special attention should be paid to the last points, which offer a comfortable
deactivation of individual modules (e.g. Webconfig, MQTT, IPWE etc.) at central place.
1) You can reduce the size of some variables like PASSKEY[] , avg_parameters[] , log_parameters[] , ipwe_parameters[] ,
max_device_list[] for saving RAM (if you don't need as much parameters as maximum possible for example).
2) Within the file BSB_LAN_config.h you find a section at the end of the file where certain functions of BSB-LAN can be deactivated if you
don't use them anyway. Notes regarding this you'll find in the file itself.
Retrieve parameter 6225 "Device family" via BSB-LAN and note the value.
Before executing, copy the file selected_defs.pl or selected_defs.exe respectively in the same folder, where the file BSB_LAN_defs.h is
located.
Open a terminal, enter the corresponding folder and create the reduced file named BSB_LAN_defs_filtered.h using the Perl script or the
Move the original file BSB_LAN_defs.h from the "BSB_LAN" directory to a different location. Move the newly created file
BSB_LAN_defs_filtered.h to the directory "BSB_LAN" (if you didn't already create the file within that directory).
With a version of BSB-LAN before v2.x it is absolutely necessary to adapt the line BSB bus(19,18); : The DUE uses (in contrast to the
Mega) the HardwareSerial interface and other RX/TX pins than the Mega, which is already preset here. When used with the Mega, the
line must therefore be changed to BSB bus(68,69); !
With a version of BSB-LAN since v2.x an automatic detection of the used pins is implemented. Therefore BSB-LAN autodetects if a
Mega (= software serial) or a Due (= hardware serial) is used.
Can I continue to use the adapter v3/v4 with my previous Mega 2560?
No! Even if it would be possible after some changes to the adapter v3/v4, it would not offer any added value compared to the adapter v2.
New functions of BSB-LAN would still not be able to be used due to the lack of memory of the Mega 2560. So if you want to use the new
adapter v3/v4, then only in combination with an Arduino Due.
Back to TOC