Webasto Air Top Evo 55 am VAN PI → Home Assistant (über MQTT)

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.

Moin @toms2k

Die Werte für die Gebläsestufen der Evo kamen aus dem Multicontrol Display und stellen damit genau die Werte da. Wie die aufgebaut sind hatte ich mir gar richt angesehen, ist eigentlich ganz cooles Feature, damit könnte man sie auch stufenlos machen.

Bezüglich der Statusmeldungen hatte ich super viele zusammengefasst, da sie den Nutzer nur verwirren. Alleine im Startvorgang gibt es 4 verschiedene Vorgänge.

Kannst du die Heizung komplett ohne das Bedienteil starten ? Bzw hast du das aus meiner integration übernommen oder die Kommunikation selber aufgebaut? Die Frage rührt daher, dass in der aktuellen Beta inzwischen auch eine Integration für die Webasto ist, jedoch muss nach spannungsfreiheit die Heizung erst einmal über das Panel initialisiert werden laut Vincent.

Bin noch am überlegen ob ich die Beta aufspiele und das umstricke oder nicht :smiley:

Der Grund weshalb die die Gebläsestufen im heizubetrieb nicht wechseln kannst liegt schlicht daran, dass die Heizung nur einen Motor hat. Auf dieser Welle sitzen das Verbrennungsluftgebläse und das Umluftgebläse.
Die Heizung regelt mit der Drehzahl rein die Verbrennungsluft für das richtige Kraftstoff Luft Verhältnis.

Das Umluftgebläse ist beim Design der Heizung eben so ausgelegt worden um die proportional entstehende Wärme abzuführen.

Nutz du die Heizung im Frischluftbetrieb?

Grüße

@Tristan
die Info mit dem Panel hast du von mir :wink:
Aber hier ein kleines Update, den laut Webasto brauch man diesen Break.
Wollte dann noch mal den ein oder andern Versuch machen um zu gucken ob wir diesen break simulieren können, aber soweit bin ich nicht gekommen. Denn egal was ich gemacht habe, die Webasto lief auch ohne den Break. Warum es bei mir mal war, das ich einmal über das Panel ein Befehl senden musste, kann ich nicht nachvollziehen.

Ups :smiley:

Die Thermotest Software kann es aber auch nicht ?
Oder die Thermotest meldet sich anders und daher geht es ohne.

Moin @Tristan, danke für die Erklärung mit dem gemeinsamen Motor. Das erklärt genau, was ich beobachtet habe: Beim Heizen hängt das Gebläse an der Verbrennungsluft, deshalb gibt es dort keine eigene Gebläsestufe. Und danke für die Lüften-Werte aus dem MC-Display. Stufenlos wäre tatsächlich spannend, der Wert ist ja nur ein Byte im Frame. Die Zwischenwerte habe ich aber noch nicht getestet.

Zur Kommunikation: Grundlage war die Pekaway-Autoterm-Vorlage. Darauf habe ich das W-Bus-Protokoll selbst aufgebaut, mit den Frames und Infos aus deinem Thread „Webasto und der W-Bus erklärt“ und aus libwbus. Einen Break oder eine eigene Initialisierung sende ich nicht. Nach dem Boot fragt der Flow nur Status und Aktoren ab, danach laufen Start mit Solltemperatur, Keep-alive und Stop als normale Frames über /dev/ttyPKW1 (2400 Baud, 8E1).

Ohne Bedienteil: [Ja, bei mir ist kein Panel verbaut, Start und Stop laufen nur über den VAN PI. / Ein Panel ist verbaut, ich nutze es aber nicht.] [Nach einer Stromtrennung ist sie bei mir bisher ohne Panel wieder angelaufen. / Ob sie nach einer kompletten Stromtrennung ohne Panel startet, habe ich gezielt noch nicht getestet. Das mache ich und melde mich.]

Frischluft: [Nein, ich fahre Umluft. / Ja, Frischluft.]

Die zusammengefassten Statusmeldungen kann ich gut nachvollziehen. Mir haben die Einzelzustände vor allem bei der Fehlersuche geholfen. Fürs Dashboard würde ich sie inzwischen auch eher gruppieren.

Grüße, Tom

Moin Tom, bitte gerne.

Ich verstehe deine Antowrt zum Panel irgendwie nicht.

Das was ich mit Initialiseirung bezeichne, ist nichts anderes, als das was die thermotest Software auch schickt, leider habe ich zu den Befehlen keine Aufschlüsselung gefunden, auch nicht in der libwbus.
Jedoch schickt die Thermotest andere Parameter als das Panel oder das Webasto Display, bekommt da aber die gleichen Status werte zurück, nur in anderen Gruppen. Will heißen, hänge ich das vanpi mit auf den W-Bus, und höre einfach nur mit, ist meine Aktoren/zustandsanzeige ohne Daten, obwohl die Thermotest sie bekommt.
Meiner Vermutung nach ist aber genau diese Abfrage am Anfang die Ursache dafür, das die Heizung nach Spannungsaus wieder startet. Die Parameter die die Thermotest abfragt umgehen quasi das Signal runterziehen des Displays, danach akzeptiert die Heizung alle Befehle des Dislplays. Den Die Thermotest wird auch nur über den Wbus und K-Line Adapter angeschlossen.@WulleOnTour

Die Thermotest hat pi mal daumen 40 unterschiedliche Zustände, in welcher die Heizung über einen Brennverlauf sein kann. :smiley:

Hey, ich glaube ich verstehe deine Frage nicht…