homeassistant-vcontrol icon indicating copy to clipboard operation
homeassistant-vcontrol copied to clipboard

My mqtt configuration.yaml

Open Bjoern3003 opened this issue 2 years ago • 34 comments

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

Bjoern3003 avatar Jan 12 '23 21:01 Bjoern3003

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

Bjoern3003 avatar Jan 12 '23 23:01 Bjoern3003

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?

Schm1tz1 avatar Jan 13 '23 05:01 Schm1tz1

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.

Qbunjo avatar Feb 03 '23 21:02 Qbunjo

Hi, please try this value_template for getBrennerStatus.

value_template: "{% if(value|int == 0) %}OFF{% else %}ON{% endif %}"

Bjoern3003 avatar Feb 03 '23 21:02 Bjoern3003

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

Qbunjo avatar Feb 03 '23 21:02 Qbunjo

No, its quoted. If have removed the ' before and after 0 to check for integer and not as string.

Bjoern3003 avatar Feb 03 '23 21:02 Bjoern3003

Indeed. Thank you.

Qbunjo avatar Feb 03 '23 21:02 Qbunjo

Thank you for reporting.

Bjoern3003 avatar Feb 03 '23 22:02 Bjoern3003

Does anyone have a template for setting individual heating schedules? "setTimerMoHeizen" i.e. TIA.

Huskerdu24 avatar Sep 30 '23 09:09 Huskerdu24

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!

skihoff avatar Jan 13 '24 17:01 skihoff

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).

dk1305hb avatar Jan 14 '24 11:01 dk1305hb

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.

skihoff avatar Jan 14 '24 17:01 skihoff

Do you use your own mqtt broker? Can you check with MQTT Explorer if your values are received correctly? Bildschirmfoto 2024-01-14 um 18 37 13 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" ?

dk1305hb avatar Jan 14 '24 17:01 dk1305hb

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!

skihoff avatar Jan 14 '24 20:01 skihoff

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.

Raudi1 avatar Feb 04 '24 14:02 Raudi1

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.

mxcxpx avatar May 05 '24 19:05 mxcxpx

command_template: |- property command template is not allowed

i get this error wenn i put in configuration.yaml

mxcxpx avatar Feb 07 '25 10:02 mxcxpx

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.

do you know how to get the values Solarthermie (warm Water from roof) ?

mxcxpx avatar Feb 07 '25 11:02 mxcxpx

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.

Raudi1 avatar Feb 11 '25 18:02 Raudi1

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 ?

mxcxpx avatar Mar 29 '25 10:03 mxcxpx

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: Image

timaba avatar Mar 31 '25 21:03 timaba

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

mxcxpx avatar Apr 01 '25 06:04 mxcxpx

for getPumpeDrehzahlSolar i do not get any values , but that is ok for me

mxcxpx avatar Apr 01 '25 08:04 mxcxpx

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.

timaba avatar Apr 01 '25 09:04 timaba

getVolumenstromsensor do not work for me

i get promt error message:

SRV ERR: command unknown

mxcxpx avatar Apr 01 '25 09:04 mxcxpx

this must be without semicolon value_template: "{% if(value|int == '0')

correct is
value_template: "{% if(value|int == 0)

otherwise it gives no values

mxcxpx avatar Apr 01 '25 09:04 mxcxpx

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.

mxcxpx avatar Apr 01 '25 09:04 mxcxpx

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.

timaba avatar Apr 01 '25 11:04 timaba

i did again a tial: now i get values

getOelverbrauch = 0.000000
getOeldurchsatz = 65280.000000

yes i have the (20CB) vitodens300

mxcxpx avatar Apr 01 '25 11:04 mxcxpx

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) }}`

mxcxpx avatar Apr 12 '25 08:04 mxcxpx