My mqtt configuration.yaml
Here is my first solution for the configuration.yaml to add end configure the entities. I hope this will help somebody
New Update in the next Answer
mqtt:
binary_sensor:
- name: "Status Pumpenzirkulation"
unique_id: "vcontroldgetPumpeStatusZirku"
state_topic: "openv/getPumpeStatusZirku"
device_class: running
value_template: "{% if(value|int == 0) %}OFF{% else %}ON{% endif %}"
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Pumpen Status"
unique_id: "vcontroldgetPumpeStatusM1"
state_topic: "openv/getPumpeStatusM1"
device_class: running
value_template: "{% if(value|int == 0) %}OFF{% else %}ON{% endif %}"
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Pumpen Status Sp"
unique_id: "vcontroldgetPumpeStatusSp"
state_topic: "openv/getPumpeStatusSp"
device_class: running
value_template: "{% if(value|int == 0) %}OFF{% else %}ON{% endif %}"
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Brenner Status"
unique_id: "vcontroldgetBrennerStatus"
state_topic: "openv/getBrennerStatus"
device_class: running
value_template: "{% if(value|int == 0) %}OFF{% else %}ON{% endif %}"
device:
identifiers: vcontrold
manufacturer: Viessmann
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
- name: "Warmwasser Ist Temperatur"
unique_id: "vcontroldgetTempWWist"
device_class: temperature
state_topic: "openv/getTempWWist"
unit_of_measurement: "°C"
value_template: |-
{{ value | round(2) }}
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Warmwasser Soll Temperatur"
unique_id: "vcontroldgetTempWWsoll"
device_class: temperature
state_topic: "openv/getTempWWsoll"
unit_of_measurement: "°C"
value_template: |-
{{ value | round(2) }}
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Kessel Ist Temperatur"
unique_id: "vcontroldgetTempKist"
device_class: temperature
state_topic: "openv/getTempKist"
unit_of_measurement: "°C"
value_template: |-
{{ value | round(2) }}
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Kessel Soll Temperatur"
unique_id: "vcontroldgetTempKsoll"
device_class: temperature
state_topic: "openv/getTempKsoll"
unit_of_measurement: "°C"
value_template: |-
{{ value | round(2) }}
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Raumsolltemperatur normal M1"
unique_id: "vcontroldgetTempRaumNorSollM1"
device_class: temperature
state_topic: "openv/getTempRaumNorSollM1"
unit_of_measurement: "°C"
value_template: |-
{{ value | round(2) }}
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Raumsolltemperatur reduziert"
unique_id: "vcontroldgetTempRaumRedSollM1"
device_class: temperature
state_topic: "openv/getTempRaumRedSollM1"
unit_of_measurement: "°C"
value_template: |-
{{ value | round(2) }}
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Betriebsart Party M1"
unique_id: "vcontroldgetBetriebPartyM1"
device_class: temperature
state_topic: "openv/getBetriebPartyM1"
unit_of_measurement: "°C"
value_template: |-
{{ value | round(2) }}
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Niveau Mischer1"
unique_id: "vcontroldgetNiveauM1"
state_topic: "openv/getNiveauM1"
device:
identifiers: vcontrold
manufacturer: Viessmann
value_template: |-
{{ value | round(0) }}
- name: "Neigung Mischer1"
unique_id: "vcontroldgetNeigungM1"
state_topic: "openv/getNeigungM1"
device:
identifiers: vcontrold
manufacturer: Viessmann
value_template: |-
{{ value | round(1) }}
- name: "Brenner Starts"
unique_id: "vcontroldgetBrennerStarts"
state_topic: "openv/getBrennerStarts"
device:
identifiers: vcontrold
manufacturer: Viessmann
unit_of_measurement: "Starts"
value_template: |-
{{ value | round(0) }}
- name: "Brenner Stunden 1"
unique_id: "vcontroldgetBrennerStunden1"
state_topic: "openv/getBrennerStunden1"
device_class: duration
unit_of_measurement: h
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Betriebsart"
unique_id: "vcontroldgetBetriebArt"
state_topic: "openv/getBetriebArt"
device:
identifiers: vcontrold
manufacturer: Viessmann
value_template: |-
{% if value == 'H+WW' %}
Heizen+Warmwasser
{% elif value == 'WW' %}
Warmwasser
{% elif value == 'RED' %}
Reduziert
{% elif value == 'NORM' %}
Normal
{% elif value == 'H+WW' %}
Frostschutz
{% elif value == 'ABSCHALT' %}
Abschaltbetrieb
{% endif %}
- name: "Vorlauftemperatur M1"
unique_id: "vcontroldgetTempVListM1"
state_topic: "openv/getTempVListM1"
device:
identifiers: vcontrold
manufacturer: Viessmann
unit_of_measurement: "°C"
value_template: |-
{{ value | round(2) }}
- name: "Vorlaufsolltemperatur M1"
unique_id: "vcontroldgetTempVLsollM1"
state_topic: "openv/getTempVLsollM1"
device:
identifiers: vcontrold
manufacturer: Viessmann
unit_of_measurement: "°C"
value_template: |-
{{ value | round(2) }}
- name: "Kesseloffset KT ueber WWsoll"
unique_id: "vcontroldgetTempKOffset"
state_topic: "openv/getTempKOffset"
device:
identifiers: vcontrold
manufacturer: Viessmann
unit_of_measurement: "°C"
value_template: |-
{{ value | round(2) }}
# Fehler
- name: "Fehler 1"
unique_id: "vcontroldgetError0"
state_topic: "openv/getError0"
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Fehler 2"
unique_id: "vcontroldgetError1"
state_topic: "openv/getError1"
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Fehler 3"
unique_id: "vcontroldgetError2"
state_topic: "openv/getError2"
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Fehler 4"
unique_id: "vcontroldgetError3"
state_topic: "openv/getError3"
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Fehler 5"
unique_id: "vcontroldgetError4"
state_topic: "openv/getError4"
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Fehler 6"
unique_id: "vcontroldgetError5"
state_topic: "openv/getError5"
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Fehler 7"
unique_id: "vcontroldgetError6"
state_topic: "openv/getError6"
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Fehler 8"
unique_id: "vcontroldgetError7"
state_topic: "openv/getError7"
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Fehler 9"
unique_id: "vcontroldgetError8"
state_topic: "openv/getError8"
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Fehler 10"
unique_id: "vcontroldgetError9"
state_topic: "openv/getError9"
device:
identifiers: vcontrold
manufacturer: Viessmann
And an updated Version with select and switch entities to set values in vcontrold.
mqtt:
binary_sensor:
- name: "Status Pumpenzirkulation"
unique_id: "vcontroldgetPumpeStatusZirku"
state_topic: "openv/getPumpeStatusZirku"
device_class: running
value_template: "{% if(value|int == '0') %}OFF{% else %}ON{% endif %}"
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Pumpen Status"
unique_id: "vcontroldgetPumpeStatusM1"
state_topic: "openv/getPumpeStatusM1"
device_class: running
value_template: "{% if(value|int == '0') %}OFF{% else %}ON{% endif %}"
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Pumpen Status Sp"
unique_id: "vcontroldgetPumpeStatusSp"
state_topic: "openv/getPumpeStatusSp"
device_class: running
value_template: "{% if(value|int == 0) %}OFF{% else %}ON{% endif %}"
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Brenner Status"
unique_id: "vcontroldgetBrennerStatus"
state_topic: "openv/getBrennerStatus"
device_class: running
value_template: "{% if(value|int == '0') %}OFF{% else %}ON{% endif %}"
device:
identifiers: vcontrold
manufacturer: Viessmann
select:
- name: "Betriebsart"
unique_id: "vcontroldgetBetriebArt"
state_topic: "openv/getBetriebArt"
device:
identifiers: vcontrold
manufacturer: Viessmann
command_topic: "openv/setBetriebArt"
options:
- "Heizen+Warmwasser"
- "Warmwasser"
- "Reduziert"
- "Normal"
- "Frostschutz"
- "Abschaltbetrieb"
command_template: |-
{% if value == 'Heizen+Warmwasser' %}
H+WW
{% elif value == 'Warmwasser' %}
WW
{% elif value == 'Reduziert' %}
RED
{% elif value == 'Normal' %}
NORM
{% elif value == 'Frostschutz' %}
H+WW FS
{% elif value == 'Abschaltbetrieb' %}
ABSCHALT
{% endif %}
value_template: |-
{% if value == 'H+WW' %}
Heizen+Warmwasser
{% elif value == 'WW' %}
Warmwasser
{% elif value == 'RED' %}
Reduziert
{% elif value == 'NORM' %}
Normal
{% elif value == 'H+WW FS' %}
Frostschutz
{% elif value == 'ABSCHALT' %}
Abschaltbetrieb
{% endif %}
- name: "Raumsolltemperatur normal"
unique_id: "vcontroldgetTempRaumNorSollM1"
state_topic: "openv/getTempRaumNorSollM1"
value_template: |-
{{ value | round(0) }}
device:
identifiers: vcontrold
manufacturer: Viessmann
command_topic: "openv/setTempRaumNorSollM1"
options:
- "3"
- "4"
- "5"
- "6"
- "7"
- "8"
- "9"
- "10"
- "11"
- "12"
- "13"
- "14"
- "15"
- "16"
- "17"
- "18"
- "19"
- "20"
- "21"
- "22"
- "23"
- "24"
- "25"
- "26"
- "27"
- "28"
- "29"
- "30"
- "31"
- "32"
- "33"
- "34"
- "35"
- "36"
- "37"
- name: "Raumsolltemperatur reduziert"
unique_id: "vcontroldgetTempRaumRedSollM1"
state_topic: "openv/getTempRaumRedSollM1"
value_template: |-
{{ value | round(0) }}
device:
identifiers: vcontrold
manufacturer: Viessmann
command_topic: "openv/setTempRaumRedSollM1"
options:
- "3"
- "4"
- "5"
- "6"
- "7"
- "8"
- "9"
- "10"
- "11"
- "12"
- "13"
- "14"
- "15"
- "16"
- "17"
- "18"
- "19"
- "20"
- "21"
- "22"
- "23"
- "24"
- "25"
- "26"
- "27"
- "28"
- "29"
- "30"
- "31"
- "32"
- "33"
- "34"
- "35"
- "36"
- "37"
- name: "Solltemperatur Partybetrieb"
unique_id: "vcontroldTempPartyM1"
state_topic: "openv/getTempPartyM1"
value_template: |-
{{ value | round(0) }}
device:
identifiers: vcontrold
manufacturer: Viessmann
command_topic: "openv/getTempPartyM1"
options:
- "3"
- "4"
- "5"
- "6"
- "7"
- "8"
- "9"
- "10"
- "11"
- "12"
- "13"
- "14"
- "15"
- "16"
- "17"
- "18"
- "19"
- "20"
- "21"
- "22"
- "23"
- "24"
- "25"
- "26"
- "27"
- "28"
- "29"
- "30"
- "31"
- "32"
- "33"
- "34"
- "35"
- "36"
- "37"
- name: "Neigung Mischer"
unique_id: "vcontroldgetNeigungM1"
state_topic: "openv/getNeigungM1"
device:
identifiers: vcontrold
manufacturer: Viessmann
value_template: |-
{{ value | round(1) }}
command_topic: "openv/setNeigungM1"
options:
- "0.2"
- "0.3"
- "0.4"
- "0.5"
- "0.6"
- "0.7"
- "0.8"
- "0.9"
- "1.0"
- "1.1"
- "1.2"
- "1.3"
- "1.4"
- "1.5"
- "1.6"
- "1.7"
- "1.8"
- "1.9"
- "2.0"
- "2.1"
- "2.2"
- "2.3"
- "2.4"
- "2.5"
- "2.6"
- "2.7"
- "2.8"
- "2.9"
- "3.0"
- "3.1"
- "3.2"
- "3.3"
- "3.4"
- "3.5"
- name: "Niveau Mischer"
unique_id: "vcontroldgetNiveauM1"
state_topic: "openv/getNiveauM1"
device:
identifiers: vcontrold
manufacturer: Viessmann
value_template: |-
{{ value | round(0) }}
command_topic: "openv/setNiveauM1"
options:
- "-13"
- "-12"
- "-11"
- "-10"
- "-9"
- "-8"
- "-7"
- "-6"
- "-5"
- "-4"
- "-3"
- "-2"
- "-1"
- "0"
- "1"
- "2"
- "3"
- "4"
- "5"
- "6"
- "7"
- "8"
- "9"
- "10"
- "11"
- "12"
- "13"
- "14"
- "15"
- "16"
- "17"
- "18"
- "19"
- "20"
- "21"
- "22"
- "23"
- "24"
- "25"
- "26"
- "27"
- "28"
- "29"
- "30"
- "31"
- "32"
- "33"
- "34"
- "35"
- "36"
- "37"
- "38"
- "39"
- "40"
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
- name: "Warmwasser Ist Temperatur"
unique_id: "vcontroldgetTempWWist"
device_class: temperature
state_topic: "openv/getTempWWist"
unit_of_measurement: "°C"
value_template: |-
{{ value | round(2) }}
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Warmwasser Soll Temperatur"
unique_id: "vcontroldgetTempWWsoll"
device_class: temperature
state_topic: "openv/getTempWWsoll"
unit_of_measurement: "°C"
value_template: |-
{{ value | round(2) }}
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Kessel Ist Temperatur"
unique_id: "vcontroldgetTempKist"
device_class: temperature
state_topic: "openv/getTempKist"
unit_of_measurement: "°C"
value_template: |-
{{ value | round(2) }}
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Kessel Soll Temperatur"
unique_id: "vcontroldgetTempKsoll"
device_class: temperature
state_topic: "openv/getTempKsoll"
unit_of_measurement: "°C"
value_template: |-
{{ value | round(2) }}
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Brenner Starts"
unique_id: "vcontroldgetBrennerStarts"
state_topic: "openv/getBrennerStarts"
device:
identifiers: vcontrold
manufacturer: Viessmann
unit_of_measurement: "Starts"
value_template: |-
{{ value | round(0) }}
- name: "Brenner Stunden 1"
unique_id: "vcontroldgetBrennerStunden1"
state_topic: "openv/getBrennerStunden1"
device_class: duration
unit_of_measurement: h
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Vorlauftemperatur M1"
unique_id: "vcontroldgetTempVListM1"
state_topic: "openv/getTempVListM1"
device:
identifiers: vcontrold
manufacturer: Viessmann
unit_of_measurement: "°C"
value_template: |-
{{ value | round(2) }}
- name: "Vorlaufsolltemperatur M1"
unique_id: "vcontroldgetTempVLsollM1"
state_topic: "openv/getTempVLsollM1"
device:
identifiers: vcontrold
manufacturer: Viessmann
unit_of_measurement: "°C"
value_template: |-
{{ value | round(2) }}
- name: "Kesseloffset KT ueber WWsoll"
unique_id: "vcontroldgetTempKOffset"
state_topic: "openv/getTempKOffset"
device:
identifiers: vcontrold
manufacturer: Viessmann
unit_of_measurement: "°C"
value_template: |-
{{ value | round(2) }}
# Fehler
- name: "Fehler 1"
unique_id: "vcontroldgetError0"
state_topic: "openv/getError0"
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Fehler 2"
unique_id: "vcontroldgetError1"
state_topic: "openv/getError1"
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Fehler 3"
unique_id: "vcontroldgetError2"
state_topic: "openv/getError2"
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Fehler 4"
unique_id: "vcontroldgetError3"
state_topic: "openv/getError3"
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Fehler 5"
unique_id: "vcontroldgetError4"
state_topic: "openv/getError4"
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Fehler 6"
unique_id: "vcontroldgetError5"
state_topic: "openv/getError5"
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Fehler 7"
unique_id: "vcontroldgetError6"
state_topic: "openv/getError6"
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Fehler 8"
unique_id: "vcontroldgetError7"
state_topic: "openv/getError7"
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Fehler 9"
unique_id: "vcontroldgetError8"
state_topic: "openv/getError8"
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "Fehler 10"
unique_id: "vcontroldgetError9"
state_topic: "openv/getError9"
device:
identifiers: vcontrold
manufacturer: Viessmann
- name: "WarmwasserRuecklauf"
unique_id: "WarmwasserRuecklauf"
state_topic: "esp_viessmann/4025510030891776127/Temperature"
device:
identifiers: vcontrold
manufacturer: Viessmann
unit_of_measurement: "°C"
value_template: |-
{{ value | round(2) }}
- name: "WarmwasserVorlauf"
unique_id: "WarmwasserVorlauf"
state_topic: "esp_viessmann/40255100308914319361/Temperature"
device:
identifiers: vcontrold
manufacturer: Viessmann
unit_of_measurement: "°C"
value_template: |-
{{ value | round(2) }}
switch:
- name: "Betriebsart Party"
unique_id: "vcontroldgetBetriebPartyM1"
state_topic: "openv/getBetriebPartyM1"
command_topic: "openv/setBetriebPartyM1"
device:
identifiers: vcontrold
manufacturer: Viessmann
value_template: |
{{ value|round(0) }}
payload_on: 1
payload_off: 0
state_on: 1
state_off: 0
Very nice work, will test it today or tomorrow in my setup. @Alexandre-io how about adding some example configs based on this work - what do you think?
Hello, @Bjoern3003. That's very nice configuration. I tried it today, however I've got few problems with it. For instance, the getBrennerStatus shows "on" all the time, despite it's off. When I check it manually from the console with vsensor, it shows "0" of course. The similar situation is with the Party and Spare modes.
Hi, please try this value_template for getBrennerStatus.
value_template: "{% if(value|int == 0) %}OFF{% else %}ON{% endif %}"
That is exactly the same template what I used.
- name: "Brenner Status" unique_id: "vcontroldgetBrennerStatus" state_topic: "openv/getBrennerStatus" device_class: running value_template: "{% if(value|int == '0') %}OFF{% else %}ON{% endif %}" device: identifiers: vcontrold manufacturer: Viessmann
No, its quoted. If have removed the ' before and after 0 to check for integer and not as string.
Indeed. Thank you.
Thank you for reporting.
Does anyone have a template for setting individual heating schedules? "setTimerMoHeizen" i.e. TIA.
I'm kind of lost and could need some advise with getting and setting the Betriebsart. I've set up vcontrol to get two Betriebsarten, one for M1, one for M2. Both are received by vcontrol correctly, e.g.:
[76] Sat Jan 13 18:13:11 2024 : Command: getBetriebArtM1 (...) [76] Sat Jan 13 18:13:11 2024 : <RECV: received 01 01 33 23 01 02 61 [76] Sat Jan 13 18:13:11 2024 : >FRAMER: framer_reset_actaddr framer_current_addr = FRAMER_NO_ADDR (was 2333) [76] Sat Jan 13 18:13:11 2024 : 02 -> NORM [76] Sat Jan 13 18:13:11 2024 : NORM
So Betriebsart 'NORM' is received correctly.
However, the values for Betriebsart M1 and M2 in Homeassistant are shown as "unknown".
Log is showing:
2024-01-13 18:15:27.356 ERROR (MainThread) [homeassistant.components.mqtt.select] Invalid option for select.mosquitto_broker_betriebsartm1: '' (valid options: ['Heizen+Warmwasser', 'Warmwasser', 'Reduziert', 'Normal', 'Frostschutz', 'Abschaltbetrieb']) 2024-01-13 18:15:27.370 ERROR (MainThread) [homeassistant.components.mqtt.select] Invalid option for select.mosquitto_broker_betriebsartm2: '' (valid options: ['Heizen+Warmwasser', 'Warmwasser', 'Reduziert', 'Normal', 'Frostschutz', 'Abschaltbetrieb'])
My yaml extract:
select:
- name: "BetriebsartM1"
unique_id: "vcontroldgetBetriebArtM1"
state_topic: "openv/getBetriebArtM1"
device:
identifiers: vcontrold
manufacturer: Viessmann
command_topic: "openv/setBetriebArtM1"
options:
- "Heizen+Warmwasser"
- "Warmwasser"
- "Reduziert"
- "Normal"
- "Frostschutz"
- "Abschaltbetrieb" command_template: |- {% if value == 'Heizen+Warmwasser' %} H+WW {% elif value == 'Warmwasser' %} WW {% elif value == 'Reduziert' %} RED {% elif value == 'Normal' %} NORM {% elif value == 'Frostschutz' %} H+WW FS {% elif value == 'Abschaltbetrieb' %} ABSCHALT {% endif %} value_template: |- {% if value == 'H+WW' %} Heizen+Warmwasser {% elif value == 'WW' %} Warmwasser {% elif value == 'RED' %} Reduziert {% elif value == 'NORM' %} Normal {% elif value == 'H+WW FS' %} Frostschutz {% elif value == 'ABSCHALT' %} Abschaltbetrieb {% endif %}
Any help is appreciated!
Hi @skihoff the errormsg says there is something wrong with the select field mapping, maybe you can check without command and value template:
select: - name: "BetriebsartM1" unique_id: "vcontroldgetBetriebArtM1" state_topic: "openv/getBetriebArtM1" device: identifiers: vcontrold manufacturer: Viessmann command_topic: "openv/setBetriebArtM1" options: - "H+WW" - "WW" - "NORM" - "ABSCHALT"
If this is functional, I would play with the command template notation (correct line indentations).
Thanks @dk1305hb, good idea starting debugging with lower complexity. I've changed the mqtt yaml file as suggested:
select:
- name: "BetriebsartM1"
unique_id: "vcontroldgetBetriebArtM1"
state_topic: "openv/getBetriebArtM1"
device:
identifiers: vcontrold
manufacturer: Viessmann
command_topic: "openv/setBetriebArtM1"
options:
- "H+WW"
- "WW"
- "NORM"
- "ABSCHALT"
Ouput of vcontrold same as above as expected: [74] Sun Jan 14 17:54:34 2024 : Command: getBetriebArtM1 (...) [74] Sun Jan 14 17:54:34 2024 : 02 -> NORM [74] Sun Jan 14 17:54:34 2024 : NORM
Logfile now shows a different message:
2024-01-14 17:58:31.778 ERROR (MainThread) [homeassistant.components.mqtt.select] Invalid option for select.mosquitto_broker_betriebsartm1: '0.000000' (valid options: ['H+WW', 'WW', 'NORM', 'ABSCHALT'])
Not sure what's happening here, the string 'NORM' seems to be incorrectly parsed from vcontrol into homeassistant and ending up as '0.000000' in HA. Unfortunately I'm lacking basic HA system knowledge and am lost at this point. If anyone has an idea what else to check, pls. let me know and I'll try.
Do you use your own mqtt broker? Can you check with MQTT Explorer if your values are received correctly?
Dont worry, my values have got other names, I use my own vcontrol instance...
If mqtt is ok, did you try you try a simple field with "getTempA" ?
Thanks @dk1305hb, this pointed me into the right direction. MQTT Explorer also showed the value as float, so I could relate the issue to the vcontrol side. I figured I simply forgot to put ":STRING" behind my getBetriebArtM1 command in the list of commands. All working now!
For those who want to control the water temperature, here's my MQTT config for it. Naturally the relevant get/set commands have to be present in vito.xml.
water_heater:
- name: "Warmwasser Temperatur"
unique_id: "vcontroldTempWW"
current_temperature_topic: "openv/getTempWWist"
temperature_command_topic: "openv/setTempWWsoll"
temperature_state_topic: "openv/getTempWWsoll"
temperature_unit: "C"
device:
identifiers: vcontrold
manufacturer: Viessmann
Seems to work for now. The only issue I noticed so far is HA thinks the boiler is permanently off. Don't care enough about it to fix it for now though.
is it possible to get data for the Solarengergy? (Water from Roof) the Vcare app shows no data. but the vitodens itself shows values every day.
command_template: |- property command template is not allowed
i get this error wenn i put in configuration.yaml
For those who want to control the water temperature, here's my MQTT config for it. Naturally the relevant get/set commands have to be present in vito.xml.
water_heater: - name: "Warmwasser Temperatur" unique_id: "vcontroldTempWW" current_temperature_topic: "openv/getTempWWist" temperature_command_topic: "openv/setTempWWsoll" temperature_state_topic: "openv/getTempWWsoll" temperature_unit: "C" device: identifiers: vcontrold manufacturer: ViessmannSeems to work for now. The only issue I noticed so far is HA thinks the boiler is permanently off. Don't care enough about it to fix it for now though.
do you know how to get the values Solarthermie (warm Water from roof) ?
do you know how to get the values Solarthermie (warm Water from roof) ?
Sorry, I don't have Solarthermie. You will have to search the web for vito.xml examples and look for the value you want.
i miss one sensor inMQTT, that i have in the vicare-cloud -> binary_sensor.vicare_solarpumpe
who knows how to add it in MQTT-openv ?
As far as I'm aware the following variables should be available:
- getSolarStunden
- getSolarLeistung
- getPumpeSolarStatus
- getTempKol
- getPumpeDrehzahlSolar
Part of yaml:
binary_sensor:
- name: "Pumpen Status Solar"
unique_id: "vcontroldgetPumpeStatusSolar"
state_topic: "openv/getPumpeStatusSolar"
device_class: running
value_template: "{% if(value|int == 0) %}OFF{% else %}ON{% endif %}"
device:
identifiers: vcontrold
manufacturer: Viessmann
sensor:
- name: "SolarStunden"
unique_id: "SolarStunden"
state_topic: "openv/getSolarStunden"
device:
identifiers: vcontrold
manufacturer: Viessmann
unit_of_measurement: "h"
value_template: |-
{{ value | round(2) }}
- name: "SolarLeistung"
unique_id: "SolarLeistungGes"
state_topic: "openv/getSolarLeistung"
device:
identifiers: vcontrold
manufacturer: Viessmann
unit_of_measurement: "kWh"
value_template: |-
{{ value | round(2) }}
- name: "SolarKollektor"
unique_id: "SolarKollektorTemp"
state_topic: "openv/getTempKol"
device:
identifiers: vcontrold
manufacturer: Viessmann
unit_of_measurement: "°C"
value_template: |-
{{ value | round(2) }}
- name: "SolarPumpeDrehzahl"
unique_id: "SolarPumpeDrehzahl"
state_topic: "openv/getPumpeDrehzahlSolar"
device:
identifiers: vcontrold
manufacturer: Viessmann
unit_of_measurement: "kWh"
value_template: |-
{{ value | round(2) }}
Proof of work:
i miss the Daily Solarleistung, which can be seen in the Display of the Vitodens
also
i need the code for Gas consumption for WW and Heating
for Oil its <command name=“getOelverbrauch”
here some command name which works fine
getTempA = 8.200000
getTempWWist = 50.099998
getTempWWsoll = 57.000000
getTempKist = 37.299999
getTempKsoll = 39.400002
getTempVListM2 = 30.000000
getTempKol = 12.700000
getTempSpu = 24.000000
getTempRaumNorSollM2 = 18.000000
getTempRaumRedSollM2 = 17.000000
getBrennerStatus = 0.000000
getBrennerStarts = 36404.000000
getBrennerStunden1 = 22179.123047
getPumpeStatusSp = 0.000000
getPumpeStatusM2 = 1.000000
getNeigungM2 = 0.400000
getNiveauM2 = 10.000000
getTempVLsollM2 = 33.099998
getTempKOffset = 20.000000
getTempAbgas = 38.000000
getTempStp2 = 20.000000
getTempKtp = 37.299999
getVolStrom = 1013.000000
getLeistungIst = 0.000000 %
getTempRL17A = 38.000000
getSolarStunden = 13118.000000
getSolarLeistung = 61356.000000
getSolarStatusWW = 1.000000
getPumpeDrehzahlM2 = 44.000000
getPumpeDrehzahlIntern = 55.000000
getPumpeStatusSolar = 0.000000
getTempSTSSOL = 38.500000
getStatusStoerung = 0
getUmschaltventil = 0.000000
for getPumpeDrehzahlSolar i do not get any values , but that is ok for me
Did you tried getOelverbrauch for testing purpose - whatever burns and has a value in kWh? This is what I planned next. Would be very nice to add this entity in the energie dashboard.
getVolumenstromsensor do not work for me
i get promt error message:
SRV ERR: command unknown
this must be without semicolon
value_template: "{% if(value|int == '0')
correct is
value_template: "{% if(value|int == 0)
otherwise it gives no values
getOelverbrauch
Did you tried getOelverbrauch for testing purpose - whatever burns and has a value in kWh? This is what I planned next. Would be very nice to add this entity in the energie dashboard.
not work command not found
[76] Tue Apr 1 11:27:54 2025 : Client connected 127.0.0.1:43504 (FD:5)
SRV ERR: command unknown
[11:28:00] INFO: vclient_pub executed successfully.
[11:28:00] INFO: Looping vclient_pub. Sleeping for 30 seconds.
I just found this, at least new for me. https://forum.fhem.de/index.php?topic=84250.0
But the mentioned address 7574 means getOelverbrauch. But your device-id (20CB I assume) has to be listed in vito.xml .
@Alexandre-io maybe we should split the Issue to sth consumption relaxed. Sorry for the hijacking.
i did again a tial: now i get values
getOelverbrauch = 0.000000
getOeldurchsatz = 65280.000000
yes i have the (20CB) vitodens300
Calculation: The formula used is:Consumption=(Burner Hours × 100 Burner Modulation ×Gas Rate×Burner Efficiency) Example: If the burner has been active for 10 hours, running at 50% modulation, with a gas rate of 1.0 cubic meters per hour at 100% modulation, and an efficiency of 85%, the calculation would be:Consumption=(10× 100/50 ×1.0×0.85)=4.25 cubic meters
sensor:
- platform: template
sensors:
gas_consumption:
friendly_name: "Gas Consumption"
value_template: >
{% set burner_hours = states('sensor.burner_hours') | float %}
{% set burner_modulation = states('sensor.burner_modulation') | float %}
{% set burner_efficiency = 0.85 %} # Example efficiency, adjust as needed
{% set gas_rate = 1.0 %} # Example gas rate in cubic meters per hour at 100% modulation, adjust as needed
{% set consumption = (burner_hours * burner_modulation * gas_rate * burner_efficiency) / 100 %}
{{ consumption | round(2) }}`