Windhager InfoWIN – Home Assistant Integration

Hallo zusammen,

ich hab in den letzten Wochen eine custom Integration für Windhager Heizungsanlagen entwickelt und wollte sie hier mal vorstellen — vielleicht hat ja jemand von euch auch eine Windhager-Anlage rumstehen :grinning_face_with_smiling_eyes:

**Was macht die Integration?**

Sie verbindet sich über den lokalen **InfoWIN / InfoWIN Touch Webserver** (RC7030) mit der Heizungsanlage — kein Cloud-Zugriff, keine Windhager-App nötig. Alle Daten bleiben im lokalen Netzwerk.

- Automatische Discovery aller Module, Funktionsgruppen und Datenpunkte — keine manuelle Eingabe von OIDs nötig

- Über 350 Sensoren pro Anlage (Temperaturen, Pumpen, Betriebsstunden, Fehlercodes, …)

- ~200 LON-Netzwerkvariablen (NV’s) als zusätzliche Sensoren, inkl. Pelletverbrauch, Betriebsstunden, Zündungsanzahl

- **Schreibzugriff** (experimentell): Sollwerte und Betriebsmodi direkt aus HA setzen

- **PMX Brennerzustand** (BioWIN): lesbare Zustandsanzeige statt roher Hex-Werte (Standby, Zündung, Hochbrennen, Volllast, Modulation, …)

- Konfigurierbare Poll-Intervalle, NV-Sensorgruppen, Sensor-Kalibrierung

- HACS-kompatibel (custom repository, PR für den default store ist eingereicht)

**Getestet auf:**

Windhager BioWIN (Baujahr 2012), MES INFINITY, RC7030 Webserver (Firmware S 1.0.2)

**Wahrscheinlich kompatibel** mit anderen MES INFINITY Anlagen mit RC7030 Webserver — aber da ich nur eine Testinstallation habe, kann ich das nicht garantieren. Feedback ob’s bei anderen Anlagen funktioniert (oder nicht) wäre super wertvoll!

**Wahrscheinlich NICHT kompatibel** mit neueren Geräten die nur eine comWinStack API anbieten.

**Links:**

- GitHub: GitHub - wiesi12/windhager-tools: Home Assistant integration for Windhager heating systems with InfoWIN web server (local polling, no cloud) · GitHub

- HACS custom repository: `wiesi12/windhager-tools`

Freue mich über Feedback, Erfahrungsberichte und natürlich über jeden der’s ausprobiert! :fire:

Servus Wiesi,

ich habe seit Monaten das gleiche Projekt und habe es vorallem für PuroWin erstellt.

Vielleicht müsste man die Ideen zusammenführen, wenn du Zeit hast kannst du aber gerne mal meine Ausführung testen.

Hier sollte sich alles automatisch intialisieren und das hinterlegte Panel-Dashboard zeigt nur die Ist-Werte mit variablen SVGs an.

Gerne teste ich bei zeiten auch deine Ausführung.

Servus,

war ja klar, dass es schon eine Integration gibt, aber ich sie nicht gefunden habe :rofl:

Ich hab deine mal eben installiert, funktioniert soweit auch, das einzige was mir gerade auffällt, die Programme werden als nicht verfügbar angezeigt.

Das sollte erstmal kein Fehler der Integration sein, sondern ein “Timing-Fehler”: Die Zeitprogramme entstehen erst beim vollständigen Einlesen im Hintergrund, laufen also nur im trägen Abruftakt mit — dadurch stehen sie nach der Ersteinrichtung bis zu 15 Minuten ohne Wert da und werden als „nicht verfügbar" angezeigt. Danach erscheinen sie von selbst. Habe es aber eben behoben, kommt mit der nächsten Version. Wie sieht dein Panel aus - funktioniert da alles? Gerne kannst du auch bei meiner Integration deine offenen Bugs/Issues und Auffälligkeiten einreichen - ich denke von den Features/Code Umfang und den Polling Themen ist mein Integration “flexibler” :slight_smile: Aber wollte hier nicht zu stark für meine Integration werben, dachte mir die Community von Windhager ist ja doch recht überschaubar und so können wir das vielleicht bündeln :slight_smile:

Hey, gute Info — schön zu wissen dass es ein Timing-Thema ist.

Der Gedanke mit dem Bündeln klingt eigentlich gar nicht schlecht, die Windhager-Community ist wirklich überschaubar genug dafür. Ich muss aber ehrlich sagen: den Code hat Claude Code geschrieben, ich bin selbst kein Python-Experte :sweat_smile:

Was hättest du dir konkret vorgestellt?

Statt zwei Integrationen parallel zu pflegen, bringen wir meine noch weiter — und wenn sie deine Generation bzw. den BioWin nicht sauber erkennt, machen wir sie passend - viel kann dazu nicht mehr fehlen, weil ich die originale API nachgebaut habe.

Was ich dafür brauche um das final zu bewerten, ist ein Abzug deiner Anlage - ich habe dafür ein Tool erstellt:

Entweder über Powershell aufrufen oder über das Probe.cmd (alles) auslesen.

python tools/heatnexus_probe.py menus <deine-ip>

python tools/heatnexus_probe.py nv <deine-ip>

Beides liegt danach in probe/ als JSON. Bitte vorher IP-Adressen und Seriennummern entfernen — die Dateien sind nicht anonymisiert.

Gerne auch die Diagnosedaten der Integration mitschicken.

Am liebsten als Discussion im Repo, dann können wir dort direkt weiterreden: https://github.com/xIceTea/HeatNexus/discussions

Besonders interessiert mich deine NV-Seite. Bei mir liefern die Netzwerkvariablen großteils Rohwerte, bei dir offenbar brauchbare — wenn das an der Anlagengeneration hängt, ist das eine Funktion, die beiden fehlt.

Ich habe einen Windhager BioWin 100 Pellets Kessel Bj ca. 2012, ohne Netzwerkanbindung. Wie bekomme ich es hin, den mit HA verbinden zu können?

Meines Wissens nach geht das ohne dem Infowin Server nicht, mit Bastelei könntest du die Daten direkt von der Heizung abgreifen, aber würd ich nicht machen.

Ich hab mir das jetzt mal etwas näher angesehen und mit Hilfe von KI mir was überlegt und das von KI zusammenfassen lassen, vielleicht hilft es jemand anderen:
Wir bauen deinen Windhager BioWIN Klassik BWK 100 (BJ 2010) über seinen vorhandenen LON-Bus in Home Assistant ein. Dabei greifen wir am X17-Anschluss des Feuerungsautomaten die vier vorhandenen Signale +12 V, GND, LON+ und LON− parallel ab. Am Kessel selbst wird nichts ersetzt und das originale InfoWIN-Bedienteil bleibt unverändert in Betrieb.

Verbaut werden dein vorhandener ESP32 ESP-WROOM-32 auf dem GERUI-30-Pin-Breakout, ein DollaTek MAX485 5-V-RS485-Transceiver, ein 12→5-V-Step-Down, ein 100-nF-Kondensator am MAX485 sowie ein kleiner 10-kΩ/20-kΩ-Spannungsteiler zwischen MAX485-RO und ESP32-GPIO35. Der ESP32 läuft mit MES-WiFi, verbindet sich per WLAN mit deinem Netzwerk und überträgt die Windhager-Daten per MQTT an Home Assistant. Dafür brauchen wir beim Kessel weder LAN noch einen teuren Windhager-Webserver.

Die Stromversorgung nehmen wir später direkt aus den 12 V des BioWIN.

Von der Integration erwarten wir – abhängig davon, welche LON-Datenpunkte dein Kessel tatsächlich bereitstellt – insbesondere Kesseltemperatur, Brenner-/Betriebsphase, Modulations- bzw. Leistungszustand, Brennerstarts, Betriebsstunden, Pelletförderung bzw. Pelletverbrauch und Fehler-/Statusinformationen. Besonders interessant ist für uns der Pelletverbrauch: Damit können wir künftig einen einzelnen Warmwasser-Ladezyklus nicht mehr nur schätzen, sondern wesentlich genauer bewerten.

Den Weg über den LON-Bus gibt es schon fertig. Georg Hofstetter hat mit MES-WiFi genau das gebaut: ein ESP32 am LON-Bus des Windhager, die Daten gehen per MQTT ins Heimnetz. Firmware und Platine liegen offen unter. Für die Protokollarbeit gibt es vom selben Autor einen LON-Dissector für Wireshark. Dort anfangen ist günstiger, als es neu zu entwickeln.

Zwei Punkte bestimmen den Aufwand:

Der MAX485 liefert nur die Pegel. Elektrisch liegt der Bus nahe an RS485, die Codierung ist eine andere — ein UART liest das nicht. MES-WiFi dekodiert die Bitfolge über das RMT-Modul des ESP32. Ohne diese Dekodierung kommt am GPIO nichts Brauchbares an.

Auf dem Bus liegen keine Parameter, sondern Telegramme. LON adressiert über Domain, Subnetz, Knoten und einen Selektor für die Netzwerkvariable. Mitlesen lässt sich, was die Knoten von sich aus senden, also der Verkehr zwischen Feuerungsautomat und InfoWIN. Einen Wert, den niemand sendet, kann man nicht abfragen, solange man nicht selbst als LON-Knoten auftritt. Kesseltemperatur, Betriebsphase und Störungen zeigt das InfoWIN an, und das InfoWIN hängt am Bus — die laufen also darüber. Ob auch Pelletverbrauch, Zündungen und Betriebsstunden dabei sind, zeigt erst ein Mitschnitt. Ich würde sie nicht fest einplanen.

Schreibzugriff würde ich lassen. Mitlesen ist harmlos, senden nicht.

Zu HeatNexus, weil die Frage naheliegt: Die Integration spricht die lokale HTTP-Schnittstelle des InfoWIN Touch mit Webserver an und holt auch die LON-Netzwerkvariablen über diesen Webserver. Ohne das Modul fehlt ihr der Gesprächspartner. MES-WiFi liefert an MQTT und landet damit direkt in Home Assistant, an HeatNexus vorbei. Ein eigener Treiber für solche Daten ist denkbar — den Kern von den Gerätetreibern zu trennen, steht ohnehin auf der Liste. Dafür brauche ich Mitschnitte von so einer Anlage. Gerne als Diskussion im Repo:

Der bequeme Weg bleibt die Nachrüstung auf InfoWIN Touch mit Webserver: kostet Geld, dafür gibt es die volle Schnittstelle und niemand muss löten.

Hallo xIceTea,
hab durch Zufall deine bzw eure Integration gefunden für meine BioWin2 Pelletheizung (BJ2021)
Bis auf das Dashboard hat alles auf Anhieb funktioniert.
Beim Dashboard gab es ein paar konflikte die Geräte abzufragen.
Dies konnte ich aber fixen.

vielen Dank nochmals für die Integration

Gruß Boris

Hallo Boris,

danke für die Rückmeldung.

Zum Dashboard: Was genau ist passiert? Blieb die Seite leer, fehlten einzelne Karten, oder stand dort eine Fehlermeldung? Und wie hast du es behoben?

Das Dashboard wird bei jedem Öffnen aus den gefundenen Geräten neu aufgebaut. Wenn dabei etwas kollidiert, trifft es vermutlich jede BioWIN 2 und gehört repariert.

Am besten als Issue im Repo, dort geht es nicht unter

Hilfreich dazu der Diagnose-Export: Einstellungen → Geräte & Dienste → HeatNexus → Drei-Punkte-Menü → „Diagnose herunterladen". Adresse, Seriennummer und Passwort sind darin geschwärzt, die Fassung der Integration steht drin. Die Datei zeigt, welche Geräte und Datenpunkte deine Anlage meldet — damit lässt sich der Aufbau des Dashboards hier nachstellen.

Falls im Protokoll eine Meldung von heatnexus steht, häng sie mit an.

Gruß

Das Dashboard zeigte am Anfang nichts an


Und im Protokoll war diese Meldung:


Ich habe dann mit KI Hilfe die Dashboard.py angepasst:

“We encountered a crash during dashboard generation in newer Home Assistant versions and fixed it locally in `dashboard.py`.
Here is the exact before-and-after comparison of lines 409–412 so you can include it in the next release:
Original Code:
for geraet in list(geraete_registry.devices.values()):
kennung = next((id_tuple for id_tuple in geraet.identifiers if id_tuple == DOMAIN), None)
if kennung is None:
continue
Our Fixed Code:
for geraet in list(geraete_registry.devices.values()):
if not hasattr(geraet, “identifiers”) or not geraet.identifiers:
continue
try:
kennung = next((w for bereich, w in geraet.identifiers if bereich == DOMAIN), None)
except ValueError:
continue
Why this is needed:
If a registered device has no identifiers (or if `geraet.identifiers` evaluates to an empty set), trying to loop over it inside the generator comprehension throws a TypeError/ValueError, crashing the entire dashboard setup. Adding the safety check and the try-except block prevents this.
Note: To make it fully future-proof against upcoming HA Core deprecations, changing `.values()` to `.async_entries()` in line 409 is also recommended.“

Falls gewünscht kann ich heute abend den Diagnose Export anhängen

Gruß Boris

:crayon:by HarryP: Post formatiert

Hallo Boris,
die Ursache ist gefunden - danke für das Feedback. Der Aufbau liest alle Geräte aus Home Assistant, auch die anderer Integrationen, und eine davon meldet bei dir eine Gerätekennung, die nicht aus genau zwei Teilen besteht. Home Assistant lässt das zu; beim Zerlegen dieser Kennung bricht der Aufbau mit einem ValueError ab – und zwar nicht nur beim Dashboard, sondern auch beim Panel und bei der Schaubild-Karte. Von deiner Änderung wirkt deshalb nur das except ValueError. Leere Kennungen und neuere Home-Assistant-Fassungen haben damit nichts zu tun, und .async_entries() gibt es an dieser Stelle nicht.
Die nächste Fassung liest nur noch die eigenen Geräte der Integration. Das Update überschreibt deine Änderung und sollte danach auch ohne weitere Änderung von dir funktionieren.
Dazu haben ich ein Issue angelegt: #11
Dort kannst du später den Protokolleintrag und den Diagnose-Export anhängen - wenn du willst. Falls die Warnung „Detected that custom integration ‘heatnexus’ calls …" noch im Protokoll steht, kopiere gerne den vollständigen Text – im Bild ist der Auszug abgeschnitten.
Eine BioWIN 2 hat uns bisher niemand gezeigt. Wenn du magst, hilft uns ein vollständiger Abzug deiner Anlage. Die Sonde liest die ganze Steuerung aus und ändert nichts, gibt aber Aufschluss wie die verschiedenen FCTs je Heizungstyp ausgeführt und angesteuert werden:
Das Projekt herunterladen: am besten → Code → Download ZIP, entpacken.
Im entpackten Ordner: python tools/heatnexus_probe.py all <IP deiner Anlage>
Benutzer ist USER, das Passwort dasselbe wie in der Integration. Die Sonde fragt danach.
Je nach Größe der Anlage dauert das 15 bis 40 Minuten, die Ergebnisse landen im Ordner probe/. Anders als der Diagnose-Export enthält dieser Abzug die Kennung und die Seriennummer deiner Anlage. Wenn dir das für einen öffentlichen Anhang zu weit geht, sag Bescheid oder lass es kurz mit Claude entfernen.
Gruß

Hi, geile Integrstion! Habe sie für mein BioWIN2 installiert. Habe aber auch das Dashboard Problem. Weißt du schon wann du den Fix Release wirst? Hab gesehen dass du schon daran arbeitest.

Hallo,

sorry wenn ich dumm frage. Bin erst ziemlich neu in dem ganzen (HA/Programmierung usw).
Also am besten für dich ist wenn ich das Projekt herunterlade und dir in Github unter issues bereitstelle so wie ich das verstanden habe.
Brauchst du sonst noch was?

Softwarestände Heizung oder HA usw?

Gruß Boris

Ich habe mehrere Fehler gefunden die nur bei der BioWin2 zum vorschein kommen. Diese Fehler habe ich soweit abgearbeitet und comittet (siehe Branch V1.13). Ich hätte ganz gerne noch einen Sondenlauf (Probe) abgewartet - auch weil es so ähnliche Themen bei der Windhager Logwin steuerung gibt (Kombikessel).

Sollte er bis heute Abend nicht vorliegen, würde ich einfach die erste Beta Releasen und zumindestens die Ladefehler usw. gefixt und getestet zu haben.

Und Boris:

Genau es würde mir nur um einen Sondelauf gehen, der fragt wie die Bus Steuerung (InfoTouch), alle Parameter lokal per API ab und gibt mir Auskunft über die Windhager / BWT Logik. Darauf würde ich die entsprechende Geräteanbindung anpassen.

Es würde reichen, wenn du dir den „Tools“ Ordner (komplett) runterladen würdest und innerhalb des Ordners die probe.cmd ausführst. Danach IP der Steuerungen einbinden und auf „All bzw Alles“ klicken. Die erzeugte Datei würde ich dann für meine Auswertung bzw. die korrekte Einbindung ungetesteter Modelle benötigen.

(Geht natürlich auch wenn du das Ganze Repo lädst und dann lokal in den Ordner springst..)

Datei dann gerne im Issue :)!

Hat sich erledigt
Stell es dann im GitHub Issue bereit

Ich hab dir in Github bereits im Issue geantwortet - hier ist leider nicht der komplette Probe Abzug erstellt / angefügt worden. Irgendwo liegt hier noch ein Problem, kannst du es mit dem neuen Tool nochmal versuchen?

Hallo zusammen, @snowstrolch @Diemachete,

die erste Beta ist draußen: 1.13.0-beta.1

Damit sollten die Probleme mit der BioWIN 2 erledigt sein. Das leere Dashboard samt Panel und Schaubild-Karte ist behandelt, ebenso die Warnung unter HA 2026.9. Was sonst noch dazugekommen ist, steht im Release.

Installieren über HACS mit Vorabversionen, danach HA neu starten und den Browser einmal hart neu laden. Eine eigene Anpassung am Code braucht es damit nicht mehr.

Gebt gerne Bescheid, ob es bei euch läuft. Wenn nicht, am besten als Issue mit Diagnose-Export.

@snowstrolch: Wäre super, wenn der Sondenabzug noch nachgereicht wird. Damit kann ich die BioWIN 2 sauber abgleichen. Einfach all laufen lassen und den Ordner probe/ ans Issue hängen.

Danke euch fürs Testen!