LWZ 130 display protocol
The Stiebel Eltron LWZ 130 mechanical ventilator comes with a remote display that shows the current fan setting, temperature, and other settings, and also lets the user change the current fan setting or temporarily boost the fan.
I plan to connect this to Home Assistant, and this page covers the protocol and decodes some of the fields.
The display is connected by a four wire 5 V I2C bus where the in-wall unit acts as the master and sends write commands to the display. The bus frequency is 15 kHz. The pins are SCL, GND, VCC (+5 V), and SDA.
All writes are to address 0. Some example transactions are:
- Level 0:
F7 20 0B 20 6D 00 00 00 3F 00 5B 5B 7D 15 55 04 00 00 00 10 00 00 05 01 00 00 00 C7
- Level 1:
F7 20 0B 20 6D 00 00 00 06 00 5B 5B 7F 15 55 00 00 00 00 10 00 00 05 01 00 00 00 89
- Level 2:
F7 20 0B 20 6D 00 00 00 5B 00 5B 5B 7D 15 55 00 00 00 00 10 00 00 05 01 00 00 00 83
- Level 3:
F7 20 0B 20 6D 00 00 00 4F 00 5B 5B 7D 15 55 00 00 00 00 10 00 00 05 01 00 00 01 4E
In all cases the display was showing the current temperature and had the ‘check filter’ symbol lit.
Level 0 also lights a ‘power’ segment on the display, and level 3 also lights a ‘boost’ LED. Running
reveng shows that the last byte is a frame check with
width=8 poly=0x49 init=0x00 refin=false refout=false xorout=0x00 check=0x6b residue=0x00 name=(none)
,
which has the same polynomial as CRC-8/GSM-B
.
The 8th byte is the current fan speed encoded as a 7 segment display. 3F
is the 6 segments of 0
,
06
is the 2 segments of 1
, 5B
is the 5 segments of 2
, and 4F
is the 5 segments of 3
.
This matches the table at
https://hosteng.com/dmdhelp/content/instruction_set/SEG_Hex_BCD_to_7_Segment_Display.htm.
Given this, the 5B 5B 7D
is the current temperature of 22.6
Celsius.
So the update display command is:
F7
- update display command32
- constant across command types0B 20 6D 00 00 00
- unknown3F
- fan speed as a 7 segment display00
- unknown5B 5B 7D
- temperature as three 7 segment display digits15 55
- unknown04
-04
if the ‘power off’ segment is set00 00 00 10 00 00 05 01 00 00
- unknown01
-01
if the ‘boost’ LED is onC7
- CRC-8
Keys
- Wheel clockwise:
E3 30 20 00 00 02 92
- Wheel anti-clockwise:
E3 30 20 00 00 01 49
- Boost:
E3 20 10 3B 00 00 CF
reveng
confirms that the last byte is the same frame check as above.
It’s unclear which unit which writes which byte. It’s likely that the in-wall sends the E3
as a
“poll keys”.