In meinem Heizungskeller arbeiten Regler von Technische Alternative (TA): eine UVR16x2 steuert die Heizung, ein CAN-EZ3 regelt zwei Heizstäbe vom Typ EHS-R, und ein C.M.I. verbindet das Ganze mit dem Netzwerk. Natürlich wollte ich die Temperaturen und Zustände auch in Home Assistant sehen.
Lange habe ich dafür die Integration Technische Alternative C.M.I. genutzt. Sie liest über die JSON-Schnittstelle des C.M.I. alle Werte – viel mehr, als ich brauche. Die Schnittstelle erlaubt nur eine Abfrage pro Minute, und beim Start von Home Assistant dauert es mehrere Minuten, bis alle Werte da sind. Schreiben kann man damit nichts.
🙏 Danke an DeerMaximum
Dass beides überhaupt möglich ist, verdanken wir DeerMaximum. Er entwickelt die Integration für das C.M.I. seit 2022 (über 50 Versionen) und seit 2023 die CoE-Integration samt der passenden App (28 Versionen). Er hält sie unermüdlich mit jeder neuen Home-Assistant-Version aktuell und stellt alles kostenlos und quelloffen bereit. Ohne diese Grundlage gäbe es diesen Beitrag nicht – danke dafür!
Wenn dir seine Arbeit hilft: Gib den Projekten Technische Alternative CoE, Technische Alternative C.M.I. und der App einen ⭐ auf GitHub – das kostet nichts und zeigt, dass die Arbeit ankommt.
Die Alternative heißt CAN over Ethernet (CoE). Dabei schickt das C.M.I. genau die Werte, die du auswählst, von selbst an Home Assistant. In diesem Beitrag richten wir das Schritt für Schritt ein. Als Beispiel dienen zwei Werte: der Pufferfühler S1 der UVR16x2 und der Zustand „Timeout“ des Heizstabs 1 am CAN-EZ3.
| ⏱️ Dauer | ca. 45 Minuten für die ersten Werte, danach wenige Minuten je weiterem Wert |
| 🎓 Schwierigkeit | Fortgeschritten – du arbeitest im C.M.I. und an den Reglern als Fachmann/Experte |
| 🧰 Du brauchst | ein C.M.I. (ohne geht es nicht), Home Assistant OS mit HACS, Experten-Zugang zum C.M.I. |
| 🎯 Ergebnis | Ausgewählte TA-Werte erscheinen in Home Assistant als Sensoren und aktualisieren sich jede Minute |
Inhalt
- Überblick: Welchen Weg geht ein Wert?
- Voraussetzungen
- Schritt 1 – Die App „CoE to HTTP server“ installieren
- Schritt 2 – Den Wert am Regler auf den CAN-Bus legen
- Schritt 3 – C.M.I.: Wert vom CAN-Bus übernehmen
- Schritt 4 – C.M.I.: Wert per CoE an Home Assistant senden
- Schritt 5 – Die Integration einrichten
- Schritt 6 – Kontrolle und Ergebnis
- Nach einem Neustart: Integration automatisch neu laden
- Fehlersuche
- Wie geht es weiter?
Überblick: Welchen Weg geht ein Wert?
Die Regler selbst haben keinen Netzwerkanschluss. Sie tauschen Daten nur über den CAN-Bus aus, ein Kabel zwischen den TA-Geräten. Das C.M.I. sitzt an diesem Bus und an deinem Netzwerk. Ein Wert läuft so:
- Der Regler legt den Wert auf den CAN-Bus (CAN-Ausgang).
- Das C.M.I. übernimmt ihn vom Bus (CAN-Eingang).
- Das C.M.I. schickt ihn per CoE ins Netzwerk an Home Assistant (CoE-Ausgang).
- In Home Assistant nimmt die App CoE to HTTP server ihn entgegen.
- Die Integration Technische Alternative CoE holt ihn dort ab und zeigt ihn als Sensor an.

Ein paar Begriffe begegnen dir dabei immer wieder:
| Begriff | Bedeutung |
|---|---|
| Knoten | die Adresse eines Geräts am CAN-Bus. Jede Nummer gibt es nur einmal (hier: C.M.I. 1, UVR16x2 10, CAN-EZ3 40). |
| Netzwerkausgang | die Nummer, unter der ein Gerät einen Wert auf den Bus legt – bzw. die Kanalnummer im CoE-Paket. |
| CoE V1 / V2 | zwei Versionen des Protokolls. V1 nutzt UDP-Port 5441 und 2 Byte je Wert, V2 Port 5442 und 4 Byte. V2 gibt es ab C.M.I.-Firmware 1.43.1. |
Voraussetzungen
⚠️ Ohne C.M.I. geht es nicht! CoE ist eine Funktion des C.M.I. (Control and Monitoring Interface) von Technische Alternative: Nur das C.M.I. verbindet den CAN-Bus deiner Regler mit dem Netzwerk und verschickt die Werte. Eingerichtet wird CoE deshalb im C.M.I. Hast du kein C.M.I., brauchst du zuerst eines – alles Weitere in diesem Beitrag setzt es voraus.
- Home Assistant OS (oder Supervised), denn wir brauchen eine App. Bei einer Installation ohne Apps muss der CoE-Server separat laufen – das beschreibe ich hier nicht.
- HACS ist installiert – siehe HACS installieren (folgt).
- Home Assistant hat eine feste IP-Adresse. Das C.M.I. schickt die Werte an genau diese Adresse.
- Du kannst dich am C.M.I. als Experte anmelden. Das Passwort bekommst du vom Heizungsbauer.
- Für CoE V2: C.M.I.-Firmware ab 1.43.1. Getestet habe ich mit Firmware 1.48.1.
⚠️ Auf eigene Verantwortung: Du arbeitest in den Fachmann- bzw. Experten-Einstellungen deiner Heizungsregelung. Ändere nur, was hier beschrieben ist, und notiere dir vorher die bisherigen Einstellungen. Im Zweifel frag deinen Heizungsbauer.
Schritt 1 – Die App „CoE to HTTP server“ installieren
Die App nimmt die Pakete vom C.M.I. an und stellt sie der Integration bereit. Sie stammt aus einem eigenen Repository, das wir zuerst im App-Store bekannt machen.
Im Menü: Einstellungen → Apps → unten rechts App installieren → oben rechts ⋮ → Repositories
- Die Adresse
https://github.com/DeerMaximum/ha-addonseinfügen und hinzufügen. - Im App-Store nach „CoE“ suchen und CoE to HTTP server anklicken.
- Installieren anklicken.


Auf der Seite der App schaltest du Beim Systemstart starten und Watchdog ein. Ohne den ersten Schalter startet die App nach einem Neustart des Rechners nicht, und in Home Assistant kommen keine Werte an.

Im Reiter Konfiguration stellst du ein:
| Option | Wert | Bedeutung |
|---|---|---|
| Debug | aus | ausführliches Protokoll – nur zur Fehlersuche einschalten |
| CoE Version | v2 | muss zur Einstellung am C.M.I. passen (Schritt 4) |
| CoE Knoten | eine freie Knotennummer | nur zum Senden an das C.M.I. nötig (Teil 2), aber ein Pflichtfeld. Die Nummer darf im CAN-Netz nicht vergeben sein – auch nicht an das C.M.I. selbst. |
| CoE IP | IP-Adresse des C.M.I. | ebenfalls nur für Teil 2, aber Pflichtfeld |
Die Ports darunter (9000, 5441, 5442) bleiben, wie sie sind. Speichern und die App Starten.

💡 „CoE Knoten“ und „CoE IP“ braucht die App erst, wenn Home Assistant selbst Werte an das C.M.I. schickt (Teil 2). In meinem Screenshot steht dort noch die 1 – das ist die Knotennummer meines C.M.I. Zum Lesen ist das egal, für Teil 2 wähle ich eine freie Nummer.
✅ Geschafft, wenn: die App „Wird ausgeführt“ anzeigt.
Schritt 2 – Den Wert am Regler auf den CAN-Bus legen
Damit das C.M.I. einen Wert übernehmen kann, muss der Regler ihn als CAN-Ausgang auf den Bus legen. Das geht direkt am Regler oder bequemer über die Fernbedienung im Webportal des C.M.I. Du brauchst dafür die Anmeldung als Fachmann oder Experte.
UVR16x2: Fühler S1 als CAN-Analogausgang
Zur Orientierung die Eingänge meiner UVR16x2. Unser Beispiel ist Eingang 1, der Fühler S1 „T_Puffer 2/3“:

Im Menü: an der UVR16x2: CAN-Bus → CAN-Analogausgänge → freien Ausgang wählen, hier 1
| Feld | Eintrag |
|---|---|
| Quelle | Eingänge → 1: S1 T_Puffer 2/3 → Messwert |
| Bezeichnung | Temperatur Istwert |
| Sendebedingung: bei Änderung > | 0.1 K |
| Blockierzeit | 10 s |
| Intervallzeit | 1 min |

💡 Sendebedingungen: Der Wert wird gesendet, wenn er sich um mehr als 0,1 K ändert – frühestens nach der Blockierzeit, spätestens nach der Intervallzeit. Diese Bedingungen gibt es an jeder Station (Regler, C.M.I.). Die gröbste Einstellung bestimmt, wie fein die Werte in Home Assistant ankommen. Stell deshalb überall dieselbe Schrittweite ein.
Notiere dir: Knoten 10, CAN-Analogausgang 1.
CAN-EZ3: Heizstab-Timeout als CAN-Digitalausgang
Die beiden Heizstäbe EHS-R funken zum CAN-EZ3. Ihre Werte findest du dort unter CORA-Geräte:

Im Menü: am CAN-EZ3: CAN-Bus → CAN-Digitalausgänge → freien Ausgang wählen, hier 1
| Feld | Eintrag |
|---|---|
| Quelle | CORA-Geräte → 1: Heizstab 1 → Timeout |
| Bezeichnung | Allgemein / —– |
| Sendebedingung: bei Änderung | Ja |
| Blockierzeit | 10 s |
| Intervallzeit | 1 min |

💡 Mit der Werksprogrammierung von TA für den CAN-EZ3 kannst du keine eigenen Bezeichnungen vergeben. Das ist nicht schlimm – den sprechenden Namen bekommt der Wert gleich im C.M.I.
Analoge Werte des CAN-EZ3 legst du genauso an, z. B. CORA-Geräte → 1: Heizstab 1 → Temperatur 1 als CAN-Analogausgang 1.

Notiere dir: Knoten 40, CAN-Digitalausgang 1.
Schritt 3 – C.M.I.: Wert vom CAN-Bus übernehmen
Jetzt sagen wir dem C.M.I., welchen Wert es vom Bus übernehmen soll. Das passiert im Webportal des C.M.I.
Im Menü: Einstellungen → Eingänge → CAN-BUS → Analog → freien Eingang wählen, hier 1
| Feld | Eintrag |
|---|---|
| Bezeichnung | Heizung S1 |
| Knotennummer | 10 (UVR16x2) |
| Netzwerkausgang | 1 (CAN-Analogausgang aus Schritt 2) |
| Timeout (Min) | 20 |
| Einheit | AUTO |

Für den Heizstab unter Digital → Eingang 1: Bezeichnung „Heizstab 1 Timeout“, Knotennummer 40, Netzwerkausgang 1, Timeout 5 Minuten, Einheit „Ja/Nein“.

💡 Der Timeout muss länger sein als die Intervallzeit, mit der der Regler sendet (hier 1 Minute). Ich belege die Liste lückenlos von oben: erst alle Werte der UVR, dann die des CAN-EZ3. Das C.M.I. nimmt bis zu 64 analoge und 64 digitale CAN-Eingänge auf.
✅ Geschafft, wenn: unter „aktueller Wert“ der Messwert bzw. „Nein“ steht.
Schritt 4 – C.M.I.: Wert per CoE an Home Assistant senden
Zuerst prüfst du die CoE-Version. Sie steht auf derselben Seite wie Knotennummer und Busrate des C.M.I.:
Im Menü: Einstellungen → CAN → Bereich „CoE“ → CoE V2 (4byte)

Dann legst du für jeden Wert einen CoE-Ausgang an:
Im Menü: Einstellungen → Ausgänge → CoE → Analog → Eintrag 1
| Feld | Eintrag |
|---|---|
| Bezeichnung | Heizung S1 |
| Eingang | CAN-Bus → 1: Heizung S1 → Messwert |
| IP | die IP-Adresse deines Home Assistant |
| Knoten | 10 – Knotennummer des Geräts, von dem der Wert stammt |
| Netzwerkausgang | 1 – Nummer des CAN-Ausgangs an diesem Gerät |
| bei Änderung > | 0,1 |
| Blockierzeit / Intervallzeit | 10 s / 1 min |

Für den Heizstab unter Digital → Eintrag 1: Eingang „1: Heizstab 1 Timeout“, gleiche IP, Knoten 40, Netzwerkausgang 1, bei Änderung „Ja“.

🧭 Merkregel für Knoten und Nummer
Im CoE-Ausgang trage ich Knoten und Nummer des Geräts ein, von dem der Wert stammt. Dann heißt der Sensor in Home Assistant so, wie der Wert am Gerät heißt: can10_1 ist UVR16x2, CAN-Ausgang 1 – can40_1 ist CAN-EZ3, CAN-Ausgang 1. So bleiben alle Nummern klein, und man erkennt das Gerät am Namen.
Wichtig: Dieselben Knoten trägst du gleich in der Integration als „CAN-IDs“ ein. TA beschreibt diese Belegung nicht ausdrücklich. Bei mir läuft sie ohne Auffälligkeiten.

💡 Nicht wundern: Unter Status → CoE zeigt das C.M.I. (Firmware 1.48.1) bei mir nur die leere Tabelle mit einem Ladekreis – obwohl alle Werte ankommen. Ob die Übertragung läuft, prüfst du besser im Protokoll der App (Schritt 6).

Schritt 5 – Die Integration einrichten
Die Integration Technische Alternative CoE gibt es in HACS.
- In HACS „Technische Alternative CoE“ suchen und herunterladen.
- Home Assistant neu starten.
- Einstellungen → Geräte & Dienste → Integration hinzufügen → „Technische Alternative CoE“.
- Die installierte App wird automatisch gefunden. Du gibst nur die CAN-IDs ein – das sind die Knoten aus deinen CoE-Ausgängen, durch Komma getrennt. Bei mir:
10,40.


Über das Zahnrad erreichst du später die Optionen: das Aktualisierungsintervall (Standard 1 Minute) und die CAN-IDs. Mit OK lädt die Integration neu – auch, wenn du nichts geändert hast.

Schritt 6 – Kontrolle und Ergebnis
Für jeden Wert legt die Integration einen Sensor an. Der Name setzt sich aus Knoten und Netzwerkausgang zusammen:
| Art | Name | Beispiel |
|---|---|---|
| analog | CoE Analog – CAN<Knoten> <Nummer> | sensor.coe_analog_can10_1 (S1) |
| digital | CoE Digital – CAN<Knoten> <Nummer> | binary_sensor.coe_digital_can40_1 (Heizstab 1 Timeout) |

Einheit und Symbol übernimmt die Integration vom C.M.I. – aus °C wird ein Temperatursensor. Einen sprechenden Namen gibst du so: Sensor öffnen → Zahnrad → Name, z. B. „Puffer S1“ → Aktualisieren. Die Entitäts-ID kann bleiben, sie verrät die Herkunft.

💡 Neue Werte erscheinen erst nach einem Neuladen. Die Integration legt Sensoren nur beim Laden an. Wenn du im C.M.I. einen weiteren CoE-Ausgang anlegst: Zahnrad der Integration → OK. Wert- und Einheitenänderungen kommen dagegen ohne Neuladen an.
Kommt nichts an? Dann hilft das Protokoll der App: In der Konfiguration Debug einschalten, im Reiter Protokoll siehst du jedes Paket vom C.M.I. mit Knoten, Nummer (die App zählt ab 0), Einheit und Wert. Danach Debug wieder aus.

✅ Geschafft, wenn: deine Sensoren Werte zeigen und sich etwa jede Minute aktualisieren.
Nach einem Neustart: Integration automatisch neu laden
Startet der ganze Rechner neu, starten App und Home Assistant gleichzeitig. Die App hat dann noch keine Werte vom C.M.I. – und die Integration legt nur Sensoren für Werte an, die schon da sind. Das ist eine bekannte Einschränkung, der Entwickler empfiehlt, die Integration kurz nach dem Start neu zu laden. Das erledigt eine kleine Automation:
| Auslöser | Home Assistant startet |
| Aktion 1 | 2 Minuten warten (länger als die Intervallzeit im C.M.I.) |
| Aktion 2 | homeassistant.reload_config_entry für die Integration „Technische Alternative CoE“ |
So legst du sie an:
- Einstellungen → Automationen & Szenen → Automation erstellen → Neue Automation erstellen.
- Oben rechts ⋮ → In YAML bearbeiten.
- Den vorhandenen Text komplett durch den Block unten ersetzen.
- In der letzten Zeile
sensor.coe_analog_can10_1durch einen deiner CoE-Sensoren ersetzen. Home Assistant findet über diesen Sensor die Integration – welcher es ist, spielt keine Rolle. - Speichern.
alias: "TA CoE: Integration nach HA-Start neu laden"
description: "Legt nach einem Neustart fehlende CoE-Sensoren an (Integration neu laden)."
mode: single
triggers:
- trigger: homeassistant
event: start
actions:
- delay:
minutes: 2
- action: homeassistant.reload_config_entry
target:
entity_id: sensor.coe_analog_can10_1
✅ Geschafft, wenn: die Automation in der Liste erscheint. Testen kannst du sie mit ⋮ → Ausführen: Nach 2 Minuten sind die CoE-Sensoren kurz „nicht verfügbar“ und dann wieder da.
Fehlersuche
| Was du siehst | Ursache und Lösung |
|---|---|
| Es kommt gar nichts an | Debug-Protokoll der App ansehen (Schritt 6). Keine Pakete? Dann IP im CoE-Ausgang, CoE-Version (C.M.I. und App gleich?) und den Autostart der App prüfen. |
| Pakete kommen an, aber keine Sensoren | Die CAN-IDs in der Integration müssen den Knoten in den CoE-Ausgängen entsprechen. |
| Ein neuer Wert fehlt | Integration neu laden (Zahnrad → OK). |
| Nach einem Neustart fehlen Sensoren | Siehe Automation oben. |
| Kurz „Nicht verfügbar“ | Passiert beim Neuladen der Integration – kein Fehler. |
| Ein gelöschter Wert zeigt noch einen alten Stand | Die App vergisst empfangene Werte erst beim Neustart. Knoten aus den CAN-IDs entfernen bzw. App neu starten, danach den alten Sensor löschen. |
| Werte falsch skaliert (V2) | Bekannter Hinweis des Entwicklers. Mit „aktueller Wert“ im C.M.I. vergleichen und ggf. ein Issue melden. |
Wie geht es weiter?
Die Werte kommen an – und das schnell und schlank. In Teil 2 (folgt) geht es in die andere Richtung: Home Assistant schickt Werte und Zustände an die Regler. Was die Regler damit anfangen, steht in einem eigenen Beitrag über die TAPPS-Programmierung.
Quellen
- Integration Technische Alternative CoE und App CoE to HTTP server (DeerMaximum)
- FHEM-Wiki: CanOverEthernet – das Vorbild für diese Anleitung
- TA-Wiki: CAN over Ethernet, C.M.I.- und UVR16x2-Handbücher auf ta.co.at
Fragen oder Anregungen? Schreib gern einen Kommentar!