e3oncan-Adapter für ioBroker
Hinweis: Navigationslinks in diesem Dokument funktionieren am besten auf GitHub . Relative Links zu anderen Dokumenten (z. B. data-points.md ) öffnen sich ebenfalls auf GitHub.
Eine deutsche Version dieser Dokumentation ist verfügbar: README.de.md
Inhaltsverzeichnis
Überblick
Geräte der Viessmann E3-Serie (One Base-Ökosystem) tauschen große Datenmengen über den CAN-Bus aus. Dieser Adapter greift auf diese Kommunikation zu und stellt die Daten in ioBroker zur Verfügung.
Zwei Betriebsarten funktionieren unabhängig voneinander und können kombiniert werden:
| Modus | Beschreibung |
|---|---|
| Sammeln | Das Gerät überwacht passiv den CAN-Bus und extrahiert Daten in Echtzeit, sobald Geräte diese austauschen. Es werden keine Anfragen gesendet. Ideal für schnell wechselnde Werte wie den Energiefluss. |
| US-SonCAN | Liest und schreibt aktiv Datenpunkte mithilfe des UDS-Protokolls (Universal Diagnostic Services over CAN). Erforderlich für Sollwerte, Zeitpläne und Daten, die nicht spontan übertragen werden. |
Welche Modi verfügbar sind, hängt von Ihrer Gerätetopologie ab. Details dazu finden Sie in der Beschreibung der Gerätetopologie . Anregungen für die Verwendung des Adapters finden Sie in der Beschreibung der Anwendungsfälle .
Wichtige Teile dieses Adapters basieren auf dem open3e- Projekt. Eine Python-basierte Implementierung, die ausschließlich Daten sammelt und MQTT verwendet, ist unter E3onCAN verfügbar.
Was ist neu in Version 1.2.0?
Nur ein ESP32 am CAN-Bus, alles läuft über TCP/IP.
Mit dem open3e-esp32- Gateway benötigt der Viessmann CAN-Bus lediglich einen ESP32 mit CAN-Transceiver. Der ioBroker-Host benötigt keinen CAN-Adapter: Die Kommunikation mit dem Gateway erfolgt vollständig über TCP/IP, und zwar über die REST-API des Gateways (UDS-Lese- und Schreibvorgänge) und einen MQTT-Broker (passiv empfangene Frames). Die Funktionalität des Adapters bleibt unverändert: Geräte- und Datenpunkt-Scan, Datenerfassung, Energiezähler, Zeitpläne und Schreibvorgänge. Für Schreibvorgänge muss zusätzlich die Option „Raw Write“ auf dem Gateway aktiviert sein. Lokale CAN-Adapter funktionieren weiterhin wie gewohnt. Die Einrichtung wird unter Alternative: open3e-esp32-Gateway beschrieben.
Rohschnittstelle für externe Decoder
Das Gateway stellt rohe UDS-Daten und rohe CAN-Frames zur Verfügung, die von der Software selbst dekodiert werden. Im Gateway-Modus nutzt der Adapter diesen Pfad; die Bedeutung der Bytes verbleibt beim Codec von ioBroker. Siehe Rohdatenschnittstelle des Gateways .
Gateway Gesundheit und Selbstheilung
Der Verbindungsstatus hängt vom Zustand des Gateways ab. Wenn das Gateway nicht mehr funktioniert, protokolliert das Protokoll, ob der Fehler beim Broker oder im CAN-Bus liegt, und die Verbindung wird als unterbrochen markiert. Sobald das Gateway wieder funktioniert, startet der Adapter neu, um die Verbindung wiederherzustellen.
Schnellstart
Voraussetzungen
- Ein USB-zu-CAN- oder CAN-Adapter, der an den externen oder internen CAN-Bus Ihres Viessmann E3-Geräts angeschlossen ist.
- Ein Linux-basiertes Hostsystem (nur Linux wird unterstützt).
- Der CAN-Adapter ist betriebsbereit und im System sichtbar, z. B. als
can0(überprüfen mitifconfig). - Einzelheiten zur Einrichtung des CAN-Adapters finden Sie im Wiki des open3e-Projekts .
Wichtig: Stellen Sie sicher, dass kein anderer UDSonCAN-Client (z. B. open3e) ausgeführt wird, während Sie diesen Adapter zum ersten Mal einrichten. Parallele UDS-Kommunikation führt zu Fehlern in beiden Anwendungen.
Ersteinrichtung – auf einen Blick
- Installieren Sie den Adapter und öffnen Sie dessen Konfigurationsdialog.
- Konfigurieren Sie Ihren/Ihre CAN-Adapter auf der Registerkarte CAN-Adapter und speichern Sie die Einstellungen.
- Suchen Sie auf der Registerkarte „Liste der UDS-Geräte“ nach E3-Geräten.
- Suchen Sie auf der Registerkarte „Liste der Datenpunkte“ nach Datenpunkten (dauert bis zu 5 Minuten).
- Richten Sie auf der Registerkarte „Aufgaben“ Lesepläne ein und speichern Sie diese.
Die detaillierten Schritte sind im unten stehenden Konfigurationsleitfaden beschrieben.
Konfigurationsleitfaden
Schritt 1 – CAN-Adapter
Öffnen Sie den Adapterkonfigurationsdialog und wechseln Sie zur Registerkarte CAN-Adapter .
- Geben Sie den Namen Ihrer CAN-Schnittstelle ein (Standard:
can0). - Aktivieren Sie für jede Schnittstelle, die Sie verwenden möchten, die Option „Mit Adapter verbinden“ .
- Drücken Sie auf SPEICHERN . Die Adapterinstanz wird neu gestartet und verbindet sich mit dem CAN-Bus.
Falls Sie über einen zweiten CAN-Bus (z. B. einen internen Bus) verfügen, konfigurieren Sie diesen hier als zweiten Adapter. Nach der Konfiguration des zweiten Adapters wird ein zweiter Reiter „Zuweisungen“ angezeigt.
Alternative: open3e-esp32-Gateway
Anstelle eines lokalen CAN-Adapters kann ein Bus über ein open3e-esp32 -Gateway ausgelesen werden. Stellen Sie den Verbindungstyp für diesen Bus auf open3e-esp32-Gateway ein und geben Sie Folgendes ein:
- Gateway-REST-URL , z. B.
http://open3e-esp32.local - Gateway-MQTT-Broker-URL , z. B.
mqtt://broker.localund dem MQTT-Basisthema . Das Basisthema muss mit dem des Gateways übereinstimmen.mqtt.baseTopicEinstellung (Standard)open3e). - MQTT-Benutzername und -Passwort , falls der Broker diese benötigt.
Bei jedem Start teilt der Adapter dem Gateway mit, welche CAN-IDs unformatiert weitergeleitet werden sollen. Die Liste wird aus den Energiezählern und den Collect-IDs Ihrer Geräte abgeleitet, daher müssen Sie sie nicht am Gateway konfigurieren.
Das Gateway benötigt open3e-esp32 Version 0.2.0 oder neuer. Diese Version stellt die vom Adapter erwartete Roh-API-Version 1 bereit, und der Adapter protokolliert bei jedem Start die gefundene Firmware-Version.
Regeln für den Gateway-Modus:
- Die Datenpunktauswahl des Gateways (Registerkarte „Datenpunkte“) ist unabhängig von der von ioBroker. Konfigurieren Sie die zu lesenden Datenpunkte und deren Zeitpläne wie gewohnt in ioBroker. open3e-esp32 fragt seine eigene Auswahl ab und veröffentlicht sie gleichzeitig in seinen eigenen dekodierten MQTT-Themen, sodass es zu keinen gegenseitigen Beeinträchtigungen kommt. Die einzige Einstellung, die der Adapter auf dem Gateway verwaltet, ist die weitergeleitete Liste der rohen CAN-IDs (siehe oben): Eine dort manuell in der Web-Oberfläche des Gateways vorgenommene Änderung bleibt nur bis zum nächsten Neustart des Adapters erhalten.
- Das Schreiben von Datenpunkten erfordert Rohschreiben auf dem Gateway. Im Gateway-Modus erfolgt jeder Schreibvorgang über den Rohschreibpfad des Gateways. Aktivieren Sie Rohschreiben freigeben unter Einstellungen → Bus- Registerkarte des Gateways neben Schreiben freigeben . Der Adapter setzt diese Option nicht selbst, da er die Open3e-Datenpunktprüfungen umgeht.
- Nur ein Master darf auf einem Bus kommunizieren. Betreiben Sie keine weitere open3e-Instanz, beispielsweise auf einem Raspberry Pi, auf demselben Bus.
Schritt 2 – Gerätescan und Energiezählererkennung
Wechseln Sie zur Registerkarte „Liste der UDS-Geräte“ und klicken Sie auf die Schaltfläche „Scannen“ .
- Der Scanvorgang dauert einige Sekunden. Sie können den Fortschritt im Adapterprotokoll verfolgen (öffnen Sie dazu einen zweiten Browsertab).
- Alle im Bus gefundenen E3-Geräte werden aufgelistet. Sie können die Geräte in der zweiten Spalte umbenennen – diese Namen dienen als Kennungen im Objektbaum von ioBroker.
- Klicken Sie auf SPEICHERN , wenn Sie fertig sind. Die Instanz wird neu gestartet.
Während des Gerätescans liest der Adapter auch die Datenformatkonfiguration des Geräts (Datenpunkt 382), einschließlich der Temperatureinheiten (°C oder °F) und des Datums-/Zeitformats. Diese Daten werden gespeichert und bei nachfolgenden Datenpunktscans verwendet.
Energiezählererkennung
Während der Gerätescan läuft, empfängt der Adapter passiv Signale vom CAN-Bus der Energiezähler E380 und E3100CB. Es ist keine zusätzliche Scanzeit erforderlich – die Erkennung erfolgt parallel. Das Ergebnis wird gespeichert und angezeigt.
- Im Adapterkonfigurationsdialog (Registerkarte Liste der UDS-Geräte ) als Textzusammenfassung.
- Auf der e3oncan- Datenpunktseite als einzelne Karten für jeden erkannten Zählertyp (siehe unten ).
Schritt 3 – Datenpunktscan
Wechseln Sie zur Registerkarte „Liste der Datenpunkte“ , klicken Sie auf „Scan starten…“ und bestätigen Sie mit „OK“ .
Bitte haben Sie Geduld – der Scan kann bis zu 5 Minuten dauern. Der Fortschritt wird im Adapterprotokoll angezeigt.
Was der Scan bewirkt:
- Ermittelt alle verfügbaren Datenpunkte für jedes Gerät.
- Fügt jedem Datenpunktobjekt Metadaten (Beschreibung, Einheit, Lese-/Schreibzugriff) hinzu.
- Legt die physikalischen Einheiten basierend auf der in Schritt 2 ermittelten Geräteformatkonfiguration fest.
- Erstellt den vollständigen Objektbaum für jedes Gerät in ioBroker.
- Erkennt Collect-fähige Geräte durch passives Abhören ihrer Zeitsignale im CAN-Bus (keine zusätzliche Scanzeit erforderlich – läuft parallel). Für jedes erkannte Gerät wird im Gerätekarten-Header der e3oncan- Datenpunkteseite ein Stecknadelsymbol angezeigt.
Dieser Schritt ist für die Nutzung im Nur-Lese-Modus nicht unbedingt erforderlich, wird aber dringend empfohlen – und ist notwendig, wenn Sie Datenpunkte beschreiben möchten.
Starten Sie den Adapter nach dem Scan neu, wenn Sie Daten schreiben möchten. Ein neu entdeckter Datenpunkt wird zwar sofort auf der Festplatte gespeichert, die laufende Adapterinstanz verwendet jedoch weiterhin das beim Start geladene Datenpunktwörterbuch, bis sie neu gestartet wird. Das Schreiben in einen soeben gefundenen Datenpunkt schlägt mit der Fehlermeldung „Datenkodierung fehlgeschlagen“ fehl, bis Sie den Adapter einmal neu starten. Bereits vor dem Scan bekannte Datenpunkte sind davon nicht betroffen.
Speichere die Datenpunktwerte während des Scans im Objektbaum.
Standardmäßig schreibt der Scan auch den aktuellen Wert jedes Datenpunkts in den Objektbaum (json, raw, tree Sie können das Verhalten mithilfe der Option „Datenpunktwerte während des Scans im Objektbaum über der Scan-Schaltfläche speichern“ anpassen. Wenn diese Option deaktiviert ist, aktualisiert der Adapter Werte und Metadaten bereits vorhandener Datenpunktobjekte, erstellt aber keine neuen – diese werden automatisch beim ersten Datenempfang nach dem Scan erstellt.
Diese Option ist nützlich, wenn Sie eine große Anzahl von Statusänderungen während des Scans vermeiden möchten (z. B. auf Systemen mit vielen Geräten). Wenn Sie zuvor einen Scan mit gespeicherten Werten durchgeführt haben und nun einen Neustart wünschen, können Sie die Daten aller Geräte gefahrlos löschen. json, raw, oder tree Unterobjekte aus dem ioBroker-Objektbaum werden vom Adapter beim nächsten Datenempfang automatisch neu erstellt. Hinweis: Das gleichzeitige Löschen einer großen Anzahl von Objekten führt dazu, dass ioBroker viele interne Ereignisse gleichzeitig auslöst, was kurzzeitig zu einem Anstieg des RAM-Verbrauchs führen kann. Löschen Sie Objekte daher in kleinen Gruppen, wenn Ihr System speicherbelastet ist.
Hinweis zu Verlaufsadaptern: Das Löschen von Objekten löscht nicht die vom Verlaufsadapter (History, InfluxDB, SQL) gespeicherten Verlaufsdaten. Die aufgezeichneten Werte bleiben im Backend des Adapters erhalten und werden in den Diagrammen wieder angezeigt, sobald die Status-ID neu erstellt wurde. Die Konfiguration des Verlaufsabonnements (das „Aktiviert“-Flag des Objekts) geht jedoch beim Löschen eines Objekts verloren und muss für das neue Objekt manuell wieder aktiviert werden.
Warnung: Löschen Sie niemals die
infoKanal (z. B.e3oncan.0.infoDiese Datei enthält Scan-Ergebnisse, Informationen zur Energiezählererkennung, Verzögerungen, aktive Flags, Zusammenfassungen der Bustopologie und den CAN-Verbindungsstatus. Durch das Löschen dieser Datei gehen Konfigurationsdaten verloren, die nicht automatisch wiederhergestellt werden können.
Bustopologieanalyse
Nach Abschluss des Scans generiert der Adapter automatisch eine Bustopologie-Zusammenfassung und speichert diese in zwei Zuständen im info Kanal: info.topology (JSON) und info.topologyHtml (HTML). Weitere Details finden Sie in der unten stehenden Bus-Topologieanalyse .
Nach dem Scan können Sie die gefundenen Datenpunkte auf der e3oncan- Datenpunkteseite durchsuchen und verwalten (siehe unten ).
Schritt 4 – Aufgaben und Zeitpläne
Die empfohlene Methode zum Konfigurieren von Lesezeitplänen und des gerätespezifischen Erfassungsmodus ist die e3oncan- Datenpunkteseite (siehe unten ).
Energiezähler
Wenn der Gerätescan E380- oder E3100CB-Energiezähler erkannt hat, wird auf der Seite „e3oncan-Datenpunkte“ für jeden erkannten Zähler eine Karte angezeigt. Aktivieren Sie die Datenerfassung mit dem Schalter „Erfassen“ auf der Karte. Legen Sie im Feld „Verzögerung (s)“ das minimale Intervall zwischen den Wertaktualisierungen in ioBroker fest. Der Standardwert von 5 Sekunden wird empfohlen, da Energiezähler mehr als 20 Werte pro Sekunde übertragen. Die Einstellung auf 0 führt zu einer erheblichen Belastung von ioBroker.
Klicken Sie nach Abschluss der Arbeit auf „Speichern & Schließen“ . Überprüfen Sie die Objektstruktur, um sicherzustellen, dass Daten erfasst werden.
Bustopologieanalyse
Nach dem Scan der Datenpunkte analysiert der Adapter alle während des Scans erfassten Bustopologiedaten und speichert das Ergebnis in zwei Zuständen im info Kanal:
| Zustand | Rolle | Inhalt |
|---|---|---|
info.topology | json | Strukturiertes JSON: Liste der über UDS zugänglichen Geräte und aller Topologieelemente, Duplikate aus allen Topologiematrizen entfernt |
info.topologyHtml | html | Gerenderte HTML-Tabelle, farblich nach Bustyp gekennzeichnet, mit einem UDS- Symbol auf Geräten, die auch UDS-fähig sind. |
Anzeige der HTML-Tabelle
Die einfachste Möglichkeit, die Topologie in ioBroker anzuzeigen, besteht in der Verwendung eines Dashboard-Tools, das HTML-Zustände rendern kann:
- jarvis : StateHTML- Widget hinzufügen → auswählen
e3oncan.x.info.topologyHtmlDie - vis / vis2 : Einfaches Widget hinzufügen – Zeichenkette (unmaskiert) oder HTML → Auswahl
e3oncan.x.info.topologyHtmlDie
Hinweis: Die
info.topologyUndinfo.topologyHtmlDie Zustände können zu groß sein, um im Standarddialog des ioBroker-Admin-Editors angezeigt zu werden. Dies ist eine bekannte Einschränkung der Admin-Oberfläche für große Zeichenketten-Zustände. Die Zustände sind korrekt geschrieben und können von Skripten und Widgets normal verwendet werden.
Registerkarte „e3oncan-Datenpunkte“
Die Seite „e3oncan-Datenpunkte“ dient als zentrale Anlaufstelle zum Anzeigen von Datenpunkten und zum Konfigurieren von UDSonCAN-Lesezeitplänen sowie des gerätespezifischen Erfassungsmodus. Sie öffnet sich in einem neuen Browser-Tab, wenn Sie in der Instanzansicht des ioBroker-Admins auf die Schaltfläche „Datenpunkte“ in der Instanzzeile des Adapters klicken.
Durchsuchen von Datenpunkten
Alle Geräte und erkannten Energiezähler werden als ausklappbare Karten angezeigt, die standardmäßig zusammengeklappt sind, sodass Sie Ihr gesamtes System auf einen Blick erfassen können. Klicken Sie auf eine Kartenüberschrift, um sie auszuklappen. Das Suchfeld filtert nach Name oder ID, und passende Karten werden automatisch ausgeklappt.
Wurde für ein Gerät noch kein Datenpunktscan durchgeführt, erscheint oben auf der Seite ein Warnhinweis. Wurde bereits ein Scan durchgeführt, die in Version 1.x eingeführte automatische Datenerfassung jedoch noch nicht ausgeführt, empfiehlt ein Informationsbanner einen neuen Datenpunktscan. Dieser Hinweis kann mit der Schaltfläche „Nicht mehr anzeigen“ dauerhaft ausgeblendet werden.
Gerätekarten
Jede Gerätekarte listet ihre Datenpunkte mit ID, Name, Codec und Zeitplaneinstellungen auf. Die Schaltfläche „Erfassen“ und die minimale Aktualisierungszeit werden in der Kartenüberschrift angezeigt. Wurde während des Scans der Datenpunkte Datenverkehr vom Gerät erfasst, erscheint zur Bestätigung ein grünes Stecknadelsymbol in der Kartenüberschrift. Sind Datenpunkte geplant, erscheint ein grünes „N“ -Symbol. Klicken Sie darauf, um die Karte zu erweitern und nur die geplanten Datenpunkte anzuzeigen. Ein erneuter Klick auf das Symbol entfernt den Filter. Durch Klicken auf die Kartenüberschrift wird der Filter entfernt und die Karte – je nachdem, ob sie durch das Symbol geöffnet wurde – ein- oder ausgeblendet.
Energiezählerkarten
Wurden während des Gerätescans Energiezähler erkannt (siehe Schritt 2 ), erscheint oben auf der Seite für jeden erkannten Zähler eine Karte. Aktivieren Sie die Datenerfassung mit dem Schalter „Erfassen“ und legen Sie im Feld „Verzögerung (s)“ das minimale Intervall zwischen den Wertaktualisierungen in ioBroker fest.
Terminplanung
Für jeden Datenpunkt können Sie Folgendes tun:
- Beim Start prüfen – der Datenpunkt wird einmalig beim Start des Adapters ausgelesen.
- Geben Sie ein Intervall (s) ein – der Datenpunkt wird in diesem Intervall wiederholt ausgelesen.
Beide Optionen lassen sich kombinieren. Verwenden Sie den Zeitplanfilter (Alle / Bei Start / Intervall), um sich schnell auf bereits geplante Datenpunkte zu konzentrieren.
Topologie
Die Schaltfläche „Topologie“ in der Symbolleiste öffnet das Bus-Topologiediagramm in einem modalen Dialog. Das Diagramm wird nach jedem Datenpunkt-Scan automatisch generiert (siehe Bus-Topologieanalyse ). Die Schaltfläche ist deaktiviert, bis Topologiedaten verfügbar sind.
Sparen
Klicken Sie auf „Speichern“ , um Ihre Änderungen anzuwenden, ohne den Tab zu schließen. „Speichern & Schließen“ speichert die Änderungen und schließt den Tab, sodass Sie wieder zur Instanzenansicht gelangen. „Verwerfen & Schließen“ schließt den Tab, ohne die Änderungen zu speichern – ein Neustart des Adapters wird nicht ausgelöst. Ein Symbol für nicht gespeicherte Änderungen wird angezeigt, sobald Änderungen ausstehen.
Hinweis: Beim Speichern werden die Zeitpläne aller in diesem Tab angezeigten Geräte anhand des aktuellen UI-Zustands neu erstellt. Zeitpläne für hier nicht aufgeführte Geräte (z. B. direkt im Adapterkonfigurationsdialog hinzugefügt) bleiben unverändert. Falls für dasselbe Gerät an beiden Stellen Zeitpläne vorhanden sind, hat beim Speichern der Tab „Datenpunkte“ Vorrang. Doppelte Einträge werden automatisch entfernt.
Lesedatenpunkte
Die Datenpunkte werden automatisch gemäß den von Ihnen konfigurierten Zeitplänen ausgelesen. Die Werte erscheinen in der Objektstruktur von ioBroker unter dem Gerätenamen und sind wie folgt organisiert: json, raw Und tree Unterobjekte mit für Menschen lesbaren Namen und Metadaten.
Lesen eines bestimmten Datenpunkts auf Anfrage
Sie können jederzeit jeden Datenpunkt anfordern, indem Sie den Status bearbeiten. e3oncan.0.<DEVICE>.cmnd.udsReadByDid und die Eingabe einer Liste von Datenpunkt-IDs, zum Beispiel [3350, 3351, 3352] Wenn der Datenpunkt auf dem Gerät verfügbar ist, wird der Wert in der Objektstruktur angezeigt und kann in Leseplänen verwendet werden.
Der numerische Scanbereich ist derzeit begrenzt (z. B. 256–3338 in Version 0.11.0). Verwenden Sie udsReadByDid um Datenpunkte außerhalb dieses Bereichs zu untersuchen.
Schreiben von Datenpunkten
Das Schreiben ist bewusst einfach gehalten: Ändern Sie den Wert des entsprechenden Zustands in ioBroker und speichern Sie ihn, ohne dies zu überprüfen. Acknowledged (ack)-Kontrollkästchen. Der Adapter erkennt den nicht bestätigten Schreibvorgang und sendet ihn an das Gerät.
Etwa 2,5 Sekunden nach dem Schreiben liest der Adapter den Datenpunkt vom Gerät zurück und speichert den bestätigten Wert. Wird der Status anschließend nicht bestätigt, überprüfen Sie das Adapterprotokoll auf Fehlerdetails.
Whitelist der beschreibbaren Datenpunkte
Das Schreiben ist auf Datenpunkte auf einer Positivliste beschränkt, die hier gespeichert ist:
e3oncan.0.<DEVICE>.info.udsDidsWritable
Sie können die Liste erweitern, indem Sie diesen Status bearbeiten. Speichern Sie die Änderung, ohne sie zu aktivieren. Acknowledged Die
Manche Datenpunkte können selbst dann nicht geändert werden, wenn sie auf der Whitelist stehen – das Gerät gibt eine negative Antwort zurück. Der Adapter versucht es dann mit einem alternativen Dienst (nur interner CAN-Bus). Überprüfen Sie Schreibvorgänge immer, indem Sie kontrollieren, ob der Wert bestätigt wurde.
Rohschnittstelle des Gateways
Das open3e-esp32-Gateway bietet zwei Rohdatenpfade für Software, die CAN-Daten selbstständig dekodiert:
- AUSRUHEN:
GET /api/rawreadGibt die unveränderten UDS-Antwortbytes für bis zu 10 Datenpunkt-IDs pro Anfrage zurück.POST /api/rawwritesendet Rohwertbytes mit dem Dienst0x2Eund nur solange Rohes Schreiben freigeben auf dem Gateway aktiviert ist. - MQTT: CAN-IDs, die im Gateway aufgelistet sind
rawCanIdsDie Einstellungen werden unverändert veröffentlicht.<base topic>/raw/<id-hex>, als{"dlc": 8, "data": "21fa01b3...", "ts": 1725455669123}Die
Keiner der beiden Pfade verwendet den Open3e-Codec oder die Datenpunktdatenbank, daher findet auf dem Gateway keine Dekodierung oder Validierung statt. Im Gateway-Modus nutzt ioBroker.e3oncan diese Schnittstelle, und sein eigener Codec legt die Bedeutung der Bytes fest. Protokolldetails und die Scan-Endpunkte finden Sie in docs/raw-gateway-api.md .
Datenpunkte und Metadaten
Detaillierte Informationen darüber, wie Datenpunkte strukturiert sind, wie Variantendatenpunkte und Metadaten funktionieren und wie Temperatur-/Datums-/Zeitformate behandelt werden, finden Sie in data-points.md .
Energiezähler
Energiezähler werden während des Gerätescans automatisch erkannt. Eine manuelle Konfiguration ist nicht erforderlich. Der Adapter weist jedem Zähler basierend auf seinem Fundort einen Statusnamen im Objektbaum von ioBroker zu.
| Kanal | CAN-Adresse | Staatsname |
|---|---|---|
| UDS CAN | 98 | e380 |
| UDS CAN | 97 | e380_97 |
| 2. CAN | 98 | e380_98 |
| 2. CAN | 97 | e380_97 |
e380 (ohne Suffix) wird für die CAN-Adresse 98 auf dem UDS CAN-Kanal verwendet, um die Rückwärtskompatibilität mit bestehenden Installationen zu gewährleisten. e3100cb wird immer für den E3100CB verwendet.
Die Erfassungsverzögerung (standardmäßig 5 s) kann pro Zählertyp auf der Seite „e3oncan-Datenpunkte“ angepasst werden. Änderungen werden nach einem Neustart des Adapters wirksam.
E380-Daten und -Einheiten
Es werden bis zu zwei E380-Energiezähler unterstützt. Die Datenpunkt-IDs hängen von der CAN-Adresse des Geräts ab:
- CAN-Adresse 97: Datenpunkte mit geraden IDs
- CAN-Adresse 98: Datenpunkte mit ungeraden IDs
| AUSWEIS | Daten | Einheit |
|---|---|---|
| 592, 593 | Wirkleistung L1, L2, L3, Gesamt | W |
| 594, 595 | Blindleistung L1, L2, L3, Gesamt | var |
| 596, 597 | Absoluter Strom L1, L2, L3; cosPhi | A, - |
| 598, 599 | Spannung L1, L2, L3; Frequenz | V, Hz |
| 600, 601 | Kumulierte Importe, Exporte | kWh |
| 602, 603 | Gesamtwirkleistung, Gesamtblindleistung | W, var |
| 604, 605 | Kumulierte Importe | kWh |
E3100CB Daten und Einheiten
| AUSWEIS | Daten | Einheit |
|---|---|---|
| 1385_01 | Kumulierte Importe | kWh |
| 1385_02 | Kumulierte Exporte | kWh |
| 1385_03 | Zustand: −1 = Einspeisung / +1 = Versorgung | — |
| 1385_04 | Gesamte Wirkleistung | W |
| 1385_08 | Wirkleistung L1 | W |
| 1385_12 | Wirkleistung L2 | W |
| 1385_16 | Wirkleistung L3 | W |
| 1385_05 | Blindleistung gesamt | var |
| 1385_09 | Blindleistung L1 | var |
| 1385_13 | Blindleistung L2 | var |
| 1385_17 | Blindleistung L3 | var |
| 1385_06 | Aktueller, absoluter L1 | A |
| 1385_10 | Aktueller, absoluter L2-Wert | A |
| 1385_14 | Aktueller, absoluter L3-Wert | A |
| 1385_07 | Spannung L1 | V |
| 1385_11 | Spannung L2 | V |
| 1385_15 | Spannung L3 | V |
Häufig gestellte Fragen und Einschränkungen
Warum sollte man Collect und UDSonCAN zusammen verwenden?
Collect liefert Ihnen Echtzeitdaten für alle zwischen den Geräten ausgetauschten Daten – schnell veränderliche Werte wie den Energiefluss und langsam veränderliche Werte wie Temperaturen, die alle sofort aktualisiert werden. UDSonCAN ermöglicht Ihnen den Zugriff auf Daten, die nicht spontan übertragen werden, typischerweise Sollwerte und Konfigurationswerte. Die Kombination beider Systeme bietet Ihnen ein umfassendes und aktuelles Bild Ihres Systems.
Welche Geräte unterstützen den Sammelmodus?
Das Collect-Protokoll ist derzeit bekannt für:
- Vitocal / HPMUMASTER (Sammel-ID)
0x693(interner CAN-Bus) - Vitocharge VX3 und Vitoair / EMCUMASTER (Sammel-ID)
0x451(externer und interner CAN-Bus)
Die Collect-CAN-IDs werden während des Gerätescans automatisch anhand des UDS-Gerätenamens zugewiesen. Geräte, die oben nicht aufgeführt sind, erhalten keine automatische Collect-ID; diese kann manuell in der Adapterkonfiguration eingegeben werden.
Kann ich open3e gleichzeitig verwenden?
Ja, unter bestimmten Bedingungen. Wenn Sie in diesem Adapter ausschließlich den Collect-Modus verwenden, kann open3e ohne Einschränkungen parallel dazu ausgeführt werden. Wenn Sie hier UDSonCAN verwenden, sollten Sie open3e nicht gleichzeitig für dieselben Geräte ausführen – dies führt zu sporadischen Kommunikationsfehlern in beiden Anwendungen.
Der Adapter funktioniert nach einem Node.js-Upgrade nicht mehr. Was kann ich tun?
Ab Adapterversion 1.0.3 verwendet das native CAN-Modul (socketcan) die N-API und muss nach einem Node.js-Upgrade nicht mehr neu kompiliert werden. Falls Sie eine ältere Version verwenden, aktualisieren Sie bitte zuerst den Adapter. Sollte das Problem nach dem Upgrade weiterhin bestehen, melden Sie es bitte.
Was unterscheidet es vom open3e-Projekt?
- Direkte Integration in ioBroker: Konfiguration über Dialoge, Daten direkt im Objektbaum sichtbar.
- Echtzeit-Erfassungsmodus zusätzlich zu UDSoNCAN.
- Das Schreiben von Daten ist einfacher: Man ändert einfach einen Statuswert und speichert ihn, ohne eine Bestätigung abzugeben.
- MQTT ist nicht erforderlich (obwohl MQTT natürlich über die normale ioBroker-Konfiguration verfügbar ist).
- Die 64-Bit-Ganzzahlkodierung für Schreibvorgänge ist auf Werte unter 2^52 (4.503.599.627.370.496) beschränkt. Die Dekodierung funktioniert über den gesamten 64-Bit-Bereich korrekt.
Kann ich Datenpunkte außerhalb des Scanbereichs anfordern?
Ja. Bearbeiten Sie den Bundesstaat. e3oncan.0.<DEVICE>.cmnd.udsReadByDid und geben Sie eine Liste von Datenpunkt-IDs ein, z. B. [3350, 3351, 3352, 3353] Verfügbare Datenpunkte werden in der Objektstruktur angezeigt und können in Leseplänen verwendet werden. Nicht verfügbare Datenpunkte führen zu einer „Negative Antwort“-Meldung im Protokoll.
Spenden
Wenn dir dieses Projekt gefallen hat – oder du einfach nur großzügig sein möchtest –, spendiere mir doch ein Bier. Prost! 😉
Changelog
WORK IN PROGRESS
- (MyHomeMyData) Added open3e-esp32 gateway as optional connection type per CAN bus (REST for UDS, MQTT for passively received frames)
- (MyHomeMyData) Gateway: device and data point scan run on the gateway's scan engine, with progress in the log
- (MyHomeMyData) Gateway: energy meters and Collect devices are detected as on a local bus
- (MyHomeMyData) Gateway: relayed CAN IDs are configured automatically on each start
- (MyHomeMyData) Gateway: connection state follows the gateway's health; the adapter restarts itself when the gateway recovers
- (MyHomeMyData) Requires Node.js 22.22.2 or newer, or Node.js 24.15 or newer. The adapter is tested with Node.js 22, 24 and 26
- (MyHomeMyData) Fixed the connection state after a reconnect during the device scan: a local CAN bus that stops afterwards is now reported and sets the connection state to disconnected
1.1.3 (2026-09-11)
- (MyHomeMyData) Fixed CAN connection dropping unexpectedly and never recovering on a healthy bus (updated
socketcanto 4.3.1, which stops treating a recoverable socket error the same as a real disconnect). Refer to issue #255.
1.1.2 (2026-07-16)
- (MyHomeMyData) Fixed missing update of meta data (unit, description) when user changes device specific data point definition
1.1.1 (2026-07-06)
- (MyHomeMyData) Update of list of data points for E3 devices to version 20260705 (common)
- (MyHomeMyData) Fixed duplicate display of variant data points in data point list of WebUI
1.1.0 (2026-07-05)
- (MyHomeMyData) Update of list of data points for E3 devices to version 20260701 (common) and 20260630 (variant)
- (MyHomeMyData) Added codec
O3ESwitchfor device-dependent data point structures selected by a discriminator byte - (MyHomeMyData) Added optional
decimalsparameter to numeric codecs to round decoded values - (MyHomeMyData) Added update of meta data during startup, when structure of data point has changed
1.0.3 (2026-06-02)
- (MyHomeMyData) Update of list of data points for E3 devices to version 20260528 for common and 20260527 for variant data points; For details see this changelog
- (MyHomeMyData) Suppress spurious variant-did warning when common dict covers the length
- (MyHomeMyData) User-defined variant data point structures in
udsDidsSpecificcan now be protected from automatic updates by adding"protected": true(and an optional"reason"text) to the entry; see documentation - (MyHomeMyData) Updated socketcan dependency to 4.2.1 (N-API) — the native CAN module no longer needs to be rebuilt after a Node.js upgrade
Older versions
Older changelog entries are available in CHANGELOG_OLD.md.
License
MIT License
Copyright (c) 2024-2026 MyHomeMyData juergen.bonfert@gmail.com
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.