Hallo zusammen,
hier kurz, wie ich meine Air Top Evo 55 über den VAN PI CORE PRO in Home Assistant eingebunden habe. Vielleicht hilft es jemandem, und ein paar Erkenntnisse zum W-Bus waren für mich neu.
Aufbau
Webasto ──W-Bus (K-Line-Adapter)──► VAN PI, Node-RED (/dev/ttyPKW1, 2400 Baud 8E1)
│
└──MQTT──► Broker ◄──MQTT── Home Assistant
- Grundlage ist die Pekaway-Autoterm-Vorlage, umgebaut auf W-Bus (die Variablen heißen intern weiter
autoterm1_…). - HA spricht nicht direkt mit Node-RED, alles läuft über MQTT.
- Die Pekaway-UI-Teile im Flow habe ich bewusst nicht verändert, die Pekaway-Oberfläche funktioniert weiter parallel.
MQTT-Topics
| Topic | Richtung | Inhalt |
|---|---|---|
vanpi/webasto/status |
VAN PI → HA | Betriebszustand als Text |
vanpi/webasto/temp, …/voltage, …/glowplug, …/blower, …/fuelpump |
VAN PI → HA | Live-Werte |
vanpi/webasto/settemp/set / …/state |
beide | Solltemperatur |
vanpi/webasto/mode/set / …/state |
beide | Eco / Normal / Boost |
vanpi/webasto/fan/set / …/state |
beide | Lüften-Stufe 1–4 (siehe unten) |
vanpi/webasto/command |
HA → VAN PI | Start / Stop |
In HA sind das normale MQTT-Entitäten in der configuration.yaml (Sensoren, number, select, button), z. B.:
mqtt:
sensor:
- name: "Gebläse"
unique_id: "webasto_blower"
state_topic: "vanpi/webasto/blower"
# Node-RED liefert Rohbyte ÷ 2; Boost = 8 → 100 %
value_template: "{{ (value | float(0) * 12.5) | round(0) }}"
unit_of_measurement: "%"
number:
- name: "Lüften (Stufe)"
unique_id: "webasto_fan"
command_topic: "vanpi/webasto/fan/set"
state_topic: "vanpi/webasto/fan/state"
min: 1
max: 4
W-Bus-Befehle (Header 0x34, XOR-Prüfsumme über alle Bytes)
| Befehl | Frame |
|---|---|
| Heizen mit Solltemperatur | 34 05 2A 21 FF <Temp+50> <XOR> |
| Boost / Eco | Modus 0x25 / 0x26 statt 0x21 |
| Lüften | 34 05 2A 22 FF <Wert> <XOR> |
| Stop | 34 02 10 26 |
| Keep-alive | 34 04 44 2A 00 5E |
| Aktoren abfragen | F4 03 50 0F A8 (Glühstift, Kraftstoffpumpe, Gebläse, …) |
Den Betriebszustand übersetze ich in einer Function „Zustand“ in deutschen Klartext (Basis: libwbus wbus_const.h). Codes über 0x62 habe ich am Gerät beobachtet, z. B. 0x8F = Aus (Pause), 0x66 = Aus (Bereit), 0x6D = Nachlauf: Ausblasen, 0xA1 = Start: Hochlauf. 0xA0 ignoriere ich, der flackert im Aus-Zustand alle 30–90 s für ein paar Sekunden auf und hat bei mir Fehlmeldungen ausgelöst.
Was ich gelernt habe
1. Die „Lüfterstufe“ ist keine Gebläsestufe fürs Heizen. Die Vorlage sendet bei einer Stufenänderung den Lüften-Modus 0x22. Läuft die Heizung, schaltet das den Brenner ab (Ausbrennen → Kühlung → Lüften). Die Evo regelt Gebläse und Brennstoff beim Heizen selbst. Beeinflussen kann man nur Solltemperatur und Modus (Eco/Normal/Boost). Lösung: Eine Function „Lüften nur wenn aus“ direkt hinter dem mqtt in von fan/set. Sie lässt den Befehl nur durch, wenn der Status mit „Aus“ beginnt oder „Lüften“ ist. Sonst verwirft sie ihn und schickt HA die alte Stufe zurück.
2. Lüften-Befehle gehen auf dem Bus gelegentlich verloren. Ein erneutes Senden wirkte sofort. Ich wiederhole Lüften-Befehle deshalb nach 10 s einmal, außer es kam zwischendurch ein neuer Befehl oder ein Stopp. Der Stop-Node setzt dafür einen Zeitstempel (global webasto_stop_zeit).
3. Lüften-Werte. Werte aus dem Thread „Webasto und der W-Bus erklärt“ hier im Forum, Stufe 3 von mir angepasst:
| Stufe | Wert | Gebläse (meine %-Skala) |
|---|---|---|
| 1 | 60 (0x3C) |
ca. 50 % |
| 2 | 67 (0x43) |
ca. 63 % |
| 3 | 77 (0x4D), vorher 75 |
ca. 81 % |
| 4 | 80 (0x50) |
ca. 88 % |
Ein Stufenwechsel wirkt nach ca. 13 s.
4. Gebläsewert. Das Gebläse-Byte aus 50 0F ist nach libwbus „Prozent × 2“. Bei der Evo passt das nicht, ich sehe Rohwerte bis 16. In HA rechne ich deshalb ×12,5, sodass Boost = 100 % ist. Zur Orientierung beim Heizen: Eco ca. 62 %, Normal 75–81 %, Boost 100 %. Das ist eine eigene Skala, keine Herstellerangabe.
5. Node-RED-Dashboard-Falle. Ein ui_numeric mit Passthrough verwirft Eingaben, die seinem aktuellen Wert entsprechen. Und in HA sendet number.set_value bei unverändertem Wert gar nichts. Mein „Lüften“-Button in HA ruft deshalb ein Skript auf: Läuft schon „Lüften“, drückt es Stop. Sonst schickt es die eingestellte Stufe per mqtt.publish direkt an vanpi/webasto/fan/set. In Node-RED geht der Befehl am ui_numeric vorbei, der Regler zeigt nur noch an.
6. Start direkt nach dem Lüften. Ein Start knapp eine Minute nach dem Lüften brach bei mir im Vorglühen ab und ging direkt ins Ausbrennen. Ein paar Minuten später lief er normal. Das ist eine Vermutung, nicht belegt. Ich warte nach dem Lüften jetzt „Aus (Pause)“ ab und dann noch 1–2 min.
Automationen in HA
- Push 5 min nach dem Start, ob „Regelbetrieb“ erreicht ist.
- Genau eine Push-Meldung beim Ausschalten: wenn der Status 30 s „Aus (Pause)“ ist und vorher ein echter Betriebszustand war. Nicht nach einem Neustart, nicht nach „Unbekannt“ und nicht nach „Lüften“.
- Laufzeit-Timer mit automatischem Stopp.
Normaler Ablauf bei mir: Vorglühen → Vorförderung → Hochlauf → Stabilisierung → Regelbetrieb in rund 2,5 min. Alle ~10 min taucht für ca. 10 s „Brennstoffförderung unterbrochen“ auf, das ist normal.
Fragen gern hier im Thread.