rehumatism
This page was translated automatically from Italian. Read the original
rehumatism reconstructs the protocol used by the components of a Radiax radiant floor system to communicate: the wall display, the manifold relay board, the room probes, and the board in the shared plant room that commands the pump. It does this solely by listening to the bus of a system in use, without reading or modifying any firmware. The results are protocol documentation, listening tools, and a library in Python and C++.
The project was born from a trivial failure. The system’s touch panel stopped responding to touch. In these systems, the display is not a simple screen: it holds the configuration, mode, temperature, and corrections for every room. With the display out of order, the house could no longer be regulated. Understanding the bus allowed for the construction of a replacement, the ORFHAn panel.
How a Radiax system is structured, seen from the bus
The biggest surprise was discovering who is in charge. The bus master is not the board in the apartment, but the one in the shared plant room, next to the pump and the meters. It polls all devices in turn, keeps track of the time, reads the heat and water meters, and turns on the pump with its own relay. In the apartment, only the following respond:
| Address | Device | Function |
|---|---|---|
01 | wall display | holds mode, setpoint, and corrections; contains the probe for zone 1 |
50 | manifold board | commands the zone valves; its transformer powers the bus |
0b-0f | wall probes | temperature and humidity for zones 2 to 6 |
54 | dehumidifier box | receives mode and thresholds |
The circulator pump has no control inputs: it is turned on and off only by switching the 230 V on or off, and it is the master’s relay that does this. On the bus, a pump command does not exist: the master turns it on when, based on what the display tells it, the system is on and a zone is calling for heat. This leads to the most useful discovery: whoever responds to the master instead of the display commands the system, without touching anything else.
The bus
- Physical layer: four wires
A B − +. RS485 half duplex plus 20 V DC, which also powers the display. - Line: 9600 baud, 8 bit, no parity, 1 stop bit.
- Messages:
02 ADDR LEN CMD [dati] XOR 03. A start byte, the address, the length, the command, the data, a control byte, and an end byte. It is not Modbus, and there is no signature or encryption.
Some of the identified commands:
| Command | To whom | Contains |
|---|---|---|
0a | box 54 | dehumidifier mode (dehumidify, cooling), humidity thresholds and the setpoint |
32 | board 50 and probes | requests from each zone, setpoint and system mode |
08 | probes | single zone correction |
05 | display | time and date; mode and setpoint read from the display; season |
3d | display | at startup, the list of system devices |
36-39 | display | consumption, with a history of 18 periods |
The season is decided by the bus master and communicated to the display. The “off” state also changes with the season: in summer it is 38.0 °C, so no room calls for cooling; in winter it is 7.0 °C, so no room calls for heat. A display that sends the wrong off state puts all zones in calling for heat. This actually happened during testing and was corrected.
The tools
- Live listening: records the bus and shows the system, zones, pump, clock, and consumption as they happen.
- Display emulator: responds to the bus master instead of the display, which must be disconnected. It only transmits if explicitly requested. On October 1st, 2026, the bus master accepted its responses, switched to manual mode at 22 °C, and turned on the pump; the next day, it turned it on and off on command.
- C++ library, without Arduino dependencies, identical file for file to the one ORFHAn compiles in its firmware. Tests compare the responses of the C++ version with those of the Python version on real captures: they must match byte for byte.
The bus captures are not published: they contain consumption data and habits of a real home.
What remains to be understood
- The dehumidifier box responds rarely: 7 times out of over 4,000 queries in the first recordings, then nothing more. It must be tested alone, on the bench.
- The meaning of some parameters and some fixed fields within the messages.
- Winter operation is largely observed, but not yet in every detail.
How it was done, and what has not been done
Everything comes from a USB-RS485 stick connected in parallel to the bus of a system owned and in use. No firmware has been read, copied, or decompiled, no protection has been bypassed, and no confidential documents have been used. Observing and studying the operation of a lawfully owned product to understand its principles and achieve interoperability is provided for by Directive 2009/24/EC and, in Italy, by the copyright law (Articles 64-ter and 64-quater). This is not legal advice.
The information comes from a single system and may be incomplete or incorrect: different systems and versions may behave differently. Transmitting on the bus can have effects on the entire system, and in a condominium, the shared plant room components should only be accessed in agreement with the building manager and the maintenance technician.
rehumatism is an independent project, not affiliated with any manufacturer, released under the MIT license. If a manufacturer wished to document or open their protocols, we would be more than happy.
What do you think?
Selected comments
A selection of the comments we received, published with their authors' permission. The average counts every rating.