Viessmann OpenV vcontrold Client (Optolink)


the Viessmann ViCare Integration is perfect as it is … but sadly forced to use their crappy unstable cloud, which has outages all the time.
So this is completely unusable for automation or reliable readings.

Luckily there’s the possibility to communicate locally with Viessmann Components via the Optolink interface and a software named “OpenV vcontrol”.
There’s a project, which provides a working telnet server on a RPi (for example) which accepts telnet commands to read/control the Viessmann component.

Sadly my developer skills are a way to poor to write a custom HA integration which does the same as the Vicare integration, but just use my RPi vcontrol server instead of the Viessmann Cloud :frowning:

@oischinger , maybe you could? Or anyone else? :slightly_frowning_face:


Great idea. As the documentation is in German, so not so easy to navigate, could you point me to the most relevant part if I’d like to install it and use it on linux system with original usb-optolink cable?
How do you interact with the software? Is there a GUI or a command line interface?

Hi @adorobis

yea sure, I successfully installed and tested the software with a rpi3 (but any linux would do it).

  • You can find prebuilt .deb packages in the release section of the project
    • I installed the vcontrold_0.98.11-7_armhf.deb on my pi.
  • There are no config files generated automaticly, but you need at least
    • /etc/vcontrold/vcontrold.xml
      • Replaced <tty></tty> with <tty>/dev/ttyUSB0</tty>
    • /etc/vcontrold/vito.xml
  • According to your used protocol you can find them here: vcontrold/xml at master · openv/vcontrold · GitHub
  • You can find systemd service files under /usr/share/doc/vcontrold/doc/examples or just start the program with # vcontrold

When the server is working and running, you can connect to it via network on port 3002,
from here on you can use any command, defined in the vito.xml

# telnet localhost 3002
Trying ::1...
Connected to localhost.
Escape character is '^]'.

# Get wanted room temp for circuit 1 (M1)

# get wanted warm water temp

# set wanted warm water temp
vctrld>setTempWWsoll 45
# verify correct warm water temp setting

# get current warm water temp
55.799999 Grad Celsius

# get current burner temp
51.900002 Grad Celsius

# help
 close              Close connection to device
 commands           List all commands for the protocol listed in the XML file
 debug on|off       Toggle debug information
 detail <command>   Show detailed information about <command>
 device             The device set in the XML file
 protocol           Active protocol
 raw                Raw mode, commands WAIT,SEND,RECV,PAUSE terminated with END
 reload             Reload XML configuration
 unit on|off        Toggle conversion to given unit
 version            Show the version number
 quit               Close the session

Let me know if you need more :slight_smile:

Thanks, looks like the easiest way to integrate it with HA would be by creating a set of command line sensors/switches/services to enable collecting data and controlling the device. Not sure if there is a better way to run commands via telnet without writing fully new integration in python. Quite some work to be done :slight_smile: Ideal would be if authors of this library expose REST API or better implement MQTT protocol on their end… In IoT world the latter is the industry standard these days.

I opened a feature request at openv’s project to implement mqtt.

Otherwise it could also be a option, to rewrite vcontrold as python application with mqtt support.

1 Like

I currently have a Vitoconnect 100 connected to the Optolink of my Viessmann heating.

So the idea is that I can use the USB cable from the Vitoconnect 100 and instead connect it to a raspberry and it should work with opencontrolv?

Yes correct - I did the same, and the control via the raspberry is working with cli commands.

But someone has to do the Home Assistant Part to integrate it here.
(or at least help me, cause I already tried starting to develop an integration - but already failed seeing the new integration in my dev container :frowning: )

Thats very interesting.

The issue from my side is that I have the 5-year extended Viessmann warranty as long as I’m using the Vitoconnect and broadcast my data to Viessmann. So I will not tinker with that for another year :wink:

I fixed the problems within my dev environment and started developing an integration for this.

For now, at least the communication to the remote vcontrol daemon is already working.
Now I need to describe all the entities…
Let’s see how far I will come ^^

1 Like

@rene-bayer side question: I have a Vitoconnect 100 connected by OT2 instead of Optilink. Do you know if it’s possible to do something on the usb serial port (that now on my Vitoconnect is not connected). Thanks!

my Vitoconnect 100 is also labeld with “OT2” on the USB side and it works.
So I guess: Yes, it should work.

mmm but I connected my Vitodens 111 with the opentherm cable not the optilink. I guess i’m quite confused about the German :slight_smile: Do you need an additional hardware to communicate with the usb?
I mean my current setup is:

  • raspberry
  • vitoconnect 100 ---- opentherm to vitodens 111
  • vicare integration on HASS

Oh … don’t know about the opentherm, guess that’s not working then, but there’s already a opentherm integration in Home Assistant: OpenTherm Gateway - Home Assistant
Maybe that fits your needs better?

Yes I guess it’s better. Thanks for the clarification!

Great! Is that work in progress something that you could already start sharing on github?
What is the general idea of the integration? Are you building it as custom integration for HA directly or as a standalone service that will communicate via MQTT?
In my opinion the latter will be more flexible as not everyone has the HA server next to the heater. Also integrating with HA is very easy via MQTT and the autodiscovery. In essence there is no need for any configuration on HA side in such case.

I want to have at least a working kind of prototype before publishing to github.
But first I need to get familiar with everything :slight_smile:

I’m currently thinking of an custom integration, which communicates with a vcontrol daemon, which could be a RPi, or even a esp32 next to the heater itself.

1 Like

Cool. In case you would want to go the MQTT route I can try to help as I have an integration in python that communicates via MQTT and benefits from HA autodiscovery. It could be easily deployed on docker (today I just run it on a server as a daemon).

Hello, I also have Vcontrold running on a Raspberry PI. I used to have an ioBroker running, there is a plugin for Vcontrold. Maybe that helps.
Thanks that someone takes care of this topic, I will also gladly donate something to you via Github.
@adorobis : Yes that would be great.

Thanks a lot for your effort.

1 Like

Still tinkering around with the vcontrold part …

It’s all german stuff, thats not the big deal for me, cause I’m Austrian.
Thinking about translating all the commands, which are defined in the xml file to english, but not quite sure if this is just a time waster and hard to maintain in the future :man_shrugging: :thinking:

1 Like


possibly this might be a good solution:

There is a python script based on Viessmann Vitosoft configuration files for reading data points via Optolink and publishing them to an MQTT broker.
Unfortunately, I can’t try it out by myself, because my Viessmann Vitodens 222 WS2 communicates using the older GWG protocol, which is not supported by Vitosoft and thus not by Viessmann2MQTT.

Best, Berny