Moin ihr! 🙂
Optolink ist 'alt', aber noch in Benutzung (bei mir auch). Öfter gab es Anfragen zum Betrieb zu lokalen Zwecken aber trotzdem weiter das Vitoconnect für Viessmann Cloud/Vicare/Viguide/Vi.API/Garantieverlängerung zu benutzen. Dazu jetzt hier die benutzerfreundliche Lösung, natürlich wieder open-source und kostenlos:
Er verbindet euer Optolink Gerät auf total einfache Weise mit allem was das Herz begehrt.
Kein Gehassel mit komplizierter Einrichtung und irgendwelchen kryptischen xml's. Einfach nen Raspi, ein paar Python Module draufkopiert, Optolinkadapter und bei Bedarf das Vitoconnect angesteckt, ggf. noch ein paar Anpassungen in der Settings_ini (COM Ports, IP Adressen, MQTT Passwort, Poll-Liste, ...) und los.
viel Spass damit & Grüsse!
Phil 🖖
@ceeage wenn die Vitovent über die Vitocal gesteuert wird, sieht es mir aber ziemlich danach aus, als wäre das ein 'One Base' System? also was für open3e?! oder hat die Vitocal einen Optolink Anschluss?
creage hat wohl eine alte 200-A
da ist der Vitovent per Modbus an der WP angeschlossen und wird darüber bedient.
Die DP sind aus dem Abnahme Protokoll einer 200-S
VG
Mit die Vitosoft Software kann man ein Abnahme protocol darstellen dass alle relevante Datenpunkte für die Anlage enthält.
ja das scheinen gleich die Adressen zu sein.
siehe auch
https://github.com/openv/openv/wiki/Adressen-Ger%C3%A4te-VT-200-(WO1C)
na dann steht @ceeage 's Projekt ja nichts mehr im Weg 🙂 Bei weiteren Fragen ist hier offensichtlich bestens für Unterstüzung gesorgt 👍
Super interessantes Projekt. Das klingt genau nach dem was ich schon ewig suche.
Die Einbindung der Anlage über die Viessmann Cloud API in Home Assistant ist so semigeil. Für den Schwiegervater bin ich aus "Komfortgründen" aber auf den Einsatz von Vitoconnect/App angewiesen.
Sobald ich etwas Zeit finde, nehme ich mir das definitiv auch als neues Projekt vor 😉 Vielen Dank für die Arbeit!
PS: Gibt es egtl irgendwo eine Datenbank mit den ganzen Adressen? Damit nicht jeder jedes Mal von vorne anfangen muss?
PPS: Ließe sich so etwas egtl auf Basis von ESP Gräten umsetzen? Von denen habe ich noch ein paar hier herumliegen. Des Rasspi müsste ich mir erst zulegen.
Hallo,
wegen der Adressen kannst du beim openv wiki nachschauen:
hier
https://github.com/openv/openv/wiki/Adressen
oder in den issues suchen.
VG
Mit die ESP Geräte geht das leider nicht da die keine USB Host unterstützten.
@CM000n schön dass du das Projekt dann jetzt auch entdeckt hast!
Wegen der Adressen ist hier https://github.com/philippoo66/ViessData21/blob/master/DP_Listen_2.zip noch eine sehr viel umfassendere 'Sammlung'. Das ist der 'Export' aus den Vitosoft xml's nach https://github.com/sarnau/InsideViessmannVitosoft .
Um was für eine Anlage geht es denn?
Es reicht locker ein Raspi 2, den bekommst du problemlos für 20eu auf Kleinanzeigen. Zugegeben immer noch etwas teurer als ein ESP, aber Frans sagte ja schon...
Grüsse!
Phil
>>keine USB Host unterstützten.
Wenn man sich einen Optolink-Adapter selbst bastelt, dann ist der doch seriell. angeschlossen.
Wäre das eine Option mit ESP für CM000n??
VG
hm, stimmt. ich hatte das Vitoconnect im Kopf, aber das wird ja schon serial. wär auch ne gute Gelegenheit, mal die Volkszähleradapter mit angepasstem Diodenabstand auszuprobieren. Aber aktuell hab ich erstmal mit meiner PV zu tun... 😉
Ich kenn die CPU Last nicht wenn das Vitoconnect noch mitspielt, das sabbelt ja unaufhörlich vor sich hin. Wie leistungsfähig ist denn so ein ESP32? und man ist natürlich wieder auf WLAN....
Ich werd's mal mit nem Pi probieren. Wollte ich mir eh schon immer mal zulegen 😉
>> Um was für eine Anlage geht es denn?
Es handelt sich dabei um eine Vitocrossal 300 in Verbindung mit einer Vitocell 300 und vier Vitosol 200 Modulen.
Es ist doch möglich USB Host mit ESP32. Die Unterstützung ist aber sehr basic. Die Optolink Switch auf ESP implementieren wäre eine ziemlich grosse Aufwand. https://github.com/touchgadget/esp32-usb-host-demos.
wie gesagt - Volkszählerlesekopf wäre einen Versuch wert. Aber ich zitiere mal ChatGPT:
Rechenleistung:
Multitasking:
Einsatzbereich:
Der Raspberry Pi 2 bietet deutlich mehr Rechenleistung und eignet sich für anspruchsvollere Aufgaben und Projekte, die mehr Speicher und Multitasking erfordern.
So ein paar Threads laufen beim Splitter ja schon parallel. Wenn man einfach mal 240/900[MHz] * 2/4[Kerne] nimmt, sind das ~13,5% Rechenleistung. Wahrscheinlich wird auch das noch reichen, wahrscheinlich reicht auch der halbe Speicher, aber es bleibt erstmal die Einschränkung auf WLAN, und die Viessdata csv muss man woanders hin speichern (wenn man sie denn speichern will).
Wenn ich irgendwann mal viel Langeweile haben sollte, werde ich das vielleicht mal angehen. So ein Ding läuft ja doch oft 24/365, da kann 1..2 Watt Unterschied Leistungsaufnahme schon was ausmachen, und so ein 5eu Ding wäre auch eleganter, statt einen 20eu Raspi sich langweilen zu lassen....
Bei mir läuft auf dem Raspi noch mehr, von daher keine Option, aber zumindest ein interessanter Gedanke...
>> eine Vitocrossal 300 in Verbindung mit einer Vitocell 300 und vier Vitosol 200 Modulen.
die Vitocrossal bietet natürlich nur einen recht eingeschränkten 'Datenpunkteraum', aber das kennst du ja von Vicare...
Wegen der Adressen ist hier https://github.com/philippoo66/ViessData21/blob/master/DP_Listen_2.zip noch eine sehr viel umfassendere 'Sammlung'. Das ist der 'Export' aus den Vitosoft xml's nach https://github.com/sarnau/InsideViessmannVitosoft .
Vielen Dank für die Links! Die .zip File mit den Adressen ist super! Wenn ich es richtig gesehen haben, wäre für meine Vitocrossal die DP_VScottHO1_72.txt file die richtige.
Was ich jedoch noch nicht so ganz verstanden habe: In der settings_ini.py muss ich neben der eigentlichen Adresse auch angeben, auch die Länge, Typ/Skalierung und Signierung mit angeben.
Wo bekomme ich diese Informationen her? Aus der .zip File mit den Adressen erschließt sich mir das erstmal nicht. Oder ist das ein wenig trial und error kombiniert mit Informationen von verschiedenen Stellen zusammenklauben?
Beste grüße und nochmals vielen Dank!
um zu sagen welche DP_xxx.txt die passende ist, musst du Adresse F8 (am besten gleich 8 Bytes) auslesen. Da steht das sysDeviceIdent drin und damit kannst du mit der Devices.csv die passende Datei zuordnen. Wie das genau geht bzw was dabei zu beachten ist steht im ReadMe.
zur ini - nehmen wir mal den Eintrag aus der Textdatei
- Aussentemperatur (5373) [TiefpassTemperaturwert_ATS~0x5525 (SInt)]
die 0x5525 ist die Datenpunktadresse.
das "SInt" sagt dir zweierlei:
"S" für signed, du solltest also signed auf True setzen, die obere Hälfte des 'Zahlenraumes' sind negative Werte.
"Int" heisst es sind 2 Bytes. Es gibt fast nur Int und Byte. Byte ist dann 1 Byte. Manchmal gibt es noch Int4, das sind dann 4 Bytes. Bei den Arrays (z.B. Schaltzeiten braucht man eh tieferes Wissen um die Interpretation. Mit etwas Glück steht die Länge des Arrays in der SQL Datenbank von Vitosoft.
Die Skalierung ist meist ziemich offensichtlich: Wenn du für die Aussentemperatur 234 Grad bekommst, ist die Skalierung 0.1. Es gibt kaum was anderes als 1 und 1/10. Bei der Brennerlaufzeit noch 1/3600 (Sekunden in Stunden). Aber meist ist es wenn dann nur ein Verschiebung des Kommas, bei Int4 auch schon mal 1/100.
Tatsächlich ist es manchmal "ein wenig trial und error kombiniert mit Informationen von verschiedenen Stellen". Bsw. ist die Anlagenzeit meist 8 Bytes, die sind aber bei Gasgeräten anders kodiert als bei Wärmepumpen, aber die meisten Datenpunkte von Interesse sind ziemlich offensichtlich.
Grüsse!
Super, vielen Dank für die ausführliche Antwort!
Die VScottHO1_72 sollte die richtige sein. Wird zumindest schon so über die Viessmann Cloud API Home Assistant Integration angezeigt 😉
Vor allem der Hinweis mit den Sint als Signed vs Int als Unsigned war seht hilfreich.
Hallo zusammen, ich schon wieder 😉
Habe das ganze mittlerweile bei mir eingerichtet und es läuft bis jetzt tadellos.
Es macht richtig Spaß, zu entdecken welche zusätzlichen Möglichkeiten und Werte gegenüber der App ausgelesen werden können. Und das wesentlich schneller und stabiler!
Eine kleine Sache hat mich etwas verwirrt. Und zwar werden mit in der App bei den Brenner Betriebsstunden 41260h angezeigt. Lese ich die Daten jedoch mit dem Optolink Splitter aus, erhalte ich 32260h. Also exakt 9000h weniger. Hat zufällig noch jemand dieses Phänomen und kann mit erklären, wo sie fehlenden 9000h herkommen?
Die Betriebsstunden im Optolink Switch lese ich über folgendes Poll Item aus:
Moin @CM000n !
Vielen Dank für das sehr positive Feedback!
Mit den Brennerstunden ist ja erstmal die Frage, welcher Wert der richtige ist. Die werden doch auch irgendwo im Display angezeigt - hast du da schon mal nachgesehen?
Mein Raspi ist wegen Umbauarbeiten grade offline, aber bei mir steht für die 300er
Hast du mal testweise probiert was dabei raukommt? Kannst du ja ganz einfach mit
read;0x08A7;4;2.7777778e-4
als MPPT cmnd testen.
Wenn nix hilft, müssen wir einen vitolog machen und schauen, was Viessmann da liest... 😉
Grüsse!
Mit 1/3600 als Skalierung erhalte ich dann einfach 8.9611 als Rückgabewert.
Frage: Warum gibst du das relativ umständlich als eulersche Zahl und nicht einfach als Bruch an?
("Betriebsstunden", 0x08A7, 4, 1/3600, False) funktioniert doch ebenfalls wunderbar 😉
oh, schau mal an! da ist Python mehr 'versatile' als ich dachte.
und was sagt das Display von wegen Brennerlaufzeit?
Auf dem Display werden ebenfalls die 41260 Brenner Betriebsstunden angezeigt.
FYI: Ich habe im Home Assistant Community Forum auch einmal einen Thread für mehr Home Assistant spezifische Fragen zum Optolink Splitter gestartet: Viessmann Optolink Splitter - Energy - Home Assistant Community (home-assistant.io)
Ich konnte dort dazu bislang nichts finden und denke so ein tolles Projekt sollte man der Home Assistant Community nicht vorenthalten 😉
>> Auf dem Display werden ebenfalls...
dann hilft nur der Vitolog und schauen, unter wasViessmann das ausliest
>> Projekt sollte man der Home Assistant Community nicht vorenthalten
supi, vielen Dank! ich guck mir das nachher mal an, grad weiss ich nicht 'wo mir der Kopf steht'...