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 🖖
Danke für die Rückmeldung. Leider kann ich selbst, mit dem was da in der Vitolog drin steht nur wenig anfangen 😕
Habe sie mal hier eingefügt: vitolog.txt (github.com)
ist eigentlich nicht schwer zu verstehen, siehe https://community.viessmann.de/t5/Waermepumpe-Hybridsysteme/Datenpunkte-in-der-API-gesucht/m-p/45930...
Die entsprechende Nachricht zu finden ist natürlich einfacher, wenn man den aktuellen Betriebsstundenstand zum log Zeitpunkt hat. Angenommen es sind 41265 -> 0xA131 dann müssen die vorletzten drei Bytes in der Antwort 02 31 A1 sein (02 wegen 2 Bytes). Dann hast du wahrscheinlich schon die Datenpunkadresse in den beiden Bytes davor. Ich fürchte aber, dass der Log zu kurz ist, da sind nur gut 500 Antworten drin... Es gibt auch keine Antwort mit 2 Bytes Daten, wo das vorletzte Byte A1 ist. Es kann natürlich sein, dass der Betriebsstundenstand in einem 'zusammengesetzten' Datenpunkt steht (die langen Dinger). Wie gesagt, wenn man den genauen Stand zum Zeitpunkt kennt, lässt sich viel einfacher suchen.
Also der genaue Wert zum Zeitpunkt der Erstellung des Logs waren 41260 Stunden.
Bzgl. der Log Länge und des Log Wertes versuche ich nochmal einen längeren Log erstelle zu lassen und mich in deinen Link einzulesen.
Vielen Dank nochmals.
In die Vitosoft Database gibt es diese adressen für Betriebsstunden:
Model | Parameter | Address | Conversion | ReadWrite | ByteLength | DefaultValue | Unit |
VScotHO1 | BetriebsstundenBrenner1~0x0886 | 0x0886 | Sec2Hour | R | 4 | ecnUnit.Stunden | |
VScotHO1 | BetriebsstundenBrennerGWG~0x0886 | 0x0886 | Sec2Hour | R | 4 | ecnUnit.Stunden | |
VScotHO1 | BetriebsstundenBrennerBedienungGWG~0x08A7 | 0x08A7 | Sec2Hour | R | 4 | ecnUnit.Stunden | |
VScotHO1 | BetriebsstundenBrennerResetGWG~0x08A7 | 0x08A7 | Sec2Hour | R | 4 | 0 | ecnUnit.Stunden |
Ich möchte die ganze Datei für VScotHO1 anhängen aber die xlsx Dateien sind nicht erlaubt. Vielleicht via GitHub?
moin Frans!
auf jeden Fall bitte! findest du auf github ein Plätzchen, wo du das hinpacken kannst? Ein Repo 'file_server' machen?! 😁
Die 0x08A7 liest CM ja, aber seltsamerweise als 2 Bytes (4 hat er ja versucht soweit ich erinner, aber führt nicht weiter) und als ganze Stunden?!?
@CM000n versuch doch mal die 0x0886 - mal schauen was dabei raus kommt!
In dem vitolog taucht eine 0886 aber nicht auf...
>> der genaue Wert zum Zeitpunkt der Erstellung des Logs waren 41260 Stunden
das wäre in ganzen Stunden 0xA12C. 2C A1 gibt es im log aber auch nicht 🤔 wenn ich es *3600 nehme, sind es 08da7ac0. aber auch ein 7A DA 08 gibt es nicht im log. Wahrscheinlich ticken auf dem Neptun (Codename des Software Projekts) die Uhren anders 😎
Grüsse!
Phil
Vielen Dank!
Ich nutze die DP_VScotH01_72.txt File aus der Sammlung von @HerrP hier: ViessData21/DP_Listen_2.zip at master · philippoo66/ViessData21 (github.com)
Darin ist tatsächlich nur die 0x08A7 Adresse mit folgender Information enthalten:
- Brenner-Betriebsstunden (104) [BetriebsstundenBrennerBedienungGWG~0x08A7 (Int)]
Aber oh Wunder, unter der 0x0886 Adresse erhält man 148538781.
Geteilt durch 3600 macht das dann 41260,7725 😊
Vielen Dank!
supi, danke!!
verwunderlich, dass ich keine Benachrichtigung bekommen habe... naja, vlt hab ich rigend ne Einstellung dafür nicht gesetzt.
Die Query werde ich beizeiten mal mit meiner nach Access exportierten DB probieren. Hatten wir eigentlich schon geschaut, ob deine sql db akueller ist als die, die ich hab?
Hallo und danke für diesen Thread. Ich habe bei mir auch eine Vitocal WP mit dem alten Vitoconnect-Modul und OptiLink-Kabel dazwischen. Bis dato bin eigentlich bis auf ein paar Limitierungen mit der API gut zurechtgekommen, aber letztes Jahr wurde diese mal in den Funktionen beschnitten, aktuell nimmt es die Warmwasseranforderung (seit einer Woche ca.) nicht mehr entgegen und ja so richtig Fan meinen Kram übers Inet zu schleusen war ich noch nie. (Das Vitoconnect ist damals nur eingezogen, weil die WP am Anfang viele kleine Probleme hatte und es so "einfacher" war mit dem Monteur und Kundendienst Fortschritte zu machen)
Jetzt mal zu den Fragen und meinem Verständnis und ich hoffe ich frage nichts was eigentlich schon klar ist oder 300x gefragt wurde.
1. der Raspi braucht erstmal keine weiteren Besonderheiten und muss auch nicht exklusiv für die Viessmantechnik zur Vergügung stehen? (ich habe noch einen Raspi (4) mit Raspberrymatic - also freier HomeMatic CCU in der Nähe laufen und könnte dort eigentlich das OptiLinkkabel heranführen)
2. In den Settings vom Skript "wähle ich quasi meine Wärmepumpe aus" und lade beim Start damit die korrekte Übersetzung der verfügbaren Register meiner WP?
3. Die übersetzten Register werden via MQTT an den entsprechenden Broker gesendet und können damit direkt verwendet werden. Heißt, die dahinterliegende Automatisierung dürfte eigentlich egal sein, eine spezielle Anpassung ist nicht weiter notwendig? (aktuell verwende ich FHEM und das VITOCONNECT Modul innerhalb - MQTT habe ich aber z.B. für meine Shelly oder die OpenDTU im Einsatz)
4. Das Skript ist auch dafür vorbereitet "Befehle" per MQTT an die Anlage zu senden? (z.B. Logik-gesteuertes Warmwasser)
moin @SW1988 !
>> 1. der Raspi braucht erstmal keine weiteren Besonderheiten und muss auch nicht exklusiv für die Viessmantechnik zur Vergügung stehen?
beides richtig, also 2x 'nein'. Das Skript brauch nur sehr wenig Resourcen und du kannst es auf einem normalen Raspbian OS mit python drauf gut neben anderen Sachen laufen lassen. Wenn du die on-board UART für das Vitoconnect benutzen willst, muss die natürlich frei sein, man könnte aber nötigenfalls auch ein USB serial Interface benutzen.
>> 2. In den Settings vom Skript "wähle ich quasi meine Wärmepumpe aus" und lade beim Start damit die korrekte Übersetzung der verfügbaren Register meiner WP?
naja, automatisch landen die Datenpunkte nicht in der settings_ini. Die musst du schon von Hand da rein schreiben. Es gibt ja seeehr viele Datenpunkte (weit mehr als Möglichkeiten/'Objekte' mit der API) und die sind sehr unterschiedlich von Gerät zu Gerät. Wir haben einiges an Listen für unterschiedliche Geräte, aber auch die sind nicht immer vollständig und ggf. auch von der Geräte-Firmware abhängig. Das 'Finden' der Datenpunktadressen ist eigentlich die größte 'Herausforderung' bei der ganzen Geschichte, aber bisher ist es jedem/r gelungen, und einige kompetente Leute stehen zur Verfügung, um dich ggf. zu unterstützen.
>> Register werden via MQTT an den entsprechenden Broker gesendet und können damit direkt verwendet werden. Heißt, die dahinterliegende Automatisierung dürfte eigentlich egal sein, eine spezielle Anpassung ist nicht weiter notwendig?
Jap, so ist das. Aktuell kommen die Werte als reine Werte rüber, manche Automatisierungen möchten lieber json, das werden wir demnächst noch einbauen, sobald ich etwas Zeit dafür finde.
>> 4. Das Skript ist auch dafür vorbereitet "Befehle" per MQTT an die Anlage zu senden? (z.B. Logik-gesteuertes Warmwasser)
ja, das ist es. derzeit über den 'write' Befehl auf den Topic /cmnd.
write;0x6300;1;45
setzt z.B. bei einer Vitodens den WW Solwert auf 45°C.
Es ist noch kein Skalieren des Wertes eingebaut wie beim Lesen, es kann also sein, dass du z.B. bei einem Datenpunkt mit Kommastelle und Skalierung 1/10 den ('Register'-) Wert 234 schreiben musst, wenn du 23,4 einstellen willst.
Grüsse!
Phil
Wenn du den Code deine WP in die Tabelle ecnDatapointType in die Excel in https://github.com/philippoo66/optolink-splitter/wiki/310-Parameter-Addresses finden können, kann ich eine Liste der relevanten Parameter für deine WP in die Excel-Tabelle einfügen.
Hallo Phil,
erstmal ein große Danke für die sehr schnelle und ausführliche Antwort.
1. das ist super, weil ich so einen sehr schnellen Start auf dem vorhandenen Pi hinlegen kann. Ich müsste aktuell nur eine Verlängerung für das USB-Kabel besorgen (5m), weil das im Gehäuse der WP zur Rückwand verlegt ist und dort durch einen langen Kabelkanal zum Vitoconnect. Man könnte das auch rückführen, aber ich will ja erstmal unter geringem Aufwand testen. Das Vitoconnect selbst wäre, wenn Alles funktioniert tatsächlich vollständig obsolet bzw. würde ich das nicht wieder einbinden.
2. Die Listen hatte ich gesehen und glaub auch schon mein WP-Modell entdeckt. Das Gute ist, soviel Werte brauche ich gar nicht, sodass ich mir sicher bin, dass die sicher Jemand schon gefunden hat.
Was kommt eigentlich über die OptoLink-Schnittstelle an Rohdaten? Sind das Register wie beim Modbus, sind das HEX oder ASCII-Werte oder Datenpunkte ähnlich der API? Bzw. kann man Rückschlüsse aus der API zu den Signalen ziehen oder die Rohdaten "live" mitlesen (und sich daraus die Übersetzung herleiten)?
3. MQTT ist für mich persönlich schon eine sehr feine Sache und reiht sich in meine anderen Devices gut ein.
4. Beim Schreiben brauche ich hauptsächlich das Aktivieren und Deaktivieren der Warmwasser-Aufbereitung (1x WW-Aufbereitung nach Soll2). Aktuell steuere ich das mit "Prellzeiten" und Median über 1 Minute je nach Stromüberschuss (PV-Anlage), vorliegender WW-Temperatur und Zustand WP, wann ich Warmwasser schalte. Bei geschaltetem Warmwasser schaue ich wieder aufs Stromdelta (Bezug/ Ausspeisung) und schalte dann z.B. bei 44°C ab (1x WW-Bereitung = False) oder lass Ihn bis 60°C laufen. Wahrscheinlich könnte man das ohne API noch etwas schlauer machen und direkt die Zieltemperatur besser festlegen.
Grüße
Stephan
Edit:
Ich sehe gerade "mal schnell" ist nicht. Hab jetzt erstmal die ganzen Python-Sachen geladen, aber der Pi der Rapberrymatic ist komplett abgespeckt. Ich muss erstmal sehen wie ich da die "Standards" wieder drauf bekomme, dann Python usw.
Bei den Devices, habe ich aber auch schonmal in die CSV und die einzelnen Dateien rein gesehen um mal den Aufbau vor Augen zu haben. Was mir auch Frage zwei so halbwegs beantwortet.
installiere dir Vitosoft, damit siehts du was du deine WP alles für Datenpunkt entlocken kannst.
https://connectivity.viessmann.com/de/mp-fp/vitosoft.html
https://www.youtube.com/watch?v=2g4ml2gw0-I
die DP siehst du im Abnahmeprotokoll und in der Trending. Funktion
Dann suchts du in Github nach den Adressen dazu.
wenn eine Adresse dort nicht dabei sein sollte kann man das über Vitosoft herausfinden.
VG
Da muss ich aber quasi mit dem OptoLink an den PC?
Das könnte sich als schwierig erweisen. ^^
Aber danke erstmal für den Hinweis. Notfalls muss ich mir mal irgendwo einen Windows Laptop ausleihen.
Erstmal muss ich aber tatsächlich schauen, wie ich den Pi wieder halbwegs für andere Sachen öffnen kann... oder ich brauch doch einen zweiten Pi.
Deinen Post hatte ich ganz über sehen.
Vielen Dank erstmal.
Sehe ich das irgendwo am Typenschild, auf den Platinen oder in der Steuerung, im ViCare oder müsste ich die WP tatsächlich erstmal irgend wie an den PC bringen und mit der verrlinkten Software auslesen?
Nein, so einfach ist das leider nicht. Am besten sucht man in die Tabelle welche Bescheibung (Descr) past. Z.b. dies sind die Zeilen mit Vitocal im Beschreibung:
Descr | Address |
Allgemeine Produktbeschreibung: Vitocal-G Technische Produktbeschreibung: Vitocal-G | VBC700_BW_WW |
Allgemeine Produktbeschreibung: Vitocal-A Technische Produktbeschreibung: Vitocal-A | VBC700_AW |
Allgemeine Produktbeschreibung: Vitocal-G mit Vitotronic 200 (Typ WO1A) (ab 08/2010) | V200WO1A |
Allgemeine Produktbeschreibung: Vitocal 3xx mit Vitotronic 200 (Typ WO1A) (ab 08/2010) | VBC702_AW |
Allgemeine Produktbeschreibung: Vitocal 200-S mit Vitotronic 200 (Typ WO1A) (ab 08/2010) | VBC702_S |
Allgemeine Produktbeschreibung: Vitocalxxx-G mit Vitotronic 200 (Typ WO1C) (ab 04/2012) | CU401B_G |
Allgemeine Produktbeschreibung: Vitocalxxx-A mit Vitotronic 200 (Typ WO1C) (ab 04/2012) | CU401B_A |
Allgemeine Produktbeschreibung: Vitocalxxx-S mit Vitotronic 200 (Typ WO1C) (ab 04/2012) | CU401B_S |
>> Was kommt eigentlich über die OptoLink-Schnittstelle an Rohdaten? Sind das Register wie beim Modbus, sind das HEX oder ASCII-Werte oder Datenpunkte ähnlich der API? Bzw. kann man Rückschlüsse aus der API zu den Signalen ziehen oder die Rohdaten "live" mitlesen (und sich daraus die Übersetzung herleiten)?
hier https://community.viessmann.de/t5/Waermepumpe-Hybridsysteme/Datenpunkte-in-der-API-gesucht/m-p/45930... kannst du sehen wie der Optolink Traffic (in diesem Falle des Vitoconnects) aussieht und wie er zu interpretieren ist.
Du bekommst zumindest die Antworttelegramme der Heizung wenn du in der settings_ini show_opto_rx auf True belässt. Um auch die Requests ausgegeben zu bekommen müsstest du am mehreren Stellen im Code das '#' vor der Print Anweisung entfernen... Ein komplettes Logging ist nur für das Vitoconnect eingebaut, damit man sehen kann, was Viessmann treibt (was man selber treibt weiss man ja meist 😉 )
>> Sehe ich das irgendwo am Typenschild, auf den Platinen oder in der Steuerung,
bei vielen Steuerungen kannst du Geräte Info angezeigt bekommen. oft ist dabei auch die 'DeviceIdent' irgendwie ersichtlich. Damit kannst du aus der Devices.csv dann die Zuordnung finden, die Fans meint.
>> Notfalls muss ich mir mal irgendwo einen Windows Laptop ausleihen.
ACHTUNG! installiere Vitosoft NICHT auf einem ausgeliehenem Gerät, es sei denn auf einer Virtuellen Maschine! Das Vitosoft Monster bringt mit seinen unterschiedlichen Servern und Engines (bsw. SQL) das gesamte System durcheinander. Es kann gut sein, dass danach andere Software nicht mehr funktioniert (hatten wir mehrfach), und ohne Expertenwissen hilft dann nur eine komplette Neuinstallation des gesamten Windows und der anderen Programme.
es gibt aber ein kleines unkritisches Windows Programm, dass die DeviceIden ausliest https://github.com/openv/openv/wiki/voIdent
ps. irgendwo im Vicare wie die DeviceIdent auch angezeigt... (s.o.)
So, ich habe mich jetzt erstmal aufs Identifizieren der Wärmepumpe konzentriert. Was meine Hardware angeht, benötige ich doch erstmal zusätzlich Hardware bzw. muss meinen vorhandenen Raspi nochmal neu aufsetzen.
(Die Steuerung, die da gerade drauf ist als geschlossenes und gehärtetes System installiert, damit fehlen jegliche Optionen auf einfachem/ normalen Wege, Software oder Skripte nachzuinstallieren)
Zur Anlage mal ein paar Informationen, die ich selbst schon versucht habe, mit den Listen, die vorliegen zuzuordnen.
ViCare
Produktname: Vitocal 200-A AWCI-AC 201.A07
Aus dem öffentlichen Kundenbereich und "Anlagen-Information"
Codierstecker: 4171-06
Aus dem Servicetechnikerbereich der Anlage - Bereich "Systeminformationen"
VC 200-A
Seriennummer ...
Bedienung: B920W243/9 B920W243/ 6E64
Wärmepumpe: 4.78/28
Es gibt noch den Bereich "Kurzabfrage". Hier befinden sich 10 Zeilen mit 6-stelligen Hexadezimal-Codierungen.
Kommunikationsmodul ist aktuell das Vitoconnect 100 Opto1.
Ausgabe von VitoOpen Identifikation
Device Unknown
ID 0641
ExtID 0901
Die Anlage selbst ist aus 2017.
Wahrscheinlich ist die Code CU401B_A. Ich will mal versuchen eine Liste der Parameter mit diese Code herzustellen und an die Excel im Wiki hinzufügen.
Eine Montage- und Serviceanleitung kan man hier finden: https://www.badundheizungshop.de/wp-content/uploads/downloads/Montage-und-Serviceanleitung-Vitocal-2... Ab Seite 88 gibt es eine Beschreibung der Parameter.
Ich habe noch meinen alten Parametrier-Laptop fürs Auto gefunden. Ich lade den gerade mal auf, in der Hoffnung, dass der Akku noch mitspielt.
Gibt es noch etwas, womit ich sinnvoll unterstützen kann?
Danke schonmal vorab!
EDIT...
Ausgabe von VitoOpen Identifikation
Device Unknown
ID 0641
ExtID 0901
Ich habe die Parameter Tabelle für CU401B_A zugefügt and die Excel in https://github.com/philippoo66/optolink-splitter/wiki/310-Parameter-Addresses Es gibt sehr viele Parameter und die sind sicher nicht alle relevant.
Sehr cool, Danke.
Ich habe mal mit VitoOpen ausgelesen, aber das Device hat er nur als "Unknown".
Ausgabe gab es nur mit dem "300 Protokoll".
Benutzer | Anzahl |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |