Språk

Home Assistant · elpris och CO₂

Elpris- och CO₂-prognos i Home Assistant för SE1 till SE4

Välj mellan en HACS-integration med grafiskt gränssnitt och egna entiteter eller en vanlig REST-sensor i YAML. Båda använder samma prognos-API och ger pris, CO₂ och färdigberäknade tidsfönster för ditt svenska elområde.

Installera via HACS

  1. Öppna länken ovan eller lägg till Energy Price Forecast EU som ett anpassat repository i HACS, kategori Integration.
  2. Installera integrationen och starta om Home Assistant när HACS ber om det.
  3. Gå till Inställningar → Enheter och tjänster, lägg till integrationen och välj SE1, SE2, SE3 eller SE4.
  4. Använd entiteterna för pris, CO₂ och tidsfönster i instrumentpaneler och automationer.
Välj alltid rätt elområde

Sverige har fyra separata prisområden. Använd se1, se2, se3 eller se4 – inte ett generiskt se.

Mer planeringshorisont med Private Pro

Utan nyckel är upp till 48 timmar kostnadsfria. Private Pro utökar prisprognosen till upp till 120 timmar för privata automationer.

Jämför prognosen med publicerade priser

Grönt visar publicerade day-ahead-priser, orange den aktuella prognosen och den blå streckade linjen den först sparade prognosen. Den tidigare prognosen finns kvar när de officiella priserna kommer.

  1. Uppdatera Energy Price Forecast EU till minst 1.12.0 i HACS och starta om Home Assistant. Installera också ApexCharts Card 2.1.0 eller senare via HACS.
  2. Ersätt alla tre sensor.CHANGE_ME med samma prisserie-entitet från Utvecklarverktyg → Tillstånd. Använd entiteten för aktuellt slutkundspris för ditt konfigurerade totalpris. Klistra in YAML under Instrumentpanel → Redigera → Lägg till kort → Manuellt.

Lagringen börjar efter uppdateringen och överlever omstarter. Värden sparas till slutet av den aktuella marknadsdagen; tidigare prognoser kan inte återskapas. captured_at är mottagningstiden i Home Assistant, inte modellens körningstid. Det är varken ett kvalitetsmått med fast framförhållning eller ett obegränsat arkiv.

Anpassa axelns enhet till sensorn, exempelvis SEK/kWh eller EUR/kWh, inte öre/kWh. Ett beräknat totalpris är ingen garanterad elräkning. Utan nyckel är API-horisonten fortfarande högst 48 timmar; använd rätt åtkomst och graph_span: 6d för högst 120 timmar. Kortet gäller HACS-integrationen, inte REST-summary-exemplet nedan, och gör inga extra API-anrop.

YAML att kopiera
type: custom:apexcharts-card
header:
  show: true
  title: Energy Price Forecast EU
graph_span: 3d
span:
  start: day
now:
  show: true
  label: Nu
yaxis:
  - id: price
    decimals: 3
    apex_config:
      title:
        text: EUR/kWh
all_series_config:
  yaxis_id: price
  type: line
  curve: stepline
  extend_to: false
  stroke_width: 2
  float_precision: 4
  show:
    legend_value: false
series:
  # Replace ALL three placeholders with the SAME price or retail sensor.
  - entity: sensor.CHANGE_ME
    name: Officiellt (day-ahead)
    color: "#43a047"
    data_generator: |
      const raw = [...(entity.attributes.raw_today ?? []),
                   ...(entity.attributes.raw_tomorrow ?? [])];
      const slots = raw.map(e => ({
        start: Date.parse(e.start), end: Date.parse(e.end), value: e.value
      })).filter(e => Number.isFinite(e.start) && Number.isFinite(e.end)
        && e.end > e.start && typeof e.value === 'number' && Number.isFinite(e.value))
        .sort((a, b) => a.start - b.start);
      const points = [];
      let previousEnd = null;
      for (const slot of slots) {
        if (previousEnd !== null && slot.start > previousEnd) {
          points.push([previousEnd, null], [slot.start - 1, null]);
        }
        points.push([slot.start, slot.value], [slot.end - 1, slot.value]);
        previousEnd = slot.end;
      }
      return points;
  - entity: sensor.CHANGE_ME
    name: Aktuell prognos
    color: "#fb8c00"
    data_generator: |
      const raw = entity.attributes.raw_forecast ?? [];
      const slots = raw.map(e => ({
        start: Date.parse(e.start), end: Date.parse(e.end), value: e.value
      })).filter(e => Number.isFinite(e.start) && Number.isFinite(e.end)
        && e.end > e.start && typeof e.value === 'number' && Number.isFinite(e.value))
        .sort((a, b) => a.start - b.start);
      const points = [];
      let previousEnd = null;
      for (const slot of slots) {
        if (previousEnd !== null && slot.start > previousEnd) {
          points.push([previousEnd, null], [slot.start - 1, null]);
        }
        points.push([slot.start, slot.value], [slot.end - 1, slot.value]);
        previousEnd = slot.end;
      }
      return points;
  - entity: sensor.CHANGE_ME
    name: Sparad prognos (först mottagen)
    color: "#1e88e5"
    stroke_dash: 5
    data_generator: |
      const raw = entity.attributes.raw_forecast_reference ?? [];
      const slots = raw.map(e => ({
        start: Date.parse(e.start), end: Date.parse(e.end), value: e.value
      })).filter(e => Number.isFinite(e.start) && Number.isFinite(e.end)
        && e.end > e.start && typeof e.value === 'number' && Number.isFinite(e.value))
        .sort((a, b) => a.start - b.start);
      const points = [];
      let previousEnd = null;
      for (const slot of slots) {
        if (previousEnd !== null && slot.start > previousEnd) {
          points.push([previousEnd, null], [slot.start - 1, null]);
        }
        points.push([slot.start, slot.value], [slot.end - 1, slot.value]);
        previousEnd = slot.end;
      }
      return points;

Alternativ: REST-sensor i YAML

Exemplet använder SE3 och svenska kronor. Byt både country=se3 och sensornamnet om du bor i ett annat elområde.

https://api.energypriceforecast.eu/api/v1/home-assistant/summary?country=se3&currency=SEK&hours=48&window_hours=4
rest:
  - resource: "https://api.energypriceforecast.eu/api/v1/home-assistant/summary?country=se3&currency=SEK&hours=48&window_hours=4"
    scan_interval: 900
    sensor:
      - name: "EnergyPriceForecast aktuellt pris SE3"
        value_template: "{{ value_json.flat.current_price }}"
        unit_of_measurement: "SEK/kWh"

      - name: "EnergyPriceForecast aktuell CO2 SE3"
        value_template: "{{ value_json.flat.current_co2_g_kwh }}"
        unit_of_measurement: "gCO2/kWh"

      - name: "EnergyPriceForecast billigaste fönster SE3"
        value_template: "{{ value_json.flat.cheapest_window_start }}"

      - name: "EnergyPriceForecast grönaste fönster SE3"
        value_template: "{{ value_json.flat.greenest_window_start }}"

Vad du kan automatisera

LaddningStarta elbil eller hembatteri i det billigaste sammanhängande tidsfönstret.
VärmeFörvärm eller lagra värme när priset är lägre utan fasta klockslag.
Lägre CO₂Flytta flexibel förbrukning till timmar med lägre prognostiserad CO₂-intensitet.
Tydlig datakällaSkilj publicerade day-ahead-priser från modellprognoser för den ännu öppna horisonten.

Vanliga frågor

Är prognosen samma sak som ett publicerat day-ahead-pris?

Nej. Publicerade marknadspriser används först när de finns. Modellen fyller bara de framtida timmar som ännu inte har ett officiellt pris, och API-svaret anger källan.

Är värdet min fullständiga elkostnad?

Nej. Standardvärdet är marknads-/baspriset. Elnätsavgift, skatt och ditt elhandelsavtal ingår inte automatiskt.

HACS eller REST – vilket ska jag välja?

Välj HACS för enklare installation och färdiga entiteter. Välj REST om du vill styra YAML och mallar helt själv.