You’re welcome. Sorry if I took it too broadly even things that are obvious to you . My “disability” .
I’m attaching my current vito.xml in the attachment.
I have the device mode control (off/heating/hot-water) worked out. So I just don’t know about the “reduced” mode option (I can’t even set it directly on the boiler; I only have 3 options using the physical buttons on the boiler). But it is true that there is a “reduced temperature required” setting (in the boiler). I thought it was the temperature when the boiler is in “heating” mode but out of schedule (possibly holiday mode)…But maybe I’m wrong. Do you really have 4 operating modes?
But whatever - this was my main requirement why I started the integration in the first place (we have multiple heating systems and to allow automatic switching). I had a problem with this and struggled with it too. I could read the status of the boiler with no problem using it (I assume you could too):
<!-- Provozni mod kotle - to co je videt na ovladani -->
<command name="getBetriebArt" protocmd="getaddr">
<addr>2301</addr>
<len>1</len>
<unit>BA</unit>
<description>Betriebsart</description>
</command>
But I couldn’t write it down. After a lot of figuring, I found out that my boiler was not responding to a boiler mode change, but to a mode change of the first heating circuit. I write to this register as follows:
<!-- SET - Nastaveni Provozni mod TO1 - to ovlivnuje mod celeho kotle -->
<command name='setBetriebArtM1' protocmd='setaddr'>
<addr>2323</addr>
<len>1</len>
<unit>BA</unit>
<description>Setze Betriebsart M1</description>
</command>
and read it by:
<!-- Provozni mod TO1 -->
<command name='getBetriebArtM1' protocmd='getaddr'>
<addr>2323</addr>
<len>1</len>
<unit>BA</unit>
<description>Betriebsart M1</description>
</command>
My boiler behaves like this:
setBetriebArtM1 = NORM --> getBetriebArt = H+WW (heating and hot water)
setBetriebArtM1 = RED --> getBetriebArt = WW (hot water)
setBetriebArtM1 = WW --> getBetriebArt = ABSCHALT (probably antifrost mode).
of course getBetriebArtM1 returns the heating circuit status values (NORM, RED, WW).
Here is my temporary vito.xml:
<?xml version="1.0"?>
<vito>
<devices>
<device ID="2098" name="V200KW2" protocol="KW2"/>
<device ID="2053" name="GWG_VBEM" protocol="GWG"/>
<device ID="20CB" name="VScotHO1" protocol="P300"/> <!-- NAS KOTEL -->
<device ID="2094" name="V200KW1" protocol="KW2"/>
</devices>
<commands>
<!-- ..... Kotel ..... -->
<!-- Provozni mod kotle - to co je videt na ovladani -->
<command name="getBetriebArt" protocmd="getaddr">
<addr>2301</addr>
<len>1</len>
<unit>BA</unit>
<description>Betriebsart</description>
</command>
<!-- Pozice ventilu -> TUV/Topeni -->
<command name="getUmschaltventil" protocmd="getaddr">
<addr>0A10</addr>
<len>1</len>
<unit>USV</unit>
<description>Ermittle den Status des Umschaltventils WW/Heizen</description>
</command>
<!-- INFO K HORAKU -->
<!-- Aktualni vykon horaku -->
<command name="getBrennerStatus" protocmd="getaddr">
<addr>55D3</addr>
<len>1</len>
<unit>RT</unit>
<description>Ermittle den Brennerstatus</description>
<device ID="20CB">
<addr>55D3</addr>
<len>1</len>
<unit>PR1</unit>
</device>
</command>
<!-- Provozni hodiny horaku -->
<command name="getBrennerStunden1" protocmd="getaddr">
<addr>08A7</addr>
<len>4</len>
<unit>CS</unit>
<description>Ermittle die Brennerstunden Stufe 1</description>
</command>
<!-- ..... TO1 ..... -->
<!-- Provozni mod TO1 -->
<command name='getBetriebArtM1' protocmd='getaddr'>
<addr>2323</addr>
<len>1</len>
<unit>BA</unit>
<description>Betriebsart M1</description>
</command>
<!-- SET - Nastaveni Provozni mod TO1 - to ovlivnuje mod celeho kotle -->
<command name='setBetriebArtM1' protocmd='setaddr'>
<addr>2323</addr>
<len>1</len>
<unit>BA</unit>
<description>Setze Betriebsart M1</description>
</command>
<!-- ..... Tepla voda ..... -->
<!-- Aktualni teplota teple vody -->
<command name="getTempWWist" protocmd="getaddr">
<addr>0804</addr>
<len>2</len>
<unit>UT</unit>
<description>A</description>
</command>
<!-- Pozadovana teplota teple vody -->
<command name="getTempWWsoll" protocmd="getaddr">
<addr>6300</addr>
<len>1</len>
<unit>UTI</unit>
<description>Ermittle die Warmwassersolltemperatur in Grad C</description>
</command>
<!-- SET - Nastaveni pozadovane teploty teple vody -->
<command name="setTempWWsoll" protocmd="setaddr">
<addr>6300</addr>
<len>1</len>
<unit>UTI</unit>
<description>Setze die Warmwassersolltemperatur in Grad C</description>
</command>
<!-- .....SOLAR..... -->
<!-- Teplota kolektoru -->
<command name="getTempKol" protocmd="getaddr">
<addr>6564</addr>
<len>2</len>
<unit>UT</unit>
<description>Ermittle die Kollektortemperatur in Grad C</description>
<device ID="2053"/>
</command>
<!-- Provozni hodiny solaru -->
<command name="getSolarStunden" protocmd="getaddr">
<addr>6568</addr>
<len>2</len>
<unit>CO</unit>
<description>Solar Betriebsstunden</description>
<device ID="2053"/>
</command>
<!-- Celkova dodana kumulativni energie -->
<command name="getSolarLeistung" protocmd="getaddr">
<addr>6560</addr>
<len>4</len>
<unit>CO</unit>
<description>Solar Leistung Gesamt</description>
<device ID="2053"/>
</command>
<!-- ..... Chyby..... -->
<command name="getError0" protocmd="getaddr">
<addr>7507</addr>
<len>9</len>
<unit>ES</unit>
<description>Ermittle Fehlerhistory Eintrag 1</description>
<device ID="2053">
<addr>3F</addr>
<len>1</len>
<unit>ESG</unit>
</device>
</command>
<command name="getError1" protocmd="getaddr">
<addr>7510</addr>
<len>9</len>
<unit>ES</unit>
<description>Ermittle Fehlerhistory Eintrag 2</description>
<device ID="2053"/>
</command>
<command name="getError2" protocmd="getaddr">
<addr>7519</addr>
<len>9</len>
<unit>ES</unit>
<description>Ermittle Fehlerhistory Eintrag 3</description>
<device ID="2053"/>
</command>
<command name="getError3" protocmd="getaddr">
<addr>7522</addr>
<len>9</len>
<unit>ES</unit>
<description>Ermittle Fehlerhistory Eintrag 4</description>
<device ID="2053"/>
</command>
<command name="getError4" protocmd="getaddr">
<addr>752B</addr>
<len>9</len>
<unit>ES</unit>
<description>Ermittle Fehlerhistory Eintrag 5</description>
<device ID="2053"/>
</command>
<command name="getError5" protocmd="getaddr">
<addr>7534</addr>
<len>9</len>
<unit>ES</unit>
<description>Ermittle Fehlerhistory Eintrag 6</description>
<device ID="2053"/>
</command>
<command name="getError6" protocmd="getaddr">
<addr>753D</addr>
<len>9</len>
<unit>ES</unit>
<description>Ermittle Fehlerhistory Eintrag 7</description>
<device ID="2053"/>
</command>
<command name="getError7" protocmd="getaddr">
<addr>7546</addr>
<len>9</len>
<unit>ES</unit>
<description>Ermittle Fehlerhistory Eintrag 8</description>
<device ID="2053"/>
</command>
<command name="getError8" protocmd="getaddr">
<addr>754F</addr>
<len>9</len>
<unit>ES</unit>
<description>Ermittle Fehlerhistory Eintrag 9</description>
<device ID="2053"/>
</command>
<command name="getError9" protocmd="getaddr">
<addr>7558</addr>
<len>9</len>
<unit>ES</unit>
<description>Ermittle Fehlerhistory Eintrag 10</description>
<device ID="2053"/>
</command>
<!--TMP SEKCE!!!!!!!TMPSEKCE! TMP -->
<!-- SOLAR -->
<command name="getSolarStatusWW" protocmd="getaddr">
<addr>6551</addr>
<len>1</len>
<unit>RT</unit>
<description>Ermittle den Status der Nachladeunterdrueckung</description>
<device ID="2053"/>
</command>
<command name="getTempS4" protocmd="getaddr">
<addr>0124</addr>
<len>1</len>
<unit>UT1</unit>
<description>Ermittle die Temperatur S4 in Grad C</description>
<device ID="2053"/>
</command>
<command name="getPumpeDrehzahlSolar" protocmd="getaddr">
<addr>6552</addr>
<len>1</len>
<unit>RT</unit>
<description>Ermittle die Drehzahl der Internen Pumpe</description>
<device ID="2053"/>
<device ID="20CB">
<addr>6552</addr>
<len>2</len>
<unit>PR2</unit>
</device>
</command>
</commands>
</vito>
And here is the yaml file for configuration to HA (a bit of “confusion” when controlling the boiler mode):
mqtt:
select:
#Ovládání pracovního módu kotel
- name: "KOTEL Pracovní mód"
#expire_after: 30
unique_id: "vcontroldgetBetriebArt"
state_topic: "openv/getBetriebArt"
icon: mdi:source-fork
device:
identifiers: vcontrold
name: Viessmann kotel
manufacturer: Viessmann
model: "Vitodens 200, Vitotronic 200 (HO1) - 20CB"
command_topic: "openv/setBetriebArtM1"
options:
- "Topení + TUV"
- "Jen TUV"
- "Vypínací provoz"
command_template: |-
{% if value == "Topení + TUV" %}
{{"NORM"}}
{% elif value == "Jen TUV" %}
{{"RED"}}
{% elif value == "Vypínací provoz" %}
{{"WW"}}
{% endif %}
value_template: >
{% if value == 'H+WW' %}
{{"Topení + TUV"}}
{% elif value == 'WW' %}
{{"Jen TUV"}}
{% elif value == 'ABSCHALT' %}
{{"Vypínací provoz"}}
{% endif %}
climate:
- name: "Teplá voda"
unique_id: "vcontroldWWclimate"
object_id: "vcontroldWWclimate"
current_temperature_topic: "openv/getTempWWist"
temperature_command_topic: "openv/setTempWWsoll"
temperature_state_topic: "openv/getTempWWsoll"
action_topic: "openv/getBrennerStatus"
action_template: |-
{% if (is_state('sensor.vcontroldgetumschaltventil', 'TUV') and (value|float > 0)) %}
heating
{% else %}
idle
{% endif %}
mode_state_topic: "openv/getBetriebArt"
mode_state_template: |-
{% if value == 'H+WW' %}
heat
{% elif value == 'WW' %}
heat
{% else %}
off
{% endif %}
mode_command_topic: "openv/setBetriebArtM1"
mode_command_template: |-
{% if value == "off" %}
{{"WW"}}
{% elif value == "heat" %}
{{"RED"}}
{% endif %}
min_temp: 35
max_temp: 60
modes:
- "off"
- "heat"
device:
identifiers: vcontrold
sensor:
#Sensory Kotel
- name: "KOTEL Pracovní mód - sensor"
expire_after: 30
unique_id: "vcontroldgetBetriebArt"
object_id: "vcontroldgetBetriebArt"
state_topic: "openv/getBetriebArt"
icon: mdi:source-fork
value_template: |-
{% if value == 'H+WW' %}
Topení + TUV
{% elif value == 'WW' %}
Jen TUV
{% elif value == 'ABSCHALT' %}
Vypínací provoz
{% else %}
Jiný neznámý stav - kontrola!!!
{% endif %}
device:
identifiers: vcontrold
- name: "KOTEL Výkon hořáku"
expire_after: 30
unique_id: "vcontroldgetBrennerStatus"
object_id: "vcontroldgetBrennerStatus"
state_topic: "openv/getBrennerStatus"
value_template: |-
{{ value | round(0) }}
device_class: power_factor
unit_of_measurement: "%"
icon: mdi:gas-burner
device:
identifiers: vcontrold
- name: "KOTEL Ventil"
expire_after: 30
unique_id: "vcontroldgetUmschaltventil"
object_id: "vcontroldgetUmschaltventil"
state_topic: "openv/getUmschaltventil"
value_template: |-
{% if value == 'Heizen' %}
Topení
{% elif value == 'Warmwasser' %}
TUV
{% else %}
Jiný neznámý stav - kontrola!!!
{% endif %}
icon: mdi:pipe-valve
device:
identifiers: vcontrold
#Sensory TO1
- name: "TO1 Pracovní mód"
expire_after: 30
unique_id: "vcontroldgetBetriebArtM1"
object_id: "vcontroldgetBetriebArtM1"
state_topic: "openv/getBetriebArtM1"
icon: mdi:heating-coil
device:
identifiers: vcontrold
#Sensory Tepla voda
- name: "TUV aktuální teplota (úr.3)"
expire_after: 30
unique_id: "vcontroldgetTempWWist"
object_id: "vcontroldgetTempWWist"
device_class: temperature
state_topic: "openv/getTempWWist"
force_update: true
unit_of_measurement: "°C"
icon: mdi:thermometer-chevron-up
value_template: |-
{{ value | round(2) }}
device:
identifiers: vcontrold
- name: "TUV požadovaná teplota"
expire_after: 30
unique_id: "vcontroldgetTempWWsoll"
object_id: "vcontroldgetTempWWsoll"
device_class: temperature
state_topic: "openv/getTempWWsoll"
unit_of_measurement: "°C"
icon: mdi:thermometer-check
value_template: |-
{{ value | round(2) }}
device:
identifiers: vcontrold
#Sensory Solar
- name: "SOLAR Teplota kolektorů"
expire_after: 30
unique_id: "vcontroldgetTempKol"
object_id: "vcontroldgetTempKol"
device_class: temperature
state_topic: "openv/getTempKol"
unit_of_measurement: "°C"
icon: mdi:solar-panel
value_template: |-
{{ value | round(2) }}
device:
identifiers: vcontrold
#TEMP: - Nevim, co toje?
- name: "SOLAR ?Status?"
expire_after: 30
unique_id: "vcontroldgetSolarStatusWW"
object_id: "vcontroldgetSolarStatusWW"
state_topic: "openv/getSolarStatusWW"
#icon: mdi:alert-circle
device:
identifiers: vcontrold
- name: "SOLAR Celková vyrobená energie"
expire_after: 30
unique_id: "vcontroldgetSolarLeistung"
object_id: "vcontroldgetSolarLeistung"
device_class: energy
state_topic: "openv/getSolarLeistung"
unit_of_measurement: "kWh"
value_template: |-
{{ value | round(2) }}
icon: mdi:solar-power
device:
identifiers: vcontrold
- name: "SOLAR pokus - pumapa"
expire_after: 30
unique_id: "vcontroldgettestpumpa"
object_id: "vcontroldgettestpumpa"
state_topic: "openv/getPumpeDrehzahlSolar"
#icon: mdi:alert-circle
device:
identifiers: vcontrold
#Errors
- name: "KOTEL Error0"
expire_after: 30
unique_id: "vcontroldgetError0"
object_id: "vcontroldgetError0"
state_topic: "openv/getError0"
entity_category: diagnostic
icon: mdi:alert-circle
device:
identifiers: vcontrold
- name: "KOTEL Error1"
expire_after: 30
unique_id: "vcontroldgetError1"
object_id: "vcontroldgetError1"
state_topic: "openv/getError1"
entity_category: diagnostic
icon: mdi:alert-circle
device:
identifiers: vcontrold
- name: "KOTEL Error2"
expire_after: 30
unique_id: "vcontroldgetError2"
object_id: "vcontroldgetError2"
state_topic: "openv/getError2"
icon: mdi:alert-circle
entity_category: diagnostic
device:
identifiers: vcontrold
- name: "KOTEL Error3"
expire_after: 30
unique_id: "vcontroldgetError3"
object_id: "vcontroldgetError3"
state_topic: "openv/getError3"
icon: mdi:alert-circle
entity_category: diagnostic
device:
identifiers: vcontrold
- name: "KOTEL Error4"
expire_after: 30
unique_id: "vcontroldgetError4"
object_id: "vcontroldgetError4"
state_topic: "openv/getError4"
entity_category: diagnostic
icon: mdi:alert-circle
device:
identifiers: vcontrold
- name: "KOTEL Error5"
expire_after: 30
unique_id: "vcontroldgetError5"
object_id: "vcontroldgetError5"
state_topic: "openv/getError5"
icon: mdi:alert-circle
entity_category: diagnostic
device:
identifiers: vcontrold
- name: "KOTEL Error6"
expire_after: 30
unique_id: "vcontroldgetError6"
object_id: "vcontroldgetError6"
state_topic: "openv/getError6"
icon: mdi:alert-circle
entity_category: diagnostic
device:
identifiers: vcontrold
- name: "KOTEL Error7"
expire_after: 30
unique_id: "vcontroldgetError7"
object_id: "vcontroldgetError7"
state_topic: "openv/getError7"
icon: mdi:alert-circle
entity_category: diagnostic
device:
identifiers: vcontrold
- name: "KOTEL Error8"
expire_after: 30
unique_id: "vcontroldgetError8"
object_id: "vcontroldgetError8"
state_topic: "openv/getError8"
icon: mdi:alert-circle
entity_category: diagnostic
device:
identifiers: vcontrold
- name: "KOTEL Error9"
expire_after: 30
unique_id: "vcontroldgetError9"
object_id: "vcontroldgetError9"
state_topic: "openv/getError9"
icon: mdi:alert-circle
entity_category: diagnostic
device:
identifiers: vcontrold
And I have a problem with party mode too, I didn’t get it right. It didn’t work. I read somewhere that when activating it, you need to set the party temperature first (different from “normal”) and then turn on the party mode. But that didn’t work either…I’m sorry and I’ll be glad if you can figure it out . If I do I’ll definitely let you know
Is this what you are looking for? I hope I’m doing it right, but nothing else worked for me…maybe it will work for you too .