Während der Woche der Wärmepumpe haben Sie bundesweit die Möglichkeit, die innovative Wärmepumpentechnologie näher kennenzulernen. Mit über 50 Informationsveranstaltungen beteiligt sich Viessmann Climate Solutions an der Aktionswoche und lädt Sie herzlich ein – vor Ort oder online – dabei zu sein.
Mehr erfahren →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
Verdichter:
Highly: WHP13300PSDPC8FQ
Bj. 2021
Test Date 2021.11
Erstinstallation der Anlage: 09/2022
aufgeklebtes Label "Reworked"
Verdichter:
Highly: WHP13300PSDPC8FQ
Bj. 2023
Test Date 2023 -05
Erstinstallation der Anlage: 09/2023
Hersteller Nanchang Highly
Die Außeneinheit innen hätte man definitiv besser dämmen können, besonders die Leitungen. Premium ist das nicht, da verliert die WP definitiv Effizienz.
Coole Kiste! genau was ich suche. Jetzt hätte ich eine Frage, wie ist der "Did Code" für die thermische Erzeugerleistung (ich nehme mal an W th*ermsich) ist das dieser: vitocal.2496_CurrentThermalCapacitySystem ?
Ja, das ist der Wert.
Der aktuelle Gesamtverbrauch elektrisch ist 2488_CurrentElectricalPowerConsumptionSystem.
Wäre auch meine liebste Lösung. Warum einen MCP2515? Ein ESP32 hat ja schon einen CAN Controller. da sollte ja ein TJAxxxx reichen.
Auf welcher Adresse hast du gelauscht? das müsste die 0x690 sein, oder?
ups, das scheint mir etwas 'verrutscht'?! ESP32 mit TJA als CAN Interface und canneloni als 'Tunnel' zu einem open3e-fähigen System ist hier beschrieben.
Heute ist der develop branch zum master erhoben worden. Sollte stable sein. Falls ihr einen Bug findet - bitte reporten (hier oder im Repo oder sonstwo, wo wir es finden).
ihr könnt jetzt die Kommandozeilenargumente in eine Datei schreiben und die einfach mit '@FILENAME' aufrufen. Ein Template mit Namen args ist auch beigefügt, drin steht
Sollte in vielen Fällen passen, ansonsten einfach entsprechend bearbeiten. Der Aufruf von open3e erfolgt dann einfach mit
ihr könnt auch noch Argumente wie -r 256 und so dahinter schreiben und natürlich auch im args File ergänzen.
Grüsse! 🖖
Ich kannte anfangs noch nicht die Baudrate und hatte nur gelesen, dass (manche?) ESPs wohl nicht alle Baudraten unterstützen. Die Bezeichnungen der vielen ESP-Module und die zuweilen dürftige Beschreibung auf diversen Onlineshops hatte mich zusätzlich zweifeln lassen, ob alle ESPs überhaupt eine CAN-Peripherieeinheit besitzen. Deshalb habe ich dann einfach mit Kanonen auf Spatzen geschossen.
Genau, schreiben mit 0x680 und lesen mit 0x690.
Hallo zusammen,
super Projekt!
Komme gerade nicht weiter, kann mir jemand einen Tipp geben?
Bekomme folgende Ausgaben:
C:\Users\arnon\Downloads\open3e-master>py Open3Eclient.py -d 192.168.0.1 -dev vcal -a
reading 0x680, 539 datapoints, please be patient...
Traceback (most recent call last):
File "C:\Users\arnon\Downloads\open3e-master\Open3Eclient.py", line 387, in <module>
lst = ecu.readAll(args.raw)
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\arnon\Downloads\open3e-master\Open3Eclass.py", line 130, in readAll
value,idstr = self.readByDid(int(did), raw=raw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\arnon\Downloads\open3e-master\Open3Eclass.py", line 114, in readByDid
response = self.uds_client.read_data_by_identifier([did])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\arnon\AppData\Local\Programs\Python\Python312\Lib\site-packages\udsoncan\client.py", line 174, in decorated
return func(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\arnon\AppData\Local\Programs\Python\Python312\Lib\site-packages\udsoncan\client.py", line 452, in read_data_by_identifier
response = self.send_request(req)
^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\arnon\AppData\Local\Programs\Python\Python312\Lib\site-packages\udsoncan\client.py", line 2226, in send_request
raise NegativeResponseException(response)
udsoncan.exceptions.NegativeResponseException: ReadDataByIdentifier service execution returned a negative response ConditionsNotCorrect (0x22)
C:\Users\arnon\Downloads\open3e-master>
Grüße, Karsten
Hi,
versuch mal nicht gleich alles auszulesen (-a). das klappt bei meiner vdens auch nicht.
gruß
Hi,
leider kann man bei over IP keine raw-Werte lesen, zumindest nicht bei meiner vdens.
jetzt versuche ich adresse 1791 zu schreiben( von 3 auf 1).
1791 : O3EByteVal(1, "DiverterValveDefaultPositionConfiguration"),
andere Adressen, welche das selbe format haben, konnte ich einfach so umschreiben (z.B. 1240 von 01 auf 02)
1240 : O3EByteVal(1, "CentralHeatingPumpMode"),
bei 1791=01 kommt irgendwelche Fehlermeldungen.
Leider lassen sich wie gesagt auch keine raw werte auslesen over IP.
Kann vielelicht mal jemand den raw wert auslesen, dann kann ich vielleicht anhand des Originals sehen, was ich schreiben muss.
Dankeschön.
Gruß
Frage Block A:
Ich bin jetzt ja nicht so der Linux Experte, daher eine Frage dazu, wie jemand, der die bisherige Version am Start hat, das Update hinbekommt auf der Befehlszeile.
Die Frage richtet sich also an die Linuxer hier.
Gehe ich recht in der Annahme, dass ich folgende drei Dinge tun soll:
1. kill den bisherigen Programmlauf
2. "git pull https://github.com/abnoname/open3e" absetzen, damit ich den neuesten Kram auf den Raspi bekomme
3. open3e wieder anwerfen
Sonst nix?
Frage Block B:
Muss ich den Aufruf von Open3e irgendwie verändern gegenüber vorher?
Hier stand mal was davon, dass user und passwort jetzt anders angeordnet sind oder so.
Like - aber was ich bisher zu meinen Fragen hörte, habe ich selbst den Spass daran - und vermutlich noch viel mehr verloren.
Ich drück euch aber die Daumen 👍.
@HerrP schrieb:💥 open3e multi-ECU Version online im develop branch! 🔥
- ihr könnt jetzt auf euer gesamtes System zugreifen. ihr werdet euch wundern, was da alles so drin ist.
- wir haben das Tool Open3E_depictSytem.py hinzugefügt, was das System abscannt und die Konfigurationsdatei devices.json sowie die datapoints_Xy.py erzeugt. Open3Eclient dann mit der Kommandozeilenoption `-cnfg devices.json` ausführen.
Viel Spass! 🙂
Kannst Du das nochmal langsam Schritt für Schritt erklären und vorher sagen, was genau der Effekt/Nutzen ist bitte?
Ja, das sollte so funktionieren. Falls Du MQTT mit Username und Passwort verwendest, musst Du diese Angaben in einer Option zusammenfassen, siehe Readme:
-muser MQTTUSER:PASSW
Bei Fragen oder Problemen gerne auch in die Issues des Prpjektes schauen oder ein Issue erstellen.
> " aber was ich bisher zu meinen Fragen hörte, habe ich selbst den Spass daran"
Kannst Du das bitte konkreter machen? Was verdirbt Dir den Spaß?
@bb77 Schreiben möglichst im raw-Modus, also z.B. für Ruhestellung 'Heizen':
python3 Open3Eclient.py -c can0 -dev vdens -raw -w 1791=01
Irgendwie ist es schon cool der Wärmepumpe beim ‚arbeiten‘ zuzuschauen - das gibt einem natürlich auch Feedback zu seinen Heizgewohnheiten:
- das sind bei mir (250A) folgende Parameter: [274,286,491,988,2488,2496]
- aus 2488 und 2496 errechne ich den ‚live‘ COP
- man sieht gut das Einsetzen der Frostschutzfunktion wenn die Außentemperatur sinkt
- das Beispiel wurde mit NodeRed erstellt - man kann gerne das Tool seines Vertrauens nehmen (zB iobroker, HA)
So mache ich das ja, nur eben über IP, nicht can...geht irgendwie nicht.
auslesen in raw geht leider nicht. schreiben in raw geht mit anderen adressen, aber leider irgendwie nicht mit dieser.
komisch...
Geht leider nicht, ist etwas zu allgemein 😉. Kommt denn eine Fehlermeldung?
hi,
ja, kommt natürlich 🙂
bb77@HeizungsRechner:~
$ cd open3e/
bb77@HeizungsRechner:~/open3e
$ python3 Open3Eclient.py -d 192.168.0.1 -dev vdens -r 1791 -v
0x680 1791 DiverterValveDefaultPositionConfiguration 3
closing 0x680 - bye!
bb77@HeizungsRechner:~/open3e
$ python3 Open3Eclient.py -d 192.168.0.1 -dev vdens -raw -w 1791=01
write 1664.1791 = 01
Traceback (most recent call last):
File "/home/bb77/open3e/Open3Eclient.py", line 375, in <module>
succ,code = dicEcus[ecu].writeByDid(didkey, didVal)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/bb77/open3e/Open3Eclass.py", line 122, in writeByDid
response = self.uds_client.write_data_by_identifier(did, val)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/udsoncan/client.py", line 174, in decorated
return func(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/udsoncan/client.py", line 507, in write_data_by_identifier
response = self.send_request(req)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/udsoncan/client.py", line 2226, in send_request
raise NegativeResponseException(response)
udsoncan.exceptions.NegativeResponseException: WriteDataByIdentifier service execution returned a negative response ConditionsNotCorrect (0x22)
bb77@HeizungsRechner:~/open3e
$
ja natürlich 😉
bb77@HeizungsRechner:~
$ cd open3e/
bb77@HeizungsRechner:~/open3e
$ python3 Open3Eclient.py -d 192.168.0.1 -dev vdens -r 1791 -v
0x680 1791 DiverterValveDefaultPositionConfiguration 3
closing 0x680 - bye!
bb77@HeizungsRechner:~/open3e
$ python3 Open3Eclient.py -d 192.168.0.1 -dev vdens -raw -w 1791=01
write 1664.1791 = 01
Traceback (most recent call last):
File "/home/bb77/open3e/Open3Eclient.py", line 375, in <module>
succ,code = dicEcus[ecu].writeByDid(didkey, didVal)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/bb77/open3e/Open3Eclass.py", line 122, in writeByDid
response = self.uds_client.write_data_by_identifier(did, val)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/udsoncan/client.py", line 174, in decorated
return func(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/udsoncan/client.py", line 507, in write_data_by_identifier
response = self.send_request(req)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/udsoncan/client.py", line 2226, in send_request
raise NegativeResponseException(response)
udsoncan.exceptions.NegativeResponseException: WriteDataByIdentifier service execution returned a negative response ConditionsNotCorrect (0x22)
bb77@HeizungsRechner:~/open3e
$
aber damit kann ich leider null anfangen
ja natürlich 🙂
bb77@HeizungsRechner:~
$ cd open3e/
bb77@HeizungsRechner:~/open3e
$ python3 Open3Eclient.py -d 192.168.0.1 -dev vdens -r 1791 -v
0x680 1791 DiverterValveDefaultPositionConfiguration 3
closing 0x680 - bye!
bb77@HeizungsRechner:~/open3e
$ python3 Open3Eclient.py -d 192.168.0.1 -dev vdens -raw -w 1791=01
write 1664.1791 = 01
Traceback (most recent call last):
File "/home/bb77/open3e/Open3Eclient.py", line 375, in <module>
succ,code = dicEcus[ecu].writeByDid(didkey, didVal)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/bb77/open3e/Open3Eclass.py", line 122, in writeByDid
response = self.uds_client.write_data_by_identifier(did, val)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/udsoncan/client.py", line 174, in decorated
return func(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/udsoncan/client.py", line 507, in write_data_by_identifier
response = self.send_request(req)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/dist-packages/udsoncan/client.py", line 2226, in send_request
raise NegativeResponseException(response)
udsoncan.exceptions.NegativeResponseException: WriteDataByIdentifier service execution returned a negative response ConditionsNotCorrect (0x22)
bb77@HeizungsRechner:~/open3e
$
damit kann ich leider nix anfangen...
ja natürlich 🙂
damit kann ich leider nix anfangen...
Eine Vermutung ist das es einzelne Parameter gibt die besonders "geschützt" sind und eventuell vor dem Ändern eine weitere Aktion erfordern. Das ist der zweite Parameter den ich sehe, der sich nicht ändern lässt. Die Fehlermeldung lässt darauf schließen, hat nicht mit deinem Setup zu tun.
Grüße
@HerrP , zur Info.
Wo finde ich die Datei mit den "Codes" der Parameter für die Vitocal 25x, nach was muss ich suchen? Dann kann ich weiter optimieren.