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.032 ANTWORTEN 1.032

Um mir die Arbeitsweise verständlicher zu machen, würde ich gerne die Anzeige des Kältekreislauf nicht nur auf der Anzeige der WP-Inneneinheit sehen. Gibt es eine Möglichkeit das Anzeigebild abzufragen und z.B. im Browser darzustellen.
In den Forum Tiefen dieses (?) Threads hat jemand beschrieben, dass er dieses Anzeigebild aktualisiert anzeigen kann. Kann diese beliebig nachgebaut werden? Wenn ja (oder für andere Hinweise dazu) bitte eine LinkReferenz.
Danke schon mal

@HerrP 

Der DID 2256 scheint lauf Codec Liste 16bit breit zu sein und Skalierung 1 und Offset 0 zu haben.

 

In welcher Reihenfolge müssen die Raw Werte geschrieben werden? MSB oder LSB zuerst?

 

z.B. 1000 decimal = 03E8 hex oder E803 hex

 

Vielen Dank und Grüße

Philip

IMG_3567.jpeg
IMG_3566.jpeg

Oh, wie peinlich   🙃
Mein Post erscheint auf einer neuen Seite ganz oben ... und direkt darüber ist wohl die Antwort auf meine Frage ... mit Link ... was will ich mehr?
Nur aufmerksamer lesen sollte ich vor dem Posten.  Sooooory 😓

Warum willst du denn did unbedingt RAW schreiben? Simple Integer Werte lassen auch problemlos schreiben ohne den raw modus to benutzen. Habe ich schon zb. Für WW Solltemperatur ausprobiert.

Ich habe auch schon experimentellen Code zum Schreiben von "complex" dids. Da gibt es hoffentlich bald einen PR.

 

Hab auch ne WP und bin gespannt was bei deinem Experiment rauskommt.

 

Grüße

Ohne raw? Na hervorragend und Danke für die Info;)

@SanMiggel  Ich nöchte eigentlich Raw schreiben vermeiden. Ich dachte nur, man müsste Raw schreiben. Wenn man so einen einfachen DID wie den 2256 einfach dezimal schreiben kann ist das ja noch einfacher.

Ich wollte hauptsächtlich @JWolke unterstützen, da er den DID konkret ausprobieren will.

 

Ich bekomme meine 250-A erst im März und würde dann bei mir auch testen.

Wie gesagt, reine Integer, bzw floats (falls skaliert) schreiben klappt bei mir prima. 

Dann bin ich wohl durcheinander gekommen, dann warte ich auf den Bericht von @JWolke . 😊

@Pillow  @JWolke 

>> In welcher Reihenfolge müssen die Raw Werte geschrieben werden? MSB oder LSB zuerst?

Du musst bei raw tatsächlich die Bytes 'rückwärts' schreiben, also LSB..MSB

Am besten liest du erst mal Raw aus, dann siehst du's ja.

 

@SanMiggel 

>> Ich habe auch schon experimentellen Code zum Schreiben von "complex" dids.

ist das der von Jürgen (MyHomeMyData) oder hast du selber einen gebaut? Der ist auf jeden Fall interessant für's Projekt! Das ist ja kein Hexenwerk, aber Arbeit.... Her damit! 🙂

 

Grüsse!

Phil

 

@SanMiggel @HerrP  Für den ioBroker Adapter habe ich bereits alle Encoder implementiert, allerdings in Javascript. Siehe ./lib/codecs.js. Die Encoder sind recht gründlich getestet. Ich würde dies in open3E migireren. Wir sollten aber vorher den develop Branch in den master Branch mergen.

Vorschlag: Ich mache heute den Merge und wir gehen anschließend die Implementierung gemeinsam an. Da muss gründlich getestet werden, dann ist es gut, wenn mehre Leute dran arbeiten.

Gruß, Jürgen

Den encoder für complex dids hab ich selbst im Python Code geschrieben. Sind nur ein paar Zeilen. Ich habe auch Mal mit unit Tests angefangen, damit man auch sicher sein kann, das es funktioniert. Ich versuche so bald wie möglich den PR auf zu machen.

 

Abgesehen davon wäre es auch gut, wenn der Code Mal als"richtiges" Python Paket formatiert wäre. Dann wäre Tests und ci (automatisierte Tests über GitHub) deutlich einfacher. Würde aber wohl nicht ohne breaking changes klappen...

@SanMiggel @HerrP @JWolke Ich habe den develop nach master gemerged.

@SanMiggelDu kannst auf develop loslegen. Ich fände es gut, wenn Du dabei auch gleich die Formatierung als Paket angehen würdest. @HerrP Wie siehst Du das?

Schlage vor, wir machen im open3e-Repository einen neuen Diskussions-Thread auf und führen diese Diskussion dort weiter.

können wir gerne machen!

@Juergen-B Ich habe gerade dein iobroker Adapter getestet. Sieht schon mal echt super aus. Respekt dafür! 

Nur das auslesen über das collection data klappt bei mir noch nicht so richtig. Ich gehe davon aus, dass dann alle Punkte aktualisiert werden, oder? 

Habe eine VC252-A. 

Habe ich noch was vergessen oder so?

 

jokermic_0-1705013079109.png

 

@jokermicDanke für's Testen. Freut mich, dass es Dir gefällt.

Bzgl. Collect muss ich Dich leider enttäuschen. Bei einer Stand-alone Konfiguration kommt da auf dem externen Bus gar nichts. Die Vitocal wird erst gesprächig, wenn mindestens ein weiteres E3-Gerät angeschlossen und als Slave konfiguriert wird, z.B. eine VX3.

In Deinem Fall hilft nur UDSonCAN, also die gewüschten Daten gezielt abfragen.

 

Könntest Du mir einen Screenshot vom Device-Scan schicken?

 

Gruß, Jürgen

@Juergen-B @HerrP ich hab einen PR aufgemacht zum Schreiben von complex dids.

 

Das python packaging würde ich separat davon halten. Ich haben einen issue auf GitHub aufgemacht. Am besten wir diskutieren das dort.

ah ok. Dann passt es ja, dass nichts aktualisiert wird. 

aber das gezielte aktualisieren läuft jetzt auch schön seit 24 Stunden ohne Auffälligkeiten.

 

jokermic_0-1705083568287.png

meinst du die Übersicht?

 

jokermic_1-1705083732399.png

oder das?

 

 

Ich meinte die 2te Übersicht. Danke.

Bei mir erscheint tatsächlich nur ein weiteres Device, die VX3.

der 2256 geht nicht...:(

Nach mehreren Abfrage hat sich nun doch gezeigt, dass es schwankt und damit wie in der Serviceanleitung berechnet wird. Daher würde ich auch darauf tippen, dass der DID sich damit wie ein "Sensor" verhält und damit generell nicht schreibbar ist

 

C:\Users\annaw\open3e>python open3eclient.py -d 192.168.0.1 -raw -r 2256
b554

C:\Users\annaw\open3e>python open3eclient.py -d 192.168.0.1 -raw -w 2256=b554
write 1664.2256 = b554
Traceback (most recent call last):
File "C:\Users\annaw\open3e\open3eclient.py", line 380, in <module>
succ,code = dicEcus[ecu].writeByDid(didkey, didVal, raw=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\annaw\open3e\Open3Eclass.py", line 122, in writeByDid
response = self.uds_client.write_data_by_identifier(did, val)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\annaw\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\udsoncan\client.py", line 174, in decorated
return func(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\annaw\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\udsoncan\client.py", line 507, in write_data_by_identifier
response = self.send_request(req)
^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\annaw\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\udsoncan\client.py", line 2226, in send_request
raise NegativeResponseException(response)
udsoncan.exceptions.NegativeResponseException: WriteDataByIdentifier service execution returned a negative response ConditionsNotCorrect (0x22)

 

Evtl. ergibt sich doch noch etwas mit dem 3106: Dieser stand trotz "Heizungspuffer" auf 4600bc02 (Min,MAX,set). Wenn ich es richtig dechiffriert habe dürfte das 7,0 °C, 18,0 °C und "2" als Status bedeuten. Gesetzt ist er nun auf fa001902  und dies sollte (hoffentlich) 25,0°C, 40,0°C und "2" interpretiert werden.

Zugleich habe ich im 625 (Objektdetails) noch ein Buffercylindersize von 200,0 eingetragen;

Mal schauen, ob sich da was tut?

 

Aber immerhin ein was positives: Auch der Kältekreis hat schreibbare Parameter, so z.B. found 2837:2:SecondaryHeatExchangerOptimumTemperatureSpreadExponent.

 

Verwunderlich ist nur, dass die notwendige Abtauenergie mit ca. 2100 kJ angegeben wird; die Momentane jedoch auf ca. 6.000 kJ (python open3eclient.py -d 192.168.0.1 -r 2496
5971.0)

C:\Users\annaw\open3e>python open3eclient.py -d 192.168.0.1 -raw -w  0x68c.2611=803e0000

write 1676.2611 = 803e0000

Traceback (most recent call last):

  File "C:\Users\annaw\open3e\open3eclient.py", line 380, in <module>

    succ,code = dicEcus[ecu].writeByDid(didkey, didVal, raw=True)

                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  File "C:\Users\annaw\open3e\Open3Eclass.py", line 122, in writeByDid

    response = self.uds_client.write_data_by_identifier(did, val)

               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  File "C:\Users\annaw\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\udsoncan\client.py", line 174, in decorated

    return func(self, *args, **kwargs)

           ^^^^^^^^^^^^^^^^^^^^^^^^^^^

  File "C:\Users\annaw\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\udsoncan\client.py", line 507, in write_data_by_identifier

    response = self.send_request(req)

               ^^^^^^^^^^^^^^^^^^^^^^

  File "C:\Users\annaw\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.12_qbz5n2kfra8p0\LocalCache\local-packages\Python312\site-packages\udsoncan\client.py", line 2226, in send_request

    raise NegativeResponseException(response)

udsoncan.exceptions.NegativeResponseException: WriteDataByIdentifier service execution returned a negative response ConditionsNotCorrect (0x22)

 

Der 3195:3:ThermalBufferDemand ist zumindest zwischen drei Werte schwankend und nicht schreibbar: 760101 , 770101 und 790101

 

Edit:

2611:4:NominalThermalCapacityIndoorUnit

Evtl. hätte man die "Normwärmemenge" der Inneneinheit anpassen können; bspw. durch einen "größeren" internen Puffer; aber leider auch nicht schreibbar

2611 - 803e0000 - 16000 und 00000

lt ViGuide ist das schreibbar - aber was bewirkt es ?

JrgWende_0-1705165226044.png

 

 

LG Jörg
Haus Baujahr 1995, Heizkörper, VC 250-A AWO-E-AC 251.16
Defekt seit Februar 2022 - Reparatur geplant Oktober 2023

Hallo Jörg,

nur aus Interesse. Wie kommst du an so eine Parameteransicht? Bist du Installateur oder hast einen Account für Fachbetriebe?

 

 

Grüße

Philip

ViGuide - nicht anmelden, Demo.

dann eine Anlage mit ‚Pro‘ raussuchen und dann kannst du eine Wartungssession aufbauen und Parameter zur Überwachung hinzufügen.

einfach mal ausprobieren … 😎😉

JrgWende_0-1705171993591.pngJrgWende_1-1705172044750.png

 

 

JrgWende_2-1705172093105.png

 

JrgWende_3-1705172172024.png

 

 

FF 

 

LG Jörg
Haus Baujahr 1995, Heizkörper, VC 250-A AWO-E-AC 251.16
Defekt seit Februar 2022 - Reparatur geplant Oktober 2023

@JörgWende 

Ich versuche ja die WP dazu zu überreden, nicht den internen Puffer aufzuheizen, sondern stattdessen die Heizkreiswärme zu nutzen. Da der 2256 für uns nicht sinnvoll ist (selbst wenn er schreibbar wäre, müsste ja quasi sekündlich neu geschrieben werden), war der Plan stattdessen genutzte Konstanten zu ändern. Laut dem Wert für den 2256 wären ja ca. 2.100 kJ nötig. Dabei ist mir nicht ganz klar, wie die Anlage auf diesen Wert kommt; Aber sei's drum.

Demnach muss eine andere Rechenoperation prüfen, ob die notwendige Abtauenergie vorhanden ist. Ich denke, dass dazu der Wert 2496 ("CurrentThermalCapacitySystem") mit dem 2256 verglichen wird. Da bei auslesen des 2496 ein Wert >6.000 angezeigt wird, nehme ich mal an, dass es eine Skalierung um den Faktor 10 gibt. Daher wäre anzunehmen, dass die derzeitige (berechnet) verfügbare Wärmemenge mit ca. 600 kJ ermittelt wurde.

Die gebräuchlichste Gleichung zur Wärmemengenermittlung wäre Q=m*c_p*dT. Da dT aufgrund der VL/RL-Temperaturen gemessen wird, bleibt als fixe Größe nur noch m*c_p. Und das wäre meiner Meinung nach die "nominale Wärmekapazität".

Wenn ich nun diese erhöhen würde, denkt die Regelung, dass bei einer gegebenen Temperaturdifferenz, die verfügbare Wärmemenge größer wäre, als sie tatsächlich ist und begibt sich direkt in die Kältekreisumkehr. Dabei stellt die IDU fest, dass die Temp. des Heizungsrücklauf im Laufe des Prozesses höher ist, als die VL zur ODU und stellt das 3/4-Wegeventil auf Heizung um.

Als negativer Aspekt, dürfte dann (eventuell) jedoch die errechnete Heizleistung/SCOP/COP-Darstellung der App nicht mehr funktionieren - wenn die "nominale Wärmekapazität" höher ist und die Temperaturdifferenz konstant bleibt muss rechnerisch folglich die aktuelle Leistungsabgabe stark gestiegen sein.

@JWolke  Puhh … da werde ich dir keine Hilfe sein. Ich versuche erst mal der 250 auf die Finger zu schauen - ich drehe zZ maximal an der Heizkennlinie und den gewünschten Zieltemperaturen und deren Zeitplänen - nachdem ich die Begrenzung der maximalen VL Temperatur ändern konnte 🤓

Mein Eindruck zum Abtauvorgang - noch kann ich damit leben und die Einflüsse auf die Wärme im Haus sind imho übersichtlich. Da nervt mich eher das Umschalten nach der Warmwasserbereitung. Im Bild die beiden Vorgänge - während der Zeit findet keine Heizung im Haus statt und wenn es dann wieder umschaltet dauert es auch eine ganze Weile bis die Ziel VL Temperatur erreicht ist.

 

JrgWende_0-1705242805154.png

 

Und hier aus Sicht der Wärmepumpe (Wärmemenge und Strom)

JrgWende_1-1705243054095.png


im externen Strombezug sieht man die Abtauvorgänge recht deutlich

JrgWende_2-1705243158880.png

 

Das verschwindet, wenn ich auf Arbeit umschalte (achtung - andere Anwendung)

JrgWende_3-1705243287454.png

 

 

LG Jörg
Haus Baujahr 1995, Heizkörper, VC 250-A AWO-E-AC 251.16
Defekt seit Februar 2022 - Reparatur geplant Oktober 2023

Die lange Pause nach WW ist nicht notwendig, denn die Temperaturen sind bereits nach kurzer Zeit, 2-3 Minuten auf normales Niveau abgekühlt. 

@JörgWende 

Kannst du ermitteln, welche Heizleistung die Pumpe bringt, wenn nach einer WW-Bereitung der Heizkreis wieder anspringt? Ich nehme an, Heizstab ist ausgeschaltet?

 

Verwunderlich finde ich aber den zügigen Abfall der WW-Temperatur. Ist es ein Kombispeicher oder läuft eine Zirkulation?

Top-Lösungsautoren