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 🖖
ps. minimalistischer Optolink-Adapter:
mit Diode und Transistor als SMD passt es auch unter die Schiebeklappe 😉
Hallo, vielen Dank für das Script!
Ich habe es geschafft, erfolgreich die Strompreise per MQTT zu verändern.
Zusätzlich würde ich gerne die DWH Zirkulationspumpe ein- und ausschalten.
Für meine Vitcal 250S / Vitotronic 200 konnte ich bisher keine Parameter finden, aber die Frage ist auch, ob man den Status einfach setzen kann oder ob man eher die Schaltzeiten und Taktung „manipulieren“ müsste.
Freue mich über einen Tipp.
ich meine zu erinnern dass zweiteres nötig ist. 'Status' spiegelt ja nur was wieder, was durch das Zeitengedöhns bestimmt wird. Selbst wenn du da was ändern könntest, würde das ja höchstwahrscheinlich beim nächsten Reglungszyklusdurchlauf wieder überschrieben....
Irgendwo hier im Thread oder auf github hatte da auch schon mal wer eine Lösung dafür gepostet, aber wahrscheinlich machst du's schneller selber, als dass du das findest 😉
> Ich habe es geschafft, erfolgreich die Strompreise per MQTT zu verändern.
den Trick muss du mal verraten, dann erübrigt sich auch die Diskussion um die Stromsteuer für Privathaushalte 😂🤑
Denke auch dass ich eher die Schaltzeiten verändern müsste, aber aktuell scheitert es an der Adresse, die steht nicht in der Anleitung und hier im Thread konnte ich dazu auch nichts finden.
Falls du einen Tipp hast wo ich das auf Git finden könnte, würde ich mich sehr freuen.
LG
Felix
WPR_Tagesprogramm_WW 0x901C, 168 bytes?
Wie sieht das eigentlich mit den Schreibzyklen des internen Speichers aus, wenn man von extern regelmäßig Parameter ändert?
war der schonmal bei jemandem „platt“?
gute Frage...
> wo ich das auf Git finden könnte
guck mal hier @Fele
https://github.com/philippoo66/optolink-splitter/discussions/114#discussioncomment-12557897
Dankeschön! Werde ich testen.
Hallo zusammen,
ich wurde hier auf diesen Thread hinwiesen - super Projekt muss ich sagen. Ich kämpfe mit häufigen Ausfällen der Vitoconnectverbindung, so das eine kontinuierlich Steuerung im Dauerbetrieb quasi nicht möglich ist. Es funktioniert zwar, aber eben nicht zuverlässig. Manchmal gehts über Tage problemlos und dann fällt die Verbindung (LED rot) wieder länger (Stunden oder Tage) aus.
Zu meiner Anlage:
Ich habe eine Solewärmepumpe Vitocal 333-G BWT 331.C12. Wegen der Garantieverlängerung habe ich das Vitoconnect (OPTO2) laufen und nutze auch die Steuerung über die App.
Ich habe die Smartgridsteuerung über den Homeassitant und die Viessmann-Api nachgebaut, d.h. bei PV-Überschuss wird einfach die Raumsolltemperatur erhöht. Dies geht sogar in Abhängigkeit vom PV-Überschuss in Stufen, was mir mit der modulierenden WP entgegen kommt. Die eigentliche Smartgridsteuerung lässt nur eine Temperaturstufe zu.
Der Homeassistent läuft bei mit auf einer Synology DS423+ auf einer virtuellen Maschine. Im HA habe ich auch meine PV-Anlagen drin.
Was brauche ich für die Umsetzung bzw. gibt es schon ein Setup ohne zusätzlichen Raspi? Ich möchte eigentlich ungern noch eine Raspi einsetzen.
Ich würde das ganze mit Blick auf Stabilität umbauen. Die Vitoconnectsteuerung muss definitiv weiter laufen. Von Raspi &Co habe ich aber keine Ahnung.
Moin @MuLei !
Das Projekt selber solltest du auch auf der Synology laufen lassen können, vielleicht idealerweise auf einer eigenen VM mit nem Debian Linux (Raspbian OS ist ja auch ein Debian Derivat), müsste aber eigentlich auch auf jedem System laufen, das Python unterstützt.
Weil die Synology ja wahrscheinlich keine TLL-Level UART rausgeführt hat, bräuchtest du für die Anbindung des Vitoconnects einen zusätzlichen USB2SerialTTL Adapter (der gleiche, den du auch für die eigentliche Anbbindung des Vitoconnects brauchst), also USB_Host(Rechner)<->USB2SerialTTL<->SerialTTL2USB<->USB_Vitoconnect.
Wenn du jetzt berechtigterweise fragst warum nicht direkt USB_Host<->USB_Vitoconnect, dann ist die Antwort "weil USB_Vitoconnect auch ein Host ist, und nur Host<->Device geht, und USB2SerialTTL ein Device ist."
Wodrüber du dir noch Gedanken machen musst, ist die Kabellänge. Wo steht die Synology? Die SerialTTL verbindung kannst du problemlos ziemlich lang machen, eine USB Verbindung ohne aktive Verlängerung nicht (max 5m, nach Spec glaubich noch weniger). Das wird ja mindestens beim Optolink-IR Kopf relevant.
Zur HA integration kann ich wenig sagen, nur soviel, dass es hier und auf github genug Leute gibt, die das gemacht haben und auch gerne helfen. Die eigentliche Schnittstelle ist ja MQTT.
Also - immer weiter fragen statt lange im Trüben zu fischen!
Grüsse!
Phil
ps. bevor du mit einer aktiven USB Verlängerung anfängst, solltest du vlt doch überlegen, ob nicht ein 2er Raspi (10eu auf kleinanzeigen) doch die sinnvollere Variante ist... (3er wenn du WLAN brauchst)
Guten Haben @HerrP ,
es klinkt vernüftigt. Dann werde ich wohl doch mal einen Raspi organisieren. An die Syno komme ich so ohne weiteres nicht ran. Netzwerk für den Raspi ist da.
Ich habe zwar ehrlicherweise keine wirkliche Lust, mich in die Raspi-Technik einzuarbeiten, da ich ja für meine Zwecke die Syno habe. Für die eine Anwendung werde ich es schon hinbekommen. Hauptsache es läuft stabil.
Es ist hier ja auch gut beschrieben. Es gibt ja die gute Zusammenfassung.
Einen Punkt habe ich aktuell nicht verstanden: Es ist zwar beschrieben, wie ich mit Adapter vom Optolink-Anschluss über das Kabel zum Raspi komme. Allerdings erschließt sich mir nicht, wie ich dann wieder die Vitoconnect anschließe. Ich möchte die App weiter nutzen können.
ich glaub du wirfst was durcheinander. Der 'Optolink Kopf', der jetzt im Vitoconnect steckt, wird direkt an einen USB Port vom Raspi angestöpselt. Der Adapter, den rustimation beschreibt und auch abbildet, dient dann als Anschluss für das Vitoconnect.
Am schnellstem kommst du zu einem lauffähigen System, wenn du den Raspberry Imager benutzt (so wie da beschrieben, nur halt für Raspi 2 oder 3, wichtig 'enable SSH'!, den gibt es auch für Windows) um eine SD Karte mit Betriebssystem zu machen, und dich dann meldest, dass wir den Rest grad in einer Online Session machen.
Man kann soviel beschreiben wie man will, aber irgendwer bleibt immer irgendwo an einer Kleinigkeit hängen, die man grad nicht beschrieben hat...
ps. wenn es dir wohler ist, können wir in der Online Session auch beim SD Karte machen anfangen
OK, dann habe ich es missverstanden. Das Optolinksignal wird quasi durch den Raspi geschleift.
Danke für Dein Angebot zur Unterstützung. Ich organisiere mir mal einen Raspi und setze das System auf. Das sollte ich hinbekommen.
Wenn ich ihn im Netzwerk habe, melde ich mir mit den weiteren Schritten. Das wird etwas dauern, da ich unter der Woche beruflich bedingt nicht zu Hause bin.
durchgeschleift trifft es nicht ganz. Jede mögliche Verbindung (Vitoconnect, MQTT, TCP/IP) wird in einem eigenen Thread auf Requests überwacht, und die empfangenen Requests werden in dem main Thread neben der Poll List schön eingereiht abgearbeitet... 😉
besorg am besten auch noch so ein SerialTTL2USB Board, damit wir dann auch das Vitoconnect gleich mit in Betrieb setzen können. Für die Opto2 gehen glaubich auch Boards mit FTDI Chip (falls du noch so eins liegen haben solltest).
Die Sache vereinfachen tut auch, wenn man schon ein SFTP Programm (für den Dateiaustausch mit dem Raspi) 'greifbar' hat. Ich benutz am liebsten WinSCP (free, open). Der MQTT Explorer ist ja eigentlich eh Standard (der is glaubich sogar in HA mit drin, richtig?)
wegen mir keine Eile, für so eine Kleinigkeit hab ich fast immer Zeit 😉
Hallo zusammen,
seit kurzem sind wir zu Hause auf eine Wärmepumpe Vitocal 300G umgestiegen und wegen der nicht recht stabilen Verbindung über Vitoconnect (und die eingeschränkten Daten, auf die man zugreifen kann) bin ich auf das Optolink-Splitter-Projekt gestoßen, das klingt richtig gut!
Habe die Software auf einem Raspberry Pi installiert und möchte die Vitoconnect-Schnittstelle parallel weiterbetreiben. Jetzt hänge ich an einem Punkt, an dem ich nicht mehr weiter komme:
Gebe ich in der settings_ini.txt den Port "/dev/ttyAMA0" für Vitconnect ein, kommt offenbar keine Verbindung mit dem Optolink-Adapter mehr zustande. Auf der Konsole sieht das so aus:
16.11.2025 11:42:14 [INFO]: poll_list made, 1 items
16.11.2025 11:42:14 [INFO]: Version 1.6.0.3
16.11.2025 11:42:14 [INFO]: awaiting VS2...
16.11.2025 11:44:14 [ERROR]: VS2 protocol not detected within timeout
16.11.2025 11:44:14 [INFO]: exit close...
16.11.2025 11:44:14 [INFO]: cancel poll timer
16.11.2025 11:44:14 [INFO]: exiting TCP/IP client
16.11.2025 11:44:14 [INFO]: closing serViCon
16.11.2025 11:44:14 [INFO]: reset Optolink protocol
16.11.2025 11:44:14 [INFO]: closing serViDev
16.11.2025 11:44:14 [INFO]: disconnect MQTT client
Der Timeout kommt unabhängig davon, ob der UART2USB-Adapter eingesteckt ist oder nicht.
settings_ini.txt sieht folgendermaßen aus (Auszug):
port_optolink = '/dev/ttyUSB0'
port_vitoconnect = '/dev/ttyAMA0'
vs2timeout = 120
# Optolink Communication Timing +
fullraw_eot_time = 0.05
fullraw_timeout = 2
olbreath = 0.1
# Optolink Logging ++++++++++++++
log_vitoconnect = False
show_opto_rx = True
viconn_to_mqtt = True
Ändere ich in der settings_ini.txt
port_vitoconnect = None
funktioniert die Kommunikation einwandfrei.
Meine Konfiguration ist wie folgt:
Was könnte ich noch versuchen?
moin @Stef2 !
guck mal was python list_ports.py liefert (im ol splitter Verzeichnis). Das gibt gewöhnlich die Ports so aus wie sie das splitter Skript sieht.
Wenn das die Ports anzeigt, die du benutzt, dann einen 'Null-Modem' Test machen:
- rx/tx von deinem Adapter (USB im Raspi eingestöpselt) auf Raspi Pins 8 und 10 (also über kreuz) und dann
- empfangen in einer Konsole:
cat /dev/ttyUSB0
- senden in einer anderen Konsole:
echo "Hallo, hier ttyAMA0!" > /dev/ttyAMA0
- und beides andersrum für die entgegengesetzte Richtung
(das geht jetzt davon aus, dass list_ports /dev/ttyAMA0 und /dev/ttyUSB0 liefert; ansonsten eben analog mit dem was list_ports leifert)
Hallo HerrP,
vielen Dank für die schnelle Antwort, auch noch an einem Sonntag!
Ist eine interessante Fehlersuche, einen Schritt bin ich weiter, vielen Dank! Bin jetzt an der nächsten Hürde.
Hatte tatsächlich rx/tx im Raspi verkehrt herum drin. Richtig rum reingesteckt, liefert der 'Null-Modem-Test'
'echo "hurz" > /dev/ttyAMA0' --> 'cat /dev/ttyUSB0'
genau das erwartete Ergebnis.
Andersrum liefert der wiederholte Aufruf von
echo "hurz" > /dev/ttyUSB0 --> cat /dev/ttyAMA0
das folgende Ergebnis:
hhurz
hurz
hhurz
hurz
hhurz
uhurz
hurz
uhurz
hurz
Mit den rx/tx-Kabeln so eingesteckt läuft jetzt das Skript 'optolinkvs2_switch.py', es empfängt Daten vom Optolink und schickt sie per MQTT weiter.
Den UART2USB-Dongle habe ich wieder im Vitoconnect eingesteckt, da scheinen noch keine Daten anzukommen, es blinkt die gelbe LED (Link) (der große Kreis mit den vier kleinen Kreisen), so als ob das Optolink-Kabel nicht eingesteckt ist.
'optolinkvs2_switch.py' liefert die folgende Ausgabe in der Konsole (ich lese testweise nur die Außentemperatur ein):
rx 06
rx 41 07 01 01 01 01 02 6e 00 7b
rx 06
rx 41 07 01 01 01 01 02 6e 00 7b
rx 06
rx 41 07 01 01 01 01 02 6d 00 7a
rx 06
rx 41 07 01 01 01 01 02 6d 00 7a
rx 06
rx 41 07 01 01 01 01 02 6d 00 7a
rx 06
rx 41 07 01 01 01 01 02 6d 00 7a
Was könnte ich mit dem Vitoconnect noch versuchen?
Ah, halt...
Ich hatte noch
port_vitoconnect = None
in der settings_ini.py stehen...
Mit
port_vitoconnect = '/dev/ttyAMA0'
ist jetzt richtig Verkehr auf dem Port und die Vitoconnect ist auch zufrieden.
Das sieht sehr gut aus, vielen Dank nochmal für die Unterstützung! Ist ein schöner Sonntag 🙂
das mit dem hhurz und uhurz und so ist etwas seltsam, kann aber von irgendwelchen 'übriggebliebenen' Einstellungen (Parity, StopBits, ...) kommen. Gff. könntest du das vitolog auf Auffälligkeiten prüfen, nich dass einer deiner Dupont Steckerchen einen Wackler hat...
Ok, das ist eine gute Idee, werde ich mir anschauen. Kann ein paar Tage dauern bis ich dazu komme, das logging aktivierte ich im settings-file mit
log_vitoconnect = True
Und die Daten landen dann im gleichen Verzeichnis, richtig?
richtig. in der vitolog.txt
aber pass auf - die wird gross wenn du es ein paar Tage laufen lässt...
Jetzt habe ich es doch schneller geschafft als gedacht: Das logfile scheint ok zu sein, sind keine auffälligen Zahlenwiederholungen zu entdecken wie beim Test gesehen Die Daten landen auch sauber in Home Assistant, sieht alles gut aus.
wichtig is ja dass keine Fehler reportet werden - X oder TO am Anfang der Zeile. Oder sogar ein Restart der Viconn Verbindung.