Het Visualiseren van Stroomprijzen met Home Assistant en Card-Mod

Het Visualiseren van Stroomprijzen met Home Assistant en Card-Mod

Een Visuele Gids voor Home Assistant Lovelace Dashboards

Inleiding

Home Assistant is een geweldig platform voor het automatiseren en bewaken van je huis. Maar wat als je meer kleur aan je dashboard wilt toevoegen, vooral als het gaat om stroomprijzen? In dit artikel ga ik dieper in op hoe je de Card-Mod add-on uit de HACS winkel kunt gebruiken om je stroomprijsentiteiten op je Lovelace-dashboard op te fleuren.

In vorige artikelen heb ik al besproken hoe je actuele stroomprijzen kunt ophalen. Nu gaan we een stap verder: ik leg uit hoe je een dynamische kleurcodering kunt instellen voor deze prijzen. Hierdoor kun je in één oogopslag zien of het nu een goed moment is om veel stroom te gebruiken of dat je misschien beter even kunt wachten.


Installeren van de Card-Mod Add-On via HACS

Voordat we beginnen, moeten we eerst de Card-Mod add-on installeren via HACS (Home Assistant Community Store). Als je HACS nog niet hebt geïnstalleerd, raad ik je aan dit eerst te doen.

  1. Ga naar het HACS-tabblad in je zijbalk van Home Assistant.

  2. Zoek in de winkel naar 'Card-Mod' en klik erop.

  3. Klik op de knop 'Installeren'.

Nadat de installatie is voltooid, moeten we Home Assistant opnieuw opstarten. Dit doe je door naar 'Configuratie' > 'Serverbeheer' > 'Herstart' te gaan.


YAML-Code voor het Aanpassen van de Entiteitenkaart

Nu komen we bij het leuke gedeelte: het daadwerkelijk instellen van de kleurcodering voor onze stroomprijzen. Hier is de YAML-code die je moet toevoegen aan je Lovelace-dashboard via een entiteitenkaart:

type: entities
entities:
  - entity: sensor.entsoe_data_current_electricity_market_price
    name: Huidige Prijs
    card_mod:
      style: >
        {% set price =  states('sensor.entsoe_data_current_electricity_market_price')|float %}
        {% set min_price = states('sensor.entsoe_data_lowest_energy_price_today')|float %} 
        {% set max_price = states('sensor.entsoe_data_highest_energy_price_today')|float %}
        {% set fifth = (max_price - min_price) / 5 %}
        {% if price <= min_price + fifth %}
          :host { 
            --card-mod-icon-color: #006400;
            }
        {% elif price <= min_price + 2 * fifth %}
          :host { 
            --card-mod-icon-color: #32CD32;
            }
        {% elif price <= min_price + 3 * fifth %}
          :host { 
            --card-mod-icon-color: #FFFF00;
            }
        {% elif price <= min_price + 4 * fifth %}
          :host { 
            --card-mod-icon-color: #FFA500;
            }
        {% else %}
          :host { 
            --card-mod-icon-color: #FF0000;
            }
        {% endif %}    
  - entity: sensor.entsoe_data_next_hour_electricity_market_price
    icon: mdi:clock-fast
    name: Volgend uur Prijs
    card_mod:
      style: >
        {% set price =  states('sensor.entsoe_data_next_hour_electricity_market_price')|float %}
        {% set min_price = states('sensor.entsoe_data_lowest_energy_price_today')|float %} 
        {% set max_price = states('sensor.entsoe_data_highest_energy_price_today')|float %} 
        {% set fifth = (max_price - min_price) / 5 %}
        {% if price <= min_price + fifth %}
          :host { 
            --card-mod-icon-color: #006400;
            }
        {% elif price <= min_price + 2 * fifth %}
          :host { 
            --card-mod-icon-color: #32CD32;
            }
        {% elif price <= min_price + 3 * fifth %}
          :host { 
            --card-mod-icon-color: #FFFF00;
            }
        {% elif price <= min_price + 4 * fifth %}
          :host { 
            --card-mod-icon-color: #FFA500;
            }
        {% else %}
          :host { 
            --card-mod-icon-color: #FF0000;
            }
        {% endif %}    
  - entity: sensor.entsoe_data_lowest_energy_price_today
    name: Laagste Prijs
    icon: mdi:align-vertical-top
  - entity: sensor.entsoe_data_highest_energy_price_today
    icon: mdi:align-vertical-bottom
    name: Hoogste Prijs
view_layout:
  position: sidebar
title: Stroom prijzen inkoop
state_color: false

Uitleg van de Code

Nu volgt een uitleg van elk onderdeel van deze code:

  1. Type en entiteiten: Dit zijn de basisparameters voor elke Lovelace-entiteitenkaart. Hiermee geef je aan wat voor soort kaart je wilt maken en welke entiteiten erin moeten verschijnen.

  2. Sensor voor de huidige prijs: Deze sensor toont de huidige stroomprijs en gebruikt Card-Mod om de kleur van het icoon aan te passen op basis van de prijs.

  3. Card-Mod-stijl: Dit is waar de magie gebeurt. De style parameter onder card_mod gebruikt een klein stukje Jinja2-templatecode om de kleur van het icoon dynamisch te veranderen.

  4. Berekeningen: We gebruiken de minimale en maximale stroomprijs van de dag om vijf verschillende kleurzones te creëren: van groen (goedkoop) tot rood (duur).


Conclusie

Met deze setup kun je gemakkelijk zien wanneer het een goed moment is om je wasmachine aan te zetten of juist even te wachten met stroomverbruikende activiteiten. Home Assistant en Card-Mod maken het niet alleen mogelijk om je huis slimmer te beheren, maar ook om dit op een visueel aantrekkelijke manier te doen.

Met een beetje creativiteit kun je dit model ook toepassen op andere sensoren en indicatoren in je huis. De mogelijkheden zijn eindeloos!

Bedankt voor het lezen en veel plezier met het inkleuren van je Home Assistant-dashboard!

Did you find this article valuable?

Support Theo van der Sluijs Blog by becoming a sponsor. Any amount is appreciated!