Viessmann OpenV vcontrold Client (Optolink)

Hello Roman,

thank you very much, it works.

I will now test everything a few days and then here for my heater Viessmann V200KW1 ID=2094 protocol:KW the Vito.xml and vcontrold.xml are available here, as well as the configruation for all sensors, etc…

I have made a few adjustments to the config.yaml, here is a list with all the points that are queried for my heater. Whether the set works I must still test.

  commands:
    - getDevType:STRING
    - getTempA:FLOAT
    - getTempAtp:FLOAT
    - getTempAged:FLOAT
    - getTempWWist:FLOAT
    - getTempWWsoll:FLOAT
    - getTempKist:FLOAT
    - getTempKsoll:FLOAT
    - getTempVListM2:FLOAT
    - getTempKol:FLOAT
    - getTempSpu:FLOAT
    - getTempRaumNorSollM1:FLOAT
    - getTempRaumRedSollM1:FLOAT
    - getTempAbgas:FLOAT
    - getTempKtp:FLOAT
    - getBrennerStufe:FLOAT
    - getBrennerStarts:FLOAT
    - getBrennerStunden1:FLOAT
    - getBrennerStunden2:FLOAT
    - getLeistungIst:FLOAT
    - getBetriebsstunden:FLOAT
    - getNeigungM1:FLOAT
    - getNiveauM1:FLOAT
    - getPumpeStatusM1:FLOAT
    - getPumpeStatusM2:FLOAT
    - getPumpeStatusSp:FLOAT
    - getPumpeStatusZirku:FLOAT
    - getMischerM1:FLOAT
    - getBetriebArtM1:STRING
    - getBetriebSparM1:FLOAT
    - getBetriebPartyM1:FLOAT
    - getTempPartyM1:FLOAT
    - getTimerM1Mo:STRING
    - getTimerWWMo:STRING
    - getTimerM1Di:STRING
    - getTimerWWDi:STRING
    - getTimerM1Mi:STRING
    - getTimerWWMi:STRING
    - getTimerM1Do:STRING
    - getTimerWWDo:STRING
    - getTimerM1Fr:STRING
    - getTimerWWFr:STRING
    - getTimerM1Sa:STRING
    - getTimerWWSa:STRING
    - getTimerM1So:STRING
    - getTimerWWSo:STRING
    - getStatusStoerung:FLOAT
    - getError0:STRING
    - getError1:STRING
    - getError2:STRING
    - getError3:STRING
    - getError4:STRING
    - getError5:STRING
    - getError6:STRING
    - getError7:STRING
    - getError8:STRING
    - getError9:STRING
    - setNeigungM1:FLOAT
    - setNiveauM1:FLOAT
    - setBetriebArtM1:STRING
    - setBetriebSparM1:FLOAT
    - setBetriebPartyM1:FLOAT
    - setTempRaumNorSollM1:FLOAT
    - setTimerM1Mo:STRING
    - setTimerWWMo:STRING
    - setTimerM1Di:STRING
    - setTimerWWDi:STRING
    - setTimerM1Mi:STRING
    - setTimerWWMi:STRING
    - setTimerM1Do:STRING
    - setTimerWWDo:STRING
    - setTimerM1Fr:STRING
    - setTimerWWFr:STRING
    - setTimerM1Sa:STRING
    - setTimerWWSa:STRING
    - setTimerM1So:STRING
    - setTimerWWSo:STRING

I will use this as a template for sensors etc., but some things have to be adjusted.

Thanks a lot Thomas

Hi Thomas,

very nice, happy to see that it works for you !
Concerning the set-commands some seem to be not correct for my device but that is probably related to openv and/or the vito.xml (e.g. set for party mode not working with my device but working for Björn who did the example you are referring to). One way to get some more commands would be by installing the Viessmann tool and extracting the xml files as described here so one can add them to vito.xml.

Cheers,
Roman

Hello Roman,

I will have a look at the Viessmann tool. With the set commands I do not get along also yet.

What I would actually wish (wish):

It takes a long time until all values are queried. It would be great if the query of the commands were divided into, for example, three areas, of which you can set the interval for the query for each. In the respective area you then put the commands that should be queried with the interval for this area.

A device is created via MQTT that then contains all sensors and switches. Here I still have to read up on how this works manually. Currently, the sensors are only in the entities.

I saw a video on Twitch at the beginning of last year, where a programmer started to program what runs directly on the Raspberry on the Vcontrold. That has all the get Commandos then sent directly to the MQTT server of HA and there was created a device with all the sensors, switches, etc… (the same way I would like to see the MQTT device created with the commands contained in the Vito.xml).
I have written to the programmer, but unfortunately I have received as an answer only that he makes it only for himself.

Hey there,

@Schm1tz1 thanks for your work for the remote setup.

I have a RPi Zero W, running vcontrold, with the official Optolink-USB cable connected to my Vitodens 200-W from 2008

And connecting vcontrold via your hassio-addon to mqtt.

image

Here is my example as an Screenshot:

The Statistic Card is on developing :relaxed:

Does anybody know, who I can remove the zero peaks in my Table?
I have tried with an availability_template

availability_template: >-
      {{ states('sensor.warmwasser_ist_temperatur') not in ['unknown', 'unavailable', '0', '0.0']}}

But this doesn’t work.

1 Like

maybe this will work?

@NightWatcher - very nice!
Having the same issues with the zero values which are returned when actual NULL values were returned from vcontrold. I remember I had that issue some years ago when writing my openHAB scripts for that job - by that time I checked for numeric values: openHAB Scripts to get vcontrold values and push via REST API · GitHub

That would be something worth integrating and testing - but as far as I remember that doesn’t work with the templates in vclient

@raphii sounds good, but the mqtt Sensor does not support the condition config.

Now I have a solution:

    value_template: >
      {% if value | round(2) == 0.00 %}
        {{ states('sensor.warmwasser_ist_temperatur') }}
      {% else %}
        {{ value | round(2) }}
      {% endif %}

Hey! Thanks for your great work! I have now also set up the addon Vcontrol in Home Assistant! I adjusted a few values ​​in the configuration, but unfortunately he doesn’t set the burner value/circulation pump to off at all, they’re just always on! it also reacts very slowly, sometimes it takes 10 minutes for a value to be changed. sometimes you have to change the value more often before it is accepted. my controller is a V 200 KW4 (from 2005) (I took the id 2094) <— VitoOpen Identifikation. do you have an idea what that could be? Thanks in advance!

Hi Roman,

thx for your PR to use a remote host. I also have Raspberry Pi Zero for my vcontrold service. When I try your PR, I am able to set the remote settings (host, port). But in the logs it looks like it will be using the main image without your PR. How can I use the add-on with your PR? Thx

Hi,
that the image pull policy. You need to force him to re-create the image as I cannot override the existing image in the registry but would like to keep the configuration in a consistent state for the original author.
That’s what you need to do:

It’s this line: homeassistant-vcontrol/vcontrold/config.yaml at 99c6e7620c8859389189172e0c213145b64f7585 · Schm1tz1/homeassistant-vcontrol · GitHub

Thx, that worked!

Another question regarding vcontrold service in the add-on.
Is it normal that service constantly starts and stops in remote control mode?

Hi all,

we agreed on a different configuration structure and the PR was merges, so the branch was merged into the main add-on and I deleted the branch in my GitHub-Repo. The changes are now in main repo and branch and will are live since the 1.6.0 release tonight (see PR) - that means you will get the new feature with an update of the add-on in HA.

Cheers,
Roman

1 Like

Hello all,

I was just looking for integrate my heater and found your great work to add into ha with possibility of remote vcontrold, so thank you.
I just have a question. I don’t know if it’s normal or not, but it seems to be slow to get all values (like mor than 1 minutes for 30 commands).
Ex logs :
[10:02:03] INFO: Looping vclient…
[10:03:35] INFO: Looping vclient…
[10:05:05] INFO: Looping vclient…

Is it normal or I have a problem somewhere ?

Thanks for the help.

Best,
Alessandro

From my experience it’s rather slow in general. Baud rate is rather low (4800 AFAIK), it has quite some overhead and reconnects before executing each command. Probably good to limit to those values you really need and not poll like very 10 seconds. From your log I cannot see any commands/values. What I see is that the vclient loop is executed every 90 seconds.

Hi @Schm1tz1

Thanky you sooo much for your work (had been away for too long, sorry ^^)

Sadly it does not work properly on my site :frowning:
vcontrold is running:

vctrld>getTempA
0.800000 Grad Celsius
vctrld>

I reduced the Add on config to just get this one reading:

tty: /dev/ttyUSB0
refresh: 30
device_id: "2098"
vcontrol_host: 10.55.xx.xxx
vcontrol_port: 3002
debug: true
commands:
  - getTempA:FLOAT
  - getBrennerStatus:FLOAT

And the mqtt config:

sensor:
  - name: "Aussentemperatur"
    unique_id: "vcontroldgetTempA"
    device_class: temperature
    state_topic: "openv/getTempA"
    unit_of_measurement: "°C"
    value_template: |-
      {{ value | round(2) }}
    device:
      identifiers: vcontrold
      manufacturer: Viessmann

But sadly, the sensor stays at unknown :frowning:

Hi @rene-bayer,
ok, vcontrold is up. Let’s check where the issue is… Please set the debug flag in config so we can see whether we get a connection to vcontrold at all from vclient. Maybe it’s just a network connectivity thing…
Can you use some MQTT-Client (like MQTT Explorer) to see whether there is some openv topic with the data appearing?
It should look similar to this:
image

Oh crap … it had something to do with the vcontrold … reboot of the remote pi → solved

Tinkering through all the commands and will report :slight_smile:

Oh no :sweat_smile: !
Maybe you can share your special settings / service config here?
I am also having at running on a remote RPi but the service is exiting upon reboot without any error log but then works once I start it with systemctl start. I am using the default vcontrold from the latest release… Will need to investigate further on the weekend…