Heater Info 2 (0x22)
Signal ID: 0x22 | PID: 0xE2 | Direction: Slave → Master
Reports power supply status, boiler state, and system flags.
Frame Layout
Frame: 8D F0 31 04 FF FF FF FF
│ │ │ │ └──┴──┴──┴─── Bytes 4-7: Padding, always 0xFF
│ │ │ └─────────────── Byte 3: Status
│ │ └────────────────── Byte 2: Boiler state
│ └───────────────────── Byte 1: System flags
└──────────────────────── Byte 0: Voltage / 10
Byte 0: Voltage
voltage_V = byte0 / 10.0
| Example | Voltage |
|---|---|
0x77 | 11.9V |
0x82 | 13.0V |
0x85 | 13.3V |
Byte 1: System Flags
Byte 1: 0xF0 = 0b11110000
│││││││└─ Bit 0: Unknown (always 0)
││││││└── Bit 1: Unknown (always 0)
│││││└─── Bit 2: Unknown (always 0)
││││└──── Bit 3: Unknown (always 0)
│││└───── Bit 4: Heating commanded
││└────── Bit 5: 230V AC present
│└─────── Bit 6: Heater enabled
└──────── Bit 7: Room heating required
Bit 4: Heating Commanded
Set when heating is commanded. Turns on slightly after bit 6. Does not indicate actual combustion - only that heating has been requested.
heating_commanded = (byte1 & 0b0001_0000) != 0
Bit 5: 230V AC Supply
Set when 230V AC power is connected to the heater.
ac_230v_present = (byte1 & 0b0010_0000) != 0
Bit 6: Heater Enabled
Set when heater operation is enabled/commanded. Does not indicate physical operation (combustion fan, flame). This bit can be set even when the heater is completely silent because no actual heating is required.
heater_enabled = (byte1 & 0b0100_0000) != 0
Bit 7: Room Heating Required
Set only when room heating is actually required (setpoint > measured temperature). Not set for water-only heating or when room setpoint is at or below measured temperature.
room_heating_required = (byte1 & 0b1000_0000) != 0
Observed Values
| Value | Binary | Bit 4 | Bit 5 | Bit 6 | Bit 7 | Context |
|---|---|---|---|---|---|---|
0x00 | 0000 0000 | - | - | - | - | Idle, heater off, no 230V |
0x20 | 0010 0000 | - | ✓ | - | - | Standby, 230V connected |
0x40 | 0100 0000 | - | - | ✓ | - | Heater enabled, no 230V |
0x50 | 0101 0000 | ✓ | - | ✓ | - | Heating commanded, no 230V |
0x60 | 0110 0000 | - | ✓ | ✓ | - | Heater enabled, with 230V |
0xD0 | 1101 0000 | ✓ | - | ✓ | ✓ | Room heating required, no 230V |
0xF0 | 1111 0000 | ✓ | ✓ | ✓ | ✓ | Room heating required, with 230V |
Startup Sequence (Room Heating with 230V)
Observed during heater startup:
0x20- 230V standby0x60- Heater enabled (bit 6 set)0xF0- Room heating required (bits 4,7 set)
Water-Only Heating Sequence
When only water heating is commanded (no room heating):
0x00or0x20- Idle (depending on 230V)0x40or0x60- Heater enabled0x50- Heating commanded (bit 7 never set)
Note: Bit 7 is only set when room heating is required (setpoint > measured). Water-only heating never sets bit 7.
Room Target Below Current Temperature
When room setpoint is set below current temperature:
0x00- Idle0x40- Heater enabled0x50- Heating commanded (bit 7 NOT set, heater silent)
The heater shows 0x50 but remains completely silent (no fan, no combustion) because
bit 7 is not set - actual room heating is not required.
Byte 2: Boiler State
Byte 2: 0x31 = 0b00110001
│││││││└─ Bit 0: Heating in progress
││││││└── Bit 1: Unknown (always 0)
│││││└─── Bit 2: Unknown (always 0)
││││└──── Bit 3: Unknown (always 0)
│││└───── Bit 4: Water heating enabled
││└────── Bit 5: Hot level
│└─────── Bit 6: Unknown (always 0)
└──────── Bit 7: Unknown (always 0)
Bit 0: Heating in Progress
Set when boiler is actively heating water. Cleared when target temperature reached.
heating_in_progress = (byte2 & 0b0000_0001) != 0
Bit 4: Water Heating Enabled
Always set on Combi heaters since the burner is located inside the boiler, meaning any heating operation also heats water. This bit likely indicates that water heating is active/enabled.
water_heating_enabled = (byte2 & 0b0001_0000) != 0
Bit 5: Hot Level
Set when Hot temperature (~60°C) is selected. Cleared for Eco temperature.
hot_level = (byte2 & 0b0010_0000) != 0
Observed Values
| Value | Binary | Bit 0 | Bit 4 | Bit 5 | State |
|---|---|---|---|---|---|
0x10 | 0001 0000 | - | ✓ | - | Eco, target reached (~40°C) |
0x11 | 0001 0001 | ✓ | ✓ | - | Eco, heating water |
0x30 | 0011 0000 | - | ✓ | ✓ | Hot, target reached (~60°C) |
0x31 | 0011 0001 | ✓ | ✓ | ✓ | Hot, heating water |
Byte 3: Status
Byte 3: 0x05 = 0b00000101
│││││││└─ Bit 0: Error code present
││││││└── Bit 1: Unknown (always 0)
│││││└─── Bit 2: OK / Ready
││││└──── Bit 3: Unknown (always 0)
│││└───── Bit 4: Unknown (always 0)
││└────── Bit 5: Unknown (always 0)
│└─────── Bit 6: Unknown (always 0)
└──────── Bit 7: Unknown (always 0)
Bit 0: Error Code Present
Set when an error code is available via diagnostic query (SID 0xB2, ID 0x23). Requires user acknowledgment to clear.
error_present = (byte3 & 0b0000_0001) != 0
Bit 2: OK / Ready
Set when heater is ready for operation. Cleared during transient fault conditions (e.g., sensor temporarily disconnected while idle).
ok_ready = (byte3 & 0b0000_0100) != 0
Observed Values
| Value | Binary | Bit 0 | Bit 2 | Context |
|---|---|---|---|---|
0x00 | 0000 0000 | - | - | Transient fault (sensor unplugged while idle) |
0x01 | 0000 0001 | ✓ | - | Operational fault with error code |
0x04 | 0000 0100 | - | ✓ | Normal operation |
0x05 | 0000 0101 | ✓ | ✓ | Window open / Error pending acknowledgment |
Fault Sequences
Sensor unplugged while idle (no error code):
0x04 → 0x00 → 0x04 (auto-recovery on reconnect)
Sensor unplugged during heating (error code generated):
0x04 → 0x01 → 0x05 (error persists after reconnect, needs ack)
Ignition failure:
0x04 → 0x00 → 0x01 (error code reported)
Bytes 4-7: Reserved
Always 0xFF FF FF FF.
Example Frames
Idle, no 230V:
82 00 10 04 FF FF FF FF
│ │ │ │
│ │ │ └─ Status: Normal
│ │ └──── Boiler: Eco reached
│ └─────── Flags: 0x00 (idle)
└────────── Voltage: 13.0V
230V Standby:
84 20 10 04 FF FF FF FF
│ │ │ │
│ │ │ └─ Status: Normal
│ │ └──── Boiler: Eco reached
│ └─────── Flags: 0x20 (230V connected)
└────────── Voltage: 13.2V
Heater starting, no 230V:
82 40 10 04 FF FF FF FF
│ │ │ │
│ │ │ └─ Status: Normal
│ │ └──── Boiler: Eco reached
│ └─────── Flags: 0x40 (starting)
└────────── Voltage: 13.0V
Heater starting, 230V:
84 60 10 04 FF FF FF FF
│ │ │ │
│ │ │ └─ Status: Normal
│ │ └──── Boiler: Eco reached
│ └─────── Flags: 0x60 (starting + 230V)
└────────── Voltage: 13.2V
Water heating active, no 230V:
8D 50 11 04 FF FF FF FF
│ │ │ │
│ │ │ └─ Status: Normal
│ │ └──── Boiler: Eco heating
│ └─────── Flags: 0x50 (water heating)
└────────── Voltage: 14.1V
Room heating active, no 230V:
8D D0 10 04 FF FF FF FF
│ │ │ │
│ │ │ └─ Status: Normal
│ │ └──── Boiler: Eco reached
│ └─────── Flags: 0xD0 (room heating)
└────────── Voltage: 14.1V
Room heating active, 230V:
81 F0 10 04 FF FF FF FF
│ │ │ │
│ │ │ └─ Status: Normal
│ │ └──── Boiler: Eco reached
│ └─────── Flags: 0xF0 (room heating + 230V)
└────────── Voltage: 12.9V
