Heater Info 1 (0x21)

Signal ID: 0x21 | PID: 0x61 | Direction: Slave → Master

Reports current temperatures and fan speed feedback.

Frame Layout

Frame: 65 AB BC 28 12 01 F0 0F
       │  │  │  │  │  │  │  └─ Byte 7: Always 0x0F (?)
       │  │  │  │  │  │  └──── Byte 6: Always 0xF0 (?)
       │  │  │  │  │  └─────── Byte 5: Status byte
       │  │  │  │  └────────── Byte 4: Available Electric power
       │  │  │  └───────────── Byte 3: Available Burner power
       │  │  └──────────────── Byte 2: Measured Water temp [11:4]
       │  └─────────────────── Byte 1: Water[3:0] | Room[11:8]
       └────────────────────── Byte 0: Measured Room temp [7:0]

Bytes 0-2: Temperature Encoding

Two 12-bit values packed into 3 bytes, representing Kelvin × 10.

Room Temp:  ((byte1 & 0x0F) << 8) | byte0     → Kelvin × 10
Water Temp: (byte2 << 4) | ((byte1 >> 4))     → Kelvin × 10
Celsius:    (encoded / 10.0) - 273.0

Decoding Example

Frame: 65 AB BC 28 12 01 F0 0F
       │  │  │
       │  │  └─ Water[11:4] = 0xBC
       │  └──── Water[3:0]=0xA, Room[11:8]=0xB
       └─────── Room[7:0] = 0x65

Room:  0x0B65 = 2917 → 2917/10 - 273 = 18.7°C
Water: 0x0BCA = 3018 → 3018/10 - 273 = 28.8°C

Bytes 3-4: Device Capabilities

Bytes 3 and 4 indicate heater model capabilities. Values are constant per device.

Combi 6 (no electric):
       ... 3C 00 ...
           │  └──── Byte 4: 0x00 = 0 dec  → No electric heater
           └─────── Byte 3: 0x3C = 60 dec → 6kW burner

Combi D4E (diesel + electric):
       ... 28 12 ...
           │  └──── Byte 4: 0x12 = 18 dec → 1.8kW electric
           └─────── Byte 3: 0x28 = 40 dec → 4kW burner

Combi 6E (gas + electric):
       ... 3C 12 ...
           │  └──── Byte 4: 0x12 = 18 dec → 1.8kW electric
           └─────── Byte 3: 0x3C = 60 dec → 6kW burner
  • Byte 3: Burner power in 100W units (0x28=4kW, 0x3C=6kW)
  • Byte 4: Electric heater power in 100W units (0x00=none, 0x12=1.8kW)

Byte 5: Status Byte

Byte 5: 0x31 = 0b00110001
                 │││││││└─ Bit 0: Fuel active 
                 ││││││└── Bit 1: Electric active
                 │││││└─── Bit 2: Unknown (always 0)
                 ││││└──── Bit 3: Unknown (always 0)
                 │└┴┴───── Bits 4-6: Fan RPM bracket
                 └──────── Bit 7: Unknown

Byte 5 Bits 0-1: Energy Source

Energy source bitmap showing which energy source is currently active (not selected mode).

BitMeaning
0Fuel active (gas/diesel)
1Electric active
ValueBinaryEnergy Source
0x10b01Idle or Fuel only
0x20b10Electric only
0x30b11Mix (fuel + electric)

Note: When idle (heater off), the value is always 0x1 regardless of the selected mode on the display. The bits only reflect actual energy usage during active heating.

Byte 5 Bits 2-3: Unknown

Always observed as 0b00.

Byte 5 Bits 4-6: Fan Speed RPM Bracket

Reports actual fan RPM as a speed bracket (0-7). The value updates dynamically as the fan ramps up or down.

This reflects actual fan operation regardless of source:

  • Manual ventilation command (vent levels 1-10)
  • Automatic heating operation (fan speed adjusts based on heat output)
Bits 6:4ValueRPM BracketManual Vent Levels
0b0000x0OffOff
0b0100x2LowLevel 1-3
0b0110x3Low-MidLevel 4-5
0b1000x4MidLevel 6-7
0b1010x5Mid-HighLevel 8
0b1100x6HighLevel 9
0b1110x7MaxLevel 10

During automatic heating, the fan speed increases as the burner temperature rises and heat output increases.

Observed Byte 5 Values

Byte 5BinaryRPM BracketContext
0x010000 0001OffIdle, no ventilation
0x210010 0001LowVent level 1-3, or heating startup
0x310011 0001Low-MidVent level 4-5, or heating (burner warming)
0x410100 0001MidVent level 6-7
0x510101 0001Mid-HighVent level 8
0x610110 0001HighVent level 9
0x710111 0001MaxVent level 10

Bytes 6-7: Unknown

Always observed as 0xF0 0x0F in the modern protocol. Purpose unknown.