Skip to content

Accessing MAX! components from BSB–LAN

fredlcore edited this page Oct 14, 2024 · 7 revisions

BSB-LAN comes with support for accessing EQ3's MAX! (unfortunately discontinued) heating system components such as radiator thermostats or wall-mounted thermostats. With this, you can integrate them directly into BSB-LAN without the use of a Home Automation system that would need to support them.

Accessing MAX! components

MAX! components communicate wireless using the 868 MHz band, normally with a MAX! Cube which, however, is not openly accessible. You can either hack the Cube or build your own CC1101 transceived using an Arduino Nano (another guide in German on how to flash the Cube can be found here). Once the aculfw firmware is installed and connected to your network, you have access to the messages that the MAX! components exchange with each other.

Configuring BSB-LAN for using MAX! components

The first thing you need to do is to take note of the serial numbers that are printed on your MAX! component, sometimes inside the battery cover. They consist of leading letters follewed by several numbers, such as KEQ0505080. Enter these serial numbers in the configuration, either in the web-interface under "MAX! Devices" or in BSB_LAN_config.h under max_device_list.
After BSB-LAN has been restarted with these settings, you have to initiate the pairing procedure for each device once so that BSB-LAN can receive the devices' internal serial numbers (which are different from those entered in the configuration). This information is stored in the EEPROM and will remain there until the EEPROM is cleared (using /NE for example) or replaced (for example when the EEPROM layout is modified, see ChangeLog). So if your MAX! components no longer show up in BSB-LAN, make sure that you try pairing them once again before opening up an issue!

Accessing values from MAX! components

Once the MAX! components are registered with BSB-LAN, you can find their values in parameters 20500 onwards. Each component is mapped to one parameter number and includes the following information:

Decimal part of parameter number Functionality
.0 Sensor ID
.1 Current temperature (Note: This is only up-to-date when coming from wall-mounted thermostats. Radiator thermostats only transmit the current temperature whenever there is a change in valve opening or setpoint temperature.)
.2 Setpoint temperature
.3 Valve opening (in percent)

All these values are read-only from BSB-LAN's perspective.
The parameter mapped to each component is determined by the sequence they paired with BSB-LAN and will remain as long as the EEPROM is not erased or replaced.

Accessing MAX! components programatically

There are two ways to access MAX! components programatically, for example when you want to query them in order to calculate a weighted average based on the room temperature and send this weighted average to the heater. You can either use the query() function and query for example parameter 20000.1 to get the current temperature of the first paired MAX! component.
Since this will require converting the return value of the query() function, it might be easier to access the variables related to the MAX! components directly. Here is the list of variables you can use for this purpose:

Variable name Functionality
max_device_list[] Contains the serial number of the MAX! component
max_cur_temp[] Contains the current temperature
max_dst_temp[] Contains the setpoint temperature
max_valve[] Contains the valve opening in percent

An example of how to use this feature can be found in the custom_functions folder in the "Send room temperature based on MAX thermostats" example which can be used as a blueprint for further expansions.

Clone this wiki locally