DashboardIntegrationer

Overvågning af elforbrug – DEL 1: Elpriser

Jeg viser, hvordan du kan bruge Home Assistant (HA) til at overvåge dit elforbrug ved at integrere strømpriser og forbrug.

Guiden er opdelt i tre dele:

  • DEL 1 – integration og visning af elpriser
  • DEL 2 – integration af live forbrugsmåling på el
  • DEL 3 – opsætning af overvågning af elforbrug i HA’s energi dashboard

Dette er den første del af guiden, som beskriver, hvordan du henter aktuelle elpriser og viser dem i en graf i dit dashboard.

Inden vi går i gang, skal du sørge for, at du har installeret HACS (Home Assistant Community Store), da vi skal have bruge Energi Data Service til at hente Apex Chart komponenten til at lave grafer med priserne. Læs her, hvis du ikke allerede har HACS installeret:

Installation af Energi Data Service integrationen

Energi Data Service integrationen kan bruges til at hente elspotpriser fra Nordpool via hjemmesiden energidataservice, som Energinet stiller gratis til rådighed. Elpriserne opdateres hver dag omkring kl. 13 for den kommende dag. Integrationen giver også mulighed for at få en prognose over udviklingen i spotpriser i de efterfølgende 5 dage ved at hente data fra carnot.dk. Du skal oprette en brugerprofil og generere en API nøgle for at få adgang til prognose data hos carnot. Du kan oprette en brugerprofil her og efterfølgende lave en API nøgle her.

BEMÆRK
Energi Data Service integrationen henter spotpriser pr. time og er derfor primært relevant at bruge, hvis du ikke har en fast timepris.

Der er dog også fra version 1.01 af integrationen mulighed for at bruge en fastpris i stedet for spotpriser.

Installer integration fra HACS

Start HACS ved at vælge HACS i din sidemenu.

HACS forsiden skal du trykke på menupunktet ”Integrationer”:

VIGTIGT: For at finde Energi Data Service integrationen, skal du trykke på ”Explore & download repositories” knappen i nederste højre hjørne:

Nu kan vi søge efter integrationen ved at skrive navnet eller en del heraf i feltet ”Søg efter repository”:

Klik på ”Download” knappen i nederste højre hjørne:

Klik på ”Download” knappen for at installere den seneste version.

Genstart HA

Du skal genstarte HA inden, vi kan gå videre med opsætningen af integrationen. Det gøres ved at klikke på ”Genstart” knappen under ”Udviklerværktøjer” -> ”YAML”:

Bekræft, at du ønsker at genstarte HA ved at klikke på ”Genstart” knappen:

HA_confirm_restart

Konfigurer Energi Data Service integrationen

Når HA er genstartet, er næste skridt at tilføje og konfigurere Energi Data Service som en ny integration i HA.

Dette gøres ved at navigere til ”Indstillinger” –> ”Enheder og tjenester” eller ved at klikke på nedenstående knap for at gå direkte til opsætningen:

Du skal nu trykke knappen ”Tilføj integration” i nederste højre hjørne og søge efter Energi Data Service i oversigten. Klik på integrationen, når den er fundet:

Indtast et valgfrit med sigende navn og vælg ”Denmark” under land og klik på ”Send” knappen:

Vælg region (Øst / Vest) og om priser skal tillægges moms og evt. yderligere omkostninger i form af afgifter og tillæg, som kan indtastes i feltet ”Skabelon til ekstra omkostninger”:

Skabelon for ekstra omkostninger

Den samlede elpris afhænger af din aftale med din el-leverandør og omkostninger til det netselskab, der distribuerer el i dit område. Den nettarif, som man betaler til net selskabet vil ofte være forskellig afhængigt af årstid (sommer/vinter) og tidspunkt på døgnet. Du kan se taksterne på din elregning eller ved at slå din leverandør og netselskab op på https://elspotpris.dk/.

Energi Data Service integrationen giver mulighed for at tilføje alle de afgifter og tariffer, som du betaler i feltet “Skabelon for ekstra omkostninger”. Her kan der indtastes en kode, som beregner det samlede tillæg for hver time på dagen. Du skal som udgangspunkt tilpasse denne kode, når der sker ændringer i afgifter eller tariffer.

OPDATERING DEN 11.01.2023
Energi Data Service integrationen er blevet opdateret, så den fra version 1.0 giver mulighed for automatisk at hente tariffer fra Energinet. Denne mulighed er tilføjet i nedenstående beskrivelse. De øvrige muligheder kan fortsat anvendes. Det anbefales, at kontrollere din pris samt at følge med på integrationens GitHub side, hvor eventuelle fejl i beregninger mv. kan indrapporteres.

Hent tariffer automatisk via Energi Data Service integrationen

Som nævnt ovenfor, kan du få integrationen til at hente tariffer fra Energinet automatisk. Hvis du ønsker at bruge denne funktion, skal du som udgangspunkt ikke indtaste noget i feltet med “Skabelon til ekstra omkostninger”. Det kan dog være nødvendigt at bruge feltet, hvis du betaler et tillæg til spotprisen hos din elleverandør, da dette ikke medtages fra Energinet pt.

Tryk på “Send knappen og på det efterfølgende skærmbillede, kan du vælge, at tariffer skal hentes automatisk ved at sætte kryds i feltet “Automatisk hent af tariff data” og derefter trykke på “Send” knappen:

Skærm-billede: Aktiver ekstra services

Du skal nu vælge det netselskab, der står for distribution af strøm i det område, hvor du bor. Er du i tvivl om om hvem, der er dit netselskab, kan du slå din adresse op på Green Power Denmark. Tryk derefter på “Send” knappen.

Hent tariffer automatisk via Eloverblik integrationen

I stedet for selv at vedligeholde en skabelon med afgifter og omkostninger, så kan du installere Eloverblik integrationen fra HACS. Den henter dels det faktiske strømforbrug, men også de omkostninger, som du faktisk skal betale.

Du kan derefter tilføje følgende som skabelon for ekstraomkostninger i Energi Data Service integrationen:

{{ state_attr('sensor.eloverblik_tariff_sum','hourly')[now().hour] }}

Manuelt vedligeholdt skabelon med afgifter og omkostninger,

Hvis du selv vil holde styr på afgifter og omkostninger, så kan du selv lave en skabelon, som beregner det samlede tillæg til spotprisen pr. time.

Nedenfor vises et eksempel på en kode, der kan tilpasses med de omkostninger, du betaler udover den rå elpris.

Eksemplet tager udgangspunkt i gældende tariffer og afgifter pr. 1. januar 2024 i Radius forsyningsområde og en elleverandør, der ikke opkræver spotpristillæg:

{% set s = 
  { "abonnement_net": 0.00, 
    "abonnement_ellev": 0.00, 
    "spot_tillaeg": 0.0,
    "elafgift_2024": 0.761, 
    "systemydelser": 0.125, 
    "nettarif_2024_vinter_lav": 0.1215,
    "nettarif_2024_vinter_hoej": 0.3645,
    "nettarif_2024_vinter_spids": 1.0934,
    "nettarif_2024_sommer_lav": 0.1215,
    "nettarif_2024_sommer_hoej": 0.1822,
    "nettarif_2024_sommer_spids": 0.4738
  } %} 
{% set fast_sum = s.abonnement_net + s.abonnement_ellev + s.spot_tillaeg + s.systemydelser %} 
{% set cdt = now() %} 
{% set elafgift = s.elafgift_2024 %}
{% if cdt.month >= 10 or cdt.month < 4 %}
    {% set nettarif_lav = s.nettarif_2024_vinter_lav %}
    {% set nettarif_hoej = s.nettarif_2024_vinter_hoej %}
    {% set nettarif_spids = s.nettarif_2024_vinter_spids %}
{% else %}
    {% set nettarif_lav = s.nettarif_2024_sommer_lav %}
    {% set nettarif_hoej = s.nettarif_2024_sommer_hoej %}
    {% set nettarif_spids = s.nettarif_2024_sommer_spids %}
{% endif %} 
{% if cdt.hour >= 17 and cdt.hour < 21 %}
  {{nettarif_spids + fast_sum + elafgift}}
{% else %}
  {% if cdt.hour >= 0 and cdt.hour < 6 %}
    {{nettarif_lav + fast_sum + elafgift}}
  {% else %}
    {{nettarif_hoej + fast_sum + elafgift}}
  {% endif %} 
{% endif %}

Du kan rette beløb i toppen af koden, så de passer med taksterne fra din el-leverandør og netselskab.

VIGTIGT
Alle beløb skal indtastes uden moms, da integrationen selv tilføjer momsen.

Forklaringer

I tabellen nedenfor er de forskellige omkostningstyper kort forklaret:

OmkostningForklaring
abonnement_netHer kan angives det beløb, der betales i fast abonnement til dit netselskab. Find det beløb (excl. moms) du betaler pr. måned, gang med 12 og divider med dit forventede årsforbug i kWh. Du kan også skrive 0, hvis du ikke vil indregne abonnement som en del af timeprisen.
abonnement_ellevHer kan angives et evt. fast abonnement (excl. moms), som du betaler til din el-leverandør. Du skal fordele abonnementet ud på det forventede antal kWh, som du forbruger. Du kan også skrive 0, hvis du ikke vil indregne abonnement som en del af timeprisen.
spot_tillaegHer kan angives et evt. tillæg pr. kWh (excl. moms), som du betaler til din el-leverandør udover spotprisen. Du kan se spottillægget på din elregning eller ved at finde din elleverandør på https://stromligning.dk/live.
elafgiftDette er elafgiften (excl. moms). Betaler du reduceret elafgift, fx. grundet elopvarmning, kan du se her, hvordan dette kan laves.
systemydelserHer angives en samlet pris pr. kWh (excl. moms) for tariffer som betales til Energinet, f.eks. nettarif og systemtarif. Du kan finde de aktuelle beløb her: https://energinet.dk/el/elmarkedet/tariffer/aktuelle-tariffer/
nettarif_2024_vinter_lav
nettarif_2024_vinter_hoej
nettarif_2024_vinter_spids  
Her angives de nettariffer i kr. pr. kWh (excl. moms), der fra 1. januar 2024 skal betales til de netselskaber (f.eks. Radius og Cerius), der har indført en opdateret tarifmodel, som inddeler hver dag i forskellige tidszoner og har differentieret takst:  

– Lavlast mellem kl. 24-06
– Højlast mellem kl. 6-17 og kl. 21-24
– Spidslast mellem kl. 17-21
nettarif_2024_sommer_lav
nettarif_2024_sommer_hoej
nettarif_2024_sommer_spids
Her angives de nettariffer i kr. pr. kWh (excl. moms), der skal betales til de netselskaber (f.eks. Radius og Cerius), der har indført en opdateret tarifmodel, som inddeler hver dag i forskellige tidszoner og har differentieret takst i hhv. vinter- og sommerperioden:  

– Lavlast mellem kl. 24-06
– Højlast mellem kl. 6-17 og kl. 21-24
– Spidslast mellem kl. 17-21

Valgfri opsætning: Prognose data fra Carnot

Du kan også vælge om integrationen skal hente prognose data fra Carnot.dk. Sæt kryds i feltet ”AI prognoser fra Carnot”, hvis du ønsker at bruge prognose data og klik derefter på ”Send” knappen:

Skærm-billede: Aktiver ekstra services

Har du valgt at få vist prognose data, skal du nu angive den email, som du har brugt ved tilmelding hos Carnot.dk samt den API nøgle, som du kan genere under din profil:

Afslut opsætningen

Sidste trin er at tilknytte integrationen til et område. Du kan efterlade det blankt eller lave et nyt område. Tryk herefter på ”Afslut” knappen:

Du skulle nu gerne se integrationen i listen over dine integrationer:

Klik på integrationen for at se, om du har fået data ind:

Mangler du data, kan du kigge i loggen for at se, om der er sket en fejl i opsætningen.

Flere sensorer?

Hvis du vil have vist data fra andre regioner, kan du tilføje integrationen flere gange ved at gentage ovenstående trin.

Du kan f.eks. lave én sensor uden afgifter og én med alle afgifter. Dette bruger jeg selv.

Visning af timepriser i en graf

Det findes et indbygget graf kort i HA, men dette har begrænsede muligheder for tilpasning af layout. I stedet kan vi Apex charts komponenten fra HACS til at vise timepriser. Har du allerede Apex chart installeret, kan du springe det næste trin over.

Installation af Apex chart

Apex chart komponenten ligger under menupunkt ”Frontend” i HACS.

Start HACS ved at vælge HACS i din sidemenu.

HACS forside skal du trykke på menupunktet ”Frontend”:

VIGTIGT: For at finde komponenten, skal du trykke på ”Explore & download repositories” knappen i nederste højre hjørne:

Nu kan du søge efter integrationen ved at skrive navnet eller en del heraf i feltet ”Søg efter repository”:

Klik på ”Download” knappen i nederste højre hjørne:

Klik på ”Download” knappen for at installere den seneste version:

Det er ikke nødvendigt at genstarte HA efter installation af Frontend komponenter, men du skal bekræft, at du vil genindlæse den nye komponent ved at klikke på ”Genindlæs” knappen:

TIP
Oplever du, at frontend komponenter ikke automatisk bliver indlæst, mangler ud sandsynligvis at tilføje følgende til din konfigurations fil (configuration.yaml):

lovelace:
mode: storage

Vis graf med timepriser

Naviger til det sted i dit dashboard, hvor grafen skal indsættes og klik på dit tre prikker i øverste højre hjørne og vælg ”Rediger betjeningspanel”:

Klik på knappen ”Tilføj kort” for at tilføje grafen:

Vælg at tilføje et kort af type ”Manuel”:

Indsæt følgende kode i kode-editoren i venstre side af skærmen:

type: custom:apexcharts-card
apex_config:
  chart:
    height: 350px
all_series_config:
  unit: ' kr.'
experimental:
  color_threshold: true
header:
  title: Elpriser pr. time (kr/kWh)
  show: true
  standard_format: true
  show_states: false
  colorize_states: true
now:
  show: true
  label: Nu
graph_span: 2d
span:
  start: day
  offset: '-0h'
yaxis:
  - min: 0
    apex_config:
      tickAmount: 5
series:
  - entity: sensor.elpriser_inkl_afgifter
    type: column
    name: Inkl. afgifter
    data_generator: |
      var today = entity.attributes.raw_today.map((start, index) => {
        return [new Date(start["hour"]).getTime(), entity.attributes.raw_today[index]["price"]];
      });
      if (entity.attributes.tomorrow_valid) {
        var tomorrow = entity.attributes.raw_tomorrow.map((start, index) => {
          return [new Date(start["hour"]).getTime(), entity.attributes.raw_tomorrow[index]["price"]];
        });

        var data = today.concat(tomorrow);
      } else {
        var data = today
      }
      return data;
    float_precision: 2
    color_threshold:
      - value: 0
        color: green
      - value: 2
        color: orange
      - value: 3.5
        color: red
      - value: 5
        color: darkred
    show:
      extremas: time
      legend_value: false
  - entity: sensor.elpriser_excl_afgifter
    name: Excl. afgifter
    type: line
    color: 03a9f4
    stroke_width: 4
    float_precision: 2
    extend_to: false
    show:
      extremas: true
      legend_value: false
    data_generator: |
      var today = entity.attributes.raw_today.map((start, index) => {
        return [new Date(start["hour"]).getTime(), entity.attributes.raw_today[index]["price"]];
      });
      if (entity.attributes.tomorrow_valid) {
        var tomorrow = entity.attributes.raw_tomorrow.map((start, index) => {
          return [new Date(start["hour"]).getTime(), entity.attributes.raw_tomorrow[index]["price"]];
        });

        var data = today.concat(tomorrow);
      } else {
        var data = today
      }
      return data;

Husk at rette de to linjer med ”entity”, hvis du har brugt andre navne til dine sensor hhv. med og uden afgifter.

Hvis koden er korrekt, burde du kunne se graften i højre side af skærmen og derefter trykke på ”Gem” knappen:

Nu skulle du gerne have en graf i stil med følgende på dit dashboard:

Du kan også lave en graf, der fylder lidt mindre – f.eks. til brug på dit mobile dashboard:

Eksempel på mindre graf med timepriser til mobilt dashboard.

Denne kode kan bruges til at lave ovenstående graf:

type: custom:apexcharts-card
apex_config:
  chart:
    height: 150px
    toolbar:
      show: true
      offsetY: -27
      tools:
        selection: true
        download: false
        zoom: false
        zoomin: true
        zoomout: true
        pan: false
        reset: true
    zoom:
      enabled: true
  dataLabels:
    enabled: true
    style:
      fontSize: 10px
      colors:
        - '#fff'
    distributed: true
    background:
      enabled: false
    formatter: |
      EVAL:function(value) {
        return value.toFixed(2);
      }
  xaxis:
    tooltip:
      enabled: false
    labels:
      format: HH
    axisBorder:
      show: true
      color: grey
  plotOptions:
    bar:
      dataLabels:
        position: bottom
        maxItems: 32
        hideOverflowingLabels: true
        orientation: vertical
      columnWidth: 90%
all_series_config:
  unit: ' kr.'
experimental:
  color_threshold: true
header:
  title: Elpriser pr. time (kr/kWh)
  show: true
  standard_format: false
graph_span: 20h
span:
  start: hour
  offset: '-0h'
yaxis:
  - min: 0
    max: ~2
    apex_config:
      tickAmount: 4
series:
  - entity: sensor.elpriser_inkl_afgifter
    type: column
    name: Inkl. afgifter
    data_generator: |
      var today = entity.attributes.raw_today.map((start, index) => {
        return [new Date(start["hour"]).getTime(), entity.attributes.raw_today[index]["price"]];
      });
      if (entity.attributes.tomorrow_valid) {
        var tomorrow = entity.attributes.raw_tomorrow.map((start, index) => {
          return [new Date(start["hour"]).getTime(), entity.attributes.raw_tomorrow[index]["price"]];
        });

        var data = today.concat(tomorrow);
      } else {
        var data = today
      }
      return data;
    float_precision: 2
    color_threshold:
      - value: 0
        color: green
      - value: 1.5
        color: orange
      - value: 3
        color: red
      - value: 5
        color: darkred
    show:
      legend_value: false
      in_header: false
      datalabels: true

Du kan også lave en graf, der viser sammensætningen af dagens elpris i hhv. spotpris, elafgift og tariffer:

Denne kode er anvendt til at danne ovenstående graf:

type: custom:apexcharts-card
apex_config:
  tooltip:
    x:
      format: ddd kl. HH
  chart:
    height: 350px
    defaultLocale: da
    locales:
      - name: da
        options:
          shortDays:
            - Søn
            - Man
            - Tir
            - Ons
            - Tor
            - Fre
            - Lør
  xaxis:
    axisTicks:
      offsetX: 0
      offsetY: -3
    labels:
      show: true
      format: HH
      tickAmount: 11
      style:
        fontSize: 10px
        fontWeight: 399
  yaxis:
    min: 0
    max: 4
  plotOptions:
    bar:
      dataLabels:
        position: center
        maxItems: 32
        hideOverflowingLabels: true
        orientation: vertical
      columnWidth: 90%
  dataLabels:
    enabled: true
    style:
      fontSize: 10px
      colors:
        - '#fff'
    distributed: true
    background:
      enabled: false
    formatter: |
      EVAL:function(value) {
        return value.toFixed(2);
      }
all_series_config:
  unit: ' kr.'
experimental:
  color_threshold: true
header:
  title: Sammensætning af elpris
  show: true
  standard_format: true
  show_states: false
  colorize_states: true
stacked: true
now:
  show: true
  label: Nu
graph_span: 23h
span:
  start: day
  offset: '-0h'
series:

  - entity: sensor.energi_data_service
    type: column
    name: Elafgift
    color: '#00B0F0'
    data_generator: |
      var afgift = entity.attributes.tariffs.additional_tariffs.elafgift;
      var today = entity.attributes.raw_today.map((start, index) => {
        return [new Date(start["hour"]).getTime(), afgift];
      });
      if (entity.attributes.tomorrow_valid) {
        var tomorrow = entity.attributes.raw_tomorrow.map((start, index) => {
        return [new Date(start["hour"]).getTime(), afgift];
        });

        var data = today.concat(tomorrow);
      } else {
        var data = today
      }
      return data;
    float_precision: 2
    show:
      legend_value: false
      in_header: false
      datalabels: true
  - entity: sensor.energi_data_service
    type: column
    name: Tariffer
    color: '#63666A'
    data_generator: >
      var energinet =
      entity.attributes.tariffs.additional_tariffs.transmissions_nettarif +
      entity.attributes.tariffs.additional_tariffs.systemtarif; 

      var today = entity.attributes.raw_today.map((start, index) => {
        return [new Date(start["hour"]).getTime(), entity.attributes.tariffs.tariffs[index]+ energinet];
      });

      if (entity.attributes.tomorrow_valid) {
        var tomorrow = entity.attributes.raw_tomorrow.map((start, index) => {
        return [new Date(start["hour"]).getTime(), entity.attributes.tariffs.tariffs[index]+energinet];
        });

        var data = today.concat(tomorrow);
      } else {
        var data = today
      }

      return data;
    float_precision: 2
    show:
      legend_value: false
      in_header: false
      datalabels: true
  - entity: sensor.energi_data_service
    type: column
    name: Spot
    color: '#92D050'
    data_generator: >
      var afgift = entity.attributes.tariffs.additional_tariffs.elafgift
      +entity.attributes.tariffs.additional_tariffs.transmissions_nettarif +
      entity.attributes.tariffs.additional_tariffs.systemtarif

      var today = entity.attributes.raw_today.map((start, index) => {
        return [new Date(start["hour"]).getTime(), entity.attributes.raw_today[index]["price"] - afgift - entity.attributes.tariffs.tariffs[index]];
      });

      if (entity.attributes.tomorrow_valid) {
        var tomorrow = entity.attributes.raw_tomorrow.map((start, index) => {
        return [new Date(start["hour"]).getTime(), entity.attributes.raw_tomorrow[index]["price"] - afgift - entity.attributes.tariffs.tariffs[index]];
        });

        var data = today.concat(tomorrow);
      } else {
        var data = today
      }

      return data;
    float_precision: 2
    show:
      legend_value: false
      in_header: false
      datalabels: true
  - entity: sensor.energi_data_service
    type: line
    name: Total
    data_generator: |
      var today = entity.attributes.raw_today.map((start, index) => {
        return [new Date(start["hour"]).getTime(), entity.attributes.raw_today[index]["price"]];
      });
      if (entity.attributes.tomorrow_valid) {
        var tomorrow = entity.attributes.raw_tomorrow.map((start, index) => {
        return [new Date(start["hour"]).getTime(), entity.attributes.raw_tomorrow[index]["price"]];
        });

        var data = today.concat(tomorrow);
      } else {
        var data = today
      }
      return data;
    float_precision: 2
    show:
      legend_value: false
      in_header: false
      datalabels: false
    extend_to: now
    color_threshold:
      - value: 0
        color: green
      - value: 2
        color: yellow
      - value: 3
        color: orange
      - value: 4
        color: red
      - value: 5
        color: darkred

Graf med prognose

Hvis du har valgt at hente prognose data fra Carnot.dk, kan du på tilsvarende måde oprette en graf til visning af priserne.

Denne kode danner en graf med de tilgængelige prognoser for spotpriser:

type: custom:apexcharts-card
apex_config:
  tooltip:
    x:
      format: dddd d. MMMM yyyy, kl. HH
  xaxis:
    labels:
      format: ddd
  chart:
    height: 350px
    defaultLocale: da
    locales:
      - name: da
        options:
          months:
            - januar
            - februar
            - marts
            - april
            - maj
            - juni
            - juli
            - august
            - september
            - oktober
            - november
            - december
          shortMonths:
            - Jan
            - Feb
            - Mar
            - Apr
            - Maj
            - Jun
            - Jul
            - Aug
            - Sep
            - Okt
            - Nov
            - Dec
          days:
            - Søndag
            - Mandag
            - Tirsdag
            - Onsdag
            - Torsdag
            - Fredag
            - Lørdag
          shortDays:
            - SØN
            - MAN
            - TIR
            - ONS
            - TOR
            - FRE
            - LØR
all_series_config:
  unit: ' kr.'
experimental:
  color_threshold: true
header:
  title: Prognoser for elpriser (kr/kWh)
  show: true
  standard_format: true
  show_states: false
  colorize_states: true
graph_span: 150h
span:
  start: day
  offset: +12h
yaxis:
  - min: 0
    apex_config:
      tickAmount: 5
series:
  - entity: sensor.elpriser_inkl_afgifter
    name: Prognose
    type: line
    color: green
    stroke_width: 4
    float_precision: 2
    extend_to: false
    show:
      extremas: true
      legend_value: false
    data_generator: |
      var data = entity.attributes.forecast.map((start, index) => {
        return [new Date(start["hour"]).getTime(), entity.attributes.forecast[index]["price"]];
      });
      return data;
  - entity: sensor.elpriser_inkl_afgifter
    name: Spotpris
    type: area
    stroke_width: 0
    color: grey
    float_precision: 2
    extend_to: false
    show:
      extremas: false
      legend_value: false
    data_generator: |
      var today = entity.attributes.raw_today.map((start, index) => {
        return [new Date(start["hour"]).getTime(), entity.attributes.raw_today[index]["price"]];
      });
      if (entity.attributes.tomorrow_valid) {
        var tomorrow = entity.attributes.raw_tomorrow.map((start, index) => {
          return [new Date(start["hour"]).getTime(), entity.attributes.raw_tomorrow[index]["price"]];
        });

        var data = today.concat(tomorrow);
      } else {
        var data = today
      }
      return data;

Når du har indsat koden og tilrettet med navn på dine sensorer, vil du gå vist en graf som denne:

Graf med prognoser fra carnot.dk

Den næste del af guiden kigger på forskellige løsninger til realtids måling af dit elforbrug.

Hvor nyttigt var dette indlæg?

Gennemsnitlig bedømmelse 4.9 / 5. Bedømmelser: 14

Ingen stemmer indtil videre! Vær den første til at bedømme dette indlæg.

Jeg beklager, at dette indlæg ikke var nyttigt for dig!

Hvordan kan indlægget forbedres?

76 thoughts on “Overvågning af elforbrug – DEL 1: Elpriser

  • henrik bonde

    fede guide
    tusen tak for det store arbejde der er i den

    jeg kæmper lidt med
    Flere sensorer? (med og uden afgifter)

    Hent tariffer automatisk via Eloverblik integrationen
    hvor skal den linje ind hende da jeg gærne vil lave en graf som du viser i sammensætningen af dagens elpris

    Besvar
    • Hej Henrik,

      Tak for din kommentar og ros til mine guides.

      Du behøver ikke hente data fra Eloverblik, da Energi Data Service integrationen kan hente data om tariffer, hvis du følger vejledningen i afsnittet “Hent tariffer automatisk via Energi Data Service integrationen”.

      Grafen, der viser sammensætningen af elprisen bruger en sensor fra Energi Data Service (EDS), der indeholder alle omkostninger. Koden forudsætter, at sensoren er kaldt for sensor.energi_data_service. Har du kaldt sensoren for noget andet kan du rette de i koden de stedet, hvor navnet fremgår.

      Håber du kan få det til at virke…

      Mvh.

      Anders

      Besvar
  • Kristian Frank Erikson

    Hej Anders

    Tak for denne fantastiske guide. Den var en kæmpe hjælp og har sparet mig meget tid. Jeg endte op med denne kode til tariffer i den seneste udgave af Home Assistant til ElOverblik:

    {{state_attr(‘sensor.eloverblik_tariff_sum’, ‘hourly’)[now().hour]|float}}

    Besvar
  • Niels Peter

    Tak for dine gode vejledninger.

    Jeg har uden held forsøgt at modificere en af dine apex grafer så den viser “sensor.elpriser_inkl_afgifter_co2” – dvs. uden ‘apex_config: tickAmount: 5’ og ‘color_threshold:’ – men det virker desværre ikke.

    Ved du hvad der kan være i vejen?

    Besvar
    • Anders

      Hej Niels Peter,

      Tak for din kommentar.

      Det kan jeg desværre ikke svare på uden at se koden eller de data du har til rådighed i din sensor.

      Lav evt. et indlæg i Dansk Home Assistant gruppen på Facebook, hvor jeg – og mange andre bedre vil kunne hjælpe.

      Mvh.

      Anders

      Besvar
  • Keld Damsbo

    Der er laver et eller andet om i Energi Data Service for nylig. Den med tariffer virker ikke hvis man bruger:
    {{ state_attr(‘sensor.eloverblik_tariff_sum’,’hourly’)[now().hour] }}
    Som du skriver længere oppe.

    Hvis man i stedet bruger
    {{ state_attr(‘sensor.eloverblik_tariff_sum’, ‘hourly’)[now().hour] }}
    Så virker det 🙂

    Bemærk mellemrum før ‘hourly’

    Besvar
    • Anders

      Hej Keld,

      Tak for din kommentar og opdatering til koden.

      Eloverblik har jeg ikke selv brugt siden det blev muligt automatisk at hente de aktuelle tariffer i Energi Data Service integrationen.

      Mvh.

      Anders

      Besvar
    • Knud Albrechtsen

      Hej

      Det ser heller ikke ud til din rettelse virker længere.
      jeg får denne fejl når jeg kopierer den ind:
      “The additional cost template is invalid, check https://github.com/mtrab/energidataservice

      Men jeg kan se i Anders kommentar nedenfor at den måske slet ikke er nødvendig længere ??

      Besvar
  • Hej. fed guide.

    ville det være muligt at få de 24 og 48 timer ind i node red til videre bearbejdning?
    jeg vi gerne sætte dem i rækkefølge efter pris så jeg kan sætte mit batteri til at lade når strømmen er billigst.

    vh.
    Roof

    Besvar
    • Hej Roof,

      Tak for din kommentar og din ros.

      Ja – alle data fra energi data service sensoren er tilgængelige som attributer. Se raw_today og raw_tomorrow attributerne.

      Dem kan du læse i NodeRED med en current state node eller direkte i en Function node.

      Mvh.

      Anders

      Besvar
  • Faldt lige over denne side.
    Jeg har fuldt din guide, dog ikke med graf delen, men hvor skulle jeg kunne se mine data henne.
    Mvh
    Kenneth

    Besvar
    • Hej Kenneth,

      Hvis du har fulgt guiden, skulle du gerne have fået en ny sensor med elpriserne. Den hedder som standard sensor.energi_data_service med mindre du har valgt et andet navn, da du oprettede din sensor.

      Grafen bruger data fra den sensor til at lave fordelingen for de næste timer. Sensoren viser prisen for den nuværende time, mens priser for de øvrige timer ligger som attributter i sensoren.

      Mvh.

      Anders

      Besvar
      • Kenneth

        Ja, den har jeg fået og ser nu at jeg skal trykke på den for at se mit forbrug. Er det muligt at det kan blive vist i menuen til venstre under “Energi”

        Besvar
        • Kenneth

          Umiddelbart ser jeg, at få at få det til at virke, så skal device_class være til “energy” og ikke til “monetary”

          Besvar
  • Hej, fantastisk guide! Men jeg kan ved gud ikke forstå disse to entities, på trods af at have læst guiden nøje

    apexcharts-card
    Entity not available: sensor.elpriser_inkl_afgifter
    Entity not available: sensor.elpriser_excl_afgifter

    Hvordan får jeg fat i dem?

    Tak!!

    Besvar
    • Hej Mads,

      Tak for din kommentar.

      De to entiteter er blot to forskellige energi data service sensorer, som jeg har givet forskellige navne.

      Den ene sensor er konfigureret, så den henter prisen inkl. alle afgifter mv., mens den anden sensor kun henter spotprisen.

      Mvh.

      Anders

      Besvar
      • Knud Albrechtsen

        Hej Anders

        Kan du evt. vise hvordan vi kan oprette de 2 sensorer ??
        apexcharts-card
        Entity not available: sensor.elpriser_inkl_afgifter
        Entity not available: sensor.elpriser_excl_afgifter

        Jeg er ret ny endnu indenfor HA og ved derfor ikke hvordan jeg selv skulle oprette dem 🙂

        Besvar
        • Knud Albrechtsen

          Never mind – har fundet ud af det 😀

          Besvar
          • Hej Knud,

            Godt at du selv fandt svaret.
            Det står indirekte i afsnittet “Flere sensorer?”, men jeg vil lige se om det kan gøres mere tydeligt.

            Mvh.

            Anders

            Besvar
  • Tusind tak for en meget gennemført og letforståelig guide. Jeg har haft meget glæde af at lege med opsætning af et nyt dashboard.
    Jeg står med et mindre problem med Apex graph for sammensætningen af elpris. Den har virket fint indtil (måske) en opdatering. Nu er afgifter, tariffer og spot ikke længere stakket, men i stedet en bar graf for sig selv.
    Er der andre der har oplevet det? Og i så fald; er der en løsning?

    Besvar
    • Anders

      Hej Emil,

      Tak for din kommentar og ros.

      Der er desværre en fejl i Apex Chart komponenten, der gør at Stack funktionen ikke virker. Der er beskrevet forskellige løsningsforslag i denne issue beskrivelse, men desværre ikke noget, der altid virker:

      https://github.com/RomRider/apexcharts-card/issues/730

      Du kan følge issuet på GitHub og få besked, når problemet er løst.

      Mvh.

      Anders

      Besvar
      • Hej igen. Det ser ud til apex chart stacked chart virker igen efter seneste opdatering.

        Besvar

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *