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-04if the ‘power off’ segment is set00 00 00 10 00 00 05 01 00 00- unknown01-01if 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”.