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, 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.
Eine Sammlung von nützlichen Informationen hat @TSG initiert:
https://github.com/open3e/open3e/wiki
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
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
PV/Batteriespeicher Datenpunkte -- Netzdienliches Laden
@wwsolar beschreibt eine Anforderung, die eigentlich als selbstverständlich verfügbar von einer modernen PV Anlage erwartet wird. Nur leider -- bisher -- steht das nicht dem Benutzer zur Verfügung.
Soweit bekannt, kann diese auch mit der Standard Viessmann API nicht erfüllt werden. Direkt verfügbar sind im Electrical energy system (ESS): ess.operationState, ess.power, ess.stateOfCharge und ess.transfer.discharge.cumulated. Bei weitem nicht ausreichend!
Bleibt der Versuch eine weitergehende Kontrolle von PV/Batterie und Strombezug mittels der CAN-Bus/Open3e Schnittstelle zu realisieren.
Eine Grundvoraussetzung für einen betriebssicheren Betrieb ist ein klares Verständnis über die Datenpunkte, deren Bedeutung und ihr Zusammenspiel.
Sicher gibt es hierzu bereits Kenntnisse. Diese sollten an einer Stelle zusammengetragen werden. Der Bereich „Diskussionen“ des Projekt "Open3e" ist vermutlich die beste Position.
Einen entsprechenden Beitrag habe ich eingerichtet. Bitte um rege Beteiligung.
ich denke die Werte lassen sich 'von aussen' garnicht schreiben. Hast du schon mal versucht, einen Wert drauf zu schreiben?
Aber du könntest ja per HA Niveau oder Steigung der Heizkurve dynamisch ändern, wenn du von den Raumsensoren merkst, dass die Sonne den Job macht...
Hallo Leute,
so wie es aussieht wird’s bei uns nun auch eine Vitocal 250-A und dann würde ich mich hier einklinken. Ist jemand dabei einen Adapter für Home Assistant zu basteln so wie es ihn schon für den io-Broker gibt?
nicht genau so aber in die Richtung... https://github.com/open3e/open3e/discussions/216
Hallo,
ich bin neu hier, plane die Sanierung eines kleinen EFH, und das hier scheint genau, was ich suche, nachdem offenbar von keinem Hersteller standardmäßig ein dokumentiertes, lokales Interface angeboten wird.
Frage: Welche Geräte werden unterstützt? Es ist die Rede von "E3"-Geräten mit CAN-Bus, aber welche genau das sind, habe ich nicht herausfinden können. Ich will evtl. eine Vitodens 200 nehmen. Hier werden nur Vitocal 250 und Vitodens 300 als Beipiele genannt. Weiß jemand, ob die Vitodens 200 auch funktionieren würde?
Was ich brauche ist letztlich nur die Anbindung an einen MQTT-Broker, den Rest mache ich in Python.
@dsmr ja seit ca. 2020 haben die neuen Vitodens 200 auch E3 Regelungen mit CAN Bus
Danke!
@dsmr mit einer Vitodens 200 kannst du dich nahe an der Vitodens 300 von Dreman65 orientieren, bei der 200 'fehlen' eigentlich nur ein paar Sensoren. Dreman ist einer der ursprünglichen Entwickler von open3e, da bist du also in besten Händen 😉
ps. wenn du noch bei der Auswahl bist, würde ich eine 300 auch mit in Betracht ziehen. Zumin bezüglich der alten Generation hatte mein Heizi gesagt "Die 300er laufen einfach besser" und ich bin mit meiner 'alten' 300 sehr zufrieden. Soweit ich noch orientiert bin sind Kessel und Brenner und so eigentlich gleich, aber die zusätzliche Sensorik nützt schon...
Die Adresse 1606 (Mindestpausenzeit/Integralschwellwert) hat noch niemand decodiert, oder? Fuer die Uebergangszeit ist es tatsaechlich praktisch, das Integral ein bisschen zu verlaengern, aber das kann ich bisher nur an der Anlage am Touchscreen programmieren... In meinem Handbuch snid nur 1606.0 und 1606.4 angegeben.
Und die aktuelle Drehzahl der Heizpumpe (also Umwaelzpumpe fuer Heizkreislauf) kann man nicht abfragen, oder uebersehe ich irgendwas? Ich hab nur "1761 TimeSeriesRecordedCentralHeatingPumpSpeed" gefunden, also offenbar eine Aufzeichung ueber irgendeinen Zeitraum, aber der ist leider auch nicht decodiert...
ich hab das bei mir auch hochgesetzt (verdoppelt). hast du denn mal geschaut, ob in den anderen Bytes überhaupt was drin steht (also ungleich 0)?! Wir könnten ja zumin schon mal die beiden Bytes 'auflösen'.
1606 : O3EComplexType(8, "IntervalStrategyProperties",[O3EByteVal(1,"Mode"),RawCodec(3, "unknown1"),O3EByteVal(1,"Integral"),RawCodec(3, "unknown2")]),
Leider hab ich kein Englisches Handbuch für die richtige Bezeichnung der beiden Subs und der Einstellungen von .0 - könntest du mal auf https://vibooks.viessmann.com/gb/en deine Gerätenummmer eingeben und schauen, ob du das passende Manual in Englisch bekommst?!
früher gab es beim Mode noch
'2' steht aber zumin bei der B3HG nicht mehr mit drin - wie ist das in deinem Manual?
Das hab ich gefunden. Genauso sieht das auch in meinem deutschen Manual aus, also nur .0 und .4. Momentan hab ich das Integral auf 100 gestellt (von 50) und der Wert von 1606 ist "0104c8005e01e803". Hilft Dir das?
@FrankSteiner 1606: ohne Gewähr 😉:
1606: O3EComplexType(8, "IntervalStrategyProperties", [O3EByteVal(1, "Integral EIN_AUS"), O3EByteVal(1, "unknown"), O3EInt16(2, "Brennerpause_Min"), O3EInt16(2, "Brennerpause_Max"), O3EInt16(2, "Integralwert", scale=1)]),
Die Drehzahl der internen Pumpe (in %) findest du unter 381:
381 : O3EComplexType(4, "CentralHeatingPump", [O3EByteVal(1, "State"), O3EInt8(1, "TargetValue"), O3EInt8(1, "Actual"), RawCodec(1, "Unknown")]), # Unit %
Cool 🙂 381 funktioniert und liefert die Werte passend zu meiner 1102-Einstellung zurueck, funktioniert also. 1606 sieht auch gut aus, liefert allerdings Faktor 10 zuviel, also 1000.0 bei eingestelltem Integralwert 100. Aber das ist ja wurscht. Da kann ich jedenfalls viel mit anfangen, vielen Dank 🙂
@FrankSteiner Der eingestellte Integralschwellwert hat bei mir im Display die Einheit 100.0Kxmin und als Einstellwert wird 1000 angezeigt. Ist das bei dir anders?
Stimmt, Du hast Recht, das ist tatsaechlich der Einstellwert! Passt also!
Jetzt hab ich aufgrund Deiner beiden Decodierungen mal versucht, selbst einen Wert zu entschluesseln, den ich noch brauche, naemlich
1432 : RawCodec(4, "CentralHeatingPumpPerformance"),
steht momentan auf 0 und liefert "00000000". Dafuer hab ich aber im Handbuch nur die Angaben 1432.1 "Restfoerderhoehenregelung" (0-255) und 1432.2 "Betriebsweise" (0-200. Wie kommt man da jetzt weiter, also woher weiss ich, ob es 1432.0 auch gibt und welcher Teil von den 00000000 zu 1432.1 und zu 1432.2 gehoert?
@FrankSteinerDie ersten 2 Bytes sind unbekannt, mit den folgenden 2 Bytes wird die Restförderhöhe (1 Byte, 1 bis 255) und der Differenzdruck (1 Byte, 1 bis 20) codiert.
1432 : O3EComplexType(4, "CentralHeatingPumpPerformance", [RawCodec(2, "unknown"), O3EByteVal(1, "Restfoerderhoehe"), O3EByteVal(1, "Differenzdruck")]),
Nachtrag: Hier und hier noch 2 Erläuterungen zur Einstellung der Restförderhöhe.
Vielen Dank 🙂 Nur interessehalber: woher weiss man das? Einfach Werte an der Heizung veraendern und auslesen und vergleichen?
Bitte bei der Namensgebung ein paar Regeln beachten, siehe hier. Insbesondere grundsätzlich englische Begriffe und keine Leerzeichen verwenden.
da hast du natürlich recht, aber grundsätzlich frage ich mich (bzw @Dreman 😉 ) , warum die Sachen noch nicht in der datapoints stehen wenn sie doch bekannt sind?!
die Bezeichnungen können wir immer noch ändern, wenn wir denn den zutreffenden Begriff in irgend nem englischen Handbuch gefunden haben, aber wichtig ist ja auf jeden Fall die 'Information' an sich...
Ein englisches Handbuch zur 300W B3HG hab ich leider nicht gefunden auf https://vibooks.viessmann.com/gb/en, aber relativ aehnlich ist das hier: Manual
Von da ist der Screenshot oben, um demnach waere z.B. die Restfoerderhoehe "ResidualHead", aber den Parameter 1432 gibt's leider nicht, daher fehlt der Differenzdruck
Ah, hier: Manual "differential pressure"