Kieli

Home Assistant · sähkön hinta ja CO₂

Sähkön hinta- ja CO₂-ennuste Home Assistantiin

Valitse käyttöliittymässä määritettävä HACS-integraatio tai tavallinen YAML-pohjainen REST-sensori. Molemmat tuovat Suomen tuntihinnat, CO₂-arvion ja valmiiksi lasketut halvimmat aikaikkunat automaatioihin.

Asenna Home Assistantiin HACS:n kautta

  1. Avaa yllä oleva linkki tai lisää Energy Price Forecast EU HACS:ssa mukautetuksi repositorioksi, jonka tyyppi on Integration.
  2. Asenna integraatio ja käynnistä Home Assistant uudelleen HACS:n pyytäessä.
  3. Siirry kohtaan Asetukset → Laitteet ja palvelut, lisää integraatio ja valitse markkinaksi Suomi (FI).
  4. Käytä hinta-, CO₂- ja aikaikkunaentiteettejä koontinäytöissä ja automaatioissa.
Suunnittele jopa viiden päivän päähän Private Prolla

Ilman avainta saat maksutta enintään 48 tunnin hintahorisontin. Private Pro laajentaa yksityisten automaatioiden hintaennusteen enintään 120 tuntiin.

Vertaa ennustetta julkaistuihin hintoihin

Vihreä näyttää julkaistut day-ahead-hinnat, oranssi nykyisen ennusteen ja sininen katkoviiva ensimmäisen tallennetun ennusteen. Aiempi ennuste pysyy näkyvissä virallisten hintojen ilmestyessä.

  1. Päivitä Energy Price Forecast EU HACS:ssa vähintään versioon 1.12.0 ja käynnistä Home Assistant uudelleen. Asenna myös ApexCharts Card 2.1.0 tai uudempi HACS:n kautta.
  2. Korvaa kaikki kolme sensor.CHANGE_ME-kohtaa samalla hintasarjan entiteetillä kohdasta Kehittäjätyökalut → Tilat. Käytä nykyisen kuluttajahinnan entiteettiä, jos haluat määrittämäsi kokonaishinnan. Liitä YAML kohdassa Koontinäyttö → Muokkaa → Lisää kortti → Manuaalinen.

Tallennus alkaa päivityksen jälkeen ja säilyy uudelleenkäynnistyksissä. Arvot säilyvät kyseisen markkinapäivän loppuun; vanhoja ennusteita ei luoda jälkikäteen. captured_at on Home Assistantin vastaanottoaika, ei mallin ajoaika. Tämä ei ole kiinteän ennustepituuden laatumittaus eikä rajaton arkisto.

Varmista, että akselin yksikkö vastaa anturia, esimerkiksi EUR/kWh eikä snt/kWh. Laskettu kokonaishinta ei takaa sähkölaskun summaa. Ilman avainta API-horisontti on edelleen enintään 48 tuntia; käytä asianmukaista pääsyä ja graph_span: 6d enintään 120 tunnille. Kortti koskee HACS-integraatiota, ei alla olevaa REST-summary-esimerkkiä, eikä lisää API-kutsuja.

Kopioitava YAML
type: custom:apexcharts-card
header:
  show: true
  title: Energy Price Forecast EU
graph_span: 3d
span:
  start: day
now:
  show: true
  label: Nyt
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: Virallinen (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: Nykyinen ennuste
    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: Tallennettu ennuste (ensimmäinen vastaanotettu)
    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;

Vaihtoehto: REST-sensori YAML-määrityksellä

Tämä esimerkki käyttää Suomen hinta-aluetta, euroja ja neljän tunnin suunnitteluikkunaa.

https://api.energypriceforecast.eu/api/v1/home-assistant/summary?country=fi&currency=EUR&hours=48&window_hours=4
rest:
  - resource: "https://api.energypriceforecast.eu/api/v1/home-assistant/summary?country=fi&currency=EUR&hours=48&window_hours=4"
    scan_interval: 900
    sensor:
      - name: "EnergyPriceForecast nykyinen hinta FI"
        value_template: "{{ value_json.flat.current_price }}"
        unit_of_measurement: "EUR/kWh"

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

      - name: "EnergyPriceForecast halvin aikaikkuna FI"
        value_template: "{{ value_json.flat.cheapest_window_start }}"

      - name: "EnergyPriceForecast vähäpäästöisin aikaikkuna FI"
        value_template: "{{ value_json.flat.greenest_window_start }}"

Mitä sähkön hintaennusteella voi automatisoida?

Sähköauton latausKäynnistä lataus halvimmassa yhtenäisessä aikaikkunassa yksittäisen halvan tunnin sijaan.
Lämmitys ja lämmin vesiSiirrä joustavaa lämmitystä edullisempiin tunteihin ilman kiinteää kellonaikaa.
Pienempi CO₂-kuormitusOhjaa kulutusta tunteihin, joiden ennustettu sähköverkon CO₂-intensiteetti on pienempi.
Tänään vai huomenna?Vertaa valmiita aikaikkunoita ja tee päätös ennen huomisen virallisten hintojen julkaisua.

Miksi kyseessä on ennuste eikä vain spot-hinta?

Kun viralliset day-ahead-hinnat on julkaistu, niitä käytetään ensin. Malliennuste täydentää niitä seuraaville tunneille, joiden markkinahinta ei ole vielä tiedossa. API kertoo datalähteen, joten julkaistua hintaa ja ennustetta ei esitetä samana asiana.

Onko arvo lopullinen kuluttajahintani?

Ei. Oletusarvo on markkina- tai perushinta. Sähkönsiirto, verot ja myyjän marginaali eivät sisälly siihen automaattisesti.

HACS vai REST – kumpi kannattaa valita?

Valitse HACS helppoa asennusta ja valmiita entiteettejä varten. REST sopii, jos haluat hallita YAML-määrityksiä ja malleja itse.

Kuinka usein sensori kannattaa päivittää?

Esimerkin 900 sekuntia eli 15 minuuttia on tavalliseen kotiautomaatioon riittävä väli. Ennuste ei vaadi jatkuvaa sekuntitason kyselyä.