KWB Heizung über MODBUS in HA

Hallo zusammen,
ich möchte hier einmal kurz meine Erfahrungen zur Modbus Kommunikation / Integration einer KWB Easyfire Type EF2 mit der dazugehörigen CC4 Heizungssteuerung in Homeassistant teilen:

Meine Anlage ist über eine Ethernet Verbindung an mein WLAN angebunden, es handelt sich somit um eine MODBUS TCP Verbindung zwischen Home Assistant und der Heizungssteuerung. Voraussetzung ist das Aktivieren von MODBUS in der KWB Heizungssteuerung – hier sollte jeder mal die Dokumentation seiner Heizungssteuerung durchsehen. Zusätzlich im Home Assistant in den Geräten & Diensten die Integration MODBUS hinzufügen. MODBUS selbst muss dann in der „configuration.yaml“ konfiguriert werden. (kein GUI)
Ein zweiter ganz zentraler Punkt und ohne diese Info braucht man eigentlich gar nicht erst anfangen, sind die MODBUS Registerbeschreibungen des Herstellers. Diese Register legen fest, welche Funktionalität hinter welchem Register verborgen ist, z.B. „8215“ für die gegenwärtige Flammtemperatur des Kessels.
In der HA „configuration.yaml“ Modbus Konfiguration sind das unter der „sensors:“ Beschreibung die „address: xxxx“ Werte. Diese Registerzuordnungen sind anscheinend von Hersteller zu Hersteller sehr unterschiedlich. KWB hat das Thema elegant gelöst. In der Heizungssteuerung ist eine SD Karte verbaut, die jeder Bediener von außen entnehmen kann. Auf dieser SD Karte sind in einer EXCEL Datei alle Modbus Register für den entsprechenden KWB Heizungstype und die laufende Softwareversion der Steuerung enthalten. Der Inhalt kann dann entsprechend für die MODBUS Integration in Home Assistant genutzt werden. Zusätzlich ist in der Excel Tabelle noch für jeden Registerwert eine 2-stelliger Funktionscode enthalten, der in den „sensors“ mit definiert werden muss. Dieser 2-stellige code – in der Regel 03 oder 04, kann aber in der „sensors“ Beschreibung vom MODBUS nach meinem Wissen nicht direkt konfiguriert werden, sondern nur mit dem keyword „input_type: input“ oder mit „input_type: holding“ Der Type „input“ entspricht dem Funktionscode 04 und „holding“ dem Funktionscode 03. Wird in der Exceldatei oder der Registerbeschreibung des Herstellers eine Registerlänge von „2“ angegeben, muss in der „sensors“ Definition der Wert „data_type: uint32“ definiert sein, weil sonst nur der obere bzw. der untere Wert des (doppel-) Registers angezeigt wird. In meinem Fall waren alle relevanten Register mit den dazugehörigen Funktionen / Werten sofort korrekt im HA sichtbar. Sicher muss man schauen und ein wenig „tunen“ und mit den Kommastellen spielen, aber ansonsten war das bei mir innerhalb von 4-5 Stunden erledigt !
In der Excel Tabelle kann dann jeder für sich entscheiden, welche Werte für ihn interessant sind und welche nicht, daher verzichte ich hier mal darauf seitenlangen yaml code zu veröffentlichen.
Viel Glück und hoffe der ein oder andere kann die Hinweise für seine MODBUS Integration nutzen !

modbus:
  - name: KWBEF2
    type: tcp
    host: 192.168.0.xxx
    port: 502
    delay: 0
    message_wait_milliseconds: 300
    timeout: 5
    sensors:

      - name:  MODBUS-FlammTemp
        address: 8215
        device_class: temperature
        state_class: measurement
        unit_of_measurement: "°C"
        scale: 0.1
        precision: 2
        input_type: input
        scan_interval: 15

      - name:  MODBUS-Brennstoff-Rest
        address: xxxxx
        state_class: total_increasing
        unit_of_measurement: "kg"
        precision: 2
        input_type: holding
        data_type: uint32
        scan_interval: 240
1 „Gefällt mir“