Heater Info 2 (0x22)

Signal-ID: 0x22 | PID: 0xE2 | Richtung: Slave → Master

Meldet Stromversorgungsstatus, Boilerzustand und Systemflags.

Frame-Layout

Frame: 8D F0 31 04 FF FF FF FF
       │  │  │  │  └──┴──┴──┴─── Bytes 4-7: Padding, immer 0xFF
       │  │  │  └─────────────── Byte 3: Status
       │  │  └────────────────── Byte 2: Boilerzustand
       │  └───────────────────── Byte 1: System-Flags
       └──────────────────────── Byte 0: Spannung / 10

Byte 0: Spannung

voltage_V = byte0 / 10.0
BeispielSpannung
0x7711,9V
0x8213,0V
0x8513,3V

Byte 1: System-Flags

Byte 1: 0xF0 = 0b11110000
                 │││││││└─ Bit 0: Unbekannt (immer 0)
                 ││││││└── Bit 1: Unbekannt (immer 0)
                 │││││└─── Bit 2: Unbekannt (immer 0)
                 ││││└──── Bit 3: Unbekannt (immer 0)
                 │││└───── Bit 4: Heizung angefordert
                 ││└────── Bit 5: 230V AC vorhanden
                 │└─────── Bit 6: Heizung aktiviert
                 └──────── Bit 7: Raumheizung erforderlich

Bit 4: Heizung angefordert

Gesetzt, wenn Heizung angefordert ist. Schaltet sich etwas nach Bit 6 ein. Zeigt nicht den tatsächlichen Verbrennungsvorgang an - nur dass Heizung angefordert wurde.

heating_commanded = (byte1 & 0b0001_0000) != 0

Bit 5: 230V AC Versorgung

Gesetzt, wenn 230V AC Stromversorgung an der Heizung angeschlossen ist.

ac_230v_present = (byte1 & 0b0010_0000) != 0

Bit 6: Heizung aktiviert

Gesetzt, wenn Heizungsbetrieb aktiviert/angefordert ist. Zeigt nicht den physischen Betrieb an (Verbrennungslüfter, Flamme). Dieses Bit kann gesetzt sein, auch wenn die Heizung völlig still ist, weil keine tatsächliche Heizung erforderlich ist.

heater_enabled = (byte1 & 0b0100_0000) != 0

Bit 7: Raumheizung erforderlich

Nur gesetzt, wenn Raumheizung tatsächlich erforderlich ist (Sollwert > gemessene Temperatur). Nicht gesetzt für nur-Wasser-Heizung oder wenn der Raum-Sollwert bei oder unter der gemessenen Temperatur liegt.

room_heating_required = (byte1 & 0b1000_0000) != 0

Beobachtete Werte

WertBinärBit 4Bit 5Bit 6Bit 7Kontext
0x000000 0000----Leerlauf, Heizung aus, kein 230V
0x200010 0000---Standby, 230V angeschlossen
0x400100 0000---Heizung aktiviert, kein 230V
0x500101 0000--Heizung angefordert, kein 230V
0x600110 0000--Heizung aktiviert, mit 230V
0xD01101 0000-Raumheizung erforderlich, kein 230V
0xF01111 0000Raumheizung erforderlich, mit 230V

Startsequenz (Raumheizung mit 230V)

Beobachtet während Heizungsstart:

  1. 0x20 - 230V Standby
  2. 0x60 - Heizung aktiviert (Bit 6 gesetzt)
  3. 0xF0 - Raumheizung erforderlich (Bits 4,7 gesetzt)

Nur-Wasser-Heizung-Sequenz

Wenn nur Wasserheizung angefordert ist (keine Raumheizung):

  1. 0x00 oder 0x20 - Leerlauf (abhängig von 230V)
  2. 0x40 oder 0x60 - Heizung aktiviert
  3. 0x50 - Heizung angefordert (Bit 7 nie gesetzt)

Hinweis: Bit 7 wird nur gesetzt, wenn Raumheizung erforderlich ist (Sollwert > gemessen). Nur-Wasser-Heizung setzt Bit 7 nie.

Raum-Sollwert unter aktueller Temperatur

Wenn Raum-Sollwert unter der aktuellen Temperatur liegt:

  1. 0x00 - Leerlauf
  2. 0x40 - Heizung aktiviert
  3. 0x50 - Heizung angefordert (Bit 7 NICHT gesetzt, Heizung still)

Die Heizung zeigt 0x50, bleibt aber völlig still (kein Lüfter, keine Verbrennung), weil Bit 7 nicht gesetzt ist - tatsächliche Raumheizung ist nicht erforderlich.

Byte 2: Boilerzustand

Byte 2: 0x31 = 0b00110001
                 │││││││└─ Bit 0: Heizung in Betrieb
                 ││││││└── Bit 1: Unbekannt (immer 0)
                 │││││└─── Bit 2: Unbekannt (immer 0)
                 ││││└──── Bit 3: Unbekannt (immer 0)
                 │││└───── Bit 4: Wasserheizung aktiviert
                 ││└────── Bit 5: Hot-Stufe
                 │└─────── Bit 6: Unbekannt (immer 0)
                 └──────── Bit 7: Unbekannt (immer 0)

Bit 0: Heizung in Betrieb

Gesetzt, wenn Boiler aktiv Wasser heizt. Gelöscht, wenn Zieltemperatur erreicht.

heating_in_progress = (byte2 & 0b0000_0001) != 0

Bit 4: Wasserheizung aktiviert

Immer bei Combi-Heizgeräten gesetzt, da sich der Brenner im Boiler befindet, was bedeutet, dass jeder Heizvorgang auch Wasser erhitzt. Dieses Bit zeigt wahrscheinlich an, dass Wasserheizung aktiv/aktiviert ist.

water_heating_enabled = (byte2 & 0b0001_0000) != 0

Bit 5: Hot-Stufe

Gesetzt, wenn Hot-Temperatur (~60°C) ausgewählt ist. Gelöscht für Eco-Temperatur.

hot_level = (byte2 & 0b0010_0000) != 0

Beobachtete Werte

WertBinärBit 0Bit 4Bit 5Zustand
0x100001 0000--Eco, Ziel erreicht (~40°C)
0x110001 0001-Eco, Wasser wird geheizt
0x300011 0000-Hot, Ziel erreicht (~60°C)
0x310011 0001Hot, Wasser wird geheizt

Byte 3: Status

Byte 3: 0x05 = 0b00000101
                 │││││││└─ Bit 0: Fehlercode vorhanden
                 ││││││└── Bit 1: Unbekannt (immer 0)
                 │││││└─── Bit 2: OK / Bereit
                 ││││└──── Bit 3: Unbekannt (immer 0)
                 │││└───── Bit 4: Unbekannt (immer 0)
                 ││└────── Bit 5: Unbekannt (immer 0)
                 │└─────── Bit 6: Unbekannt (immer 0)
                 └──────── Bit 7: Unbekannt (immer 0)

Bit 0: Fehlercode vorhanden

Gesetzt, wenn ein Fehlercode über Diagnoseabfrage (SID 0xB2, ID 0x23) verfügbar ist. Erfordert Benutzerbestätigung zum Löschen.

error_present = (byte3 & 0b0000_0001) != 0

Bit 2: OK / Bereit

Gesetzt, wenn Heizung betriebsbereit ist. Gelöscht während vorübergehender Fehlerzustände (z.B. Sensor vorübergehend getrennt im Leerlauf).

ok_ready = (byte3 & 0b0000_0100) != 0

Beobachtete Werte

WertBinärBit 0Bit 2Kontext
0x000000 0000--Vorübergehender Fehler (Sensor im Leerlauf getrennt)
0x010000 0001-Betriebsfehler mit Fehlercode
0x040000 0100-Normalbetrieb
0x050000 0101Fenster offen / Fehler wartet auf Bestätigung

Fehlersequenzen

Sensor im Leerlauf getrennt (kein Fehlercode):

0x04 → 0x00 → 0x04 (automatische Wiederherstellung bei Wiederverbindung)

Sensor während Heizung getrennt (Fehlercode generiert):

0x04 → 0x01 → 0x05 (Fehler bleibt nach Wiederverbindung, benötigt Bestätigung)

Zündungsfehler:

0x04 → 0x00 → 0x01 (Fehlercode gemeldet)

Bytes 4-7: Reserviert

Immer 0xFF FF FF FF.

Beispiel-Frames

Leerlauf, kein 230V:
82 00 10 04 FF FF FF FF
│  │  │  │
│  │  │  └─ Status: Normal
│  │  └──── Boiler: Eco erreicht
│  └─────── Flags: 0x00 (Leerlauf)
└────────── Spannung: 13,0V

230V Standby:
84 20 10 04 FF FF FF FF
│  │  │  │
│  │  │  └─ Status: Normal
│  │  └──── Boiler: Eco erreicht
│  └─────── Flags: 0x20 (230V angeschlossen)
└────────── Spannung: 13,2V

Heizung startet, kein 230V:
82 40 10 04 FF FF FF FF
│  │  │  │
│  │  │  └─ Status: Normal
│  │  └──── Boiler: Eco erreicht
│  └─────── Flags: 0x40 (startet)
└────────── Spannung: 13,0V

Heizung startet, 230V:
84 60 10 04 FF FF FF FF
│  │  │  │
│  │  │  └─ Status: Normal
│  │  └──── Boiler: Eco erreicht
│  └─────── Flags: 0x60 (startet + 230V)
└────────── Spannung: 13,2V

Wasserheizung aktiv, kein 230V:
8D 50 11 04 FF FF FF FF
│  │  │  │
│  │  │  └─ Status: Normal
│  │  └──── Boiler: Eco heizt
│  └─────── Flags: 0x50 (Wasserheizung)
└────────── Spannung: 14,1V

Raumheizung aktiv, kein 230V:
8D D0 10 04 FF FF FF FF
│  │  │  │
│  │  │  └─ Status: Normal
│  │  └──── Boiler: Eco erreicht
│  └─────── Flags: 0xD0 (Raumheizung)
└────────── Spannung: 14,1V

Raumheizung aktiv, 230V:
81 F0 10 04 FF FF FF FF
│  │  │  │
│  │  │  └─ Status: Normal
│  │  └──── Boiler: Eco erreicht
│  └─────── Flags: 0xF0 (Raumheizung + 230V)
└────────── Spannung: 12,9V