abbrechen
Suchergebnisse werden angezeigt für 
Anzeigen  nur  | Stattdessen suchen nach 
Meintest du: 

CAN Bus, Home Automation E3 Generation lokal und kostenlos

hier noch mal mein Beitrag aus 'Internet der Dinge', dem Offenen Brief an Max Viessmann, als neuer Thread - Diskussionen, Fragen etc. bitte hier 🙂

 

Moin Freunde!

 

Da Viessmann zwar ein wunderschöne Schnittstelle (UDS, ISO-TP oder DoIP) eingebaut hat, das aber nur eingeschränkt und für eine 4-stellige Summe (per WAGO Gateway) zur Verfügung stellt, haben wir uns bekanntlich dran gemacht, das selber offen zu legen. 🙂

 

Stand der Dinge ist:

 

- Wir haben eine MQTT fähige Lösung zum Anschluss an den externen CAN Bus ("Stecker 91"), die es erlaubt, E3 Geräte (Wärmepumpen, Gasgeräte, (PV Speicher gerade in der Testphase, BSZ brauchen wir noch Kandidaten)) in Home Automation Systeme einzubinden. ioBroker, mosquitto, Home Assistant, Node-RED und so weiter also alles einfach machbar und bei uns schon im dauerhaften Einsatz.

 

- Das Ganze läuft lokal, also ohne irgendeine Hersteller oder sonstwelche Cloud, ohne Internet! Bei der CAN Bus Kopplung kann die gleichzeitige Verbindung mit dem Viessmann Server zwecks Wahrung der Gewährleistungs- und Garantieansprüche aufrechterhalten bleiben.

 

Eine Anbindung über den WLAN Access Point ist auch möglich, damit aber keine parallele Viesmann-Server-Verbindung mehr.

 

- Aktuell ist nur das Auslesen von Daten weitergehend erprobt. Bei den wichtigen Daten haben wir auch schon die Formate zur Interpretation geklärt, wir arbeiten an einer vollständigen Klärung.

 

Das Schreiben ist bei vielen Daten auch schon erprobt.

 

und last not least: das Ganze ist natürlich kostenfrei und open source! im Sinne eins besseren Miteinanders 😉

 

Der laufend aktualisiert werdende Stand der Linux Lösung ist auf

https://github.com/open3e/open3e

verfügbar. Einen guten 'Leitfaden' für den Einstieg hat @Hotzen-Plotz hier zur Verfügung gestellt:

https://github.com/open3e/open3e/discussions/5

Eine Sammlung von nützlichen Informationen hat @TSG initiert:

https://github.com/TheSmartGerman/open3e/wiki

(werden wir bald auch unter das open3e Projekt migrieren) 

 

beste Grüße!

HerrP_2-1692095743490.png

 

Phil

 

zur Beachtung: Der Zugriff auf das Zielgerät mittels dieser durch Viessmann nicht vorgesehenen Lösung zieht möglicherweise den Verlust von Gewährleistungs-/Garantieansprüchen nach sich und kann unter Umständen zu GEFAHREN FÜR LEIBLICHE UNVERSEHRTHEIT ODER SACHWERTE führen! Die Autoren schliessen jegliche Haftung aus.

 

Beispiele aktueller Home Assistant Integrationen von Wärmepumpen:

 

HerrP_3-1692095743607.jpeg

 

HerrP_3-1697543763132.png

Vitocal 250 Kältekreisübersicht: View und Installationsanleitung gibt's hier: https://github.com/MyHomeMyData/iob.vis.vitocal250.git

 
Visualisierung der Vitocal Energiematrizen zur monatlichen Energiebilanz für ioBroker:
HerrP_0-1728512769080.png

Wer es ausprobieren möchte: Hier gibt es eine Anleitung.

 

Jürgen hat auch noch weitere schöne Sachen abgeleitet.

Einen Adapter für ioBroker:

https://github.com/MyHomeMyData/ioBroker.e3oncan

und noch ein paar andre Sachen, die aber in dem Adapter integriert sind. Schaut einfach mal sein Repo an...

https://github.com/MyHomeMyData

 

ps. wer uns unterstützen will und kann ist herzlich willkommen!

 

pps. und wir freuen uns über jedes 'like' (👍) - damit zeigt ihr deutlich, dass ihr eine offene und lokale Kommunikation mit den 'One Base' Geräten eigentlich von Viessmann erwartet

1.416 ANTWORTEN 1.416

Was passiert wenn du den Datenpunkt einzeln ausliest?

 

mfg _tidf

...leider keine Änderung 😞

 

VG Markus

Die VX3 abgefragt mit

E3onCANcollect.py -c can0 -dev vx3 -m <ip>:1883:open3e/vx3 -mfstr {didNumber:04d}_{didName

liefert MQTT Daten, die in MQTT Explorer so dargestellt werden:MQTTstatus_2024-12-07_13-32-36.png

Dieses MQTT Log ist generiert von einer VX3 type 8.0.
Daraus kann man sehr gut entnehmen,  welche Datenpunkte Meldungen ungefragt senden. Und mehr gibt's nicht (im Moment, oder grundsätzlich?!).

 

Bei der VX3 Abfrage mit

E3onCANcollect.py -c can0 -dev vx3 -m <ip>:1883:open3e/vx3 -mfstr {didNumber:04d}_{didName

zeigen sich unbekannte bzw nicht aufgelöste Daten, z.B.

open3e/vx3/2539_AlternatingCurrentEnergyStatistic
080b0000fda70000e809010041060200b3389a000d000000dc000000f0000000670200004f190000

open3e/vx3/1841_PointOfCommonCouplingOverview
a0fe5100a0fe5100a0fe5100a0fe510008524b0008524b0008524b0008524b00


open3e/vx3/$1579_Unknown
da01c1010d02db010008d60000cb0000c40000be0000bb0000b60000b50000b300000000000000000000000000000000000000000000000000000f5a0c000000660c0000005f0c000000570c000000500c000000550c000000560c0000005b0c000000550c0000005a0c0000004c0c000000540c0000004f0c0000004a0c000000470c0000000000000000

Wie lassen sich diese weiter auflösen?
Sicher wird es mit einer der PY Funktionen gemacht, bitte um Hinweise hierzu.

Die Umwandlung von diesen Raw-Daten in ein strukturiertes Format machen die Codecs. Die Liste der bekannten Codecs steht in Open3Edatapoints.py. Für 1579 steht da im Moment:

 

1579 : RawCodec(139, "ElectricalEnergyStorageModuleThreeOperatingData"),

 

Wir kennen eben die Bedeutung und Struktur dieses Datenpunktes noch nicht im Detail. Wenn wir das herausgefunden haben, können wir das entsprechend anpassen. Beispiele findest Du in selbiger Datei. Du kannst das auch selbst ändern und ausprobieren. Wichtig ist, dass die Syntax stimmt und die Summe der einzelnen Elemente gleich der Gesamtlänge ist.

 

Und ganz wichtig: Wenn Du die Struktur ermittelt hast, unbedingt hier bekannt machen.

Das open3e Projekt soll an einer Vitocal 250-A/VX3 mit E380 eingesetzt werden. Für die weiterführende Verarbeitung der Anlage Daten sind open3e und E3onCAN mit MQTT als Schnittstelle zu Node-Red vorgesehen.

Im `open3e` Projekt werden die Datenpunkte mittels `open3e_depictSystem` ermittelt. Wie steht das in Beziehung mit den in E3onCAN verwendeten Datenpunkten. Beim `open3e` wird eine Update-Möglichkeit mittels `open3e_depictSystem` beschrieben, ist dies bei 'E3onCAN' ebenso nötig/möglich. Ggf. gibt es die Möglichkeit einen Datenstamm zu verwenden?

E3onCAN ist von open3e abgeleitet und verwendet die gleiche Datenpunktstruktur. In beiden Projekten wird die dafür Datei Open3Edatapoints.py verwendet. open3e ist der Master, ich übertrage von Zeit zu Zeit Änderungen an den Datenpunkten von open3e nach E3onCAN. Letzteres hat im Moment den Datenstand von 25.11.2024.

 

E3onCAN benötigt kein depictSystem, da es auf dem CAN-Bus nur zuhört und alles dekodiert und ggf. in MQTT-Message verwandelt, was es kennt. Es ist darauf angewiesen, was die Viessmanngeräte von sich aus versenden. Das sind prinzipiell die gleichen Datenpunkte wie bei open3e und wenn die gleichen MQTT-Einstellungen verwendet werden, sind auch die erzeugten MQTT-Messages gleich.

 

Wenn Du NodeRed verwendest, nutzt dann auch ioBroker? Dann solltest Du den Adpater e3oncan anschauen. Der ersetzt open3e und E3onCAN komplett und ist viel einfacher zu konfigurieren. Auch der Adapter leitet die Datenpunkte von open3e ab und ist auf dem Stand vom 25.11.2024.


@Juergen-B  schrieb:

Wenn Du NodeRed verwendest, nutzt dann auch ioBroker? Dann solltest Du den Adpater e3oncan anschauen. Der ersetzt open3e und E3onCAN komplett und ist viel einfacher zu konfigurieren. Auch der Adapter leitet die Datenpunkte von open3e ab und ist auf dem Stand vom 25.11.2024.


Wie gesagt soll Node-Red verwendet werden, nicht ioBroker.
Mit E3onCANcollect.py für VX3/E380 zu NR läuft es gut, bleibt hier nur das automatische Starten nach Unterbrechung.
Das Zusammenspiel von open3e mit NR sollte auch nicht das Problem sein.

Wünschenswert wäre das systemd Setup für open3e und E3onCAN in einem Befehl zusammenzufassen.

Auch die feste Angabe des User=pi und /home/pi sollte auf die %u / %h Werte gesetzt sein.


Wünschenswert wäre das systemd Setup für open3e und E3onCAN in einem Befehl zusammenzufassen.

ChatGPT dazu:

HerrP_1-1733654491499.png

 

Vielleicht kannst du ja damit was zusammenbasteln

oder auch so:

HerrP_2-1733654981703.png

 

Vielleicht fragst du's selber mal, es hat noch mehrere Alternativen zu bieten...

 

@ghNeandr´Das mit den Platzhaltern ist eine gute Idee. Das passe ich entsprechend an.

Das Monitoring unserer Vcal/VX3/E380 Anlage mit den folgenden Befehlen gelingt leider nur teilweise:
Anfrage mit:

user@rasp:~ $ cd ~/open3e && source .venv/bin/activate
(.venv) user@rasp:~/open3e $ python3 ~/e3/E3onCAN/E3onCANcollect.py -c can0 -dev <sub> -m 192.168.178.81:1883:open3e/<sub> -mfstr {didNumber:04d}_{didName}
Wait for dids and publish to mqtt...

Die Anfrage <sub> als e380 oder  <sub> als vx3  funktioniert, mit Ausgabe auf dem MQTT Explorer.

 

Auf der Seite https://github.com/MyHomeMyData/E3onCAN ist gesagt:

Tested so far on external CAN bus of Vitocal 250 connected to Vitocharge VX3, for E380 and for E3100CB

Ggf. ist unser Aufbau nicht mit dem "external CAN bus" realisiert. Wie erkennt man, welcher Anschluss extern oder intern ist? Wie sind die Geräte (mit welchen Anschlüssen) / die Anlagenteile zu verbinden?

Ist ggf. ein zweiter CAN-Bus Adapter notwendig?

 

Andererseits funktioniert die gezielte Abfrage mit:

user@rasp:~ $ cd ~/open3e && source .venv/bin/activate
(.venv) user@rasp:~/open3e $ open3e -c can0 -dev vcal -r 268 -v -m 192.168.178.81:1883:open3e/vcal -mfstr {didNumber:04d}_{didName}
vcal 268 FlowTemperatureSensor {"Actual": 34.0, "Minimum": 19.3, "Maximum": 63.9, "Average": 34.7, "Unknown": 0}
closing 0x680 - bye!
closing MQTT client

Der MQTT Explorer zeigt die Anfrage, bzw. die Ergebnisse einwandfrei an, nur vcal erscheint erst mit der 'open3e' Abfrage und nicht mit nur 'E3onCANcollect.py'

Screenshot_2024-12-09_15-22-42.png

Ist es nun ein Hardware (Adapter/Verkabelung des CAN-Bus) oder ein Software Setup Problem?

 

Wenn open3e für die Vitocal Daten liefert und E3onCAN nicht, bist Du vermutlich auf dem externen Bus. Im Reamde von E3onCAN steht: "Data of slave device (e.g. VX3) typically is available on external CAN, data of master device (e.g. Vitocal) typically is available on internal CAN".

 

E3onCAN hört nur zu. Da die Vitocal auf dem externen Bus von sich aus keine Datenpunkte sendet, kann E3onCAN nichts empfangen. Auf dem internen Bus ist die Vitocal aber sehr gesprächig. Wenn Du diese Daten mithören möchtest, brauchst Du einen zweiten USB2CAN-Adapter, den Du an den internen Bus anschließt und darauf E3onCAN laufen lässt. Parallel kannst Du eine weitere E3onCAN-Instanz auf dem externen CAN laufen lassen und E380 und VX3 mithören. Was dann noch fehlt, z.B. Sollwerte, kannst Du mit open3e auf dem externen (oder internen) Bus aktiv abfragen.

Danke Jürgen,
werde mal sehen, ob das polling mit 'open3e' und der Angabe der gefragten Datenpunkte reicht. Wenn nicht, wird's wohl ein zweiter CAN-Bus Adapter.

 

Was mich aber im Moment noch umtreibt, ist das automatische Anlaufen des E3onCANcollect Feeds, und zwar für e380 und vx3 in einem Ansatz. Meine Versuche einen systemd dafür zusammenzustellen sind bisher alle gescheitert.
Auch scheint das automatische Setup für den CAN-Bus nicht wirklich zu klappen. Vllt kann der CAN-Startbefehl mit in das systemd rein?

Du wollest ja auch die User HomeDir durch %u und %h ersetzen. Hat das geklappt / hattest du dafür schon Zeit? Erfolg?

 

Eine Möglichkeit, den Adapter zuverlässig zu starten ist hier beschrieben. Die Methode funktioniert auch, wenn man einen Adapter ab- und wieder ansteckt. Und verhindert zuverlässig Verwechslungen in der Zuordnung, wenn man mit 2 Adaptern arbeitet.

 

Für E380 und VX3 musst Du ja 2 Instanzen von E3onCAN starten. Kannst Du nicht einfach 2 Services anlegen?

 

Das mit %u, %h wollte ich mal schnell ausprobieren, musste aber festellen, dass ich mein Test-System verbastelt habe. Dank vorweihnacthlicher Termin komme ich grade nicht dazu, das in Ordnung zu bringen.

Wäre ja schon zufrieden einen systemd für e380 oder vx3 hinzukriegen.

Aber der Mut hat mich noch nicht verlassen.

 

PS Bitte prüfe nochmal den Link   "Eine Möglichkeit, den Adapter zuverlässig zu starten ist hier beschrieben."

Top-Lösungsautoren