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.092 ANTWORTEN 1.092

Hallo, ich bräuchte mal eine CAN-Newbie Starthilfe. Mein IoBroker Adapter findet die Vitocal 250-A nicht: "UDS device scan found 0 new of total 0 devices", nachdem es ein paar Sekunden gescannt hat. Am Cannable-2-Pro-Stecker blinkt dabei die State-Lampe (tut also was), die Work-LED leuchtet aber permament (d.h. es wird nichts übertragen).
Ist noch mehr zu tun, als die mind. zwei Drähte an die 91er Buchse zu koppeln? Ich hatte das Gerät noch nicht offen und bin unsicher, ob die Buchse intern überhaupt verdrahtet ist.
Oder gibt es noch etwas zu konfigurieren bzw. kann man auch die 5-polige 72er Buchse rechts nutzen, die ist allerdings bereits verdrahtet, vermutlich mit der Außeneinheit)?

Leider werde ich aus dem, was du beschreibst, nicht so recht schlau. Daher zwei Vorschläge (Verbinde dich zuvor via SSH mit deinem Raspberry)

 

  • Prüfe den USB-Anschluss (z.B.: lsusb), ob der USB2CAN-Converter erkannt wurde.
  • sudo ip link set can0 type can bitrate 250000 && sudo ifconfig can0 up

Solltest du im ersten Punkt eine Anzeige à la BUS 001 DEVICE 003: ID abcd:1234 OpenMoko, Inc. Geschwister Schneider CAN Adapter erhalten so kannst du im zweiten die notwendigen Übertragungsparameter einstellen.

Die Buchse 91 ist schon die richtige. Zusätzlich zu den Hinweisen von galegro kannst Du noch folgendes probieren:

  • Installiere CAN-Tools mit sudo apt install can-utils
  • Dann sollten mit dem Befehl candump can0 Daten aufgelistet werden. Falls da nichts passiert oder eine Fehlemeldung kommt, ist der CAN-Bus nicht richtig konfiguriert.
  • In ioBroker bitte die Log-Einträge des e3oncan-Adapter während des Starts und des Scans prüfen und hier posten. Wenn Du die Adapter-Instanz in den Logging-Mode "Debug" versetzt, werden mehr Info geloggt.

Gruß, Jürgen

Großartig, besten Dank galegro! Mir fehlte anscheinend nur die korrekte Bitrate für die Datenübertragung, der Converter wurde schon vorher erkannt. Konnte jetzt alles mit IoBroker ausgelesen werden, dann kann die eigentliche Arbeit ja beginnen :-).

Danke auch an Jürgen, da hatten sich unsere Antworten wohl überschnitten - ist somit erledigt!

Ich möchte mich bei euch für eure Arbeit bedanken! Ohne eure Arbeit wäre ich vom Kauf des VX3 zurückgetreten!

 

ich habe jetzt mit sehr beschränkten bash Kenntnissen es hinbekommen meine Daten in Home Assistent zu integrieren. Ich lese jetzt alles was ich brauche über den can Adapter an einem pi 4 aus. Auf dem läuft auch der Io broker mit dem e3oncan Adapter und der Io broker schickt die Daten dann alle 5sec per mqtt an Home Assistent, das auf einer vm auf einer Synology läuft. 🙈

Also drei mal ums eck aber es funktioniert. Durch die Diskussionen und das Wiki von open3e hab ich mich zum Ziel gekämpft. 
Falls jemand Fragen oder Anregungen zu meinem Weg hat immer gerne. Wenn es irgendwann eine native Integration, so wie den e3oncan Adapter, auch für für Home Assistent gibt, wäre das grandios. 

Meine Systemkomponenten sind:

-Vx3 8a10 mit backup box 

-e380ca energiezähler 

-sma energy Meter für remeha brennstoffzelle 

-pi 4 mit usb CanAdapter und iobroker mit e3oncan

-synology ds216+ mit vm für Home Assistent os

-viessmann Gridbox

 

gerne kann ich auch meine yaml config zur Verfügung stellen oder was test wenn es hilf. 

jetzt zu meinen Fragen:

-kann man an einem Parameter sehen ob der vx3 im Backup Betrieb ist?

-Kann man einen mindest Ladestand für den Backupbetrieb vorhalten und per can setzen?

Z. B. Über 2214 backupboxconfiguration dishargelimit. Wenn ja wie geht das habt Ihr Erfahrung damit?

-Kann man der Batterie auch sagen das sie jetzt laden soll (z. B. Aus dem Netz, flexible Strompreise) ?

Danke für das positive Feedback! Eine interessante Lösung 😀

 

Zu Deiner Frage zur VX3 Mindestladung der Backupbox:

In e3oncan kannst Du direkt den Wert tree.2214_BackupBoxConfiguration.DischargeLimit ändern, das wird an die VX3 gesendet. Beim Speichern darauf achten, dass Acknolewdged kein Häkchen hat.

Das sollte auch per MQTT funktionieren, wenn Du den Datenpunkt entsprechend konfigurierst und einen Wert per HA sendest. Habe ich aber nicht ausprobiert.

Wenn ich einen Wert setze, der größer ist als der aktuelle Ladestand und nicht von PV nachgeladen wird, lädt meine VX3 langsam aus dem Netz bis auf den neuen Mindestwert nach. Langsam heißt, mit ca. 100. Zur Nutzung von dynamischen Tarifen also kaum geeignet. Vielleicht lässt sich das aber auch irgenwo einstellen.

 

Für die Backup-Betriebsart konnte ich noch keinen Datenpunkt identifizieren.

 

Gruß, Jürgen

@Juergen-B  vielen dank für die schnelle Antwort. Zwei Fragen noch zum min Wert setzen:
In e3oncan kannst Du direkt den Wert
tree.2214_BackupBoxConfiguration.DischargeLimit ändern, das wird an die VX3 gesendet.

 

-Das ändern mach ich dann im iobroker unter Objekte oder?

 

-Und nehme ich das richtig an, dass 00 für 0% steht und ich da einen Wert zwischen 00 und 99 eintragen kann oder muss das irgendwie kodiert werden?

 

Ja, unter Objekte. Bei mir heißt der komplette State so:

e3oncan.0.vx3.tree.2214_BackupBoxConfiguration.DischargeLimit

Ich habe die Gerätebezeichnung in "vx3" geändert. Kann bei Dir also anders aussehen.

 

Aus Sicht es Adapters ist es ein Byte-Wert. Du kannst also Werte zwischen 0 und 255 eingeben. Aus Sicht der VX3 ist es ein Prozentwert ohne Nachkommastelle. Sinn machen also nur Werte von 0 bis 100. Wobei 100% auch nicht wirklich sinnvoll ist. Probiert habe ich nur Werte bis 30%.

Dazu kann ich jetzt nur schnell beitragen dass ich auch auf der Suche bin wie man den VX3 gezielt laden lassen kann.

Ich habe bisher auch nur den Wert gefunden, weiß aber auch von einem Techniker dass diese Funktion intern wohl auch erst dieses Jahr angegangen werden soll. 

Das was ich allerdings festgestellt habe ist, dass zumindest die Ladeleistung für das Dischargelimit ggf der PC-Leistung entspricht. Er läd also mit 100W wenn keine Pv-Leistung da ist und sobald Leistung durch PV da ist nimmt er diese dazu und läd schneller

Ich habe bisher auch nur den Wert gefunden, weiß aber auch von einem Service Techniker dass diese Funktion intern wohl auch erst dieses Jahr angegangen werden soll. 

danke für die Info. Bei der Firmenpolitik von Viessmann würde es mich aber nicht wundern, wenn das dann nur mit dem VX3B und nicht mit den A Modellen geht.

Hallo zusammen,

 

ich habe den CAN Bus Adapter und die E3oncan aufgesetzt. Funktioniert prinipiell auch, nur ist es so, dass nach einer Weile keine Daten mehr in den "Objekten" des IObrokers aktualisiert werden. Drücke ich in der E3oncan Instanz unter "Liste der Datenpunkte" die "Suche nach Datenpunkten aller Geräte starten", dann werden die Werte asktualisiert. Anm. "Sammeln von Daten auf dem externen CAN-Adapter ist auf 5 s. und "Anfordern von Daten auf einem externen CAN-Adapter über UDSonCAN ist auf 10 s. eingestellt.

 

Könnt ihr mir bitte helfen?

 

Danke und Grüße

 

Branka

Hallo Branka,

 

evtl. liegt ein Missverständnis der Funktionsweise des Adapter vor. Ich vermute, Du hast die Betriebsart "Collect" aktiviert, aber nicht die Betriebsart "UDSonCAN". Letztere benötigst Du wahrscheinlich. Ein Datenpunktscan ist nur einmal notwendig. Bitte schau Dir mal die Infos hier an.

 

Bei weiteren Fragen gerne nochmal posten.

 

Gruß, Jürgen

Hallo zusammen,

 

weiß jemand, wie man die einmalige WW Bereitung über open3e anstößt? Ich würde dies gerne aus Home Assistant aus lokal steuern können.

 

Vielen Dank und Grüße

Philip

Ja, wurde schonmal weiter oben beantwortet. Zumindest fuer meine Vitodens 300: Den raw-Wert 020100 auf Adresse 1006 schreiben. Abbrechen kann man es durch Schreiben von 000000 allerdings nicht, dazu lasse ich mein Script die WW-Bereitung einmal aus- und 1 Sekunden spaeter wieder einschalten, dann ist die einmalige Aufheizung beendet.

Kann man das nicht auch klasse darüber rausbekommen (also ggf auch wie man das wieder abschaltet) indem man alle Parameter ausliest, dann über die app einschaltet, wieder ausliest, abschaltet und nochmal ausliest? Außer das wäre jetzt nur ein Event und man bekommt das nicht mit weils zu schnell ist... 

Man kann auch per normaler Steuerung, also in der App oder am Bedienfeld, die EInmal-WW-Bereitung wieder abschalten. Die laeuft immer bis zum Ende durch, ausser man unterbricht sie so wie beschrieben.

Ansonsten ja, genauso bekommt man es heraus. Waehrend der Einmal-WW-Bereitung steht der Wert auf 020100, wenn man sie beendet wieder auf 000000 (laeuft aber eben trotzdem bis zum Ende weiter).

Vielleicht hilft dir meine Lösung weiter

@HerrP 

Hallo Phil, 

nachdem der TD von Viessmann vor Ort ein Update meiner 250-SH von Ver. 2305 auf Ver. 2404 vorgenommen hat, gibt es reproduzierbar Probleme und Auffälligkeiten mit meiner bisher völlig zufriedenstellenden Open3E-Installation auf einem Raspberry. Daher wurde zur weiteren Fehlersuche die aktuellste Version von GitHub gezogen, und ein open3e_depictSystem gefahren (der mitlaufende DID-Zähler ist dabei eine schöne Zugabe...).

Folgendes ist aufgefallen:

admin@IoBroker02:~/Downloads/open3e-2024-jun/open3e/src/open3e $ python3 Open3E_depictSystem.py
read DID enums ...
2951 DIDs listed.
scan COB-IDs 0x680 to 0x6ff ...
ECU found: 0x680 : HPMUMASTER
ECU found: 0x684 : HMI
ECU found: 0x68c : VCMU
ECU found: 0x6c3 : BACKENDGATEWAY
ECU found: 0x6c5 : BACKENDGATEWAY
ECU found: 0x6cf : EHCU
Received invalid CAN frame. Received Single Frame with length of 5 while there is room for 0 bytes of data with this configuration
6 responding COB-IDs found.
write devices.json ...
done.
scan 680 for DIDs 256 to 3500 ...
found 256:36:BusIdentification
found 257:122:StatusDtcList

------------------------------------------------

Neue Datenpunkte wurden gefunden:

found 3194:1:CascadeSystemDomainRole
found 3195:3:ThermalBufferDemand
found 3198:1:DiagnosticSecondaryWaterPressureCheck
found 3199:1:DiagnosticSecondaryWaterFlowDetection
found 3201:97:HydraulicMatrixConfigurationTwo
found 3211:20:(unknown)
found 3212:2:(unknown)
found 3213:9:(unknown)
found 3215:9:(unknown)
found 3228:73:(unknown)
found 3229:73:(unknown)
found 3230:73:(unknown)
found 3231:73:(unknown)
found 3234:9:(unknown)
found 3237:1:(unknown)
found 3285:5:(unknown)
561 DIDs found on 680.
write datapoints file Open3Edatapoints_680.py ...
done.

----------------------------

.... der Rest sieh soweit gut aus.........


configuration:
{
"0x680": {
"tx": "0x680",
"dpList": "Open3Edatapoints_680.py",
"prop": "HPMUMASTER"
},
"0x684": {
"tx": "0x684",
"dpList": "Open3Edatapoints_684.py",
"prop": "HMI"
},
"0x68c": {
"tx": "0x68c",
"dpList": "Open3Edatapoints_68c.py",
"prop": "VCMU"
},
"0x6c3": {
"tx": "0x6c3",
"dpList": "Open3Edatapoints_6c3.py",
"prop": "BACKENDGATEWAY"
},
"0x6c5": {
"tx": "0x6c5",
"dpList": "Open3Edatapoints_6c5.py",
"prop": "BACKENDGATEWAY"
},
"0x6cf": {
"tx": "0x6cf",
"dpList": "Open3Edatapoints_6cf.py",
"prop": "EHCU"
}
}

run open3e with -mqtt and -a to get EVERYTHING on your MQTT app.

----------------------------------------------------------------------------------------------------------------

Leider funktioniert der Open3Eclient mit der Scanall Option nicht wie erwartet:

admin@IoBroker02:~/Downloads/open3e-2024-jun/open3e/src/open3e $ python3 Open3Eclient.py -c can0 -dev vcal  -a  -v
reading 0x680, 539 datapoints, please be patient...
Traceback (most recent call last):
File "/home/admin/Downloads/open3e-2024-jun/open3e/src/open3e/Open3Eclient.py", line 423, in <module>
main()
File "/home/admin/Downloads/open3e-2024-jun/open3e/src/open3e/Open3Eclient.py", line 401, in main
lst = ecu.readAll(args.raw)
File "/home/admin/.local/lib/python3.9/site-packages/open3e/Open3Eclass.py", line 170, in readAll
value,idstr = self.readByDid(int(did), raw=raw)
File "/home/admin/.local/lib/python3.9/site-packages/open3e/Open3Eclass.py", line 154, in readByDid
response = self.uds_client.read_data_by_identifier([did])
File "/home/admin/.local/lib/python3.9/site-packages/udsoncan/client.py", line 167, in decorated
return func(self, *args, **kwargs)
File "/home/admin/.local/lib/python3.9/site-packages/udsoncan/client.py", line 466, in read_data_by_identifier
response = self.send_request(req)
File "/home/admin/.local/lib/python3.9/site-packages/udsoncan/client.py", line 2255, in send_request
raise NegativeResponseException(response)
udsoncan.exceptions.NegativeResponseException: ReadDataByIdentifier service execution returned a negative response ConditionsNotCorrect (0x22)
admin@IoBroker02:~/Downloads/open3e-2024-jun/open3e/src/open3e $

------------------------------------------------------

Die zyklische Abfrage einzelner Datenpunkte funktioniert leider auch nur eine gewisse Zeit:

admin@IoBroker02:~/Downloads/open3e-2024-jun/open3e/src/open3e $ python3 Open3Eclient.py -c can0 -dev vcal  -r 268,269,271,274,284,318,320,324,355,381,389,396,987,1043,1192,1769,1770,1775,1842,2346,2351,2369,2486,2488,2494,2496,2569,2573,2582,2622,2623,2624,2625,2735,2784,2985,2986,3013,3014,987,1799,2255,909,1643,2404,2940,3015,3098,1773,2256,2259,2350,3070,3106,2806,921,2831,2404,1607,2611,2629,620,964,1339,2341,2342,256,580,1190,2791,1415,1211,548,566,1294 -m 10.0.0.15:1885:vitocal -t 5
Traceback (most recent call last):
File "/home/admin/Downloads/open3e-2024-jun/open3e/src/open3e/Open3Eclient.py", line 423, in <module>
main()
File "/home/admin/Downloads/open3e-2024-jun/open3e/src/open3e/Open3Eclient.py", line 364, in main
readbydid(addr=ecudid[0], did=ecudid[1], raw=args.raw, msglvl=mlvl)
File "/home/admin/Downloads/open3e-2024-jun/open3e/src/open3e/Open3Eclient.py", line 220, in readbydid
value,idstr = dicEcus[addr].readByDid(did, raw)
File "/home/admin/.local/lib/python3.9/site-packages/open3e/Open3Eclass.py", line 154, in readByDid
response = self.uds_client.read_data_by_identifier([did])
File "/home/admin/.local/lib/python3.9/site-packages/udsoncan/client.py", line 167, in decorated
return func(self, *args, **kwargs)
File "/home/admin/.local/lib/python3.9/site-packages/udsoncan/client.py", line 466, in read_data_by_identifier
response = self.send_request(req)
File "/home/admin/.local/lib/python3.9/site-packages/udsoncan/client.py", line 2255, in send_request
raise NegativeResponseException(response)
udsoncan.exceptions.NegativeResponseException: ReadDataByIdentifier service execution returned a negative response RequestOutOfRange (0x31)
admin@IoBroker02:~/Downloads/open3e-2024-jun/open3e/src/open3e $

 

-----------------------------------------

Gibt es eine einfache Möglichkeit die verursachenden DIDs zu finden?

 

Gruß Bu_Na

 

wegen technischer Probleme hatte die Kommunikation erstmal über PN stattgefunden, ich glaube, ich mach nix falsch, wenn ich das hier hin kopiere...:

 
HerrP
‎24.06.2024

moin Bu na!

 

das Problem ist, dass aufgrund der Kapselung als Klasse bei readall eine Ausgabe erst erfolgt, wenn eine ECU komplett abgearbeitet ist. Deswegen bitte zu Debugzwecken in Open3Eclass.py ein print(did) einfügen

entweder in Zeile 170

HerrP_0-1719321520994.png

 

oder in Zeile 152

HerrP_1-1719321520976.png

 

 

Das Problem wird sein, dass ein (wahrscheinlich einer der neuen) Parameter irgendwie 'geheim' ist, und nicht so einfach gelesen werden darf...

 

Wenn du den dann identifiziert hast (der letzte "debug ..." vor der Fehlermeldung) ihn dann aus der Open3Edatapoints_6yz.py auskommentieren.

 

Bitte sag uns auch, welcher das ist!

 

Grüsse!

Phil

 

HerrP
‎24.06.2024

ps. komisch, dass depictSystem den Parameter 'gefunden' hat. eigentlich sollte das bei Problemen den did garnicht 'aufnehmen'. ich hab auch keine dedizierte Ahnung, was das OutOfRange wieder für ein Fehler ist...

 

Viessmann überlegt sich immer wieder was neues.....

 

Was natürlich top wäre, wenn du während des readall() einen candump machen könntest

 

candump -t a can0,600:700 > candump_output.log

 

und mir den schicken

 

Bu-Na
‎24.06.2024

Hallo Phil,

vielen Dank für die schnelle Rückantwort.

Die DIDs, die bei meiner Testinstallation unter (Vcal Ver.2404)  readAll-Probleme verursachten waren:

  • 573        (RawCodec(2, "RemoteReset")
  • 2235     RawCodec(65, "CascadeSystemConfiguration")

Hier hat es wohl Änderungen bei Viessmann gegeben…

Das Frage, „warum hat depictSystem den Parameter gefunden“, konnte ich inzwischen selbst beantworten. Wie ich zwischenzeitlich erkannt (und auch behoben) habe, gab es ein Problem mit meinen verschiedenen Open3E-Versionen auf einem System. Das führte dazu, das Open3E_depictSystem.py ordnungsgemäß Open3Edatapoints_6yx.py erzeugte, Open3Eclient.py aber alte Dateien aus einem falschen Pfad gezogen hat (…mea culpa…).

Zusammengefasst funktioniert  unter Ver.2404 depictSystem und scanAll wie es soll.

Das Problem „invalid CAN frame“ bei Open3E_depictSystem tritt allerdings reproduzierbar beim ECU-Scan ungefähr zwischen den ECU-Adressen 6F1 und 6F3 auf.

Der Candump sieht zu diesem Zeitpunkt wie folgt aus:

(1719258641.724362)  can0  65A   [8]  21 10 50 02 09 00 00 00

 (1719258641.814577)  can0  65A   [8]  00 0F 01 DE 00 45 02 09

 (1719258641.894772)  can0  65A   [8]  1B 01 00 00 00 00 00 00

 (1719258642.024000)  can0  65A   [8]  21 20 50 02 09 00 00 00

 (1719258642.134889)  can0  65A   [8]  00 0F 01 DE 00 45 02 09

 (1719258642.214760)  can0  65A   [8]  1B 01 00 00 00 00 00 00

 (1719258642.400910)  can0  6EA   [8]  03 22 01 00 00 00 00 00

 (1719258643.542820)  can0  6EB   [8]  03 22 01 00 00 00 00 00

 (1719258644.683846)  can0  6EC   [8]  03 22 01 00 00 00 00 00

 (1719258645.826140)  can0  65A   [8]  21 10 50 02 09 00 00 00

 (1719258645.835351)  can0  6ED   [8]  03 22 01 00 00 00 00 00

 (1719258645.934887)  can0  65A   [8]  00 0E 01 DE 00 45 02 09

 (1719258646.014810)  can0  65A   [8]  1B 01 00 00 00 00 00 00

 (1719258646.125990)  can0  65A   [8]  21 20 50 02 09 00 00 00

 (1719258646.214785)  can0  65A   [8]  00 0E 01 DE 00 45 02 09

 (1719258646.294923)  can0  65A   [8]  1B 01 00 00 00 00 00 00

 (1719258646.983925)  can0  6EE   [8]  03 22 01 00 00 00 00 00

 (1719258648.134212)  can0  6EF   [8]  03 22 01 00 00 00 00 00

 (1719258649.285929)  can0  6F0   [8]  03 22 01 00 00 00 00 00

 (1719258650.026177)  can0  65A   [8]  21 10 50 02 09 00 00 00

 (1719258650.135144)  can0  65A   [8]  00 0F 01 DE 00 45 02 09

 (1719258650.214948)  can0  65A   [8]  1B 01 00 00 00 00 00 00

 (1719258650.325982)  can0  65A   [8]  21 11 50 02 09 00 00 00

 (1719258650.401212)  can0  6F1   [8]  03 22 01 00 00 00 00 00

 (1719258650.415019)  can0  65A   [8]  00 AF 01 5C 01 15 02 AF

 (1719258650.494970)  can0  65A   [8]  1B 01 00 00 00 00 00 00

 (1719258650.626011)  can0  65A   [8]  21 20 50 02 09 00 00 00

 (1719258650.735080)  can0  65A   [8]  00 0F 01 DE 00 45 02 09

 (1719258650.814972)  can0  65A   [8]  1B 01 00 00 00 00 00 00

 (1719258651.541469)  can0  6F2   [8]  03 22 01 00 00 00 00 00

 (1719258652.683899)  can0  6F3   [8]  03 22 01 00 00 00 00 00

 (1719258654.126192)  can0  65A   [8]  21 10 50 02 09 00 00 00

 (1719258654.215175)  can0  65A   [8]  00 0E 01 DE 00 45 02 09

 (1719258654.295061)  can0  65A   [8]  1B 01 00 00 00 00 00 00

 (1719258654.426094)  can0  65A   [8]  21 20 50 02 09 00 00 00

 (1719258654.535136)  can0  65A   [8]  00 0E 01 DE 00 45 02 09

 (1719258654.655217)  can0  65A   [8]  1B 01 00 00 00 00 00 00

 (1719258658.076340)  can0  65A   [8]  21 11 50 02 09 00 00 00

 (1719258658.175882)  can0  65A   [8]  00 B0 01 5C 01 15 02 AF

 (1719258658.255212)  can0  65A   [8]  1B 01 00 00 00 00 00 00

 (1719258662.176526)  can0  65A   [8]  21 11 50 02 09 00 00 00

 (1719258662.295360)  can0  65A   [8]  00 AF 01 5C 01 15 02 AF

 (1719258662.375769)  can0  65A   [8]  1B 01 00 00 00 00 00 00

 (1719258666.276127)  can0  65A   [8]  21 11 50 02 09 00 00 00

 (1719258666.375837)  can0  65A   [8]  00 B0 01 5C 01 15 02 AF

 

Das „RequestOutOfRange“ Problem ist leider zurzeit nicht reproduzierbar. Es tritt im zyklischen MQTT-Geschäft nur sporadisch auf. Dazu kommt, dass die Wärmepumpe wetterbedingt außer Betrieb ist und somit wenig lebende Daten liefert. Ich werde hier am Ball bleiben.

Ansonsten arbeitet die MQTT-Version wunschgemäß.

 

Nochmals vielen Dank für die schnelle Hilfe. Letztendlich hat mich der Debug-Hinweis auf die richtige Fährte geführt. Vielleicht sollte man diese Möglichkeit mal im Wiki erwähnen.

 

Gruß Bu_Na

 

Bu-Na
‎24.06.2024

PS: Hier noch ein Dump den neuen DIDs unter Vers.2404:

 

vcal 3134 unknown:len=8 "6100000000000000"
vcal 3188 unknown:len=1 "03"
vcal 3190 unknown:len=1 "01"
vcal 3191 unknown:len=199 "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
vcal 3194 unknown:len=1 "01"
vcal 3195 unknown:len=3 "000000"
vcal 3198 unknown:len=1 "00"
vcal 3199 unknown:len=1 "00"
vcal 3201 unknown:len=97 "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
vcal 3211 unknown:len=20 "0000000000000000000000000000000000000000"
vcal 3212 unknown:len=2 "9600"
vcal 3213 unknown:len=9 "000000000000000004"
vcal 3215 unknown:len=9 "fb00e500e901f30000"
vcal 3228 unknown:len=73 "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004610301"
vcal 3229 unknown:len=73 "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004620301"
vcal 3230 unknown:len=73 "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046f0301"
vcal 3231 unknown:len=73 "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004700301"
vcal 3234 unknown:len=9 "c0015c011502b30100"
vcal 3237 unknown:len=1 "04"
vcal 3285 unknown:len=5 "0000000005"

Hallo zusammen,

 

ich hätte 2 Anliegen:

 

Kennt jemand die DIDs für die Soll-Temperaturen beim Kühlen, Komfort, Normal, reduziert? Für heizen habe ich diese gefunden.

 

Hat auch noch jemand das Problem, dass die Betriebsstunden und Starts von Verdichter und Heizstab nicht mehr korrekt dekodiert werden? Seit der Viessmann Techniker ein Update gemacht hat, sind die Datenpunkte kaputt.

 

Viele Grüße

Philip

Hallo Philip,

zu "Soll-Temperaturen beim Kühlen": Schau Dir mal die DIDs 2546 bis 2548 an.

"2546_MixerOneCircuitRoomTemperatureSetpointCooling" klingt ja vielversprechend. Die Unterstruktur mit "Actual", "Minumum" usw. macht für einen Sollwert nicht allzuviel Sinn. Vielleicht stecken da ja die Sollwerte für Komfort, Normal usw. dahinter. Ist aber nur eine Vermutung. Habe es nicht ausprobiert. Falls Du was rausfindest, bitte hier posten.

 

Zu "Betriebsstunden und Starts von Verdichter und Heizstab nach Update": Bei mir waren die Werte nach einem Update schlicht wieder bei Null. Was verstehst Du unter "Datenwerte kaputt"? Bitte ein Beispiel posten.

 

Gruß, Jürgen

Hallo Bu_Na,

 

wenn ich die Verzeichnisstruktur richtig interpretiere, verwendest Du die aktuelle Version von open3e.

 

Dann muss die Installation mit pip erfolgen und die Befehle beginnen einfach mit open3e_depictSystem bzw. open3e (siehe README), also z.B.

open3e -c can0 -dev vcal -r 268,269 -m 10.0.0.15:1885:vitocal -t 5

 

In welchem Verzeichnis das passiert, ist eigentlich egal. Es sollte nur für open3e_depictSystem und open3e das gleiche sein.

 

Wenn Du die Ergebnisse von open3e_depictSystem nutzen möchtest, solltest Du statt mit -dev mit -cnfg devices.json arbeiten und ggf. komplexe Adressierung verwenden. Das wird im Wiki genauer erklärt.

@HerrPIch finde, dazu sollten wir im Readme auch nochmal ein oder zwei Sätze schreiben.

 

Beispiel:

open3e -c can0 -cnfg devices.json -r 0x680.268,0x680.269 -m 10.0.0.15:1885:vitocal -t 5

 

Ob dadurch das Problem mit negative response behoben wird, kann ich aber nicht sagen.

 

Gruß, Jürgen

>> Ich finde, dazu sollten wir im Readme auch nochmal ein oder zwei Sätze schreiben.

 

ja, da stimme ich dir zu!

 

hm, irgendwas scheint hier nicht zu funktionieren... nachdem Bu_Na's Beitrag derbe verzögert aufgetaucht war, und ich vorhin den ganzen PN Thread hier rein gestellt hatte, ist der auch wieder weg 😕 ich versuch's nochmal... (im nächsten Post)

 

(Phil:)

moin Bu na!

 

das Problem ist, dass aufgrund der Kapselung als Klasse bei readall eine Ausgabe erst erfolgt, wenn eine ECU komplett abgearbeitet ist. Deswegen bitte zu Debugzwecken in Open3Eclass.py ein print(did) einfügen

entweder in Zeile 170

HerrP_0-1719344634332.png

 

oder in Zeile 152

HerrP_1-1719344634271.png

 

Das Problem wird sein, dass ein (wahrscheinlich einer der neuen) Parameter irgendwie 'geheim' ist, und nicht so einfach gelesen werden darf...

 

Wenn du den dann identifiziert hast (der letzte "debug ..." vor der Fehlermeldung) ihn dann aus der Open3Edatapoints_6yz.py auskommentieren.

 

Bitte sag uns auch, welcher das ist!

 

Grüsse!

Phil

 

ps. komisch, dass depictSystem den Parameter 'gefunden' hat. eigentlich sollte das bei Problemen den did garnicht 'aufnehmen'. ich hab auch keine dedizierte Ahnung, was das OutOfRange wieder für ein Fehler ist...

 

Viessmann überlegt sich immer wieder was neues.....

 

Was natürlich top wäre, wenn du während des readall() einen candump machen könntest

 

candump -t a can0,600:700 > candump_output.log

 

und mir den schicken

 

(Bu_Na:)

Hallo Phil,

vielen Dank für die schnelle Rückantwort.

Die DIDs, die bei meiner Testinstallation unter (Vcal Ver.2404)  readAll-Probleme verursachten waren:

  • 573        (RawCodec(2, "RemoteReset")
  • 2235     RawCodec(65, "CascadeSystemConfiguration")

Hier hat es wohl Änderungen bei Viessmann gegeben…

Das Frage, „warum hat depictSystem den Parameter gefunden“, konnte ich inzwischen selbst beantworten. Wie ich zwischenzeitlich erkannt (und auch behoben) habe, gab es ein Problem mit meinen verschiedenen Open3E-Versionen auf einem System. Das führte dazu, das Open3E_depictSystem.py ordnungsgemäß Open3Edatapoints_6yx.py erzeugte, Open3Eclient.py aber alte Dateien aus einem falschen Pfad gezogen hat (…mea culpa…).

Zusammengefasst funktioniert  unter Ver.2404 depictSystem und scanAll wie es soll.

Das Problem „invalid CAN frame“ bei Open3E_depictSystem tritt allerdings reproduzierbar beim ECU-Scan ungefähr zwischen den ECU-Adressen 6F1 und 6F3 auf.

Der Candump sieht zu diesem Zeitpunkt wie folgt aus:

(1719258641.724362)  can0  65A   [8]  21 10 50 02 09 00 00 00

 (1719258641.814577)  can0  65A   [8]  00 0F 01 DE 00 45 02 09

 (1719258641.894772)  can0  65A   [8]  1B 01 00 00 00 00 00 00

 (1719258642.024000)  can0  65A   [8]  21 20 50 02 09 00 00 00

 (1719258642.134889)  can0  65A   [8]  00 0F 01 DE 00 45 02 09

 (1719258642.214760)  can0  65A   [8]  1B 01 00 00 00 00 00 00

 (1719258642.400910)  can0  6EA   [8]  03 22 01 00 00 00 00 00

 (1719258643.542820)  can0  6EB   [8]  03 22 01 00 00 00 00 00

 (1719258644.683846)  can0  6EC   [8]  03 22 01 00 00 00 00 00

 (1719258645.826140)  can0  65A   [8]  21 10 50 02 09 00 00 00

 (1719258645.835351)  can0  6ED   [8]  03 22 01 00 00 00 00 00

 (1719258645.934887)  can0  65A   [8]  00 0E 01 DE 00 45 02 09

 (1719258646.014810)  can0  65A   [8]  1B 01 00 00 00 00 00 00

 (1719258646.125990)  can0  65A   [8]  21 20 50 02 09 00 00 00

 (1719258646.214785)  can0  65A   [8]  00 0E 01 DE 00 45 02 09

 (1719258646.294923)  can0  65A   [8]  1B 01 00 00 00 00 00 00

 (1719258646.983925)  can0  6EE   [8]  03 22 01 00 00 00 00 00

 (1719258648.134212)  can0  6EF   [8]  03 22 01 00 00 00 00 00

 (1719258649.285929)  can0  6F0   [8]  03 22 01 00 00 00 00 00

 (1719258650.026177)  can0  65A   [8]  21 10 50 02 09 00 00 00

 (1719258650.135144)  can0  65A   [8]  00 0F 01 DE 00 45 02 09

 (1719258650.214948)  can0  65A   [8]  1B 01 00 00 00 00 00 00

 (1719258650.325982)  can0  65A   [8]  21 11 50 02 09 00 00 00

 (1719258650.401212)  can0  6F1   [8]  03 22 01 00 00 00 00 00

 (1719258650.415019)  can0  65A   [8]  00 AF 01 5C 01 15 02 AF

 (1719258650.494970)  can0  65A   [8]  1B 01 00 00 00 00 00 00

 (1719258650.626011)  can0  65A   [8]  21 20 50 02 09 00 00 00

 (1719258650.735080)  can0  65A   [8]  00 0F 01 DE 00 45 02 09

 (1719258650.814972)  can0  65A   [8]  1B 01 00 00 00 00 00 00

 (1719258651.541469)  can0  6F2   [8]  03 22 01 00 00 00 00 00

 (1719258652.683899)  can0  6F3   [8]  03 22 01 00 00 00 00 00

 (1719258654.126192)  can0  65A   [8]  21 10 50 02 09 00 00 00

 (1719258654.215175)  can0  65A   [8]  00 0E 01 DE 00 45 02 09

 (1719258654.295061)  can0  65A   [8]  1B 01 00 00 00 00 00 00

 (1719258654.426094)  can0  65A   [8]  21 20 50 02 09 00 00 00

 (1719258654.535136)  can0  65A   [8]  00 0E 01 DE 00 45 02 09

 (1719258654.655217)  can0  65A   [8]  1B 01 00 00 00 00 00 00

 (1719258658.076340)  can0  65A   [8]  21 11 50 02 09 00 00 00

 (1719258658.175882)  can0  65A   [8]  00 B0 01 5C 01 15 02 AF

 (1719258658.255212)  can0  65A   [8]  1B 01 00 00 00 00 00 00

 (1719258662.176526)  can0  65A   [8]  21 11 50 02 09 00 00 00

 (1719258662.295360)  can0  65A   [8]  00 AF 01 5C 01 15 02 AF

 (1719258662.375769)  can0  65A   [8]  1B 01 00 00 00 00 00 00

 (1719258666.276127)  can0  65A   [8]  21 11 50 02 09 00 00 00

 (1719258666.375837)  can0  65A   [8]  00 B0 01 5C 01 15 02 AF

 

Das „RequestOutOfRange“ Problem ist leider zurzeit nicht reproduzierbar. Es tritt im zyklischen MQTT-Geschäft nur sporadisch auf. Dazu kommt, dass die Wärmepumpe wetterbedingt außer Betrieb ist und somit wenig lebende Daten liefert. Ich werde hier am Ball bleiben.

Ansonsten arbeitet die MQTT-Version wunschgemäß.

 

Nochmals vielen Dank für die schnelle Hilfe. Letztendlich hat mich der Debug-Hinweis auf die richtige Fährte geführt. Vielleicht sollte man diese Möglichkeit mal im Wiki erwähnen.

 

Gruß Bu_Na

 

PS: Hier noch ein Dump den neuen DIDs unter Vers.2404:

 

vcal 3134 unknown:len=8 "6100000000000000"
vcal 3188 unknown:len=1 "03"
vcal 3190 unknown:len=1 "01"
vcal 3191 unknown:len=199 "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
vcal 3194 unknown:len=1 "01"
vcal 3195 unknown:len=3 "000000"
vcal 3198 unknown:len=1 "00"
vcal 3199 unknown:len=1 "00"
vcal 3201 unknown:len=97 "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
vcal 3211 unknown:len=20 "0000000000000000000000000000000000000000"
vcal 3212 unknown:len=2 "9600"
vcal 3213 unknown:len=9 "000000000000000004"
vcal 3215 unknown:len=9 "fb00e500e901f30000"
vcal 3228 unknown:len=73 "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004610301"
vcal 3229 unknown:len=73 "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004620301"
vcal 3230 unknown:len=73 "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046f0301"
vcal 3231 unknown:len=73 "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004700301"
vcal 3234 unknown:len=9 "c0015c011502b30100"
vcal 3237 unknown:len=1 "04"
vcal 3285 unknown:len=5 "0000000005"

 

war kurz da und ist jetzt schon wieder weg 🤐 Was ist hier los??

Top-Lösungsautoren