Skip to content

ViCare Integration: mapping of HA hvac and water_heater modes to Viessmann Heat Pump #145048

Description

@guidoising

The problem

@CFenner

First: too all contributors - many thanks for this great piece of work!

Thanks to the ViCare integration, I could easily and successfully integrate our newly installed Viessmann Vitocal 252-A heat pump (Vitocal 252-A AWOT-E-AC-AF 251.A10 400 V, to be exact) into HA. Everything is working as expected (or at least "as designed") with the following exception:

"I cannot find a simple way to unambiguously distinguish the modes "heat pump is loading the 190 L warm-water buffer" from "heat pump is actually heating the floor heating / loading the 200 L external heating-water buffer)"

Hint: the state of "water_heater.e3_vitocal_warmwasser" does not do the trick! It is 'off' in both cases.
Hint: the state of "climate.e3_vitocal_heizung" does not do the trick either. It is 'heating' in both cases.

The state of water_heater.e3_vitocal_warmwasser seems to be related to the instantaneous water heater (aka "Durchlauferhitzer") inside the indoor-unit, that is operated up to 9kW electrical power, either as an emergency backup heating device when the heat pump is faulty, or in bi-valence mode, when the outdoor unit cannot generate enough heat, due to cold outside temperatures.

Being a physicist, I have a tendency to not simply believe in measurements taken by others, in this case the Viessmann API or ViCare App, but wanting to perform an independent measurement, e.g. of the true Coefficient of Performance (COP). For this purpose I have installed a Fronius SmartMeter TS 65A-3 not only for the mains supply of the house, but also a second TS 65A-3 SmartMeter for the complete heat pump installation, thus indoor unit, outdoor unit, circulation pump and heating circuit pump are included in my measurement of "total heat pump installation power consumption".

The total heat generated is calculated from the "Volumenstrom [m³/h]" (sensor.e3_vitocal_volumenstrom) and the difference dT between the forward and return water temperatures (aka Vorlauf- and Rücklauftemperatur) as measured by two DS18B20 sensors via ESP home. The rest is just a simple formula including the constants 'density of water' = 998 kg/m³ and 'thermal capacity of water' = 4.18 kJ/(kg K).

COP = thermal power / electrical power - provides an end-to-end measure for the performace of the complete installation.
This works remarkably well and can be nicely visualized.

Image

What can be seen from this plot, is the differently shaped patterns of heating vs. making warm water:

  • actual heating runs at Volumenstrom ~1.5m³/h and small dT ~ 2°C, resulting in a COP of up to 5 (grey line in second diagram, right-hand scale)
  • heating up warm water in ECO mode runs at Volumenstrom ~0.8m³/h, dT of 3-4°C, resulting in a COP of 4 dropping to even below 1, as the water temperature reaches 55°C or higher.

Image

In both cases, the status of climate.e3_vitocal_heizung = 'heating' and water_heater.e3_vitocal_warmwasser = 'off'

Clearly, the Viessmann back-end knows what the heat pump is doing when, since in the Analyse' section of the App they break down the split into "Heizen, Warmwasser und Kühlen" of electrical power and heat generated.

But the 'flag' to break this down is possibly not exposed through the Viessmann API? And if is exposed, then how would this be mapped to an HA entity? Maybe I'm totally missing a trick or I'm overlooking something obvious. Maybe not...
Hint: the energy counters provided in the App are a) stuck and through the API and b) way off the reality, from what I can see after just a couple of days, comparing my "bottom-up" measurements with the displayed values.

Any input is welcome. I hope it is acceptable to raise this as an 'issue' - no offence meant.

Meanwhile I intend to implement a work-around, to set a binary template sensor based on Volumenstrom < or > 1 m³/h and monitor if this work-around holds for all weather conditions over the year.

Guido

What version of Home Assistant Core has the issue?

2025.5.1

What was the last working version of Home Assistant Core?

No response

What type of installation are you running?

Home Assistant OS

Integration causing the issue

Viessmann ViCare

Link to integration documentation on our website

https://www.home-assistant.io/integrations/vicare#action-vicareset_vicare_mode

Diagnostics information

No response

Example YAML snippet

# Vorzeichen Leistungswert invertieren -> Richtung des Stromflusses in Fronius 'negativ'
      wp_elektrische_leistung:
        friendly_name: "WP Elektrische Leistung"
        unique_id: "myuuid_1500"
        unit_of_measurement: W
        device_class: power
        value_template: >
          {% set Leistung = states('sensor.smart_meter_ts_65a_3_warmepumpe_wirkleistung') | float(0) %}
          {{ ( Leistung * -1 ) | round(3) }} 
          
    # Thermische Leistung P_th = Cp * m * dT
    # Cp: Wärmekapazität von Heizwasser: 4,18 kJ/(kg K) bzw. 4180 J/(kg K)
    # m: Massenstrom Heizwasser kg/s (berechnet sich aus: Volumenstrom/3600 * Dichte)
    # volumenstrom: Volumenstrom Heizwasser der Wärmepumpe m³/h
    # D: Dichte Heizwasser 998 kg/m3
    # VL: Vorlauftemperatur WP gemessen am Übergabepunkt im Haus °C
    # RL: Rücklauftemperatur WP gemessen am Übergabepunkt im Haus °C
    # dT: Temperaturdifferenz zw. VL - RL °C
      wp_thermische_leistung:
        friendly_name: "WP Thermische Leistung"
        unique_id: "myuuid_1510"
        unit_of_measurement: W
        device_class: power
        value_template: >
          {% set volumenstrom = states('sensor.e3_vitocal_volumenstrom') | float(0) %}
          {% set Cp = 4180 %}
          {% set D = 998 %}
          {% set m = volumenstrom / 3600 * D | float(0) %}
          {% set VL = states('sensor.wp_wp_vorlauf') | float(0) %}          
          {% set RL = states('sensor.wp_wp_ruecklauf') | float(0) %}
          {% set dT = VL - RL | float(0) %}
          {% set P_th = Cp * m * dT | float(0) %}   
          {{ ( P_th ) | round(3) }}

Anything in the logs that might be useful for us?

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions