Elpriset i Home Assistant
Få in elpriset i Home Assistant från Elfacits gratis API: totalpriset med elnät, energiskatt och moms för kvarten som pågår, dygnets snitt och de billigaste tre timmarna. Här finns färdig YAML att klistra in, en graf över dygnet, en automation som slår på en apparat när elen är billigast och ett skript som gör samma sak direkt i ett Shelly-relä.
Sensorn: elpriset just nu och dygnets snitt
Klistra in blocket i configuration.yaml, byt SE3 mot ditt elområde och starta om Home Assistant. Det ger tre sensorer från ett och samma anrop: totalpriset och spotpriset för kvarten som pågick vid senaste hämtningen, och dygnets snittpris med allt inräknat. Listan över dygnets kvartar, de billigaste timmarna och vad som lagts på spotpriset sparas som attribut på sensor.elpris_nu; mallarna och grafen längre ned läser dem därifrån.
rest:
- resource: "https://elfacit.se/api/elpris?zon=SE3"
scan_interval: 900
sensor:
- name: "Elpris nu"
unique_id: elfacit_elpris_nu
unit_of_measurement: "öre/kWh"
state_class: measurement
value_template: "{{ value_json.nu.totalt }}"
json_attributes:
- kvartar
- billigast_3h
- tillagg
- name: "Elpris spot nu"
unique_id: elfacit_elpris_spot_nu
unit_of_measurement: "öre/kWh"
value_template: "{{ value_json.nu.spot }}"
- name: "Elpris snitt idag"
unique_id: elfacit_elpris_snitt_idag
unit_of_measurement: "öre/kWh"
value_template: "{{ value_json.snitt.totalt }}"Home Assistant bildar id:t av namnet, så sensorerna bör heta sensor.elpris_nu, sensor.elpris_spot_nu och sensor.elpris_snitt_idag. Står något annat i listan över entiteter, byt id:t i exemplen nedan. state_class: measurement gör att Home Assistant sparar långtidsstatistik för priset, ett snitt per timme.
Så här läser mallarna svaret från API:t. Exemplen är svaret för SE3 den 7 oktober 2026 klockan 18.46:
| I sensorn | Fält i svaret | Exempel |
|---|---|---|
| Elpris nu | nu.totalt, kvarten 18.45–19.00 | 275,32 öre/kWh |
| Elpris spot nu | nu.spot | 163,55 öre/kWh |
| Elpris snitt idag | snitt.totalt | 220,84 öre/kWh |
| Attributet kvartar | 96 kvartar med start, slut, spot och totalt | 00.00–00.15: 207,00 |
| Attributet billigast_3h | start, slut och snittets spot | 12.00–15.00 |
| Attributet tillagg | moms, nätavgift, energiskatt och påslag | se nedan |
Alla fält och parametrar står på sidan om elpris-API:t.
Totalpris med elnät, energiskatt och moms
Fältet totalt är vad en kWh kostar dig, inte bara spotpriset: spotpriset med 25 procent moms, plus nätavgiften, energiskatten och elbolagets påslag per kWh, alla i öre med moms. För kvarten 18.45–19.00 den 7 oktober blev det 163,55 × 1,25 + 25,88 + 45 + 0 = 275,32 öre. Nätavgiften och påslaget ställer du in i adressen:
| Parameter | Vad det är | Utan parametern |
|---|---|---|
nat | Din elnätsavgift per kWh (överföringsavgiften) i öre med moms, från elnätsfakturan | 25,9 öre, mittenbolaget 2026 enligt Energimarknadsinspektionen |
pasl | Elbolagets påslag per kWh i öre med moms, från elavtalet | 0 |
| Energiskatt | Sätts efter elområde enligt lagen om skatt på energi | 45,0 öre med moms, 33,0 i SE1 |
| Moms | 25 procent på spotpriset | Alltid med |
Med 30 öre i nätavgift och 5 öre i påslag byter du resource-raden mot:
- resource: "https://elfacit.se/api/elpris?zon=SE3&nat=30&pasl=5"Då blev totalpriset för samma kvart 284,44 öre: 163,55 × 1,25 + 30 + 45 + 5. Vad som lagts på står i attributet tillagg: moms_pa_spot (0.25), elnat_ore (30), energiskatt_ore (45), pasl_ore (5) och elnat_ar_ditt, som är true när du angett nat. Mallen {{ state_attr('sensor.elpris_nu', 'tillagg').elnat_ore }} visar till exempel nätavgiften, här 30.
Bor du i en kommun med nedsatt energiskatt utanför SE1 räknar API:t med full skatt. Skillnaden är 12,0 öre per kWh med moms. Eftersom pasl bara läggs till totalpriset kan du dra av den där: med 5 öres påslag blir det pasl=-7.
Jämfört med Nord Pool: Home Assistants inbyggda Nord Pool-integration visar bara spotpriset, och moms och andra kostnader ingår inte, enligt dess dokumentation. Den fristående Nordpool-integrationen från HACS har en mall, additional_costs, där du själv skriver in moms och avgifter i kronor. Här läggs moms och energiskatt på av API:t, och nätavgift och påslag anger du med nat och pasl.
Kvartspris: därför hämtar sensorn var 15:e minut
Sedan 1 oktober 2025 sätts spotpriset för varje kvart, 96 priser per dygn (92 eller 100 de dygn sommartiden börjar eller slutar). Hela dygnets priser bestäms dagen innan och publiceras normalt strax efter klockan 13, så under en kvart ändras ingenting. scan_interval: 900 är 900 sekunder, en hämtning per kvart, och det är också vad API:t ber om: högst en hämtning i kvarten per zon. Utan scan_interval hämtar RESTful-sensorn var 30:e sekund, enligt Home Assistants dokumentation.
Intervallet säger hur ofta, inte när. Sker en hämtning klockan 18.52 kommer nästa 19.07, och fram till dess visar sensor.elpris_nu kvarten 18.45–19.00 fast nästa kvart har börjat. Därför finns mallsensorn nedan, som letar upp rätt kvart i listan själv.
Mallsensorer: rätt kvart och de billigaste timmarna
Lägg till blocket i configuration.yaml. Har du redan en rad template:, lägg raderna under den i stället för att skriva template: en gång till.
template:
- sensor:
- name: "Elpris kvart"
unique_id: elfacit_elpris_kvart
default_entity_id: sensor.elpris_kvart
unit_of_measurement: "öre/kWh"
state_class: measurement
state: >
{%- set t = as_timestamp(now()) -%}
{%- set ns = namespace(pris=none) -%}
{%- for k in state_attr('sensor.elpris_nu', 'kvartar') or [] -%}
{%- if as_timestamp(k.start) <= t < as_timestamp(k.slut) -%}
{%- set ns.pris = k.totalt -%}
{%- endif -%}
{%- endfor -%}
{{ ns.pris }}
binary_sensor:
- name: "Elpris billigast 3 timmar"
unique_id: elfacit_elpris_billigast_3h
default_entity_id: binary_sensor.elpris_billigast_3h
state: >
{%- set b = state_attr('sensor.elpris_nu', 'billigast_3h') -%}
{%- set t = as_timestamp(now()) -%}
{{ b is not none and as_timestamp(b.start) <= t < as_timestamp(b.slut) }}Elpris kvart går igenom attributet kvartar och tar totalt för kvarten där start ≤ nu < slut. Tiderna jämförs som tal med as_timestamp, eftersom text som ser ut som datum jämförs i bokstavsordning. Mallar som använder now() räknas om i början av varje minut, så sensorn byter pris inom en minut efter kvartsskiftet utan fler anrop. Strax efter midnatt kan det dröja upp till en kvart innan dagens lista är hämtad; så länge har sensorn inget värde. Klockan 18.46 den 7 oktober gav den 275,32.
Elpris billigast 3 timmar är på mellan start och slut i billigast_3h: de tolv kvartar i följd som har lägst snittpris under dygnet, räknat på spotpriset. Perioden kan börja på vilken kvart som helst och ligger alltid inom kalenderdygnet. Den 7 oktober var den på 12.00–15.00, med 88,25 öre i snitt, och av klockan 18.46. Samma timmar för alla elområden, idag och imorgon, finns på sidan om de billigaste timmarna.
Styra efter elpriset: på när elen är billigast
Två automationer som slår på en brytare när de billigaste timmarna börjar och av när de är slut. Byt switch.varmvattenberedare mot din egen brytare. Blocket har en egen etikett, automation elpris:, så det kan stå i configuration.yaml bredvid raden automation: !include automations.yaml som automationsredigeraren använder.
automation elpris:
- alias: "Varmvatten på när elen är billigast"
triggers:
- trigger: state
entity_id: binary_sensor.elpris_billigast_3h
to: "on"
actions:
- action: switch.turn_on
target:
entity_id: switch.varmvattenberedare
- alias: "Varmvatten av när de billigaste timmarna är slut"
triggers:
- trigger: state
entity_id: binary_sensor.elpris_billigast_3h
from: "on"
to: "off"
actions:
- action: switch.turn_off
target:
entity_id: switch.varmvattenberedareEn trigger reagerar när läget ändras, inte medan det gäller: lägger du in automationen mitt i de billigaste timmarna slås brytaren på först nästa gång de börjar. Avstängningen har from: "on", så den bara reagerar när perioden tar slut och inte när sensorn går från okänd till av.
Graf över elpriset
Kortet History graph ingår i Home Assistant och ritar sensorernas historik. Lägg till kortet på instrumentpanelen och klistra in det här i kortets kodredigerare (YAML):
type: history-graph
title: Elpriset idag
hours_to_show: 24
entities:
- entity: sensor.elpris_kvart
name: Totalpris
- entity: sensor.elpris_snitt_idag
name: Snitt idagBåda sensorerna har enheten öre/kWh och hamnar därför i samma graf. Historiken visar bara det som redan hänt. Vill du se hela dygnet, också kvartarna som kommer, måste listan i attributet kvartar ritas, och det klarar inte de inbyggda korten.
Det kan ApexCharts card, ett kort från tredje part som inte ingår i Home Assistant utan installeras via HACS, en butik för tillägg som inte heller ingår. Med data_generator bygger kortet serien av sensorns senaste attribut i stället för av historiken:
type: custom:apexcharts-card
header:
show: true
title: Elpriset idag, öre/kWh
graph_span: 24h
span:
start: day
now:
show: true
label: Nu
series:
- entity: sensor.elpris_nu
name: Totalpris
type: line
curve: stepline
float_precision: 1
data_generator: |
return entity.attributes.kvartar.map((k) => [new Date(k.start).getTime(), k.totalt]);Med svaret den 7 oktober blir det 96 punkter, från 00.00 med 207,00 öre till 23.45, och en markering för nu.
Elpris i en Shelly, utan Home Assistant
En Shelly av generation 2 eller senare med stöd för skript, till exempel Plus 1PM eller Pro 2PM, kan styra reläet efter elpriset utan någon annan server. Öppna enhetens webbgränssnitt, välj Scripts och Create script, klistra in koden, spara med Save och starta med Start. Slå på Run on startup så startar skriptet igen efter en omstart.
// Elpris-styrning för Shelly Gen2 och senare: reläet slås på under dygnets
// billigaste tre timmar i följd och av när de är slut. Priser från elfacit.se.
let ZON = "SE3"; // SE1, SE2, SE3 eller SE4
let RELA = 0; // reläets id, 0 på enheter med ett relä
let URL = "https://elfacit.se/api/elpris?kort=1&zon=" + ZON;
let fonster = null; // dagens billigaste tre timmar
let senast = null; // läget skriptet senast satte
function styr() {
let sys = Shelly.getComponentStatus("sys");
if (fonster === null || sys.unixtime === null) return;
let pa = sys.unixtime >= fonster.start_unix && sys.unixtime < fonster.slut_unix;
if (pa !== senast) {
Shelly.call("Switch.Set", { id: RELA, on: pa });
senast = pa;
console.log(pa ? "Billigaste timmarna: reläet på" : "Reläet av");
}
}
function svar(res, felkod, fel) {
if (felkod !== 0 || res.code !== 200) {
console.log("Kunde inte hämta elpriset:", felkod !== 0 ? fel : res.code);
return;
}
try {
fonster = JSON.parse(res.body).billigast_3h;
styr();
} catch (e) {
console.log("Oväntat svar:", e.message);
}
}
function hamta() {
Shelly.call("HTTP.GET", { url: URL, timeout: 15 }, svar);
}
hamta();
Timer.set(15 * 60 * 1000, true, hamta); // nytt fönster efter midnatt
Timer.set(60 * 1000, true, styr); // kollar klockan varje minut kort=1tar bort listorna över kvartar och timmar ur svaret, som då blir omkring 1 kB i stället för 15 kB. Alla skript på enheten delar på samma minne.- Skriptet hämtar priset när det startar och sedan var 15:e minut, så det får dygnets nya period strax efter midnatt. Varje minut jämförs enhetens klocka med
start_unixochslut_unix, periodens start och slut i sekunder sedan 1970. Innan enheten har ställt klockan mot internet är tiden okänd, och då gör skriptet ingenting. - Reläet ställs om när skriptet startar och när perioden börjar eller slutar, inte däremellan. Slår du på eller av det för hand står det så tills nästa skifte.
- Byt
ZONmot ditt elområde ochRELAmot reläets nummer om enheten har flera. Felmeddelanden syns i skriptets konsol.
Vanliga frågor
Hur får jag in elpriset i Home Assistant?
Lägg till en RESTful-sensor i configuration.yaml som hämtar https://elfacit.se/api/elpris?zon=SE3 (byt till din zon) var 900:e sekund och läser value_json.nu.totalt. Det ger totalpriset för pågående kvart i öre per kWh, med moms, elnätsavgift och energiskatt. Ingen nyckel eller extra integration behövs.
Hur ofta ska Home Assistant hämta elpriset?
En gång per kvart, scan_interval: 900. Spotpriset sätts per kvart sedan 1 oktober 2025 och hela dygnets priser bestäms dagen innan, så tätare hämtning ger inget nytt. Utan scan_interval hämtar RESTful-sensorn var 30:e sekund, enligt Home Assistants dokumentation.
Ingår moms, elnät och energiskatt i priset?
Ja, i fältet totalt: spotpriset med 25 procent moms plus nätavgift, energiskatt och elbolagets påslag, i öre per kWh med moms. Ange din egen nätavgift med nat och ditt påslag med pasl. Home Assistants inbyggda Nord Pool-integration visar bara spotpriset; moms och andra kostnader ingår inte, enligt dess dokumentation.
Kan en Shelly styra efter elpriset utan Home Assistant?
Ja. En Shelly av generation 2 eller senare med stöd för skript kan köra ett skript som hämtar dygnets billigaste tre timmar från API:t och slår på reläet då. Skriptet längst ned på sidan använder kort=1, så svaret från API:t blir omkring 1 kB i stället för 15.
Dokumentation
Varje inställning i exemplen finns i tillverkarnas egen dokumentation, läst 2026-10-07:
- Home Assistant: RESTful, RESTful Sensor (
scan_interval,value_template,json_attributes), Template, now(), as_timestamp, datum och tider i mallar. - Automationer: automationer i YAML, State changed-trigger, switch.turn_on och switch.turn_off.
- Grafer: History graph card och ApexCharts card (tredje part).
- Shelly: skriptspråket, Shelly.call och getComponentStatus, Timer.set, HTTP.GET, reläet (Switch), Sys (
unixtime) och kom igång med skript.
Priset på telefonen eller hemsidan i stället: elpris-widgeten. Hela dygnet kvart för kvart: elpriset idag. Vad timpris, kvartspris och månadspris kostat: kvartspris eller månadspris.