WeHeat in Home Assistant

WeHeat in Home Assistant

Een van de voornaamste redenen om Home Assistant te gebruiken is het inzichtelijk maken van ons energieverbruik (los van alle automatisering). Nu de WeHeat-warmtepomp (spoiler!) geïnstalleerd is, was een van de eerste stappen dan ook het goed opnemen van die data in Home Assistant. En omdat dat niet helemaal zonder slag of stoot ging, is het een kort berichtje waard.

De documentatie

Als we naar de officiële WeHeat-integratie op de Home Assistant-pagina kijken, zou de volgende data beschikbaar moeten zijn:


Sensors

The WeHeat integration provides the following sensors:

  • Output power: Thermal power added to the water in Watts
  • Input power: Electrical power in Watts
  • COP: The Coefficient of Performance between the above two power measurements
  • Water inlet temperature: The heat pump water inlet temperature in °C
  • Water outlet temperature: The heat pump water outlet temperature in °C
  • Water target temperature: Target for the water temperature in °C
  • Central heating inlet temperature: The central heating inlet temperature in °C
  • Central heating flow: The flow volume of the central heating pump
  • Outside temperature: Outside temperature in °C
  • Current room temperature: Current room temperature in °C
  • Room temperature setpoint: Setpoint for the room temperature in °C
  • Electricity used: Total electricity used in kWh
  • Energy output: Total output generated in kWh
  • State: The current heat pump state
  • DHW top temperature: The domestic hot water temperature in the top of the vessel in °C (optional)
  • DHW bottom temperature: The domestic hot water temperature in the bottom of the vessel in °C (optional)
  • DHW pump flow: The flow volume of the DHW pump (optional)
  • Compressor RPM: The rpm of the compressor fan
  • Compressor percentage: The percentage of the compressor fan (can exceed 100% for some models)

Afhankelijk van het model of de installatie kunnen daarnaast ook enkele statussen van de binnenunit beschikbaar zijn:

  • Indoor unit water pump
  • Indoor unit auxiliary water pump
  • Indoor unit DHW valve or water pump
  • Indoor unit gas boiler heating allowed — kan True zijn, ook als er geen gasboiler aanwezig is
  • Indoor unit electric heater

Een snelle blik in Home Assistant zelf laat echter zien dat het totale energieverbruik (Electricity used) ontbreekt in het overzicht. En laat dat nu net de waarde zijn die ik het hardste nodig heb voor het energiedashboard.

Na wat zoekwerk blijkt dit een bekend issue te zijn: de data was onvoldoende betrouwbaar en wordt daarom al ruim een half jaar niet meer meegestuurd. Zie ook deze issue op GitHub.

Maar geen probleem — dan maken we zelf wel een oplossing.

De oplossing

Omdat we wél het actuele verbruik hebben, kunnen we op basis daarvan het totale verbruik redelijk nauwkeurig berekenen. We hebben daarvoor een paar aanpassingen nodig. En als we dan toch bezig zijn, kunnen we meteen de splitsing van het verbruik maken naar de verschillende functies van de warmtepomp. In ons geval (full electric) onderscheid ik de volgende categorieën:

  • Warm (tap)water
  • CV-warmte
  • Defrost-cycles
  • Legionella-cycles

Hiervoor maken we een aantal templates aan in de configuration.yaml en templates.yaml.

configuration.yaml (zodat we templates kunnen bundelen in een andere file voor meer overzicht):

template: !include templates.yaml

templates.yaml:

- sensor:
    - name: "WeHeat Power CV"
      state: >-
        {% if states('sensor.whpomp') == 'heating' %}
          {{ states('sensor.whpomp_input_power') | float }}
        {% else %}
          0
        {% endif %}
      unit_of_measurement: "W"
      device_class: "power"

    - name: "WeHeat Power DHW"
      state: >-
        {% if states('sensor.whpomp') == 'dhw' %}
          {{ states('sensor.whpomp_input_power') | float }}
        {% else %}
          0
        {% endif %}
      unit_of_measurement: "W"
      device_class: "power"

    - name: "WeHeat Power Legionella"
      state: >-
        {% if states('sensor.whpomp') == 'legionella_prevention' %}
          {{ states('sensor.whpomp_input_power') | float }}
        {% else %}
          0
        {% endif %}
      unit_of_measurement: "W"
      device_class: "power"

    - name: "WeHeat Power Defrost"
      state: >-
        {% if states('sensor.whpomp') == 'defrosting' %}
          {{ states('sensor.whpomp_input_power') | float }}
        {% else %}
          0
        {% endif %}
      unit_of_measurement: "W"
      device_class: "power"

We splitsen hier het stroomverbruik op basis van de status van de warmtepomp en registreren zo het verbruik per status.

Na het aanmaken van deze losse waardes kunnen we ze geschikt maken voor het energiedashboard. Dit doen we opnieuw in configuration.yaml:

sensor:
  - platform: integration
    source: sensor.whpomp_input_power
    name: energieverbruik_weheat_lifetime
    unit_prefix: k
    round: 2
    method: left

  - platform: integration
    source: sensor.weheat_power_dhw
    name: energieverbruik_weheat_dhw
    unit_prefix: k
    round: 2
    method: left

  - platform: integration
    source: sensor.weheat_power_cv
    name: energieverbruik_weheat_cv
    unit_prefix: k
    round: 2
    method: left

  - platform: integration
    source: sensor.weheat_power_defrost
    name: energieverbruik_weheat_defrost
    unit_prefix: k
    round: 2
    method: left

  - platform: integration
    source: sensor.weheat_power_legionella
    name: energieverbruik_weheat_legionella
    unit_prefix: k
    round: 2
    method: left

Met de bovenstaande regels zorgt Home Assistant er op basis van het actuele verbruik en de verstreken tijd voor dat het totale energieverbruik wordt berekend. Als er veel fluctuaties in het verbruik zitten of de updates ver uit elkaar liggen, is deze benadering minder precies. Maar aangezien het verbruik van de warmtepomp vrij stabiel is, komen we ruim nauwkeurig genoeg uit.

Het dashboard

Na het doen van de bovenstaande aanpassingen moet je Home Assistant één keer opnieuw opstarten om de nieuwe sensoren beschikbaar te maken. Zodra dat gedaan is, kun je ze toevoegen als “verbruikers” in het energiedashboard (Instellingen → Dashboards → Energie).

Let er op dat de “Lifetime”-waarde als parent wordt ingesteld voor de overige WeHeat-waardes, om te voorkomen dat ze dubbel worden geteld.

Energy flow door het huishouden
Verbruik per uur

Sneak peek

Ondertussen werk ik ook aan een dashboard dat inzicht moet geven in de werking en performance van het systeem. Het is zeker nog niet af, maar hieronder alvast een kleine indicatie van wat er straks allemaal te zien is.


Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *