Mäta effektiviteten av kostandsoptimering av timpriser och kvartspriser med hjälp av Home Assistant

Innan vi börjar. Det finns energioptimering och det finns kostandsoptimering. Energioptimering är tex att tilläggsisolera vinden så att du gör av med mindre energi och därmed får en lägre elräkning. Kostandsoptimering är nu du har timpriser eller kvartspriser och förskjuter din förbrukning så att mer hamnar på tider då elen kostar mindre. Du får samma eller kanske till och med högre förbrukning men trots det en lägre elräkning.

Det vi kommer titta på här är uteslutande kostandsoptimering.

Om du inte är intresserad av bakgrunden och beräkningarna kan du skippa artikeln och gå direkt till GitHub och ladda ner koden. Om du har jobbat med paket tidigare är det 3 rader kod du behöver uppdatera. Har du inte jobbat med paket så kan du läsa om de olika sätten att konfigurera Home Assistant och vad du behöver för att kunna använda koden

Hypotesen är att vi kan kostnadsoptimera genom att utnyttja skillnader i timpriser / kvartspriser och flytta last till billigare tider

För att du ska kunna utnyttja detta behöver du en last som du kan flytta. Dvs någon relativt stor förbrukare som inte behöver gå hela tiden och du kan välja när den ska gå. Ett utmärkt exempel är elbil. Den kan man ladda lika bra på dagen som på natten. Det viktiga är att den är tillräckligt laddad den tid du ska åka med den.

En annan last kan vara värme och varmvatten. Här är friheten inte lika stor men du kan kanske stänga värmen under en timme utan att det påverkar din komfort. När det gäller värme och varmvatten finns risken att tex en värmepump vill ”köra ikapp” och du hamnar i ett optimeringsproblem med effekten istället ( om du har effekttaxa ). Ofta kan man dock tillfälligt begränsa eller blockera värme och/eller varmvatten när priserna är som högst.

Ytterligare en last att styra/blockera är SPA bad eller poolvärme. Sen kommer mindre förbrukare som diskmaskin, tvättmaskin, torktumlare osv

Styrningen behöver naturligtvis inte vara automatiserad. Det kan räcka med att vänta med att starta torktumlaren om kvartspriset för el är högt för att man ska se effekt. Oavsett om du pillar med detta manuellt eller med automationer i Home Assistant så behöver du mäta för att veta och där kommer den här artikeln ( och framförallt koden ) in. Du behöver heller inte ha mätning på varje individ, tex tvättmaskinen för att kunna se den totala effekten.

Teori beräkning

För att se hur stor skillnad våra optimeringsförsök ger så vill vi jämföra linjärt elpris med vägt elpris

Linjärt elpris

linjärt elpris=i=1nElprisin\text{linjärt elpris} = \frac{\sum_{i=1}^{n} \text{Elpris}_i}{n}

Där

  • Elprisi​ = Elpriset per kWh för period i (t.ex. från Nordpool)
  • n = Antal perioder i den valda tidsperioden
  • Detta kallas även aritmetriskt medelvärde där alla perioder väger lika mycket.

Viktat elpris

Viktat medelpris=i=1n(Elprisi×Förbrukningi)i=1nFörbrukningi\text{Viktat medelpris} = \frac{\sum_{i=1}^{n} (\text{Elpris}_i \times \text{Förbrukning}_i)}{\sum_{i=1}^{n} \text{Förbrukning}_i}

Där

  • Elprisi​ = Elpriset per kWh för period i (t.ex. från Nordpool)
  • Förbrukningi = förbrukningen i den valda tidsperioden
  • n = Antal perioder i den valda tidsperioden
  • Detta kallas även vägt- eller viktatmedelvärde där hänsyn tas till hur mycket förbrukningen är i varje tidsperiod.

Här är tiden viktig i 2 aspekter. För det första måste vi jämföra priser och förbrukning för samma tidsperiod för att få korrekta beräkningar. För det andra så behöver vi titta på flera tidsperioder för att få helheten.

Det innebär att vi vill veta viktat medelvärde för olika tidsperioder för att kunna få fram motsvarande besparing. Jag har valt 24 timmar, 7 dygn, 30 dygn. Få se om jag lägger till kvartal och år.

Kostnadsbesparing

Kostnadsbesparingt=(Linja¨rtpristVa¨gtprist)xFo¨rbrukningtKostnadsbesparing_t=∑(Linjärt pris_t-Vägt pris_t) x Förbrukning_t

Det vill säga kostnadsbesparingen över en given tid är summan av skillnaden i pris gånger förbrukningen för samma tid.

Nordpool ger oss kvartspriserna för kommande dygn runt kl 13. Det kan ju vara så att idag var priset billigare på förmiddagen än på eftermiddagen så vi har anpassat vår förbrukning efter det. Kl 13 kommer priser för morgondagen som visar att det kommer att vara väldigt dyrt hela dagen imorgon. Då kan det vara så att det lönar sig att ladda bil, öka temperaturen i huset samt värma varmvatten på eftermiddagen. Det kommer att ge dåliga värden på 24h men kommer att ge bättre värden för 7d och 30d,

Den första aspekten att jämföra priser och förbrukning för samma tidsperiod fick mig nästa att ge upp detta projekt halvvägs. Det visade sig vara mycket trixxigare än vad jag trodde.

Implementering

Steg 1 är enkelt om du inte redan har en mätning på importerad energi ( kWh ) behöver vi fixa det. Jag har bara importerad effekt från växelriktaren till solcellerna ( även bergvärme pumpen och billaddaren mäter importen men jag har valt omriktaren ) Detta görs lätt med integral integrationen jag har använd Rieman-summa enl vänster regeln, inte för att det är det bästa att använda utan för att jag inte kan vad skillnaderna är och nått måste man ju välja. Lämna gärna en kommentar om du har kunskap om detta.

sensor:
  - platform: integration
    source: sensor.solax_grid_import
    name: "Grid Import Energi"
    unique_id: grid_import_energy
    unit_prefix: k
    method: left
    round: 2
    max_sub_interval:
      minutes: 5


Nästa steg är att mäta förbrukningen över 15 minuter för att kunna matcha det mot 15 minuters priset från nordpool,

Home Assistant har integrationen Utility Meter som har funktionalitet för att spåra förbrukning av tex energi, gas, vatten och värme. Kändes ju kanon. Man anger period som den ska jobba med och den har stöd för 15 minuters perioder, quarter-hourly.

Som vanligt så försöker jag ta hjälp av AI. Har mest jobbat med ChatGPT, Co-pilot och Le Chat. ChatGPT föreslog att vi skulle använda funktionen zip för att med hjälp av par förbrukning och pris få fram kostanden på kvart. Lät väldigt länge trovärdigt till jag insåg att det inte fungerade över huvudtaget eftersom i den lösning som föreslogs så fanns ingen lista med förbrukning. Var ute på ett par andra villospår också innan jag och Le Chat landade i att vi behöver göra beräkningnen i efterhand. En utility meter sensor ökar sitt värde från start och under hela den angivna perioden för att nå ett maxvärde för den perioden precis innan den nollställs och börjar om på nästa period. Det innebär att vi behöver spara undan maxvärdet i vårt fall 15 minutersförbrukningen samt multiplicera den med priset för föregånde 15 minutersperiod.

För att hantera detta behöver vi skapa en del hjälpare.

  • grid_import_15m, Utility Meter
  • el_price_last_15min, input number
  • el_import_last_15min, input number
  • elkostnad_foregaende_15_min, Template sensor
  • Spara totalt elpris föregående 15 min, Automation
  • Spara elförbrukning föregående 15 min, Automation

När den grundfunktionaliteten är på plats så kan vi börja skapa statistics sensorer för de olika tidsperioder som vi är intresserad av. Det vill säga 24 timmar, 7 dagar, 30 dagar. Självklart kan du lägga till eller ta bort efter behag. Det vi tittar på här är glidande medelvärde. Det vill säga när vi tittar på 7 dagar så är det inte denna vecka utan föregående 7 dagar. Vill man spara undan tex månadsvärden så får man hantera detta via fler hjälpare och fler automationer. Min kod stödjer inte detta för tillfället.

Det viktigast för mig är att se att 30 dagarsvärdet för besparing ligger tillräckligt bra till. Annars skulle jag lika gärna kunna byta till rörligt pris och få snittet av föregående månad och inte behöva tänka på när jag förbrukar min el.

Dashboard

Till sist vill vi kunna konfigurera och visualisera våra ansträngningar att spara elkostnader.

Det finns ett första utkast men jag kommer jobba vidare med detta.

Tanken är att kunna ta koden på GitHub och skapa en ny dashboard från Inställningar/Kontrollpaneler/Lägg till kontrollpanel/från grunden

Ge en rubrik

Klicka på pennan uppe till höger för att komma till edit

Klicka på de tre prickarna upp till höger och välj ”redigera som YAML”

Klistra in koden från GitHub

Klicka på spara och stäng ( krysset till vänster )

Tanken är nu att du kan kopiera det som passar och klistra in i dina ordinarie dashboards

En dashboard som visar effekten av våra optimeringar

Avslutning och kod

Du hittar all kod på https://github.com/Ollivergarden/Elpriser_i_Home_Assistant/tree/main

I koden finns det 2 st sensorer som du ev behöver uppdatera.

sensor.nordpool_kwh_se2_sek_2_10_025 Byt ut till din prissensor

sensor.solax_grid_import Byt ut till din sensor för importerad effekt.

Där finns även ett paket för att kostandsoptimera en Nibe bergvärme pump. Även om du inte kan använda den koden rakt av kan det eventuellt vara en inspiration för din egen optimering.

Skriv gärna en kommentar och berätta vad du tycker, gick det att implementera, var det några problem.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *