Het middelgrote HAEO - Home Assistant Energy Optimizer Topic

Pagina: 1
Acties:

  • LigeTRy
  • Registratie: Juli 2010
  • Laatst online: 11:46
Naast EMHASS, EVCC etc is er ook een nieuwe speler op de markt. Home assistant energy optimizer

Git Repo: hass-energy/haeo: Home Assistant Energy Optimiser

HAEO werkt met forecast sensoren van HAFO: HAFO Documentation - HAFO Documentation

(topicstart moet nog aangevuld worden)

Hierbij een link naar een korte post in het victron topic over HAEO: Het grote Victron aansturing topic - Duurzame energie en installaties - GoT

Dit topic is om configuraties, problemen, oplossingen en ideeen te bespreken :)

[ Voor 16% gewijzigd door LigeTRy op 28-05-2026 13:18 ]


  • Adze
  • Registratie: Juli 2001
  • Laatst online: 16:11

Adze

CCNP !

Dank voor het starten van dit topic. Ik ben van plan mijn Sigenergy systeem volledig vanuit HA mbv HAEO aan te sturen. Ben nog aan het puzzelen. Vandaag HAEO redelijk werkend gekregen, maar was meerdere uren aan het kutten met grid prijzen. Om anderen te behoeden voor ook vele uren tijdsverlies, deel ik graag mijn ervaring met HAEO grid instellingen hier.

Allereerst adviseer ik je gebruik te maken van de HACS versie van Nordpool. Dit scheelt een extra stap. De standaard integratie van Nordpool heeft geen "raw_today" en "raw_tomorrow" attributen, die HAEO wel gebruikt.

Wanneer je de HACS versie hebt geinstalleerd, creëer je één sensor zonder VAT (belasting) en zonder extra kosten, dus enkel de kale EPEX waarden. Kies natuurlijk wel de juiste regio. Ik heb voor dit voorbeeld mijn sensor hernoemt naar "sensor.nordpool", wel zo makkelijk.

Daarna moet je zelf nog twee sensor templates aanmaken gevuld met nordpool sensor data. Daar ging voor mij het meeste werk inzitten. Samen met Claude + ChatGPT ben ik tot de volgende sensor template gekomen:
code:
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
template:
  - sensor:
      - name: "Grid Import Price"
        unique_id: grid_import_price
        unit_of_measurement: "EUR/kWh"
        state_class: measurement
        device_class: monetary
        icon: mdi:flash
        state: >
          {% set np = state_attr('sensor.nordpool', 'raw_today') %}
          {% if np %}
            {% set now_ts = now().timestamp() %}
            {% set ns = namespace(price=0) %}
            {% for h in np %}
              {% if h['start'].timestamp() <= now_ts and h['end'].timestamp() > now_ts %}
                {% set ns.price = h['value'] %}
              {% endif %}
            {% endfor %}
            {{ (ns.price * 1.21 + 0.110848 + 0.01) | round(3) }}
          {% else %}
            0
          {% endif %}
        attributes:
          forecast: >
            {% set np_today = state_attr('sensor.nordpool', 'raw_today') or [] %}
            {% set np_tomorrow = state_attr('sensor.nordpool', 'raw_tomorrow') or [] %}
            {% set ns = namespace(result=[]) %}
            {% for h in np_today + np_tomorrow %}
              {% set ns.result = ns.result + [{'time': h['start'].isoformat(), 'value': (h['value'] * 1.21 + 0.110848 + 0.01) | round(3)}] %}
            {% endfor %}
            {{ ns.result }}

      - name: "Grid Export Price"
        unique_id: grid_export_price
        unit_of_measurement: "EUR/kWh"
        state_class: measurement
        device_class: monetary
        icon: mdi:flash
        state: >
          {% set np = state_attr('sensor.nordpool', 'raw_today') %}
          {% if np %}
            {% set now_ts = now().timestamp() %}
            {% set ns = namespace(price=0) %}
            {% for h in np %}
              {% if h['start'].timestamp() <= now_ts and h['end'].timestamp() > now_ts %}
                {% set ns.price = h['value'] %}
              {% endif %}
            {% endfor %}
            {{ (ns.price * 1.21 + 0.110848 - 0.01) | round(3) }}
          {% else %}
            0
          {% endif %}
        attributes:
          forecast: >
            {% set np_today = state_attr('sensor.nordpool', 'raw_today') or [] %}
            {% set np_tomorrow = state_attr('sensor.nordpool', 'raw_tomorrow') or [] %}
            {% set ns = namespace(result=[]) %}
            {% for h in np_today + np_tomorrow %}
              {% set ns.result = ns.result + [{'time': h['start'].isoformat(), 'value': (h['value'] * 1.21 + 0.110848 - 0.01) | round(3)}] %}
            {% endfor %}
            {{ ns.result }}
Deze sensoren heb ik daarna aan de GRID configuratie van HAEO gehangen, waarnee de inkoop en verkoop van energieprijzen correct werden weergegeven. Pas zelf eventueel je inkoop en verkoop vergoeding aan in het voorbeeld. Succes

Afbeeldingslocatie: https://tweakers.net/i/vxi6YAcfa3xxUjRbYNabxbYBr34=/800x/filters:strip_exif()/f/image/OHhJzTHXEBRHq5JrmKCOkp5v.png?f=fotoalbum_large

  • LigeTRy
  • Registratie: Juli 2010
  • Laatst online: 11:46
Ik heb een vergelijkbare setup gedaan.

Het enige waar ik nog niet tevreden over ben zijn de forecasts van HAFO. Dit is niet meer dan een historical shift, waarbij Victron DESS meer gebruikt maakt van een moving average. Er zit ook een bug in, waardoor forecasts niet helemaal kloppen. Zie bugreport.

Een ander probleem waar ik tegenaan liep is dat mijn warmtepomp automatisch water opwarmt op het goedkoopste moment (deze verschilt) en dus vaak goedkope stroom wegsnoept van het haeo plan. Dit heb ik middels node red opgelost, die het huidige verbruik van de warmtepomp toevoegt aan het setpoint als ie aan het verwarmen is:

Afbeeldingslocatie: https://tweakers.net/i/WgBafEGwgSYoqO6IpBdBSYXLGJQ=/800x/filters:strip_exif()/f/image/rho3XqiXSZNHnqrestLJtKow.png?f=fotoalbum_large

(ik had het idee om dit topic op te zetten maar ik heb nog geen tijd/motivatie gehad voor een goede startpost, mocht iemand erbij willen helpen let me know)