Met een dynamisch contract, zonnepanelen en misschien een thuisbatterij wil je eigenlijk maar één ding weten: wat kost stroom me écht, en wat levert de rest op? Dit overzicht rekent elke kWh tegen de prijs van dat moment en toont het per dag, maand en jaar. Plus een korte melding op je telefoon aan het eind van de dag.
Je hoeft niet te kunnen programmeren. Je vult op één plek je eigen sensoren in en plakt de rest ongewijzigd over. Elke stap staat hieronder uitgeschreven, inclusief waar je klikt.
Snel: wat je kopieert en wat je invult
Alle code staat in deze blog en kun je met de kopieerknop overnemen. Je vult alleen je eigen sensoren in; de rest plak je ongewijzigd.
| Stap | Wat je doet | Wat je zelf invult |
|---|---|---|
| 1 | Back-up maken | Niets |
| 2 | Packages aanzetten: twee regels in configuration.yaml |
Niets |
| 3 | Bestand custom_templates/energie.jinja maken en het blok uit stap 1 plakken |
Je meters en je stroom- en gasprijs (bovenaan het blok). Heb je iets niet, dan laat je die lijst leeg: [] |
| 4 | Bestand packages/energie_overzicht.yaml maken en het blok uit stap 2 plakken |
Niets |
| 5 | Herladen en controleren of de sensoren er zijn | Niets |
| 6 | Het dashboard-blok uit stap 3 plakken | Niets |
| 7 | Het blok uit stap 4 plakken als nieuwe automatisering | Eén regel: je telefoon |
Elke stap staat hieronder uitgeschreven, inclusief waar je klikt.
Waarom gewone besparingssensoren vaak niet kloppen
Ik had al besparingssensoren, maar ze spraken elkaar tegen: de ene zei €64 bespaard deze maand, de andere €52. Bij nader inzien zaten er drie fouten in die ik bij veel voorbeelden online terugzie.
- Alleen ontladen geteld. De batterijbesparing rekende wat de batterij leverde, maar trok niet af wat het laden kostte. Dat is bruto, geen besparing.
- Tellers die niet tegen dalen kunnen. Een
utility_meterop een bedrag dat ook omlaag kan (laden, negatieve prijzen) ziet elke daling als een reset. Het maandtotaal stond op €52 terwijl het echte bedrag €12 was. - Batterij dubbel geteld. Netto kosten werden berekend als afname min teruglevering min batterijbesparing. Maar de slimme meter ziet al minder afname als de batterij levert, dus de batterij werd twee keer afgetrokken.
Het doel werd daarom: een overzicht dat op de cent uitlegbaar is, gebouwd op de echte kWh-meterstanden in plaats van op vermogen.
Wat je krijgt
| Onderdeel | Waar | Wat het doet |
|---|---|---|
| Instellingen en rekenwerk | custom_templates/energie.jinja |
Hier vul je je eigen sensoren in. Daaronder staat de rekenmacro |
| 6 bronsensoren | packages/energie_overzicht.yaml |
Tellen je meters per soort bij elkaar op (bijvoorbeeld twee batterijen), plus de gasmeter |
| 18 telsensoren | zelfde bestand | Afname, teruglevering, zon, batterij laden en ontladen en gas, elk per dag, maand en jaar, in euro’s met de kWh of m³ erbij |
| 15 uitkomsten | zelfde bestand | Netto stroomkosten, batterijwinst, totaal bespaard, “zonder zon en batterij” en stroom + gas, per periode |
| Dashboard | tabblad in je dashboard | Drie blokken: vandaag, deze maand, dit jaar |
| Avondbericht | automation | Elke avond een samenvatting op je telefoon |
Geen batterij, geen zonnepanelen of geen gas? Dan werkt het ook. Je laat die meters gewoon leeg en die regels blijven op €0 staan.
Hoe het rekent
Elke keer dat een kWh-meter een stapje verspringt, wordt die stap vermenigvuldigd met de stroomprijs van dat moment en opgeteld. Zo krijgt elke kWh precies de prijs die hij had toen hij door de meter ging.
bedrag = vorig bedrag + (meterstand nu − vorige meterstand) × prijs van nu
Dat gebeurt voor vijf soorten stroommeters en voor de gasmeter, met de gasprijs van die dag. Daaruit volgen vijf uitkomsten:
| Uitkomst | Berekening |
|---|---|
| Netto stroomkosten | van het net − teruggeleverd |
| Batterijwinst | ontladen − geladen |
| Totaal bespaard | zonnestroom + batterijwinst |
| Zonder zon en batterij | netto stroomkosten + totaal bespaard |
| Stroom + gas | netto stroomkosten + gas |
Waarom de zon volledig meetelt. Zonder panelen had je elke kWh die je huis verbruikte van het net moeten halen. Wat je zelf opwekt bespaart dus de netprijs, en wat je teruglevert levert onder salderen diezelfde prijs op. Daarom telt alle zonnestroom tegen de prijs van dat moment.
Waarom laden eraf gaat. Laad je de batterij met zonnestroom, dan had je die stroom ook kunnen terugleveren. Laad je van het net, dan betaal je ervoor. In beide gevallen kost laden de prijs van dat moment. Slim laden levert dus alleen iets op als je goedkoop laadt en duur ontlaadt.
De controle. “Zonder zon en batterij” is wat je zou betalen als je alles van het net haalde. Het verschil met de netto stroomkosten is precies je besparing, dus de cijfers sluiten altijd op elkaar aan.
Nieuw met Home Assistant? Begin hier
Je hebt geen ervaring met programmeren of Home Assistant nodig. Wel moet Home Assistant al draaien en kun je het openen in je browser of de app. Nog niet zo ver? Volg dan eerst de officiële installatie; voor beginners is een Home Assistant Green of een Raspberry Pi met Home Assistant OS het makkelijkst.
Deze woorden kom je in de blog tegen:
| Woord | Wat het is |
|---|---|
| Integratie | Een koppeling met een apparaat of dienst, zoals je slimme meter of je energieleverancier. Je voegt hem toe via Instellingen → Apparaten & diensten |
| Entiteit | Eén meetwaarde of knop van een apparaat, bijvoorbeeld “stroom van het net in kWh” |
| Entiteit-ID | De technische naam van een entiteit, zoals sensor.p1_energie_import. Die vul je in de code in |
| Helper | Een zelfgemaakte entiteit, zoals een getal dat je zelf instelt |
| Sjabloon (template) | Een stukje rekenwerk in Home Assistant. Herken je aan {{ … }} en {% … %} |
| YAML | De tekstvorm waarin Home Assistant instellingen opslaat. Inspringen met spaties is belangrijk |
| Package | Een los YAML-bestand met alles van één project bij elkaar |
| Automatisering | Een regel die iets doet op een moment of bij een gebeurtenis, zoals elke avond een melding sturen |
| HACS | Een winkel voor extra integraties en kaarten die niet standaard in Home Assistant zitten |
Drie tips voor het plakken van code:
- Kopieer altijd het hele blok, van de eerste tot de laatste regel. Bij elk codeblok staat rechtsboven een kopieerknop.
- Verander niets aan de spaties aan het begin van regels. YAML gebruikt inspringen om te weten wat bij elkaar hoort; één spatie te veel of te weinig geeft een fout.
- Vervang alleen wat in HOOFDLETTERS met
JOUW_begint. De rest laat je staan.
Wat je nodig hebt
Meters. Per soort een sensor met een oplopende totaalstand in kWh. Dat is een getal dat alleen maar groter wordt, zoals de stand op je slimme meter (bijvoorbeeld 14 697,9 kWh). Geen vermogen in W of kW: dat is wat je op dít moment verbruikt en daar kun je niet mee rekenen. Voor gas is het de oplopende stand in m³.
| Soort | Waar komt hij meestal vandaan | Verplicht? |
|---|---|---|
| Afname van het net | P1-lezer: HomeWizard, DSMR Slimme Meter, P1 Monitor, Tibber Pulse | Ja |
| Teruglevering aan het net | Zelfde P1-lezer | Ja, als je zonnepanelen hebt |
| Zonne-opbrengst | Je omvormer: GoodWe, SolarEdge, Enphase, Growatt, SMA | Nee |
| Batterij geladen | Je thuisbatterij, bijvoorbeeld Marstek, Zendure of HomeWizard | Nee |
| Batterij ontladen | Zelfde thuisbatterij | Nee |
| Gas (in m³) | Zelfde P1-lezer, die leest de gasmeter ook uit | Nee |
Heeft je P1-lezer twee tellers voor afname (dal en piek, of “tarief 1” en “tarief 2”)? Zet ze dan allebei in de lijst; ze worden bij elkaar opgeteld.
Een stroomprijs. Eén sensor met je all-in prijs per kWh van dit moment, dus inclusief energiebelasting en btw. Dynamische leveranciers zoals Zonneplan, Tibber en Frank Energie hebben een integratie die dat levert. Let op bij losse beursprijs-integraties (zoals Nord Pool of EnergyZero): die geven vaak de kale prijs zonder belasting. Dan klopt je overzicht niet met je factuur.
Uurprijs of kwartierprijs? Allebei werken, de rekenmacro gebruikt gewoon de prijs die op dat moment geldt. Kies de prijs waarop je leverancier afrekent: steeds meer dynamische contracten rekenen per kwartier, andere nog per uur. Sommige integraties bieden beide als aparte sensor, bijvoorbeeld een “huidig tarief” per uur en een “kwartiertarief”. Twijfel je, kijk dan in de app van je leverancier of op je factuur hoe de prijs per dag is opgebouwd: 24 blokken is per uur, 96 blokken is per kwartier.
| Je leverancier rekent af per | Kies als prijssensor |
|---|---|
| Kwartier | De sensor met de prijs van het huidige kwartier |
| Uur | De sensor met de prijs van het huidige uur |
| Vast tarief | Een eigen getal-helper (zie hieronder) |
Een gasprijs (als je gas hebt). Eén sensor met je all-in gasprijs per m³, ook inclusief belasting. Een dynamisch gascontract heeft een dagprijs die elke ochtend om 06:00 wisselt; de integratie van je leverancier levert die meestal als “huidig gastarief”.
Vast contract? Maak dan zelf een prijs aan: Instellingen → Apparaten & diensten → Helpers → Helper aanmaken → Getal. Noem hem bijvoorbeeld “Stroomprijs”, kies stapgrootte 0,0001 en vul je kWh-prijs in. Gebruik input_number.stroomprijs als prijssensor. Voor een vaste gasprijs doe je hetzelfde met een tweede getal-helper, bijvoorbeeld input_number.gasprijs.
Verder:
- Een manier om bestanden te bewerken, zoals de app File editor of Studio Code Server. Zie hieronder.
- HACS met Mushroom, voor de dashboardkaarten.
- De Home Assistant-app op je telefoon, voor het avondbericht.
- Forecast.Solar (optioneel), voor de zonverwachting in het avondbericht.
Voorbereiding
Deze stappen doe je één keer. Heb je ze al gedaan, ga dan door naar stap 1.
Eerst een back-up
Maak een back-up voordat je begint. Gaat er iets mis, dan zet je Home Assistant zo terug zoals het was. Ga naar Instellingen → Systeem → Back-ups en klik op Nu back-up maken. Wacht tot hij in de lijst staat.
Je meters en prijs in Home Assistant
Dit overzicht rekent met meters die al in Home Assistant staan. Zo krijg je ze erin:
| Wat | Hoe |
|---|---|
| HomeWizard P1-meter | Zet in de HomeWizard Energy-app bij je P1-meter de Lokale API aan. Home Assistant vindt de meter daarna meestal vanzelf: je krijgt een melding onder Instellingen → Apparaten & diensten. Klik op Toevoegen |
| P1-kabel aan je Home Assistant | Voeg de integratie DSMR Slimme Meter toe via Instellingen → Apparaten & diensten → Integratie toevoegen en kies de USB-poort van de kabel |
| Omvormer van je zonnepanelen | Zoek bij Integratie toevoegen op het merk (bijvoorbeeld SolarEdge, Enphase, SMA of GoodWe). Staat het er niet bij, zoek dan in HACS |
| Thuisbatterij | Via de integratie van je merk. Voor Marstek lees je de stappen in mijn blog over de thuisbatterij |
| Stroom- en gasprijs | Tibber zit standaard in Home Assistant. Zonneplan (Zonneplan ONE) en Frank Energie installeer je via HACS. Vast contract? Dan maak je zelf een prijs aan, zie hieronder |
Controleer daarna bij Ontwikkelhulpmiddelen → Toestanden of je meters er staan en een getal laten zien.
Een bestandseditor installeren
Ga naar Instellingen → Apps → App installeren, zoek File editor, installeer hem en zet Weergeven in zijbalk aan. Klik op Starten. Je ziet hem nu links in het menu. (Gebruik je Home Assistant in Docker zonder apps, dan bewerk je de bestanden in je config-map met een gewone teksteditor.)
Packages aanzetten
Een package is een los YAML-bestand met alles van één project bij elkaar. Zo blijft je configuration.yaml overzichtelijk.
- Open File editor en klik op het mapje linksboven. Klik op het mapje met het plusje en maak de map
packagesaan. - Maak op dezelfde manier de map
custom_templatesaan. - Open
configuration.yaml. Staat er al een regelhomeassistant:? Zet de packages-regel er dan direct onder, met twee spaties ervoor. Staat hij er nog niet, voeg dan beide regels toe:
homeassistant:
packages: !include_dir_named packages
- Sla op en ga naar Ontwikkelhulpmiddelen → YAML → Configuratie controleren. Pas als daar “Configuratie zal werken” staat, klik je op Opnieuw opstarten.
Ontwikkelhulpmiddelen staat links onderaan in het menu. Zie je het niet, zet dan in je profiel (klik op je naam) de Geavanceerde modus aan. In recente versies heet dit menu Tools.
Mushroom installeren
Heb je HACS nog niet, volg dan de installatie van HACS. Daarna: open HACS, zoek Mushroom, klik op Downloaden en ververs je browser.
Je sensoren opzoeken
Ga naar Ontwikkelhulpmiddelen → Toestanden en typ in het filterveld een deel van de naam, bijvoorbeeld energy, energie, import of total. Je zoekt sensoren waarbij:
- de eenheid kWh is (staat in de attributen rechts als
unit_of_measurement: kWh) - er
state_class: total_increasingoftotalbij staat - de waarde een groot getal is dat over de dag langzaam oploopt
Het id in de linkerkolom, zoals sensor.iets_energie_import, is wat je nodig hebt. Klik erop om het te kopiëren. Twijfel je tussen twee sensoren? Kijk welke vandaag het meest is opgelopen: dat is meestal de totaalteller, niet een dagteller.
Schrijf ze even op. Voor de prijs zoek je een sensor met eenheid €/kWh of EUR/kWh en een waarde rond de 0,20 tot 0,35. Zie je er twee, een voor het uur en een voor het kwartier, kies dan die waarop je leverancier afrekent. De gasprijs heeft eenheid €/m³ en ligt rond de 1,20 tot 2,00.
Stap 1: je sensoren invullen
Maak in File editor in de map custom_templates een nieuw bestand energie.jinja en plak dit erin. Daarna pas je alleen het blok bovenaan aan.
{#- ================================================================
ENERGIE-OVERZICHT · STAP 1: VUL HIER JE EIGEN SENSOREN IN
Dit is de enige plek die je hoeft aan te passen.
- Elke meter is een OPLOPENDE totaalstand in kWh.
- Meerdere meters (bijv. twee batterijen)? Zet ze allebei in de lijst.
- Geen batterij of geen zonnepanelen? Laat de lijst leeg: []
- De prijs is je all-in stroomprijs in €/kWh (incl. belasting) van dit moment:
een uurprijs of een kwartierprijs, net hoe je leverancier afrekent.
- Gas is een OPLOPENDE totaalstand in m³, met je all-in gasprijs in €/m³.
Geen gas (all-electric)? Laat de lijst leeg: []
================================================================ -#}
{%- set bronnen = {
'afname': ['sensor.JOUW_METER_AFNAME'],
'teruglevering': ['sensor.JOUW_METER_TERUGLEVERING'],
'zon': ['sensor.JOUW_ZONNEPANELEN_TOTAAL'],
'laden': ['sensor.JOUW_BATTERIJ_GELADEN'],
'ontladen': ['sensor.JOUW_BATTERIJ_ONTLADEN'],
'gas': ['sensor.JOUW_GASMETER'],
} -%}
{%- set prijs_sensor = 'sensor.JOUW_STROOMPRIJS' -%}
{%- set gasprijs_sensor = 'sensor.JOUW_GASPRIJS' -%}
{#- ================================================================
Hieronder hoef je niets te veranderen.
================================================================ -#}
{#- Telt de meters van één bron op (kWh, gas in m³). -#}
{% macro bron(naam) -%}
{%- set ns = namespace(som=0) -%}
{%- for e in bronnen[naam] -%}{%- set ns.som = ns.som + states(e) | float(0) -%}{%- endfor -%}
{{ ns.som | round(3) }}
{%- endmacro %}
{#- True als alle meters van een bron een getal geven. -#}
{% macro bron_ok(naam) -%}
{{ bronnen[naam] | map('states') | select('is_number') | list | count == bronnen[naam] | count }}
{%- endmacro %}
{#- Telt per periode (fmt) de kWh- of m³-stappen van een bron maal de prijs van dat moment.
what: 'eur' (bedrag), 'kwh' of 'm3' (hoeveelheid) of 'meter' (laatst geziene meterstand).
reset=true zet de teller op nul vanaf de huidige meterstand. -#}
{% macro energie_calc(naam, fmt, this, what, reset=false) -%}
{%- set v = states('sensor.energie_bron_' ~ naam) -%}
{%- set nu = (v | float | round(3)) if is_number(v) else none -%}
{%- set prev = this.attributes.get('meterstand') -%}
{%- set prijs = states(gasprijs_sensor if naam == 'gas' else prijs_sensor) -%}
{%- set zelfde = (this.attributes.get('periode') | string) == now().strftime(fmt) and not reset -%}
{%- set d = (nu - prev | float) if (nu is not none and is_number(prev) and not reset) else 0 -%}
{%- set tel = is_number(prijs) and 0 < d < 5 -%}
{%- if what == 'eur' -%}
{{ ((this.state | float(0) if zelfde else 0) + (d * prijs | float if tel else 0)) | round(4) }}
{%- elif what in ['kwh', 'm3'] -%}
{{ ((this.attributes.get(what, 0) | float(0) if zelfde else 0) + (d if tel else 0)) | round(3) }}
{%- else -%}
{{ nu if (nu is not none and (reset or is_number(prijs) or not is_number(prev))) else prev }}
{%- endif -%}
{%- endmacro %}
Zo vul je het blok in. Vervang elke sensor.JOUW_… door het id dat je hebt opgezocht. Laat de aanhalingstekens en de vierkante haken staan.
| Situatie | Zo schrijf je het |
|---|---|
| Eén meter | 'afname': ['sensor.p1_energie_import'], |
| Twee meters, worden opgeteld | 'laden': ['sensor.batterij_1_geladen', 'sensor.batterij_2_geladen'], |
| Heb je niet | 'laden': [], |
| Gasmeter | 'gas': ['sensor.p1_gas'], |
| Stroomprijs | {%- set prijs_sensor = 'sensor.mijn_stroomprijs' -%} |
| Gasprijs | {%- set gasprijs_sensor = 'sensor.mijn_gasprijs' -%} |
Geen batterij? Maak laden en ontladen leeg. Geen zonnepanelen? Maak zon en eventueel teruglevering leeg. De sensornamen in dit voorbeeld zijn verzonnen; gebruik je eigen.
Sla op en laad het bestand: ga naar Ontwikkelhulpmiddelen → Acties, kies Home Assistant Core Integration: Reload custom templates (homeassistant.reload_custom_templates) en klik op Actie uitvoeren. Dat moet je na elke wijziging in dit bestand opnieuw doen.
Even testen. Ga naar Ontwikkelhulpmiddelen → Sjabloon en plak dit in het linkervak:
{% from 'energie.jinja' import bron, bron_ok %}
Afname: {{ bron('afname') }} kWh (ok: {{ bron_ok('afname') }})
Zon: {{ bron('zon') }} kWh (ok: {{ bron_ok('zon') }})
Laden: {{ bron('laden') }} kWh (ok: {{ bron_ok('laden') }})
Gas: {{ bron('gas') }} m³ (ok: {{ bron_ok('gas') }})
Rechts hoort je meterstand te staan met ok: True. Zie je ok: False, dan klopt een id niet of is die sensor nu even onbeschikbaar. Veel omvormers gaan ’s nachts offline; dan is False bij de zon normaal.
Wat de macro doet als je benieuwd bent:
- Bronnen optellen.
brontelt de meters van één soort bij elkaar op.bron_okcontroleert of ze allemaal een getal geven. - Stap berekenen. Nieuwe stand min de stand die de sensor vorige keer onthield (in het attribuut
meterstand). - Controleren. Alleen stappen tussen 0 en 5 kWh tellen mee. Een meterwissel of een rare sprong wordt zo genegeerd, en de nieuwe stand wordt het nieuwe beginpunt.
- Periode checken. Is het attribuut
periodeniet meer gelijk aan vandaag (of deze maand of dit jaar), dan begint het bedrag weer bij nul. - Prijs ontbreekt? Dan blijft de oude meterstand staan, zodat de stap later alsnog geteld wordt.
Stap 2: de sensoren
Maak in de map packages een nieuw bestand energie_overzicht.yaml en plak dit erin. Hier hoef je niets aan te veranderen: alle sensoren lezen je meters via stap 1.
# Energie-overzicht: plak dit bestand ongewijzigd in packages/energie_overzicht.yaml
# Je eigen sensoren stel je in bovenaan custom_templates/energie.jinja.
template:
# 1. Bronnen: de stroommeters uit energie.jinja opgeteld per soort (in kWh)
- sensor:
- name: "Energie bron afname"
unique_id: energie_bron_afname
default_entity_id: sensor.energie_bron_afname
unit_of_measurement: kWh
device_class: energy
icon: mdi:transmission-tower-import
state: "{% from 'energie.jinja' import bron %}{{ bron('afname') }}"
availability: "{% from 'energie.jinja' import bron_ok %}{{ bron_ok('afname') }}"
- name: "Energie bron teruglevering"
unique_id: energie_bron_teruglevering
default_entity_id: sensor.energie_bron_teruglevering
unit_of_measurement: kWh
device_class: energy
icon: mdi:transmission-tower-export
state: "{% from 'energie.jinja' import bron %}{{ bron('teruglevering') }}"
availability: "{% from 'energie.jinja' import bron_ok %}{{ bron_ok('teruglevering') }}"
- name: "Energie bron zon"
unique_id: energie_bron_zon
default_entity_id: sensor.energie_bron_zon
unit_of_measurement: kWh
device_class: energy
icon: mdi:solar-power
state: "{% from 'energie.jinja' import bron %}{{ bron('zon') }}"
availability: "{% from 'energie.jinja' import bron_ok %}{{ bron_ok('zon') }}"
- name: "Energie bron laden"
unique_id: energie_bron_laden
default_entity_id: sensor.energie_bron_laden
unit_of_measurement: kWh
device_class: energy
icon: mdi:battery-arrow-up
state: "{% from 'energie.jinja' import bron %}{{ bron('laden') }}"
availability: "{% from 'energie.jinja' import bron_ok %}{{ bron_ok('laden') }}"
- name: "Energie bron ontladen"
unique_id: energie_bron_ontladen
default_entity_id: sensor.energie_bron_ontladen
unit_of_measurement: kWh
device_class: energy
icon: mdi:battery-arrow-down
state: "{% from 'energie.jinja' import bron %}{{ bron('ontladen') }}"
availability: "{% from 'energie.jinja' import bron_ok %}{{ bron_ok('ontladen') }}"
# 2. Tellers: elke kWh-stap maal de stroomprijs van dat moment, per dag, maand en jaar
- triggers:
- trigger: state
entity_id:
- sensor.energie_bron_afname
- sensor.energie_bron_teruglevering
- sensor.energie_bron_zon
- sensor.energie_bron_laden
- sensor.energie_bron_ontladen
- trigger: time
at: "00:00:00"
- trigger: homeassistant
event: start
- trigger: event
event_type: event_template_reloaded
- trigger: event
event_type: energie_overzicht_reset
id: reset
sensor:
- name: "Energie Van het net vandaag"
unique_id: energie_afname_dag
default_entity_id: sensor.energie_afname_dag
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:transmission-tower-import
state: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('afname', '%Y-%m-%d', this, 'eur', trigger.id == 'reset') }}"
attributes:
kwh: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('afname', '%Y-%m-%d', this, 'kwh', trigger.id == 'reset') }}"
meterstand: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('afname', '%Y-%m-%d', this, 'meter', trigger.id == 'reset') }}"
periode: "{{ now().strftime('%Y-%m-%d') }}"
- name: "Energie Van het net deze maand"
unique_id: energie_afname_maand
default_entity_id: sensor.energie_afname_maand
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:transmission-tower-import
state: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('afname', '%Y-%m', this, 'eur', trigger.id == 'reset') }}"
attributes:
kwh: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('afname', '%Y-%m', this, 'kwh', trigger.id == 'reset') }}"
meterstand: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('afname', '%Y-%m', this, 'meter', trigger.id == 'reset') }}"
periode: "{{ now().strftime('%Y-%m') }}"
- name: "Energie Van het net dit jaar"
unique_id: energie_afname_jaar
default_entity_id: sensor.energie_afname_jaar
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:transmission-tower-import
state: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('afname', '%Y', this, 'eur', trigger.id == 'reset') }}"
attributes:
kwh: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('afname', '%Y', this, 'kwh', trigger.id == 'reset') }}"
meterstand: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('afname', '%Y', this, 'meter', trigger.id == 'reset') }}"
periode: "{{ now().strftime('%Y') }}"
- name: "Energie Teruggeleverd vandaag"
unique_id: energie_teruglevering_dag
default_entity_id: sensor.energie_teruglevering_dag
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:transmission-tower-export
state: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('teruglevering', '%Y-%m-%d', this, 'eur', trigger.id == 'reset') }}"
attributes:
kwh: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('teruglevering', '%Y-%m-%d', this, 'kwh', trigger.id == 'reset') }}"
meterstand: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('teruglevering', '%Y-%m-%d', this, 'meter', trigger.id == 'reset') }}"
periode: "{{ now().strftime('%Y-%m-%d') }}"
- name: "Energie Teruggeleverd deze maand"
unique_id: energie_teruglevering_maand
default_entity_id: sensor.energie_teruglevering_maand
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:transmission-tower-export
state: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('teruglevering', '%Y-%m', this, 'eur', trigger.id == 'reset') }}"
attributes:
kwh: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('teruglevering', '%Y-%m', this, 'kwh', trigger.id == 'reset') }}"
meterstand: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('teruglevering', '%Y-%m', this, 'meter', trigger.id == 'reset') }}"
periode: "{{ now().strftime('%Y-%m') }}"
- name: "Energie Teruggeleverd dit jaar"
unique_id: energie_teruglevering_jaar
default_entity_id: sensor.energie_teruglevering_jaar
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:transmission-tower-export
state: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('teruglevering', '%Y', this, 'eur', trigger.id == 'reset') }}"
attributes:
kwh: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('teruglevering', '%Y', this, 'kwh', trigger.id == 'reset') }}"
meterstand: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('teruglevering', '%Y', this, 'meter', trigger.id == 'reset') }}"
periode: "{{ now().strftime('%Y') }}"
- name: "Energie Zonnestroom vandaag"
unique_id: energie_zon_dag
default_entity_id: sensor.energie_zon_dag
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:solar-power
state: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('zon', '%Y-%m-%d', this, 'eur', trigger.id == 'reset') }}"
attributes:
kwh: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('zon', '%Y-%m-%d', this, 'kwh', trigger.id == 'reset') }}"
meterstand: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('zon', '%Y-%m-%d', this, 'meter', trigger.id == 'reset') }}"
periode: "{{ now().strftime('%Y-%m-%d') }}"
- name: "Energie Zonnestroom deze maand"
unique_id: energie_zon_maand
default_entity_id: sensor.energie_zon_maand
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:solar-power
state: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('zon', '%Y-%m', this, 'eur', trigger.id == 'reset') }}"
attributes:
kwh: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('zon', '%Y-%m', this, 'kwh', trigger.id == 'reset') }}"
meterstand: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('zon', '%Y-%m', this, 'meter', trigger.id == 'reset') }}"
periode: "{{ now().strftime('%Y-%m') }}"
- name: "Energie Zonnestroom dit jaar"
unique_id: energie_zon_jaar
default_entity_id: sensor.energie_zon_jaar
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:solar-power
state: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('zon', '%Y', this, 'eur', trigger.id == 'reset') }}"
attributes:
kwh: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('zon', '%Y', this, 'kwh', trigger.id == 'reset') }}"
meterstand: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('zon', '%Y', this, 'meter', trigger.id == 'reset') }}"
periode: "{{ now().strftime('%Y') }}"
- name: "Energie Batterij geladen vandaag"
unique_id: energie_laden_dag
default_entity_id: sensor.energie_laden_dag
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:battery-arrow-up
state: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('laden', '%Y-%m-%d', this, 'eur', trigger.id == 'reset') }}"
attributes:
kwh: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('laden', '%Y-%m-%d', this, 'kwh', trigger.id == 'reset') }}"
meterstand: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('laden', '%Y-%m-%d', this, 'meter', trigger.id == 'reset') }}"
periode: "{{ now().strftime('%Y-%m-%d') }}"
- name: "Energie Batterij geladen deze maand"
unique_id: energie_laden_maand
default_entity_id: sensor.energie_laden_maand
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:battery-arrow-up
state: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('laden', '%Y-%m', this, 'eur', trigger.id == 'reset') }}"
attributes:
kwh: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('laden', '%Y-%m', this, 'kwh', trigger.id == 'reset') }}"
meterstand: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('laden', '%Y-%m', this, 'meter', trigger.id == 'reset') }}"
periode: "{{ now().strftime('%Y-%m') }}"
- name: "Energie Batterij geladen dit jaar"
unique_id: energie_laden_jaar
default_entity_id: sensor.energie_laden_jaar
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:battery-arrow-up
state: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('laden', '%Y', this, 'eur', trigger.id == 'reset') }}"
attributes:
kwh: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('laden', '%Y', this, 'kwh', trigger.id == 'reset') }}"
meterstand: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('laden', '%Y', this, 'meter', trigger.id == 'reset') }}"
periode: "{{ now().strftime('%Y') }}"
- name: "Energie Batterij ontladen vandaag"
unique_id: energie_ontladen_dag
default_entity_id: sensor.energie_ontladen_dag
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:battery-arrow-down
state: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('ontladen', '%Y-%m-%d', this, 'eur', trigger.id == 'reset') }}"
attributes:
kwh: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('ontladen', '%Y-%m-%d', this, 'kwh', trigger.id == 'reset') }}"
meterstand: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('ontladen', '%Y-%m-%d', this, 'meter', trigger.id == 'reset') }}"
periode: "{{ now().strftime('%Y-%m-%d') }}"
- name: "Energie Batterij ontladen deze maand"
unique_id: energie_ontladen_maand
default_entity_id: sensor.energie_ontladen_maand
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:battery-arrow-down
state: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('ontladen', '%Y-%m', this, 'eur', trigger.id == 'reset') }}"
attributes:
kwh: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('ontladen', '%Y-%m', this, 'kwh', trigger.id == 'reset') }}"
meterstand: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('ontladen', '%Y-%m', this, 'meter', trigger.id == 'reset') }}"
periode: "{{ now().strftime('%Y-%m') }}"
- name: "Energie Batterij ontladen dit jaar"
unique_id: energie_ontladen_jaar
default_entity_id: sensor.energie_ontladen_jaar
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:battery-arrow-down
state: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('ontladen', '%Y', this, 'eur', trigger.id == 'reset') }}"
attributes:
kwh: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('ontladen', '%Y', this, 'kwh', trigger.id == 'reset') }}"
meterstand: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('ontladen', '%Y', this, 'meter', trigger.id == 'reset') }}"
periode: "{{ now().strftime('%Y') }}"
# 3. Uitkomsten per periode
- sensor:
- name: "Energie Netto stroomkosten vandaag"
unique_id: energie_netto_betaald_dag
default_entity_id: sensor.energie_netto_betaald_dag
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:cash
availability: "{{ has_value('sensor.energie_afname_dag') and has_value('sensor.energie_teruglevering_dag') and has_value('sensor.energie_zon_dag') and has_value('sensor.energie_laden_dag') and has_value('sensor.energie_ontladen_dag') }}"
state: "{{ (states('sensor.energie_afname_dag')|float(0) - states('sensor.energie_teruglevering_dag')|float(0)) | round(2) }}"
- name: "Energie Batterijwinst vandaag"
unique_id: energie_slim_laden_dag
default_entity_id: sensor.energie_slim_laden_dag
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:battery-sync
availability: "{{ has_value('sensor.energie_afname_dag') and has_value('sensor.energie_teruglevering_dag') and has_value('sensor.energie_zon_dag') and has_value('sensor.energie_laden_dag') and has_value('sensor.energie_ontladen_dag') }}"
state: "{{ (states('sensor.energie_ontladen_dag')|float(0) - states('sensor.energie_laden_dag')|float(0)) | round(2) }}"
- name: "Energie Totaal bespaard vandaag"
unique_id: energie_besparing_dag
default_entity_id: sensor.energie_besparing_dag
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:piggy-bank
availability: "{{ has_value('sensor.energie_afname_dag') and has_value('sensor.energie_teruglevering_dag') and has_value('sensor.energie_zon_dag') and has_value('sensor.energie_laden_dag') and has_value('sensor.energie_ontladen_dag') }}"
state: "{{ (states('sensor.energie_zon_dag')|float(0) + states('sensor.energie_ontladen_dag')|float(0) - states('sensor.energie_laden_dag')|float(0)) | round(2) }}"
- name: "Energie Zonder zon en batterij vandaag"
unique_id: energie_zonder_zon_batterij_dag
default_entity_id: sensor.energie_zonder_zon_batterij_dag
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:cash-remove
availability: "{{ has_value('sensor.energie_afname_dag') and has_value('sensor.energie_teruglevering_dag') and has_value('sensor.energie_zon_dag') and has_value('sensor.energie_laden_dag') and has_value('sensor.energie_ontladen_dag') }}"
state: "{{ (states('sensor.energie_afname_dag')|float(0) - states('sensor.energie_teruglevering_dag')|float(0) + states('sensor.energie_zon_dag')|float(0) + states('sensor.energie_ontladen_dag')|float(0) - states('sensor.energie_laden_dag')|float(0)) | round(2) }}"
- name: "Energie Netto stroomkosten deze maand"
unique_id: energie_netto_betaald_maand
default_entity_id: sensor.energie_netto_betaald_maand
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:cash
availability: "{{ has_value('sensor.energie_afname_maand') and has_value('sensor.energie_teruglevering_maand') and has_value('sensor.energie_zon_maand') and has_value('sensor.energie_laden_maand') and has_value('sensor.energie_ontladen_maand') }}"
state: "{{ (states('sensor.energie_afname_maand')|float(0) - states('sensor.energie_teruglevering_maand')|float(0)) | round(2) }}"
- name: "Energie Batterijwinst deze maand"
unique_id: energie_slim_laden_maand
default_entity_id: sensor.energie_slim_laden_maand
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:battery-sync
availability: "{{ has_value('sensor.energie_afname_maand') and has_value('sensor.energie_teruglevering_maand') and has_value('sensor.energie_zon_maand') and has_value('sensor.energie_laden_maand') and has_value('sensor.energie_ontladen_maand') }}"
state: "{{ (states('sensor.energie_ontladen_maand')|float(0) - states('sensor.energie_laden_maand')|float(0)) | round(2) }}"
- name: "Energie Totaal bespaard deze maand"
unique_id: energie_besparing_maand
default_entity_id: sensor.energie_besparing_maand
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:piggy-bank
availability: "{{ has_value('sensor.energie_afname_maand') and has_value('sensor.energie_teruglevering_maand') and has_value('sensor.energie_zon_maand') and has_value('sensor.energie_laden_maand') and has_value('sensor.energie_ontladen_maand') }}"
state: "{{ (states('sensor.energie_zon_maand')|float(0) + states('sensor.energie_ontladen_maand')|float(0) - states('sensor.energie_laden_maand')|float(0)) | round(2) }}"
- name: "Energie Zonder zon en batterij deze maand"
unique_id: energie_zonder_zon_batterij_maand
default_entity_id: sensor.energie_zonder_zon_batterij_maand
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:cash-remove
availability: "{{ has_value('sensor.energie_afname_maand') and has_value('sensor.energie_teruglevering_maand') and has_value('sensor.energie_zon_maand') and has_value('sensor.energie_laden_maand') and has_value('sensor.energie_ontladen_maand') }}"
state: "{{ (states('sensor.energie_afname_maand')|float(0) - states('sensor.energie_teruglevering_maand')|float(0) + states('sensor.energie_zon_maand')|float(0) + states('sensor.energie_ontladen_maand')|float(0) - states('sensor.energie_laden_maand')|float(0)) | round(2) }}"
- name: "Energie Netto stroomkosten dit jaar"
unique_id: energie_netto_betaald_jaar
default_entity_id: sensor.energie_netto_betaald_jaar
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:cash
availability: "{{ has_value('sensor.energie_afname_jaar') and has_value('sensor.energie_teruglevering_jaar') and has_value('sensor.energie_zon_jaar') and has_value('sensor.energie_laden_jaar') and has_value('sensor.energie_ontladen_jaar') }}"
state: "{{ (states('sensor.energie_afname_jaar')|float(0) - states('sensor.energie_teruglevering_jaar')|float(0)) | round(2) }}"
- name: "Energie Batterijwinst dit jaar"
unique_id: energie_slim_laden_jaar
default_entity_id: sensor.energie_slim_laden_jaar
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:battery-sync
availability: "{{ has_value('sensor.energie_afname_jaar') and has_value('sensor.energie_teruglevering_jaar') and has_value('sensor.energie_zon_jaar') and has_value('sensor.energie_laden_jaar') and has_value('sensor.energie_ontladen_jaar') }}"
state: "{{ (states('sensor.energie_ontladen_jaar')|float(0) - states('sensor.energie_laden_jaar')|float(0)) | round(2) }}"
- name: "Energie Totaal bespaard dit jaar"
unique_id: energie_besparing_jaar
default_entity_id: sensor.energie_besparing_jaar
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:piggy-bank
availability: "{{ has_value('sensor.energie_afname_jaar') and has_value('sensor.energie_teruglevering_jaar') and has_value('sensor.energie_zon_jaar') and has_value('sensor.energie_laden_jaar') and has_value('sensor.energie_ontladen_jaar') }}"
state: "{{ (states('sensor.energie_zon_jaar')|float(0) + states('sensor.energie_ontladen_jaar')|float(0) - states('sensor.energie_laden_jaar')|float(0)) | round(2) }}"
- name: "Energie Zonder zon en batterij dit jaar"
unique_id: energie_zonder_zon_batterij_jaar
default_entity_id: sensor.energie_zonder_zon_batterij_jaar
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:cash-remove
availability: "{{ has_value('sensor.energie_afname_jaar') and has_value('sensor.energie_teruglevering_jaar') and has_value('sensor.energie_zon_jaar') and has_value('sensor.energie_laden_jaar') and has_value('sensor.energie_ontladen_jaar') }}"
state: "{{ (states('sensor.energie_afname_jaar')|float(0) - states('sensor.energie_teruglevering_jaar')|float(0) + states('sensor.energie_zon_jaar')|float(0) + states('sensor.energie_ontladen_jaar')|float(0) - states('sensor.energie_laden_jaar')|float(0)) | round(2) }}"
# 4. Gas: de gasmeter (m³) en de totale energiekosten (stroom + gas)
- sensor:
- name: "Energie bron gas"
unique_id: energie_bron_gas
default_entity_id: sensor.energie_bron_gas
unit_of_measurement: m³
device_class: gas
icon: mdi:fire
state: "{% from 'energie.jinja' import bron %}{{ bron('gas') }}"
availability: "{% from 'energie.jinja' import bron_ok %}{{ bron_ok('gas') }}"
- name: "Energie Stroom en gas vandaag"
unique_id: energie_stroom_en_gas_dag
default_entity_id: sensor.energie_stroom_en_gas_dag
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:home-lightning-bolt
availability: "{{ has_value('sensor.energie_afname_dag') and has_value('sensor.energie_teruglevering_dag') and has_value('sensor.energie_gas_dag') }}"
state: "{{ (states('sensor.energie_afname_dag')|float(0) - states('sensor.energie_teruglevering_dag')|float(0) + states('sensor.energie_gas_dag')|float(0)) | round(2) }}"
- name: "Energie Stroom en gas deze maand"
unique_id: energie_stroom_en_gas_maand
default_entity_id: sensor.energie_stroom_en_gas_maand
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:home-lightning-bolt
availability: "{{ has_value('sensor.energie_afname_maand') and has_value('sensor.energie_teruglevering_maand') and has_value('sensor.energie_gas_maand') }}"
state: "{{ (states('sensor.energie_afname_maand')|float(0) - states('sensor.energie_teruglevering_maand')|float(0) + states('sensor.energie_gas_maand')|float(0)) | round(2) }}"
- name: "Energie Stroom en gas dit jaar"
unique_id: energie_stroom_en_gas_jaar
default_entity_id: sensor.energie_stroom_en_gas_jaar
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:home-lightning-bolt
availability: "{{ has_value('sensor.energie_afname_jaar') and has_value('sensor.energie_teruglevering_jaar') and has_value('sensor.energie_gas_jaar') }}"
state: "{{ (states('sensor.energie_afname_jaar')|float(0) - states('sensor.energie_teruglevering_jaar')|float(0) + states('sensor.energie_gas_jaar')|float(0)) | round(2) }}"
# 5. Gas-tellers: elke m³-stap maal de gasprijs van dat moment, per dag, maand en jaar
- triggers:
- trigger: state
entity_id: sensor.energie_bron_gas
- trigger: time
at: "00:00:00"
- trigger: homeassistant
event: start
- trigger: event
event_type: event_template_reloaded
- trigger: event
event_type: energie_overzicht_reset
id: reset
sensor:
- name: "Energie Gas vandaag"
unique_id: energie_gas_dag
default_entity_id: sensor.energie_gas_dag
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:fire
state: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('gas', '%Y-%m-%d', this, 'eur', trigger.id == 'reset') }}"
attributes:
m3: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('gas', '%Y-%m-%d', this, 'm3', trigger.id == 'reset') }}"
meterstand: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('gas', '%Y-%m-%d', this, 'meter', trigger.id == 'reset') }}"
periode: "{{ now().strftime('%Y-%m-%d') }}"
- name: "Energie Gas deze maand"
unique_id: energie_gas_maand
default_entity_id: sensor.energie_gas_maand
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:fire
state: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('gas', '%Y-%m', this, 'eur', trigger.id == 'reset') }}"
attributes:
m3: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('gas', '%Y-%m', this, 'm3', trigger.id == 'reset') }}"
meterstand: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('gas', '%Y-%m', this, 'meter', trigger.id == 'reset') }}"
periode: "{{ now().strftime('%Y-%m') }}"
- name: "Energie Gas dit jaar"
unique_id: energie_gas_jaar
default_entity_id: sensor.energie_gas_jaar
unit_of_measurement: "€"
device_class: monetary
state_class: total
icon: mdi:fire
state: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('gas', '%Y', this, 'eur', trigger.id == 'reset') }}"
attributes:
m3: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('gas', '%Y', this, 'm3', trigger.id == 'reset') }}"
meterstand: "{% from 'energie.jinja' import energie_calc %}{{ energie_calc('gas', '%Y', this, 'meter', trigger.id == 'reset') }}"
periode: "{{ now().strftime('%Y') }}"
Sla op en laad de sensoren:
- Ontwikkelhulpmiddelen → YAML → Configuratie controleren. Wacht op “Configuratie zal werken”.
- Klik daaronder bij YAML-configuratie herladen op Sjabloon-entiteiten. Heb je packages net voor het eerst aangezet, start dan in plaats daarvan Home Assistant opnieuw op.
- Ga naar Ontwikkelhulpmiddelen → Toestanden en filter op
energie_. Je ziet nu 39 nieuwe sensoren.
De telsensoren beginnen meteen te tellen vanaf de huidige meterstand: ze starten bij het herladen, bij het opstarten van Home Assistant en bij elke meterstap. Zo staat ook een teller van een meter die even stilstaat (gas in de zomer, zon ’s nachts) gewoon op €0,00. Na een paar minuten zie je bij afname de eerste centen verschijnen.
Twee keuzes die ertoe doen, mocht je het zelf willen aanpassen:
default_entity_idlegt het entity-id vast. Zonder deze regel maakt Home Assistant het id van de naam (sensor.energie_afname_net_vandaag) en vinden de uitkomsten hun bron niet.- Geen
utility_meter. Elke telsensor houdt zijn eigen periode bij. Zo kunnen bedragen ook dalen (laden, negatieve prijzen) zonder dat een teller dat als reset ziet.
Alle tellers tegelijk op nul
Elke telsensor luistert ook naar de gebeurtenis energie_overzicht_reset. Ga naar Ontwikkelhulpmiddelen → Gebeurtenissen, typ bij Gebeurtenistype energie_overzicht_reset en klik op Gebeurtenis afvuren. Dag, maand en jaar beginnen dan allemaal opnieuw vanaf de huidige meterstand. Handig als je een verkeerde sensor had ingevuld, of als je van leverancier wisselt en schoon wilt beginnen.
Stap 3: het dashboard
Het dashboard is een tabblad met drie blokken (Vandaag, Deze maand en Dit jaar) van acht kaarten, plus een blok Uitleg dat in gewone woorden zegt wat elke kaart betekent. Op de smalle kaarten staat de naam bovenaan en het bedrag eronder, zodat alles ook op een telefoon past. Een negatief bedrag staat er als −€1,87.
| Kaart | Wat je ziet | Wat het betekent |
|---|---|---|
| Van het net | bedrag · kWh | Stroom die je hebt ingekocht, elke kWh tegen de prijs van dat moment |
| Teruggeleverd | bedrag · kWh | Stroom die je aan het net leverde, en wat dat opleverde |
| Netto stroomkosten | bedrag | Wat je per saldo voor stroom betaalt: van het net min teruggeleverd. Groen als je meer terugkreeg dan je betaalde |
| Gas | bedrag · m³ | Gas dat je hebt verbruikt, elke m³ tegen de gasprijs van die dag |
| Stroom + gas | bedrag | Je totale energiekosten: netto stroomkosten plus gas |
| Zonnestroom | bedrag, kWh opgewekt | Wat je panelen opwekten, tegen de netprijs van dat moment: dit had je anders moeten inkopen |
| Batterijwinst | bedrag, kWh ontladen en geladen | Wat de batterij opleverde bij ontladen min wat het laden kostte. Rood als laden meer kostte dan ontladen opleverde. Na een nacht laden staat dit tijdelijk in de min, tot de batterij in de dure uren weer ontlaadt |
| Totaal bespaard | bedrag, met daaronder wat je zonder zon en batterij had betaald | Zonnestroom plus batterijwinst. Rood als het (nog) negatief is |
Zo voeg je het toe:
- Open je dashboard en klik rechtsboven op het potlood (Dashboard bewerken). Vraagt Home Assistant of je de controle wilt overnemen, kies dan Controle overnemen. Liever eerst proberen? Maak dan een nieuw dashboard aan via Instellingen → Dashboards → Dashboard toevoegen.
- Klik op de drie puntjes rechtsboven en kies Raw-configuratie-editor.
- Zoek de regel
views:. Plak het blok hieronder direct onder de laatste weergave, zodat het streepje voor- title:precies onder de andere streepjes staat. - Klik op Opslaan en sluit de editor. Bovenaan staat nu een tabblad met een geldicoon.
- title: Energie-overzicht
path: energie-overzicht
icon: mdi:cash-multiple
type: sections
max_columns: 4
sections:
- type: grid
cards:
- type: heading
heading: Vandaag
icon: mdi:calendar
- type: custom:mushroom-template-card
entity: sensor.energie_afname_dag
primary: "Van het net"
secondary: "{% set v = states('sensor.energie_afname_dag') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }} · {{ (state_attr('sensor.energie_afname_dag','kwh') | float(0)) | round(1) | string | replace('.', ',') }} kWh"
icon: mdi:transmission-tower-import
icon_color: "orange"
grid_options: {columns: 6, rows: 1}
tap_action: {action: more-info}
- type: custom:mushroom-template-card
entity: sensor.energie_teruglevering_dag
primary: "Teruggeleverd"
secondary: "{% set v = states('sensor.energie_teruglevering_dag') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }} · {{ (state_attr('sensor.energie_teruglevering_dag','kwh') | float(0)) | round(1) | string | replace('.', ',') }} kWh"
icon: mdi:transmission-tower-export
icon_color: "teal"
grid_options: {columns: 6, rows: 1}
tap_action: {action: more-info}
- type: custom:mushroom-template-card
entity: sensor.energie_netto_betaald_dag
primary: "Netto stroomkosten {% set v = states('sensor.energie_netto_betaald_dag') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }}"
secondary: "Van het net min teruggeleverd"
icon: mdi:cash
icon_color: "{% if states('sensor.energie_netto_betaald_dag') | float(0) <= 0 %}green{% else %}red{% endif %}"
grid_options: {columns: 12, rows: 1}
tap_action: {action: more-info}
- type: custom:mushroom-template-card
entity: sensor.energie_gas_dag
primary: "Gas"
secondary: "{% set v = states('sensor.energie_gas_dag') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }} · {{ (state_attr('sensor.energie_gas_dag','m3') | float(0)) | round(1) | string | replace('.', ',') }} m³"
icon: mdi:fire
icon_color: "deep-orange"
grid_options: {columns: 6, rows: 1}
tap_action: {action: more-info}
- type: custom:mushroom-template-card
entity: sensor.energie_stroom_en_gas_dag
primary: "Stroom + gas"
secondary: "{% set v = states('sensor.energie_stroom_en_gas_dag') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }} totaal"
icon: mdi:home-lightning-bolt
icon_color: "blue"
grid_options: {columns: 6, rows: 1}
tap_action: {action: more-info}
- type: custom:mushroom-template-card
entity: sensor.energie_zon_dag
primary: "Zonnestroom {% set v = states('sensor.energie_zon_dag') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }}"
secondary: "{{ (state_attr('sensor.energie_zon_dag','kwh') | float(0)) | round(1) | string | replace('.', ',') }} kWh opgewekt"
icon: mdi:solar-power
icon_color: "amber"
grid_options: {columns: 12, rows: 1}
tap_action: {action: more-info}
- type: custom:mushroom-template-card
entity: sensor.energie_slim_laden_dag
primary: "Batterijwinst {% set v = states('sensor.energie_slim_laden_dag') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }}"
secondary: "{{ (state_attr('sensor.energie_ontladen_dag','kwh') | float(0)) | round(1) | string | replace('.', ',') }} kWh ontladen · {{ (state_attr('sensor.energie_laden_dag','kwh') | float(0)) | round(1) | string | replace('.', ',') }} kWh geladen"
icon: mdi:battery-sync
icon_color: "{% if states('sensor.energie_slim_laden_dag') | float(0) >= 0 %}green{% else %}red{% endif %}"
grid_options: {columns: 12, rows: 1}
tap_action: {action: more-info}
- type: custom:mushroom-template-card
entity: sensor.energie_besparing_dag
primary: "Totaal bespaard {% set v = states('sensor.energie_besparing_dag') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }}"
secondary: "Zonder zon en batterij had je {% set v = states('sensor.energie_zonder_zon_batterij_dag') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }} betaald"
icon: mdi:piggy-bank
icon_color: "{% if states('sensor.energie_besparing_dag') | float(0) >= 0 %}green{% else %}red{% endif %}"
grid_options: {columns: 12, rows: 1}
tap_action: {action: more-info}
- type: grid
cards:
- type: heading
heading: Deze maand
icon: mdi:calendar
- type: custom:mushroom-template-card
entity: sensor.energie_afname_maand
primary: "Van het net"
secondary: "{% set v = states('sensor.energie_afname_maand') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }} · {{ (state_attr('sensor.energie_afname_maand','kwh') | float(0)) | round(1) | string | replace('.', ',') }} kWh"
icon: mdi:transmission-tower-import
icon_color: "orange"
grid_options: {columns: 6, rows: 1}
tap_action: {action: more-info}
- type: custom:mushroom-template-card
entity: sensor.energie_teruglevering_maand
primary: "Teruggeleverd"
secondary: "{% set v = states('sensor.energie_teruglevering_maand') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }} · {{ (state_attr('sensor.energie_teruglevering_maand','kwh') | float(0)) | round(1) | string | replace('.', ',') }} kWh"
icon: mdi:transmission-tower-export
icon_color: "teal"
grid_options: {columns: 6, rows: 1}
tap_action: {action: more-info}
- type: custom:mushroom-template-card
entity: sensor.energie_netto_betaald_maand
primary: "Netto stroomkosten {% set v = states('sensor.energie_netto_betaald_maand') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }}"
secondary: "Van het net min teruggeleverd"
icon: mdi:cash
icon_color: "{% if states('sensor.energie_netto_betaald_maand') | float(0) <= 0 %}green{% else %}red{% endif %}"
grid_options: {columns: 12, rows: 1}
tap_action: {action: more-info}
- type: custom:mushroom-template-card
entity: sensor.energie_gas_maand
primary: "Gas"
secondary: "{% set v = states('sensor.energie_gas_maand') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }} · {{ (state_attr('sensor.energie_gas_maand','m3') | float(0)) | round(1) | string | replace('.', ',') }} m³"
icon: mdi:fire
icon_color: "deep-orange"
grid_options: {columns: 6, rows: 1}
tap_action: {action: more-info}
- type: custom:mushroom-template-card
entity: sensor.energie_stroom_en_gas_maand
primary: "Stroom + gas"
secondary: "{% set v = states('sensor.energie_stroom_en_gas_maand') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }} totaal"
icon: mdi:home-lightning-bolt
icon_color: "blue"
grid_options: {columns: 6, rows: 1}
tap_action: {action: more-info}
- type: custom:mushroom-template-card
entity: sensor.energie_zon_maand
primary: "Zonnestroom {% set v = states('sensor.energie_zon_maand') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }}"
secondary: "{{ (state_attr('sensor.energie_zon_maand','kwh') | float(0)) | round(1) | string | replace('.', ',') }} kWh opgewekt"
icon: mdi:solar-power
icon_color: "amber"
grid_options: {columns: 12, rows: 1}
tap_action: {action: more-info}
- type: custom:mushroom-template-card
entity: sensor.energie_slim_laden_maand
primary: "Batterijwinst {% set v = states('sensor.energie_slim_laden_maand') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }}"
secondary: "{{ (state_attr('sensor.energie_ontladen_maand','kwh') | float(0)) | round(1) | string | replace('.', ',') }} kWh ontladen · {{ (state_attr('sensor.energie_laden_maand','kwh') | float(0)) | round(1) | string | replace('.', ',') }} kWh geladen"
icon: mdi:battery-sync
icon_color: "{% if states('sensor.energie_slim_laden_maand') | float(0) >= 0 %}green{% else %}red{% endif %}"
grid_options: {columns: 12, rows: 1}
tap_action: {action: more-info}
- type: custom:mushroom-template-card
entity: sensor.energie_besparing_maand
primary: "Totaal bespaard {% set v = states('sensor.energie_besparing_maand') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }}"
secondary: "Zonder zon en batterij had je {% set v = states('sensor.energie_zonder_zon_batterij_maand') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }} betaald"
icon: mdi:piggy-bank
icon_color: "{% if states('sensor.energie_besparing_maand') | float(0) >= 0 %}green{% else %}red{% endif %}"
grid_options: {columns: 12, rows: 1}
tap_action: {action: more-info}
- type: grid
cards:
- type: heading
heading: Dit jaar
icon: mdi:calendar
- type: custom:mushroom-template-card
entity: sensor.energie_afname_jaar
primary: "Van het net"
secondary: "{% set v = states('sensor.energie_afname_jaar') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }} · {{ (state_attr('sensor.energie_afname_jaar','kwh') | float(0)) | round(1) | string | replace('.', ',') }} kWh"
icon: mdi:transmission-tower-import
icon_color: "orange"
grid_options: {columns: 6, rows: 1}
tap_action: {action: more-info}
- type: custom:mushroom-template-card
entity: sensor.energie_teruglevering_jaar
primary: "Teruggeleverd"
secondary: "{% set v = states('sensor.energie_teruglevering_jaar') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }} · {{ (state_attr('sensor.energie_teruglevering_jaar','kwh') | float(0)) | round(1) | string | replace('.', ',') }} kWh"
icon: mdi:transmission-tower-export
icon_color: "teal"
grid_options: {columns: 6, rows: 1}
tap_action: {action: more-info}
- type: custom:mushroom-template-card
entity: sensor.energie_netto_betaald_jaar
primary: "Netto stroomkosten {% set v = states('sensor.energie_netto_betaald_jaar') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }}"
secondary: "Van het net min teruggeleverd"
icon: mdi:cash
icon_color: "{% if states('sensor.energie_netto_betaald_jaar') | float(0) <= 0 %}green{% else %}red{% endif %}"
grid_options: {columns: 12, rows: 1}
tap_action: {action: more-info}
- type: custom:mushroom-template-card
entity: sensor.energie_gas_jaar
primary: "Gas"
secondary: "{% set v = states('sensor.energie_gas_jaar') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }} · {{ (state_attr('sensor.energie_gas_jaar','m3') | float(0)) | round(1) | string | replace('.', ',') }} m³"
icon: mdi:fire
icon_color: "deep-orange"
grid_options: {columns: 6, rows: 1}
tap_action: {action: more-info}
- type: custom:mushroom-template-card
entity: sensor.energie_stroom_en_gas_jaar
primary: "Stroom + gas"
secondary: "{% set v = states('sensor.energie_stroom_en_gas_jaar') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }} totaal"
icon: mdi:home-lightning-bolt
icon_color: "blue"
grid_options: {columns: 6, rows: 1}
tap_action: {action: more-info}
- type: custom:mushroom-template-card
entity: sensor.energie_zon_jaar
primary: "Zonnestroom {% set v = states('sensor.energie_zon_jaar') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }}"
secondary: "{{ (state_attr('sensor.energie_zon_jaar','kwh') | float(0)) | round(1) | string | replace('.', ',') }} kWh opgewekt"
icon: mdi:solar-power
icon_color: "amber"
grid_options: {columns: 12, rows: 1}
tap_action: {action: more-info}
- type: custom:mushroom-template-card
entity: sensor.energie_slim_laden_jaar
primary: "Batterijwinst {% set v = states('sensor.energie_slim_laden_jaar') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }}"
secondary: "{{ (state_attr('sensor.energie_ontladen_jaar','kwh') | float(0)) | round(1) | string | replace('.', ',') }} kWh ontladen · {{ (state_attr('sensor.energie_laden_jaar','kwh') | float(0)) | round(1) | string | replace('.', ',') }} kWh geladen"
icon: mdi:battery-sync
icon_color: "{% if states('sensor.energie_slim_laden_jaar') | float(0) >= 0 %}green{% else %}red{% endif %}"
grid_options: {columns: 12, rows: 1}
tap_action: {action: more-info}
- type: custom:mushroom-template-card
entity: sensor.energie_besparing_jaar
primary: "Totaal bespaard {% set v = states('sensor.energie_besparing_jaar') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }}"
secondary: "Zonder zon en batterij had je {% set v = states('sensor.energie_zonder_zon_batterij_jaar') | float(0) %}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }} betaald"
icon: mdi:piggy-bank
icon_color: "{% if states('sensor.energie_besparing_jaar') | float(0) >= 0 %}green{% else %}red{% endif %}"
grid_options: {columns: 12, rows: 1}
tap_action: {action: more-info}
- type: grid
cards:
- type: heading
heading: Uitleg
icon: mdi:information-outline
- type: markdown
content: |
**Van het net** · Stroom die je hebt ingekocht, elke kWh tegen de prijs van dat moment.
**Teruggeleverd** · Stroom die je aan het net hebt geleverd, en wat dat opleverde.
**Netto stroomkosten** · Wat je per saldo voor stroom betaalt: van het net min teruggeleverd. Groen betekent dat je meer terugkreeg dan je betaalde.
**Gas** · Gas dat je hebt verbruikt, elke m³ tegen de gasprijs van die dag.
**Stroom + gas** · Je totale energiekosten: netto stroomkosten plus gas.
**Zonnestroom** · Alles wat je panelen opwekten, tegen de netprijs van dat moment. Dit had je anders moeten inkopen.
**Batterijwinst** · Wat de batterij opleverde bij ontladen, min wat het laden kostte. Rood betekent dat laden meer kostte dan ontladen opleverde. Na een nacht laden staat dit tijdelijk in de min, tot de batterij in de dure uren weer ontlaadt.
**Totaal bespaard** · Zonnestroom plus batterijwinst. Daaronder staat wat je zonder zon en batterij had betaald.
*Alleen variabele kosten voor stroom en gas, zonder vastrecht en netbeheer. Tik op een kaart voor het verloop.*
Een tik op een kaart opent de geschiedenis van die sensor. Heb je geen batterij, dan blijft Batterijwinst op €0 staan; je kunt die kaart dan weghalen.
Stap 4: het avondbericht
Elke avond krijg je een melding op je telefoon met de dag in een paar regels. Zo ziet hij eruit (de bedragen zijn een voorbeeld):
⚡ Energie vandaag
🔌 Net: €2,62 afgenomen (9,3 kWh), €0,08 terug → netto €2,54
🔥 Gas: €1,34 (0,7 m³) → stroom + gas €3,88
☀️ Zon: 3,4 kWh, waarde €0,96
🔋 Batterijwinst: €0,61 (5,8 kWh geleverd, 7,6 kWh geladen)
💰 Totaal bespaard: €1,57 vandaag, €18,40 deze maand
🌤️ Morgen: ~3,2 kWh zon verwacht
Eerst je telefoon opzoeken. Ga naar Ontwikkelhulpmiddelen → Acties en typ notify.mobile_app. Je ziet iets als notify.mobile_app_pixel_8 of notify.mobile_app_iphone_van_sanne. Dat is je telefoon. Zie je niets, installeer dan eerst de Home Assistant-app op je telefoon en log in.
Dan de automation. Ga naar Instellingen → Automatiseringen en scènes → Automatisering aanmaken → Nieuwe automatisering. Klik op de drie puntjes rechtsboven, kies Bewerken in YAML, wis wat er staat en plak dit erin. Vervang notify.mobile_app_JOUW_TELEFOON door wat je net vond en klik op Opslaan.
alias: "Notificatie: Energie-avondbericht"
description: Dagelijkse samenvatting van stroom, gas, zon, batterij en besparing.
mode: single
triggers:
- trigger: time
at: "23:55:00"
actions:
- action: notify.mobile_app_JOUW_TELEFOON
data:
title: "⚡ Energie vandaag"
message: >-
{%- macro eur(e) -%}{%- set v = states(e) | float(0) -%}{{ '-' if v < 0 else '' }}€{{ '%.2f' | format(v | abs) | replace('.', ',') }}{%- endmacro -%}
{%- macro kwh(e) -%}{{ (state_attr(e, 'kwh') | float(0)) | round(1) | string | replace('.', ',') }}{%- endmacro -%}
{%- set pv = state_attr('sensor.energie_zon_dag', 'kwh') | float(0) -%}
{%- set verwachting = 'sensor.energy_production_tomorrow' -%}
🔌 Net: {{ eur('sensor.energie_afname_dag') }} afgenomen ({{ kwh('sensor.energie_afname_dag') }} kWh), {{ eur('sensor.energie_teruglevering_dag') }} terug → netto {{ eur('sensor.energie_netto_betaald_dag') }}
🔥 Gas: {{ eur('sensor.energie_gas_dag') }} ({{ (state_attr('sensor.energie_gas_dag', 'm3') | float(0)) | round(1) | string | replace('.', ',') }} m³) → stroom + gas {{ eur('sensor.energie_stroom_en_gas_dag') }}
☀️ Zon: {{ kwh('sensor.energie_zon_dag') }} kWh, waarde {{ eur('sensor.energie_zon_dag') }}
🔋 Batterijwinst: {{ eur('sensor.energie_slim_laden_dag') }} ({{ kwh('sensor.energie_ontladen_dag') }} kWh geleverd, {{ kwh('sensor.energie_laden_dag') }} kWh geladen)
💰 Totaal bespaard: {{ eur('sensor.energie_besparing_dag') }} vandaag, {{ eur('sensor.energie_besparing_maand') }} deze maand
{%- if has_value(verwachting) %}{% set morgen = states(verwachting) | float(0) %}
🌤️ Morgen: ~{{ morgen | round(1) | string | replace('.', ',') }} kWh zon verwacht{% if morgen > pv * 1.2 %} (zonniger){% elif morgen < pv * 0.8 %} (minder zon){% endif %}{% endif %}
De melding gaat om 23:55, zodat de hele dag erin zit. Liever eerder? Pas de tijd aan; de batterij levert vaak nog tot laat, dus dan mis je een stukje.
Zonverwachting (optioneel). De laatste regel verschijnt alleen als je Forecast.Solar hebt. Voeg die toe via Instellingen → Apparaten & diensten → Integratie toevoegen → Forecast.Solar en vul de hellingshoek, richting en het piekvermogen van je panelen in. Heet je sensor anders dan sensor.energy_production_tomorrow, pas dan die ene regel aan. Zonder Forecast.Solar valt de regel vanzelf weg.
Testen hoeft niet tot de avond: open de automation, klik op de drie puntjes en kies Acties uitvoeren.
Controleren of alles werkt
Loop na een uur dit lijstje na:
- Bij Ontwikkelhulpmiddelen → Toestanden heeft
sensor.energie_bron_afnameeen getal (je meterstand). -
sensor.energie_afname_dagis groter dan €0,00 en heeft een attribuutkwh. - Dag, maand en jaar zijn op de eerste dag gelijk aan elkaar.
- Netto stroomkosten plus Totaal bespaard is gelijk aan Zonder zon en batterij.
- De testmelding komt binnen op je telefoon.
Problemen oplossen
| Wat je ziet | Waarschijnlijke oorzaak | Oplossing |
|---|---|---|
TemplateNotFound: energie.jinja in het logboek |
Bestand staat niet in custom_templates of is niet herladen |
Controleer de map en de naam (eindigt op .jinja) en voer Reload custom templates uit |
Geen enkele energie_-sensor te zien |
Packages staan niet aan, of Home Assistant is niet herstart | Controleer configuration.yaml en start opnieuw op |
sensor.energie_bron_… is Niet beschikbaar |
Id verkeerd getypt, of de meter is offline | Vergelijk het id letter voor letter met Toestanden. Bij zon is dit ’s nachts normaal |
| Bedragen blijven op €0,00 | Prijssensor klopt niet | Test {{ states('sensor.mijn_stroomprijs') }} bij Sjabloon; je moet een getal zien |
| Bedragen veel te hoog | Prijs in cent in plaats van euro, of meter in Wh | Gebruik een prijs in €/kWh en een meter in kWh |
| Kaarten tonen “Custom element doesn’t exist” | Mushroom niet geïnstalleerd of browser niet ververst | Installeer Mushroom via HACS en ververs met Ctrl+F5 |
| Melding komt niet aan | Verkeerde notify.mobile_app_… |
Zoek de juiste naam op bij Acties |
Na een fix kun je met de reset-gebeurtenis uit stap 2 alle tellers schoon laten beginnen.
Waar je op moet letten
De variabele stroomkosten horen binnen een procent of twee van je factuur te liggen. Een paar dingen zitten er bewust niet in.
- Het telt vanaf de installatie. Er is geen geschiedenis terug te halen, dus de eerste maand en het eerste jaar zijn onvolledig. De eerste volle maand is pas echt vergelijkbaar.
- Salderen stopt per 1 januari 2027. Tot dan levert teruggeleverde stroom dezelfde prijs op als afgenomen stroom. Daarna krijg je voor teruglevering minder, en moet de teruglevering een eigen prijs krijgen in de macro.
- Geen vaste kosten. Netbeheer, vastrecht en de vermindering energiebelasting staan niet in het overzicht. Het gaat alleen om wat per kWh of m³ verandert.
- Gas telt in stappen. De meeste gasmeters geven hun stand maar eens per uur (soms per 5 minuten) door. Het gasbedrag springt dus per uur omhoog in plaats van geleidelijk.
- Kleine afwijkingen zijn normaal. Meters tellen in stapjes van 1 tot 10 Wh en de prijs wisselt per kwartier of uur. Leg het af en toe naast de app van je leverancier.
- Ruim oude sensoren op. Heb je oude kosten- en besparingssensoren, controleer dan eerst of geen dashboard of automation ze nog gebruikt. Daarna kunnen ze weg.
Liever dat Claude dit voor je inbouwt en je eigen sensoren opzoekt? Lees dan hoe je Claude aan Home Assistant koppelt.
Meer lezen
- Alle bestanden uit deze blog op GitHub: Klaar om over te nemen, in de map
energie-overzichtvan mijn repository Fonfey/HomeAssistant - Template-sensoren in Home Assistant: trigger-sensoren en
this - Herbruikbare templates (macro's)
- Packages in Home Assistant
- File editor-app
- HACS installeren
- Mushroom-kaarten
- Forecast.Solar-integratie
- Salderingsregeling stopt per 1 januari 2027