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
| Beispiel | Spannung |
|---|---|
0x77 | 11,9V |
0x82 | 13,0V |
0x85 | 13,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
| Wert | Binär | Bit 4 | Bit 5 | Bit 6 | Bit 7 | Kontext |
|---|---|---|---|---|---|---|
0x00 | 0000 0000 | - | - | - | - | Leerlauf, Heizung aus, kein 230V |
0x20 | 0010 0000 | - | ✓ | - | - | Standby, 230V angeschlossen |
0x40 | 0100 0000 | - | - | ✓ | - | Heizung aktiviert, kein 230V |
0x50 | 0101 0000 | ✓ | - | ✓ | - | Heizung angefordert, kein 230V |
0x60 | 0110 0000 | - | ✓ | ✓ | - | Heizung aktiviert, mit 230V |
0xD0 | 1101 0000 | ✓ | - | ✓ | ✓ | Raumheizung erforderlich, kein 230V |
0xF0 | 1111 0000 | ✓ | ✓ | ✓ | ✓ | Raumheizung erforderlich, mit 230V |
Startsequenz (Raumheizung mit 230V)
Beobachtet während Heizungsstart:
0x20- 230V Standby0x60- Heizung aktiviert (Bit 6 gesetzt)0xF0- Raumheizung erforderlich (Bits 4,7 gesetzt)
Nur-Wasser-Heizung-Sequenz
Wenn nur Wasserheizung angefordert ist (keine Raumheizung):
0x00oder0x20- Leerlauf (abhängig von 230V)0x40oder0x60- Heizung aktiviert0x50- 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:
0x00- Leerlauf0x40- Heizung aktiviert0x50- 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
| Wert | Binär | Bit 0 | Bit 4 | Bit 5 | Zustand |
|---|---|---|---|---|---|
0x10 | 0001 0000 | - | ✓ | - | Eco, Ziel erreicht (~40°C) |
0x11 | 0001 0001 | ✓ | ✓ | - | Eco, Wasser wird geheizt |
0x30 | 0011 0000 | - | ✓ | ✓ | Hot, Ziel erreicht (~60°C) |
0x31 | 0011 0001 | ✓ | ✓ | ✓ | Hot, 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
| Wert | Binär | Bit 0 | Bit 2 | Kontext |
|---|---|---|---|---|
0x00 | 0000 0000 | - | - | Vorübergehender Fehler (Sensor im Leerlauf getrennt) |
0x01 | 0000 0001 | ✓ | - | Betriebsfehler mit Fehlercode |
0x04 | 0000 0100 | - | ✓ | Normalbetrieb |
0x05 | 0000 0101 | ✓ | ✓ | Fenster 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
