OTthing – Das universelle WiFi-OpenTherm Interface

Die OpenTherm Schnittstelle wurde entwickelt, um herstellerübergreifend Geräte aus dem Heizungs- und Klimabereich wie Gasthermen, Wärmepumpen, Hackschnitzelheizungen, Ölkessel, Lüftungsanlagen und Klimageräte zu steuern. Inspiriert durch die Projekte OTGW, DIYLESS Open Therm und Laxilef’s OTGateway entstand der Wunsch nach einer Eigenentwicklung eines kompakten OpenTherm-Interfaces inklusive Firmware mit folgenden Anforderungen und Funktionen:

  • Kompaktes, kostengünstiges Ein-Leiterplatten-Design in SMD-Technik
  • Integriertes OpenTherm-Master- sowie Slave-Interface auf einem Gerät
  • Einfache und robuste Stromversorgung über USB-C-Buchse
  • Kompaktes Gehäuse mit Fokus auf praxisgerechten Einbau
  • Anschlussmöglichkeit für 1-Wire-Sensoren (z. B. zusätzliche Temperaturfühler)
  • Anschlussmöglichkeit eines Impulsgebers oder einer Gabellichtschranke, z. B. zur Erfassung der Kondensatbildung in Brennwertgeräten
  • Automatischer Bypass, sodass der herkömmliche Betrieb über das Raumthermostat ohne Neuverkabelung wiederherstellbar ist
  • Auswählbare Betriebsarten: komplette Steuerung der Therme durch das OTthing oder reiner Monitoring-/Gateway-Betrieb
  • Witterungsgeführte Vorlauftemperatur mit konfigurierbarer Heizkurve
  • Mehrkreisfähigkeit: Steuerung von bis zu zwei Heizkreisen mit unabhängigen Parametern
  • Zeitprogramm (Time Program) für automatische Sollwert- und Betriebsmodus-Umschaltungen
  • Feingranulare Regelung von Sollwerten, Vorlauftemperaturen und Betriebsgrenzen
  • Live-Weboberfläche mit Echtzeit-Status, Logausgabe und lokaler Bedienung ohne Cloud-Abhängigkeit
  • REST-API und WebSocket für Automatisierung, Visualisierung und externe Integrationen
  • Direkte OpenTherm-Rohtelegramm-Funktionen (Lesen/Schreiben) für Diagnose und Entwicklung
  • MQTT-Ausgabe von Messwerten und Zuständen mit automatischer Integration in Home Assistant (Discovery)
  • Integriertes WLAN-Provisioning (Scan/Einrichtung), OTA-Firmware-Update und lokale Datenexport-Funktion für Service und Fehlersuche
  • Quelloffene Hardware und Firmware, um eigene Erweiterungen und Modifikationen zu ermöglichen

Das OTthing kann durch das integrierte Master- und Slaveinterface in folgenden Betriebsarten verwendet werden:

  • Master: Die Therme wird vom OTthing gesteuert. Über das Webinterface des OTthing oder über die MQTT-Schnittstelle können zahlreiche Betriebsparameter eingestellt und Messwerte ausgewertet werden.
  • Repeater: Die Kommandos des angeschlossenen Raumthermostats werden zur angeschlossenen Therme weitergeleitet und umgekehrt, sodass alle Messwerte und Einstellungen im Netzwerk zur Verfügung stehen.
  • Bypass: Das integrierte Relais verbindet direkt das angeschlossene Raumthermostat mit der angeschlossenen Therme, ohne dass in die Kommunikation eingegriffen wird. Bei Wegfall der Stromversorgung wird automatisch der Bypass-Modus aktiviert.
  • Test: Master- und Slaveemulation. Einem angeschlossenen Raumthermostat und/oder einer angeschlossenen Therme werden Testdaten geschickt. Ebenso können der Master- und Slaveanschluss des OTthing direkt miteinander verbunden werden (Looptest), um die OpenTherm-Hardware des OTthing zu testen.

Schaltplan

Anschlussbelegung CPU

OpenTherm Master TXGPIO 1
OpenTherm Master RXGPIO 3
OpenTherm Slave TXGPIO 7
OpenTherm Slave RXGPIO 6
Schaltregler +24 V für Slaveinterface enableGPIO 10
Bypass-Relais mit LEDGPIO 20
LEDGPIO 21
LEDGPIO 2
LEDGPIO 8
Digitaleingang SchraubklemmeGPIO 5
1wire dataGPIO 4

Inbetriebnahme

Anschlüsse

  • Die Therme / Lüftungseinheit an die Schraubklemmen „Boiler“ anschließen
  • Optional die Raumeinheit an die Schraubklemmen „Roomunit“ anschließen
  • OTthing mit einem USB-C Netzteil verbinden

OTthing ins Netzwerk einbinden

Reset/Config Taster für ca. 2 s gedrückt halten. Damit wird das OTthing in den Konfigurationsmodus versetzt. Die Status-LED blinkt nun immer 2x. Das OTthing kann nun auf zwei Arten mit dem WiFi Netzwerk verbunden werden:

  1. Mit einem WiFi-fähigen Gerät mit dem Access Point OTthing verbinden, das AP Passwort lautet 12345678. Mit einem Browser zur Adresse http://4.3.2.1 navigieren, um die Konfigurationsoberfläche des OTthing zu öffnen. Unter dem Reiter setup einen WiFi-Scan durchführen, das entsprechende Netzwerk auswählen und das WiFi-Passwort angeben.
  2. Alternativ kann das OTthing seit v2.49 per BLE in ein WiFi-Netzwerk integriert werden, siehe improv-wifi.com

Firmware

Setup

Network

Hostname

Hostname unter dem das OTThing im Netzwerk erreicht werden kann.

WiFi

Mit dem scan Button werden alle verfügbaren WiFi Accesspoints gesucht und angezeigt, um das OTthing mit dem eigenen Netzwerk zu verbinden.

Web UI Login

Legt ein Passwort für den Zugriff auf die Weboberfläche an

OpenTherm

Mode
  • Bypass: Angeschlossene Therme und Thermostat werden elektrisch direkt miteinander verbunden, in die Kommunikation wird nicht eingegriffen.
  • Master: Das OTthing steuert eine am Anschluss „Boiler“ angeschlossene Therme. Das OT Slaveinterface (Anschluss „Room-unit“) kann über die Option „enable slave interface“ zusätzlich aktiviert werden.
  • Repeater: OpenTherm Master- und Slaveinterface sind aktiv. Kommandos des Raumthermostats werden ausgewertet, angezeigt, per MQTT gesendet und an die Therme weitergeleitet (Monitoring). Antworten der Therme werden ebenfalls ausgewertet und zurück zum Thermostat weitergeleitet. Je nach Einstellung können bestimmte Kommandos vom OTthing überschrieben werden.
  • Test: Master- und Slaveemulation inkl. Looptest.
DHW set temperature

Solltemperatur (default) für Brauchwasser, kann über MQTT geändert werden.

Override values

Im Modus Master werden bei aktivierter override Option die jeweiligen vom angeschlossenen Raumthermostat gesendeten Werte verwendet. Im Modus Repeater werden bei aktivierter override Option die jeweiligen Werte durch die errechneten oder vorgegebenen Werte vom OTthing verwendet.

Outside temperature

Hier wird ausgewählt, aus welcher Quelle das OTthing die Außentemperatur bezieht, um die Vorlauftemperatur mithilfe der Heizkurveneinstellungen zu setzen. Mögliche Quellen der Außentemperatur:

  • An die Therme angeschlossener Temperaturfühler
  • MQTT Topic (z. B. über Home Assistant Regel)
  • BTHome kompatibler Bluetoothsensor
  • 1wire Sensor
  • Open Weather API

Heating circuit 1 / 2

Einstellung und Visualisierung der Heizkurven. Die rote Heizkurve stellt den Zusammenhang zwischen Außentemperatur und Vorlauftemperatur aufgrund der eingestellten Parameter dar. Die grüne Heizkurve berücksichtigt ggf. zusätzlich die Raumkompensation. Kleine vereinfachte Einstellhilfe:

  • Auslegung anhand der vorhandenen Anlage einstellen
  • Die folgenden beiden Schritte jeweils bei möglichst konstanten Außentemperaturen von einmal unter 0 °C und einmal über 10 °C durchführen
  • Alle Heizkörperthermostate ganz aufdrehen oder Thermostatköpfe entfernen
  • Über die Betriebsparameter die Vorlauftemperatur so weit absenken, damit der schwierigste Raum noch die eingestellte Raumtemperatur erreicht, dann Marker speichern
  • Steilheit und Niveau so einstellen, dass die Kurve durch die Marker läuft

Der Zustand des Integrationsgliedes des (aktivierten) PI Reglers kann beim Einstellen der Heizkurve helfen. Bleibt der Wert nahe um 0 K liegt die Heizkurve bei der herrschenden Außentemperatur richtig.

Dimensioning

Auslegung der Heizanlage. Typische Werte:

HeizungsartMax. Vorlauf (°C)HeizkörperexponentBemerkung
Gasbrennwert/Radioator751,3Standard-Radiatoren, moderate Trägheit
Gasbrennwert / Flachheizkörper701,25Flache Heizkörper → etwas steilere Kurve nötig
Pelletkessel / Radiator651,3Typisch für mittelgroße Gebäude
Wärmepumpe / Radiator551,2Niedertemperatur-Heizsystem, langsame Reaktion
Wärmepumpe / Fußbodenheizung451,15Sehr träge, sehr niedrige Vorlauftemperatur

Setup

Flow set temperature (default)

Standard-Vorlauftemperatur wenn keine Werte zur Vorlauftemperaturberechnung oder Werte über MQTT vorhanden sind.

Min. flow temperature

Mindest-Vorlauftemperatur. Unterschreitet die über die Heizkurve errechnete Vorlauftemperatur diesen Wert wird:

  • bei deaktivierter Option suspend below min. flow als Vorlauftemperatur die Mindest-Vorlauftemperatur verwendet
  • bei aktivierter Option suspend below min. flow der Heizkreis abgeschaltet
Room setpoint source
  • MQTT: Die Raumsolltemperatur wird über MQTT eingestellt
  • OT roomunit: Die Raumsolltemperatur wird über das angeschlossene Thermostat eingestellt
  • auto: Als Raumsolltemperatur wird der jeweils zuletzt veränderte Wert über MQTT oder das Raumthermostat verwendet
Room compensation (PI controller)

Die Differenz aus Raummsolltemperatur und Raumisttemperatur kann über einen parametrierbaren PI Regler auf die berechnete Vorlauftemperatur beaufschlagt werden. Als Quelle der Raumtemperatur kann ein MQTT Topic, ein 1wire Sensor, ein BTHome Bluetooth Sensor oder die OpenTherm Raumeinheit ausgewählt werden.

Enable

Aktiviert oder deaktiviert den PI Regler.

P gain / I gain

Regelparameter des PI Reglers. P gain = Proportionalverstärkung, I gain = Integralverstärkung.

Boost

Bei einer Regelabweichung von e > 1.0 wird die Vorlauftemperatur zusätzlich mit e * boost beaufschlagt.

Suspend on room setpoint

Der Heizkreis wird bei aktivierter Option deaktiviert sobald die Raumtemperatur (+ Hysterese) erreicht ist. Bei Unterschreiten der Raumtemperatur (- Hysterese) wird der Heizkreis wieder aktiviert.

Returnlimit Δt

Überschreitet die gemessene Rücklauftemperatur die Rücklaufheizkurve wird mittels eines PI Reglers die Vorlauftemperatur abgesenkt.

Heating curve

Time programm

MQTT Topics

Auf folgende MQTT Topics reagiert das OTthing, um Betriebsparameter zu setzen. Die Steuerelemente der Homeassistantintegration werden automatisch auf diese Topics konfiguriert und verwenden diese beim Ändern von Einstellungen in Home Assistant.

Modus für die Vorlaufsolltemperatur

MQTT TopicWerteFunktion
<basetopic>/outsideTemp/set-30..30 °CAktuelle Außentemperatur zur Vorlauftemperaturberechnung anhand der Heizkurve
<basetopic>/dwhSetTemp/set10..70 °CBrauchwasser-Solltemperatur
<basetopic>/chSetTemp1/set
<basetopic>/chSetTemp2/set
0..90 °CVorlauftemperatur Heizkreis 1/2 bei manueller Steuerung
<basetopic>/chMinTemp1/set
<basetopic>/chMinTemp2/set
10..40 °Cminimale Vorlauftemperatur Heizkreis 1/2
<basetopic>/chMode1/set
<basetopic>/chMode2/set
„off“ | „heat“ | „auto“Modus Heizkreis 1/2
<basetopic>/dhwMode/set„off“ | „heat“Brauchwasserbereitung ein/aus
<basetopic>/roomSetpoint1/set
<basetopic>/roomSetpoint2/set
0..30 °CRaumsolltemperatur zur Vorlaufberechnung
<basetopic>/roomTemp1/set
<basetopic>/roomTemp2/set
0..30 °CAktuelle Raumtemperatur zur Kompensation über PI Regler
<basetopic>/overrideChOn1/set
<basetopic>/overrideChOn2/set
„OFF“ | „ON“Override Heizanforderung
<basetopic>/overrideChFlow1/set
<basetopic>/overrideChFlow2/set
„OFF“ | „ON“Override Vorlaufsollwert
<basetopic>/overrideDhw/set„OFF“ | „ON“Override Brauchwasser
<basetopic>/ventSetpoint/set0..100 %Sollwert für Lüftungsanlage
<basetopic>/ventEnable/set„OFF“ | „ON“ein/aus für Lüftungsanlage
<basetopic>/openBypass/set„OFF“ | „ON“Bypass für Lüftungsanlage
<basetopic>/autoBypass/set„OFF“ | „ON“Autobypass für Lüftungsanlage
<basetopic>/freeVentEnable/set„OFF“ | „ON“Freevent für Lüftungsanlage
<basetopic>/bypass/set„OFF“ | „ON“Schaltet das OT interface auf bypass
<basetopic>/roomMode1/set
<basetopic>/roomMode2/set
<basetopic>/maxModulation/set0..100 %
<basetopic>/summerMode/set„OFF“ | „ON“
<basetopic>/dhwBlocking/set„OFF“ | „ON“
<basetopic>/coolingMode/set
<basetopic>/coolingCtrl/set

Modus Heizkreis 1/2

…/chModeX/setVorlaufsolltemperatur
autoBerechnung anhand Außentemperatur, Raumtemperatur und Heizkurve. Wenn Außentemperatur nicht zur Verfügung steht wie bei heat
heatIm Webinterface eingestellter Wert flow set temperature (default) oder über MQTT vorgegebener Wert
offHeizkreis deaktiviert
Override ChOn

Im Master-Modus wird bei Aktivieren dieses Wertes („ON“) der Zustand (ein/aus) des angeschlossenen Raumthermostats verwendet. Im Repeater-Modus wird bei Aktivieren dieses Wertes der gesendete Wert der Raumeinheit mit dem berechneten Wert des OTthing überschrieben.

Override ChFlow

Im Master-Modus wird bei Aktivieren dieses Wertes („ON“) die Vorlaufsolltemperatur des angeschlossenen Raumthermostats verwendet. Im Repeater-Modus wird bei Aktivieren dieses Wertes der gesendete Wert der Raumeinheit mit dem berechneten Wert des OTthing überschrieben.

Override DHW

Im Master-Modus wird bei Aktivieren dieses Wertes („ON“) die Brauchwassersolltemperatur des angeschlossenen Raumthermostats verwendet. Im Repeater-Modus wird bei Aktivieren dieses Wertes der gesendete Wert der Raumeinheit mit dem Wert des OTthing überschrieben.

Ansteuerung über HTTP

Zusätzlich zur MQTT-Schnittstelle können die Betriebsparameter auch über den HTTP Endpunkt http://[IP]/set gesetzt werden. An die URL kann eine Liste von Key/Value-Paaren angehängt werden, wobei als Keys die gleichen Namen wie aus den obigen MQTT Topics verwendet werden können:

http://[IP]/set?roomSetpoint1=21.2
http://[IP]/set?chMode1=off

Berechnung der Vorlauftemperatur in OTthing

flowchart TD
    subgraph Control["Control Logic"]
        subgraph Inputs
            T_out["OutdoorTemperature"]
            ROOMSET["RoomSetpoint"]
        end

        HC["Heating Curve(Base Flow Temp)"]

        subgraph PI_BLOCK["PI Controller (Offset)"]
            FILT["lowpass(Room Temp Filter)"]
            ERR["ΔT_room(Set − Actual)"]
            DB["deadband±0.2 K"]
            KP["× Kp"]
            KI["× Ki"]
            INT["∫"]
            AW["clip±5 K"]
            SUM_PI["Σ"]
            SAT["clip−5 … +15 K"]

            ERR --> DB
            DB --> KP --> SUM_PI
            DB --> KI --> INT --> AW --> SUM_PI --> SAT
        end

        SUM1["Σ"]
        LIMIT["clipMax Flow Temp"]
    end

    subgraph Plant["Heating System"]
        BOILER["Heat Generator(Gas / Pellet / Heat Pump)"]
    end

    T_out --> HC
    ROOMSET --> HC
    HC --> SUM1

    BOILER --> T_room_raw["Room Temperature"]
    T_room_raw --> FILT
    FILT --> ERR
    ROOMSET --> ERR

    SAT --> SUM1
    SUM1 --> LIMIT
    LIMIT --> BOILER

Integration in Home Assistant

Sobald der MQTT Broker im OTthing konfiguriert ist und Nachrichten von Therme und/oder Thermostat empfangen werden, werden automatisch entsprechende Discoverynachrichten an Home Assistant gesendet, so dass alle Sensoren ohne weitere Einrichtung angezeigt werden:

Dashboard in Home Assistant

Außentemperatur von Home Assistant zum OTthing übertragen

Als Quelle für die Außentemperatur, die das OTthing zur Berechnung der Vorlaufsolltemperatur benötigt, kann die Weatherintegration von Home Assistant benutzt werden. Folgende Automation übermittelt zyklisch die Außentemperatur an das OTthing:

alias: OTThing Außentemperatur
description: ""
trigger:
  - platform: time_pattern
    seconds: /30
condition: []
action:
  - service: mqtt.publish
    metadata: {}
    data:
      qos: "0"
      retain: false
      payload: "{{ state_attr(\"weather.home\", \"temperature\") }}"
      topic: otthing/31F374/outsideTemp/set
    enabled: true
mode: single

Funktion der LEDs

D10OT 1OpenTherm master receive. Zeigt den Pegelzustand des Empfangszweigs. Aus = niedrige Spannung, Ein = hohe Spannung
D13OT 2OpenTherm slave receive. Zeigt den Pegelzustand des Empfangszweigs. Aus = niedriger Strom, Ein = hoher Strom
D11Status1x blinken: Normalbetrieb, 2x blinken: WiFi AP aktiviert
D12Ein = Relais aktiv, kein Bypass

Monitoring mit dem Opentherm Monitor

Das OTthing leitet alle auf der OpenTherm-Schnittstelle gesendeten und empfangenen Daten auf dem TCP Port 25238 weiter, so dass mit dem Tool Opentherm Monitor von Schelte Bron aus dem otgw Projekt die Daten visualisiert werden können.

Firmwareupdate

Die aktuelle Firmware findet sich hier, und kann über das Webinterface des OTthing mit einem Browser aktualisiert werden. Achtung: Ein Update von Version 1.x auf 2.x muss zwingend über den USB Anschluss durchgeführt werden. Dazu eignet sich der OT Thing Webflasher.

Zur Funktion einer Brennwerttherme

Eine Brennwerttherme ist kein Wasserkocher. Warum moderne Thermen nicht immer ausschalten bei erreichen der Raumsolltemperatur.

Alte Heizanlagen konnten im Betrieb in ihrer Leistung kaum variieren und lieferten so eine recht ungeregelte hohe Leistung zu den Wärmeübertragern. Moderne Brennwertgeräte können die abgegebene Leistung im Gegensatz zu alten Wärmeerzeugern in großen Bereichen regeln (modulieren) so dass:

  • weniger Verluste durch hohe Vorlauftemperatur entstehen
  • der Brennwerteffekt (Kondensationswärme des Abgases) bei niedrigen Systemtemperaturen genutzt werden kann
  • deutlich weniger Takten notwendig ist, weniger Verschleiß
  • weniger Geräusche durch weit offene Heizkörperthermostate
altneu
an / ausmodulierend
2-Punkt ReglerWitterungsgeführt mit Heizkurve + Feinkorrektur
Viele StartsLange Laufzeiten
Hohe VorlauftemperaturSo niedrig wie möglich
einfacheffizient

Ein Raum wird auf konstanter Temperatur gehalten wenn die abfließende Energie gleich der zugeführten Energie ist. Die abfließende Energie hängt im Wesentlichen von der herrschenden Außentemperatur ab:

Q˙out=c(ΘRaumΘaussen)\dot{Q}{\text{out}} = c \cdot (\Theta_{\text{Raum}} – \Theta_{\text{aussen}})

Die zugeführte Energie kann die der Heizkörpertemperatur und somit mit der Vorlauftemperatur eingestellt werden:

Q˙in=c(ΘHeizkoerperΘRaum)n\dot{Q}_{\text{in}} = c \cdot (\Theta_{\text{Heizkoerper}} – \Theta_{\text{Raum}})^n

Daraus ergibt sich die Funktion der Heizkurve, der Parameter C1 entspricht der Steilheit (gradient) der Heizkurve, der Parameter C2 der Parallelverschiebung (offset) :

ΘVorlauf=ΘRaum+C1(ΘRaumΘaussen)n+C2\Theta_{\text{Vorlauf}} = \Theta_{\text{Raum}} + C_1 \cdot \sqrt[n]{\left(\Theta_{\text{Raum}} – \Theta_{\text{aussen}}\right)} + C_2

Idealerweise liefert die Brennwerttherme dauerhaft die gerade benötigte Leistung mit wenig Taktung bis keiner Taktung und alle Heizkörperthermostate sind möglichst weit geöffnet. Solange die benötigte Leistung der Räume (Energieabfluss) über der Mindestleistung der Brennwerttherme liegt so schaltet die Therme nicht ab!

Shop

OTthing Firmware und Hardware auf GitHub

Beitrag im Home Assistant Forum

Physikalische Hintergründe zur Heizkurve

Informationen zum thermischen Abgleich (und viel mehr)

Sonstiges & FAQ

Mich erreichen viele nette interessierte Mails zum Thema OpenTherm, (Heizkurven-)einstellungen, Gerätevarianten etc. Aus Zeitgründen kann ich nicht alle Nachrichten beantworten, die häufigsten seien hier in Kürze beantwortet:

Funktioniert das OTthing auch mit Therme X und Raumeinheit Y?

Wenn die Geräte explizit den OpenTherm Bus unterstützen (Doku und/oder Hersteller konsultieren), stehen die Chancen gut dass es funktionieren wird. Eventuell hilft eine Anfrage im HA Forum ob schon jemand Erfahrungen mit dem Gerät gesammelt hat.

Wie funktioniert die Einstellung XYZ?

Alle Einstellungen sind kurz in diesem Blogbeitrag erwähnt. Die heizungsspezifischen Einstellungen (Heizkurve, PI Regler, Heizkörperexponent, …) sind üblich und verbreitet, tiefergehende Informationen dazu liefert das Web im Überfluss. Generell gilt: Nur Einstellungen und Funktionen deren Wirkweise verstanden wurde sind hilfreich, und nicht jede Funktion ist für jede spezifische Anlage brauchbar.

Fehlerberichte und Featurerequests am besten als Issue bei Github eintragen: https://github.com/Phunkafizer/OT-Thing/issues

Haftungsausschluss

Es wird keinerlei Haftung für Schäden an Personen oder Gegenständen übernommen. Die Installation und der Betrieb des OTthing erfolgen auf eigene Gefahr und Verantwortung.