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!
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:
Vitocal 250 Kältekreisübersicht: View und Installationsanleitung gibt's hier: https://github.com/MyHomeMyData/iob.vis.vitocal250.git
Wer es ausprobieren möchte: Hier gibt es eine Anleitung.
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
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:
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:
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:
Vielleicht kannst du ja damit was zusammenbasteln
oder auch so:
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'
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."
Guten Morgen zusammen,
bei mit läuft eine Vitocal 252-A und ein Vitocharge VX3 Typ 8.0A, welche direkt miteinander verbunden sind.
Das EnergyMeter (vermutlich auch das E380) ist mit dem Vitocharge verbunden.
Wenn ich das gestern Nacht noch richtig gesehen habe, ist der Vitocharge an der CAN-Bus-Klemme 91 auf der Vitocal verbunden und davon gibt es leider nur eine.
Wo genau könnte ich jetzt mit dem CAN-USB-Adapter angreifen? Ich kann die Klemme 91 ja sicher schlecht doppelt, also parallel belegen, oder?
Hallo Boostar, willkommen bei open3e. CAN ist ein Bus-System, d.h. an einer CAN-Leitung können mehrere Teilnehmer hängen. Beim ersten und letzten Teilnehmer sollte ein Widerstand als Terminierung angebracht sein.
Es spricht also nichts dagegen, an Klemme 91 einen weitere Leitung zum USB2CAN-Adapter einzuklemmen. Damit es mechanisch und elektrisch stabil ist, evtl. zuerst die vorhandene Leitung entfernen, jeweils die blanken Drahtenden mit dem zusätzlichen Kabel verdrillen (unbedingt Verlegekabel und keine Litze verwenden) und gemeinsam einklemmen. Es reicht, CAN_L und CAN_H zu verdrahten. Ggf. vorhandenen Widerstand entfernen/deaktivieren und am USB2CAN-Adapter aktivieren. Zuerst natürlich VX3 und Vitocal ausschalten, sonst gibt's Fehlermeldungen.
Gruß, Jürgen
P.S.: Falls Du ioBroker verwendest: Der Adapter e3oncan ersetzt open3e komplett und kann auch den E380 auswerten.
Ohh Gott sei Dank!
Ich dachte schon, deswegen fällt auch diese Möglichkeit aus. Aber so ists ja gut, dann schau ich mir das E380 nochmal genauer an und suche die Wiederstände, aber dann würde ich den den Adapter mal bestellen und schauen was da so rauskommt, aber wenn's bereits einen fertigen iOB-Adapter gibt, kann das ja nicht mehr so schwierig werden.
Danke für die Infos.
@Boostar schrieb:.., aber wenn's bereits einen fertigen iOB-Adapter gibt, kann das ja nicht mehr so schwierig werden.
Diesen Adapter nutze ich nunmehr fast schon ein Jahr. Einfacher und leichter geht's nimmer.👍
Demnächst werde ich die Dokumentation zur Steuerung und Überwachung unserer Hybridanlage im ioBroker-Forum einstellen. In Verbindung mit dem FlexCharts-Adapter von @Juergen-B können die Leistungsdaten komfortabel und vollumfänglich überwacht werden. Da bleiben kaum noch Wünsche offen.
Hallo zusammen.
Zunächst einmal vielen Dank an alle die zu der Open3E Lösung beigetragen haben.
Ich habe ein System aus 2 Vitocharge VX3 Typ 1 x 8.0A und 1 x 6.0A, weil meine installierte Leistung 13kWp ist. Wenn ich mir die CAN Ids auf dem CAN1 Anschluss anschaue, sind die erwartungsgemäß auf beiden Wechselrichtern identisch und würden demnach kollidieren, wenn ich die beiden WR an einen CAN Bus anschließe.
Weiß jemand, ob die beiden WRs beim Booten vielleicht sich gegenseitig erkennen und irgendwas adaptieren?
Oder muss ich tatsächlich 2 CAN Adapter Boards verwenden und 2 Instanzen von open3E starten?
Wofür ist der 2. CAN Anschluss gedacht? Kann man darüber vielleicht die WR koppeln? Ich habe in den Unterlagen in keinem Anschlussschema den CAN2 gefunden.
Ich habe noch eine Gridbox die die WR Daten per EEBUS erhält und aggregiert. In der App wird die Leistung aggregiert angezeigt. Das hätte ich gerne auch lokal mit open3E realisiert. An die Gridbox kommt man natürlich auch wieder gar nicht ran, um dort irgendwelche Daten zu bekommen.
Vielen Dank für jegliche Hinweise.
moin @Pollux !
Die 'saubere' Lösung besteht darin, die beiden VX'e per Viessmann Technischem Dienst verbinden zu lassen. Dann wird eine die Main Control Unit (EMCUMASTER) und die andere eine sekundäre (EMCU), und sie bekommen damit unterschiedliche COB IDs / ECU Adressen (oder wie auch immer das bei UDS bezeichnet wird).
Ich würde eher bezweifeln, dass ein einfaches Zusammenschalten ohne neue Anlagenkonfigiration das hergibt, weil ja irgendwer entscheiden muss, welche von den beiden jetzt das Führungsgerät ist.
Eigentlich kann das keine Raketenwissenschaft sein, aber ich habe keine blassen Schimmer, wie man das konfiguriert. Vielleicht kann jemand anders was dazu sagen?!
Mit Vitocal und VX3 funktioniert es genau wie beschrieben. Das muss durch Viessmann oder den HB eingerichtet werden. Ob das auch mit 2 VX3en geht, weiß ich nicht. Der HB sollte das ja aber wissen. Die Gridbox geht nach meinem Verständnis über TCP/IP. Da kann sie die Geräte getrennt ansprechen und die Daten aggregieren.