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 einfachen Daten wie z.B. Warmwasser-Solltemperatur und so auch schon erprobt.

 

- In nicht all zu ferner Zukunft wird es eine einfache Windows Oberfläche zum Setzen der bisher den 'Fachpartnern' mit entsprechendem kostenpflichtigen Account vorbehaltenen Einstellungen wie zum Beispiel den "Energiespareinstellungen" bei den Gasgeräten geben.

 

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

 
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.025 ANTWORTEN 1.025

Danke für die Erläuterungen!

 

Und noch ein Frage:

Ich habe gesehen, dass vier spannende Sensordaten unter einem Kapitel für ein Ding namens "BCU" auftauchen. Unter anderem auch die Rücklauftemperatur mit DID 269.

Mein Versuch diese nun mit python3 Open3Eclient.py -c can0 -dev vdens -r 269 abzufragen, scheitert aber mit:

('ReadDataByIdentifier service execution returned a negative response RequestOutOfRange (0x31)',)

Gibts da einen Tip für mich, wie ich die Werte auslesen kann?

 

Ich fürchte irgendwas mache ich falsch.

 

Ich habe die args Datei jetzt befüllt mit:

 

-c
can0
-dev
vdens
-m
127.0.0.1:1883:open3e
-muser
xxx:yyy
-mfstr
{didNumber}_{didName}
-r
268,271,274,284,318,331,334,360,364,365,381,386,392,396,401,424,475,526,527,531,534,544,545,548,565,691,692,693,694,695,696,697,726,727,728,729,730,731,732,761,762,763,764,765,766,767,874,880,896,919,987,1008,1024,1087,1240,1395,1415,1503,1538,1539,1555,1643,1659,1667,2257,2320,2426,2457,2855,2937,2938
-cnfg
devices.json
-v

 

Und dann den Befehl: python3 Open3Eclient.py @args

 

Ich bekomme aber einen völlig unspezifischen Fehler:

Open3Eclient.py: error: unrecognized arguments:


Mir fällt kein Fehler ins Auge.

Von welchem Steuergerät kommt den der Parameter? Wenn ungleich 680, dann "musst" du das mit angeben.

z.B. python3 Open3Eclient.py @argsgen -raw -r 0x680.2369 -v

Hilft dir das weiter

Brauchst du die Authentifizierung (-muser)? Sonst nimm die beiden Zeilen mal raus,  -v ergibt vermutlich auch keinen Sinn. Und  "-dev vdens" brauchst du meines Erachtens auch nicht weil du das mit " -cnfg devices.json" schon übergibst. 

 

Hier meine args:

 

 

--can
can0
--mqtt
localhost:1883:open3e/vitocal
--mqttformatstring
{didNumber:04d}_{didName}
--config
devices.json
-r
318,320,321,322,324,325,1769,1770,1771,1772,1774,1775,1776,2333,2334,2346,2370,2488,2496,2569,2629,2791,0x68c.2847

 

 

 

Danke, ja mit einem "0x688.269" komme ich da jetzt dran. Die Werte selbst sind aber irgendwie fragwürdig:

{'Actual': 0.0, 'Minimum': -10.0, 'Maximum': 11.3, 'Average': 0.0, 'Unknown': 1}

Ja, die Authentifizierung braucht es. Ich habe dieselben Befehle nochmal auf der Kommandozeile eingegeben und es scheint, dass er den Teil mit devices.json nicht mag:

 

python Open3Eclient.py -c can0 -dev vdens -r 268,271,274,284,318,331,334,360,364,365,381,386,392,396,401,424,475,526,527,531,534,544,545,548,565,691,692,693,694,695,696,697,726,727,728,729,730,731,732,761,762,763,764,765,766,767,874,880,896,919,987,1008,1024,1087,1240,1395,1415,1503,1538,1539,1555,1643,1659,1667,2257,2320,2426,2457,2855,2937,2938 -t 60 -m 127.0.0.1:1883:open3e -mfstr {did-Number}_{didName} -muser xxx:yyy -cnfg devices.json
usage: Open3Eclient.py [-h] [-c CAN] [-d DOIP] [-dev DEV] [-tx ECUADDR] [-cnfg CONFIG] [-a] [-r READ] [-w WRITE] [-raw] [-t TIMESTEP] [-l LISTEN] [-m MQTT] [-mfstr MQTTFORMATSTRING] [-muser MQTTUSER] [-j] [-v]
Open3Eclient.py: error: unrecognized arguments: -cnfg devices.json

Finde ich jetzt sehr schräg.


@Hotzen-Plotz  schrieb:

Ja, die Authentifizierung braucht es. Ich habe dieselben Befehle nochmal auf der Kommandozeile eingegeben und es scheint, dass er den Teil mit devices.json nicht mag:

 

python Open3Eclient.py -c can0 -dev vdens -r 268,271,274,284,318,331,334,360,364,365,381,386,392,396,401,424,475,526,527,531,534,544,545,548,565,691,692,693,694,695,696,697,726,727,728,729,730,731,732,761,762,763,764,765,766,767,874,880,896,919,987,1008,1024,1087,1240,1395,1415,1503,1538,1539,1555,1643,1659,1667,2257,2320,2426,2457,2855,2937,2938 -t 60 -m 127.0.0.1:1883:open3e -mfstr {did-Number}_{didName} -muser xxx:yyy -cnfg devices.json
usage: Open3Eclient.py [-h] [-c CAN] [-d DOIP] [-dev DEV] [-tx ECUADDR] [-cnfg CONFIG] [-a] [-r READ] [-w WRITE] [-raw] [-t TIMESTEP] [-l LISTEN] [-m MQTT] [-mfstr MQTTFORMATSTRING] [-muser MQTTUSER] [-j] [-v]
Open3Eclient.py: error: unrecognized arguments: -cnfg devices.json

Finde ich jetzt sehr schräg.


Und wenn du -dev vdens weglässt? Das ist ja jetzt doppelt, also -dev und -cnfg, beides wird meines erachtens nicht benötigt.

 

Auch ohne -dev vdens erkennt er -cnfg devices.json nicht.

Erstellt wurde die devices.json aber?

 

Du must ja zuerst einmal Open3E_depictSystem.py laufen lassen, damit scannt er dein System und erstellt auch die devices.json.

 

Ja.

Zum Testen, ganz einfach. 

python3 Open3Eclient.py  --can can0  --config devices.json  -r 1100  -v

Achte bitte auf die doppelte Minuszeichen. 

Funktioniert das?

@Hotzen-Plotz Unter anderem auch die Rücklauftemperatur mit DID 269.

 

In der vdens ist kein Rücklaufsensor verbaut, also kann auch nix ausgelesen werden 😉.

@Hotzen-Plotz -mfstr {did-Number}_{didName} -muser xxx:yyy -cnfg devices.json

 

did-Number muss didNumber heissen. So schräg ist es also gar nicht 😉.


@mbauer666  schrieb:

Zum Testen, ganz einfach. 

python3 Open3Eclient.py  --can can0  --config devices.json  -r 1100  -v

Achte bitte auf die doppelte Minuszeichen. 

Funktioniert das?


Ja, das klappt. Hm.


@Dreman  schrieb:

@Hotzen-Plotz -mfstr {did-Number}_{didName} -muser xxx:yyy -cnfg devices.json

 

did-Number muss didNumber heissen. So schräg ist es also gar nicht 😉.


Danke. Diesen Teil habe ich offensichtlich der Tatsache zu verdanken, dass ich meine Versuche für mich dokumentiere, indem ich alles in eine Word-Datei kopiere und von da wieder auf die Befehlszeile. Ganz offensichtlich bricht Word mir hier die Bezeichner um und fügt dann einen Bindestrich ein, was zu dem kuriosen Fall führt, dass das, was ich nach Word copy&paste nicht buchstabengenau das ist, was ich 10 Sekunden später von Word copy&paste.


@Hotzen-Plotz  schrieb:

@Dreman  schrieb:

@Hotzen-Plotz -mfstr {did-Number}_{didName} -muser xxx:yyy -cnfg devices.json

 

did-Number muss didNumber heissen. So schräg ist es also gar nicht 😉.


Danke. Diesen Teil habe ich offensichtlich der Tatsache zu verdanken, dass ich meine Versuche für mich dokumentiere, indem ich alles in eine Word-Datei kopiere und von da wieder auf die Befehlszeile. Ganz offensichtlich bricht Word mir hier die Bezeichner um und fügt dann einen Bindestrich ein, was zu dem kuriosen Fall führt, dass das, was ich nach Word copy&paste nicht buchstabengenau das ist, was ich 10 Sekunden später von Word copy&paste.


Ich kann für solche Sachen "Notepad++" empfehlen. Word fügt gerne mal Steuerzeichen usw. ein, die dir hinterher Stress machen. 

Die gute Nachricht ist, dass ich den -cnfg devices.json Teil jetzt auf der Kommandozeile zum Laufen bekomme.

Und nach noch mehr Rumprobieren hier die Lösung:

Man darf in der "args"-Datei im Nano ganz offensichtlich bloss nicht [RETURN] drücken am Ende des letzten Eintrags.

Da ich den -cnfg devices.json Eintrag eben als letztes angefügt hatte und Return gedrückt hatte, wirkte es so, als ob das Stück selbst problematisch wäre. War aber Zufall.

Ist für andere vermutlich total klar, für mich war's das nicht. 🤔

 


@Hotzen-Plotz  schrieb:

Die gute Nachricht ist, dass ich den -cnfg devices.json Teil jetzt auf der Kommandozeile zum Laufen bekomme.

Und nach noch mehr Rumprobieren hier die Lösung:

Man darf in der "args"-Datei im Nano ganz offensichtlich bloss nicht [RETURN] drücken am Ende des letzten Eintrags.

Da ich den -cnfg devices.json Eintrag eben als letztes angefügt hatte und Return gedrückt hatte, wirkte es so, als ob das Stück selbst problematisch wäre. War aber Zufall.

Ist für andere vermutlich total klar, für mich war's das nicht. 🤔

 


Schön das es jetzt funktioniert.

Mit Return hast du eine Leerzeile eingefügt, das ist der Auslöser für das Problem, auch wenn nano nicht mein Lieblingseditor ist, hier ist er unschuldig. 😉

Leibe Grüße  

Wow, da geht was.

 

Leider haben wir eine Viessmann Eurola aus dem Jahr 1998. Da ist vermutlich noch nicht mit einem Bussystem zu rechnen?

 

Hier wird Home Assistant eingesetzt und immerhin messe ich ein paar Temperaturen, so kann ich ein paar Daten erfassen.

UlrichC_0-1701435397633.png

 

Grüße

Ulrich

@UlrichC  guck mal ob du das V mit den beiden LEDs links und rechts daneben findest. Bei den alten Steuerungen könnte das auch 'auf weissem Grund' sein.

 

HerrP_0-1701468860495.png

 

das wäre die Optolink Schnittstelle. das ist zwar nix für open3e, aber mit den openv Tools kommst du da dann dran.

 

Grüsse!

Phil

ps. zumindest besteht dann begründete Hoffnung. ich glaube früher gab es irgendeine Optolink-Platine (wird zumin ab und zu auf ebay angeboten), ggf. war die nicht immer verbaut...

@Hotzen-Plotz  BCU steht für 'Burner Control Unit'. Das ist die Brennersteuerung. Damit besser keine Schreib-Experimente machen 😉

 

@Dreman  komischerweise gab es auch schon früher bei Vitodens einen Datenpunkt für die Rücklauf-Sensor-Temperatur. Anscheinend gibt es Modelle, die einen Rücklaufsensor haben. Meine hat die Rücklauftemperatur aber auch nur als berechneten Wert, obwohl es eine 300er ist.

Ich wollte das Auslesen über die CAN Schnittstelle auch realisieren und hab das Setup (auf Pi4) wie beschrieben durchgeführt. 

Mit dem Befehl 'python3 Open3E_depictSystem.py' bekomme ich die Fehlermeldung:

NameError: name 'O3EComplexType' not defined.

Kann mit da jemand weiterhelfen?

Was wären dann die nächsten Schritte. Meine WP ist eine Vitocal A250?

Danke

Gerhard

Herzlichen Dank an alle hier - endlich kann ich meine Vitodens 300W aus dem Jahre 2019 bald lokal steuern und bin nicht mehr auf die grottige Viessmann Cloud API, pyvicare etc. angewiesen - grandios.

 

Benötige aber noch eure Hilfe! Bis jetzt konnte ich erfolgreich benötigte Werte über die Linux Shell auslesen und auch schreiben, sowie über MQTT auszulesen (mein Ziel ist zwei Heizkreise aus/anschalten, Solltemperaturen ändern, Wasserboiler-Temp ändern und Boiler an/ausschalten, sowie noch einige Daten zusätzlich zu lesen und in Home Assistant abzubilden).

Was ich nicht schaffe ist Werte über MQTT zu schreiben, bricht immer mit Fehler ab.

Ich starte Open3Eclient mit diesen Parametern:

 

root@open3e:/opt/open3e# python3 Open3Eclient.py -c can0 -dev vdens -r 271,274,334,396,424,426,531,1415,1416 -m 192.168.178.xx:1883:open3e -t 10 -muser user:password -l open3e/cmnd
Enter listener mode, waiting for commands on mqtt...

 

Werte werden nun wunderbar alle 10 Sekunden über MQTT gepublished.

Sobald ich nun aber aus Home Assistant ein MQTT Packet absetze z. B. zum setzen der Wasserboiler-Temperatur auf 58 Grad unter Topic open3e/cmnd mit z.B. Payload

{"mode": "write-raw", "data":[[396,"4402"]}

, schmiert mir Open3E ab mit folgendem Fehler:

Traceback (most recent call last):
File "/opt/open3e/Open3Eclient.py", line 351, in <module>
listen(args.read, args.timestep)
File "/opt/open3e/Open3Eclient.py", line 207, in listen
cmnd_loop()
File "/opt/open3e/Open3Eclient.py", line 188, in cmnd_loop
didKey = getint(wd[0]) # key is submitted as numeric value
TypeError: 'int' object is not subscriptable
root@open3e:/opt/open3e#

 

Habe versucht die Payload unterschiedlichst zu formatieren mit write, write-raw mit raw-Werten. Schmiert immer mit dem Fehler ab.

 

Wieso klappt das denn nicht? Würde gerne Werte via MQTT schreiben und mir ersparen via ssh die shell commands alle abzusetzen von Home Assistant aus, zumal ich das noch nicht hinbekomme.

 

Danke danke vorab für eure Tipps!

Grüsse, Stefan

Top-Lösungsautoren