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 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!

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

 
Visualisierung der Vitocal Energiematrizen zur monatlichen Energiebilanz für ioBroker:
HerrP_0-1728512769080.png

Wer es ausprobieren möchte: Hier gibt es eine Anleitung.

 

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.361 ANTWORTEN 1.361

hm, am Montag gab es 5 Änderungen an der codecs.py, aber die hab ich glaubich tief in der Nacht gemacht (grob zwischen 0 und 4 Uhr), also sollten die bei dir drin sein. Aber bei allen war der O3EInt Codec unverändert:

 

HerrP_0-1698314263231.png

 

offset ist 0 per default und byte_width ist bei Int32=4

 

"P1" ergibt also die Wandlung der kompletten 4 Bytes lsb..msb. Wenn die hinteren 2 Bytes 00 sind, ergibt O3EInt16 und O3EInt32 das gleiche, wenn sie ungleich 0 sind, gibt es enorme Unterschiede > 65.535dec, ggf. negative Werte (wegen signed=True).

 

Weil der Complex Codec mit der Länge (string_len, von dir mit 2 angegeben) des vorhergehenden Listenelements arbeitet, ergibt "P2"

 

int.from_bytes(string_bin[2:6])

 

die 6 geht eigentlich in's Leere, Python fängt das aber ab und nimmt nur die vorhandenen letzten 2 der 4 Bytes, O3EInt16 und O3EInt32 ergibt in diesem Fall das gleiche.

 

Aber wie gesagt - wenn die hinteren beiden der 4 Bytes ungleich 00 sind, liefert "P1" ein völlig falsches Ergebnis, oder es ist wirklich nur ein 32-Bit Wert, und "P2" 'gibt es eigentlich garnicht'. In dem Falle wäre der richtige Eintrag in datapoints.py einfach

 

1603: O3EInt32(4, "PointOfCommonCouplingPower", signed=True),

 

(scale ist bei dem 32bit per default 1)


@Heizungspilot  schrieb:

In meiner Kältekreisübersicht von Viessmann sehe ich, dass die Kaltstarts anscheinend ohne die elektrische Ölsumpfheizung aus dem kritischen Temperatur-Bereich herauskommend gefahren werden. Das sollte man mal genauer beleuchten. Unklar ist, ob, wann und wie Viessmann die Ölsumpfheizung dazuschaltet ?


Nach den Daten die ich visualisiere, wird das Öel nicht vorgewärmt. Es ist auch nicht erkennbar das mehr elektrische Leistung kurz vor Kompressorstart abgerufen wird.

Kann es sein das die Öelheizung erst ab einer bestimmten Temperaturgrenze aktiviert wird? Die Diagramme sind bei einer Aussentemperatur von 10°C erstellt worden. 

Sehr interessant, konnte das bisher nur auf der Kältekreisübersicht verfolgen.

Demnach läuft der Verdichter von ca. 7:36 bis ca. 7:37Uhr im kritischen Temperatur Bereich.

In meinem Fall schien mir das noch länger zu dauern, wobei der Verdichter nur auf ca. 25% Leistung lief.

Eine Öl Vorheizung ist nicht zu erkennen, warum auch immer ?

Lt. Unterlagen Viessmann sollte diese aber verbaut sein ?

 

Gruß

Michael

Ok verstehe.

Wie gesagt, hab leider von Python quasi Null Ahnung.

 

Ich schau mal, ob ich später zum Testen komm, dann geb ich Bescheid, ob sich was verändert.

Wir kommen der Sache immer näher. Jetzt habe ich die Spezifikationen für den exakten Verdichtertyp mit R290, direkt vom Zulieferer Hitachi Highly.

 

Anforderung für die zulässige Temperatur am Compressor Case Bottom, also Ölsumpftemperatur:

 
"99℃or below and 6 ℃ higher than condensing temperature
(the time compressor case bottom temp 6 ℃ below the condensing
temperature should be less than 5 minutes each time)"
Da die Kondensationstemperatur unwesentlich höher (1...2K) ist als die Vorlauftemperatur, kann alternativ die verfügbare Vorlauftemperatur als Referenz dienen. Faustformel: 5 Minuten nach Start muss die Öltemperatur > (Vorlauftemperatur + 7K) sein !
 
"Compressor can be used when ambient temperature is higher than -10℃. Confirm the start-up
of compressor if the temperature of compressor surface is below -10℃. Heat up compressor to
reach the temperature higher than -10℃ with heater if the ambient temperature is below -10℃."
 
"Start-stop frequency
The frequency should be less than 6 times per hour. Operating time from start to stop should
be more than 3 minutes to make sure the oil is above the minimum level. Stopping time should be
more than 3 minutes to make sure the suction pressure and discharge pressure is balance"
 

Ich lese

1603: O3EComplexType(4, "PointOfCommonCouplingPower", ...)
bei mir erfolgreich via ESPHome aus.
Die ersten beiden Bytes ("P1") ergeben bei mir die Wirkleistung am PCC, welche ich auch über einen anderen Weg erhalte. Beide Werte stimmen also überein, weshalb ich die Interpretaion als O3EInt16 so bestätigen würde.

M_K_0-1698342392570.png

rot: DID 1603 "P1" @1Wert/min (gleitender Mittelwert aus 6 Messwerten)
grün: Zählermesswert (E380 CA)



Die anderen beiden Bytes "P2" habe ich noch nicht verarbeitet/interpretiert.

Hallo @HerrP ,

 

ich habe die Version getestet und das funktioniert wie von dir prophezeit genauso gut.

 

 

supi, danke für die Rückmeldung! bei uns hat es auch jemand ausprobiert und kommt auch zu dem Schluss, dass es zwei signed 16bit Werte Leistung und Blindleistung sind. Er hat es so in die datapoints eingetagen:

 

1603: O3EComplexType(4, "PointOfCommonCouplingPower", [O3EInt16(2, "ActivePower", scale=1.0, signed=True),O3EInt16(2, "ReactivePower", scale=1.0, signed=True)])

 

(auch @petkow )

 

ps. bei 1810 scheint es genauso zu sein.

@Awot252  du hattest mal geschrieben du würdest gerne helfen. Aktuell könnten wir gut Hilfe gebrauchen, die eigentlich keiner so tiefgehenden Ahnung bedarf... Die Zuordnung der Codecs für Vitocal, Vitodens und VX3 müssten mal überein gebracht werden.

 

Also zu jedem Datenpunkt gucken, in welcher datapointsXyz.py die Codec Zuordnung 'am weitesten fortgeschritten' ist, und das auf die andren Geräte rüberkopieren, WENN die Datenlänge die gleiche ist (bei einigen Datenpunkten unterscheiden sich die Datenlängen und dementsprechend die Kodierung zwischen den Geräten - das ist der Grund, warum das nicht längst alles in einer Datei steht).

 

Ausserdem haben sich besonders in der Open3EdatapointsVdens.py deutsche Begrifflichkeiten eingeschlichen. Bis wir ein Sprachmanagement haben, wäre es gut, wenn alles in Englisch ist. Dazu müsste man am besten die englischen Handbücher runterladen und die verwendeten Terminologien übernehmen. Zur Not tut's aber auch erstmal google translate, das ist immer noch besser als ein Sprach-Mix.

 

Natürlich kann sich hier auch jede/r andre angesprochen fühlen, die/der das Projekt unterstützen möchte - schreibt am besten hier rein, wenn das jemand angeht, damit die Arbeit dann nicht doppelt gemacht wird.

 

besten Dank & liebe Grüsse!

Phil

 

ps. bei Fragen stehen wir natürlich zur Verfügung, also keine falsche Scheu! 🙂

pps. ich habe grade eine Vorschlag initiiert, der zunindest die Synchronisierung unnötig machen könnte. Die Sache mit der Sprache wäre aber weiterhin Thema. Und wenn man/frau die englischen Handbücher schon mal hat, könnte auch gleich geschaut werden, ob die englischen Terminologien mit den in den Handbüchern übereinstimmen/harmonieren...

Wie werden die Datenpunkte in 1810 denn dann benannt?

so?

 

1810: O3EComplexType(4, "ElectricalEnergyInverterPowerAc", [O3EInt16(2, "ActivePower", scale=1.0, signed=True),O3EInt16(2, "ReactivePower", scale=1.0, signed=True)])

@Heizungspilot 

Kennt  jemand den genauen Verdichtertyp der in der ODU der Vitocal 250-SH (Kältemittel R32) verbaut ist?

Habe in den Ersatzteillisten bei Viessmann leider nichts passendes gefunden...

Würde aber annehmen, dass auch in diesem Fall vergleichbare Grenzwerte gelten.  

Unabhängig davon ist es eine der Aufgaben der internen Steuerung der ODU auf Einhaltung der Parameter unter allen Betriebsbedingungen zu achten. Insofern bleibt aus meiner Sicht für den Anwender nur übrig, die Anzahl der Taktungen zu minimieren.

Die Kälteeinheit inclusive Elektronik (Inverter, Steuerung) in der ODU der 250-SH ist ein Zukaufteil (im Viessmanngehäuse). Kennt jemand vielleicht den genauen Hersteller (Electrolux)?

@HerrP 

Bin gerade dabei, meiner Hybridheizung Vitocal 250-SH + Vitodens 300-B3HG (beide mit CAN-Bus) im Verbundbetrieb etwas näher über die Schulter zu schauen...

 

Die Ansteuerung des externen Wärmeerzeugers erfolgt in meinem Fall klassisch über diskrete Signale aus dem HIO-Modul der 250-SH:

  • Der externe Wärmeerzeuger wird über Klemme 66 freigegeben
  • der Setpoint wird über Klemme 0...10V vorgegeben
  • über TS2 wird die Vorlauftemperatur des externen Wärmeerzeugers an der hydr. Weiche gemessen
  • Klemme 67A fungiert als Störmeldeeingang.

Habt ihr eine Idee über welche open3e-Datenpunkte auf der Vitocal- bzw. der Vitodens-Seite diese Werte abgreifbar sind?

Leider führt die Verbindung der CAN-Busse zu Fehlermeldungen, so dass man vermutlich für jedes System ein separates CAN-Interface benötigt.

Elektronikmodul-HIO.jpg

@HerrP

schon gesehen? Offensichtlich sind mit der Version 2323 ein paar Parameter für den User/Fachkraft über das Servicemenü zugänglich.

 

 

https://www.viessmann-community.com/t5/Waermepumpe-Hybridsysteme/Vicare-Anzeige-der-Aussentemperatur...

Die 252A.10 hat diesen Verdichter: Highly WHP13300PSDPC8FQ, Kältemittel R290 (Propan)

Das Kältemittel macht ein großen Unterschied und macht Vergleiche problematisch.

@Bu-Na  welche Werte genau meinst du?

Bezüglich der Zusammenschaltung der CAN Busse: Hast du die 'Abschluss'widerstand-Geschichte beachtet? Nur (bzw genau) zwei Widerstände, jeder an einem 'räumlichen Ende' des Busses? Das wäre ja schon der Hohn wenn man an einen Bus keine zwei Geräte machen kann. Allerdings kann es sein, dass man das vor der Inbetriebnahme(Assistent-Ausführung) machen oder irgendwie anders konfigurieren muss, weil es ja ein Führungsgerät geben muss. Wenn beide meinen, dass sie das sind, kommt es zu Wirrwarr...

 

@mbauer666  gesehen hatte ich das eben in deinem andren Beitrag... Is ja schön, dass man jetzt auf zwei(?) Parameter mehr zugreifen kann. Wenn das in dem Tempo weiter geht, braucht es noch einige Dutzend oder gar Hundert Updates, bis man auf dem Stand ist, den eine Vitotronic Steuerung schon vor Jahren geboten hat 😁

 

Grüsse!

Phil

@HerrP  Suche die vermutlichen Datenpunkte auf denen die folgenden E/A-Werte des HIO-Moduls der Vcal (wie auch immer codiert) stehen könnten:

  • DO Binärer Status Output "Klemme 66"
  • AO Analoger Wert Output (Setpoint) "Klemme 0...10V" (wie diese KL auch immer heißt...)
  • AI Analoger Wert Input NTC-Sensor "Klemme TS2" 
  • DI Binärer Status Input "Klemme 67"

Möglicherweise gibt es hierfür auch keine Raw-Einträge in den Datenpunktlisten. Alternativ könnte man auch versuchen, die Vdens-Seite auszulesen.

 

Gruß Bu-Na

Vielleicht habe ich das in diesem Thread überlesen:

Hat schon jemand erste Versuche mit einer Viessmann PT2 gemacht und kann die Brennstoffzelle auslesen (aktuelle Leistung etc.) und auch steuern (zB Einstellung Energiemanager)?

@HerrP Erfahrungen Zusammenschaltung der CAN Busse: 

Die Verschaltung der Bus-Teilnehmer einschließlich beidseitiger Bus-Abschluss war elektrisch korrekt. Habe allerdings den Eindruck, dass diese Konfiguration seitens Viessmann nicht unterstützt wird.

 

Wie schon früher erwähnt, nutze ich ein Hybridsystem Vcal250-SH/Vdens300 jeweils mit ext. CAN-Bus.

Mein erster Versuch startete mit der Verwendung eines WAGO-GW (Zusammenbau aus Spare Parts) unter Nutzung Modbus-TCP. Die Verschaltung GW+Vcal bzw. GW+Vdens funktioniert problemlos, die Verschaltung GW+Vcal+Vdens quittierten Vcal+Vdens mit "Kommunikationsfeher Gateway (F430)". Auch das GW geht dabei in einen Fehlerzustand. Im User-Menu des GW gibt es nur die Variante Vcal oder Vdens, d.h. kein Support für Hybrid. Der Umfang der am GW abgreifbaren Parameter orientiert mehr in Richtung Einbindung in übergeordnete Gebäudeautomationssysteme. In diesem Kontext ist die Detailvisualisierung des zusätzlichen Wärmeerzeugers von untergeordneten Interesse, da Sammelstörungen des Wärmeerzeugers entsprechend verarbeitet werden und extern abgreifbar sind. Auch der steuernde Eingriff in das System der Wärmeerzeugung erfolgt bekanntlich über das Primärsystem. 

Die mir persönlich fehlenden Parameter werden zur Zeit über openE3 (RP3 parallel zum GW am Vcal CAN-Bus)) eingesammelt. Da in diesem Fall genau genommen zwei Geräte gleichzeitig erfasst werden müssen, favorisiere ich im Augenblick auch einen vermutlich nicht supporteten "2-CH CAN HAT Adapter" von Waveshare. Dieser Adapter bietet zusätzlich die Möglichkeit, den Raspberry mit 24V zu versorgen und macht damit das Ganze zu einer kompakten, mit Schraubklemmen versehenen und gut auf Hutschiene montierbaren Einheit. Bei nächster Gelegenheit werde ich das Ding mal ausprobieren...

 

Gruß Bu-Na

F430.png

Moin @Bu-Na 

 

das klingt sehr interessant! Tatsächlich sind soweit ich erinnere, Vcal oder Vdens immer die Führungsgeräte, wenn es mehrere Devices am Bus hat. Jedoch kann zumindest ein z.B. VX3 sowohl Führungsgerät sein, wenn nur noch bsw ein Energiezähler mit am Bus hängt, sie kann aber auch Folgegerät sein, wenn bsw. ein Vitocal mit im Verbund ist. Wir erkennen das an den ECU Target Adressen (das Führungsgerät hat immer die 0x680).

 

Meine Vermutung ist, dass auch Vdens oder Vcal die Rolle eines Folgegerätes 'einnehmen' können, wenn sie entsprechend konfiguriert werden (oder sie machen das selber beim ersten 'Aufstarten'). Leider haben wir hierzu noch keine weitergehende Ahnung/Erfahrung, weil wir meist erst zum Zuge kommen, wenn das System steht und der Viessmann Servicetechniker wieder weg ist... 😉 

 

Weisst du, ob im Inbetriebnahmeassistent ein Schritt ist, der irgendwas mit (Bus)Systemkonfiguration zu tun hat? Oder hast du vielleicht die Möglichkeit, deinen zuständigen Fachbetrieb zu bitten, dass er den Busanschluss macht (einfach ganz dumm stellen - da steht ja "Fachbetrieb benachrichtigen", vielleicht kann der das sogar remote lösen), oder beim nächsten Besuch des Viessmann Servicetechnikers diesen drauf anzusetzen und ihm dabei am besten über die Schulter zu schauen?

 

Zur Not würde ich noch versuchen, jemanden zu fragen, der eigentlich genau wie ich seine Unterstützung hier im Forum aufgekündigt hat, weil er schon lange sauer ist über das, was hier teilweise von Seiten Viessmanns so abgeht... Du solltest jedenfalls noch nicht aufgeben finde ich.

 

>> einen vermutlich nicht supporteten "2-CH CAN HAT Adapter" von Waveshare

 

Ich würde vermuten, dass der auch mit dem CAN Kernel harmoniert. Nicht umsonst heisst es ja immer 'can0', dann gibt es auch einen can1. Bei uns arbeiten schon Leute mit zwei Adaptern parallel am internen und externen Bus, das ist überhaupt kein Problem.  

 

Grüsse!

Phil

@Mucki  mit BSZ haben wir noch keinerlei Berührung gehabt, es wäre aber sehr interessant! ich bin eigentlich zuversichtlich, dass 'das geht', es ist ja auch ein E3 One Base Gerät. Vielleicht besorgst du dir einfach für ne schmale Mark den Adapter und ggf. nen kleinen Raspi, scannst das Ding mal ab und wir machen die datapoints Liste dafür?! Und dann schauen wir weiter. Parameter gibt es jedenfalls reichlich (da sind noch mehr, aber mein Bildschirm ist nicht größer)... 😉

 

HerrP_1-1698792081443.png

 

nochmal @Bu-Na  in der Viguide Demo gibt es auf einer 252 ein ADIO Modul am Interneren CAN-BUS: 66. Da finde ich aber keinen Parameter, der auf die Werte der Ein/Ausgänge hinweist. Ein HIO Modul gibt es in der Demo nicht, was aber nix heissen muss.

 

Es gibt aber jede Menge Datenpunkte, für IOs

 

HerrP_0-1698791415146.png

 

keine Ahnung, mit welchem Gerät die auftauchen. Da sind auch noch ne Menge mehr. Vielleicht ist dein HIO Modul ja was zusätzliches, und es gibt da solche Parameter drauf? Man müsste es finden (die ECU Addr) und dann mal einen Scan machen...

 

 

Announcement: Im develop Branch ist eine ganz neue Version, mit der ihr in den meisten Fällen erheblich mehr 'Klartext' sehen könnt. Vitoair ist auch zum ersten mal öffentich dabei 🙂 gerne testen und Feedback geben!

 

Grüsse!

 

Abgeleitet von open3e gibt es mit E3onCAN zusätzlich die Möglichkeit, die ohnehin ständig zwischen den Geräten ausgetauschten Daten in Echtzeit zugänglich zu machen.

Das funktioniert mit vernetzten Geräten, also z.B. bei Vitocal und Vitocharge VX3, die per CAN verbunden sind. Auch das Energy Meter E380 kann ausgelesen werden.

 

Vorteile:

* Daten kommen in Echtzeit, also direkt wenn sie sich ändern. Bei der VX3 erfolgt das für einige Werte im Sekundenbereich.

* Nur lesende Zugriffe auf dem CAN-Bus.

 

Einschränkungen:

* Funktioniert, außer beim E380, nur bei vernetzten Geräten

* Werte, die sich selten ändern, werden auch nur selten übertragen

* Es sind keine Schreibzugriffe möglich

 

Wie bei open3e können die Daten am Terminal ausgegeben oder per MQTT versendet werden.

 

Top-Lösungsautoren