Sähkön hintaennuste kotiautomaatioon
Ilmainen JSON-syöte Home Assistantiin, Homeyhin ja muihin. Valmiit esimerkit: halvin 3 tunnin jakso ensi yönä, auton lataus ja lämminvesivaraaja.
Syöte: https://sahkonhinta.xn--hlytyslista-l8a.fi/api/v1/ennuste.json
Hinnat c/kWh, tukkuhinnan ennuste ilman ALV:tä (syötteessä ALV 0 %, paitsi mean_vat), ei sähkölaskusi hinta. Kellonajat Suomen aikaa. Päivittyy klo 6, 15 ja 20; hae enintään kerran 30 minuutissa.
Mitä syötteessä on
next_night: halvin yhtenäinen 3 tunnin jakso lähimpänä ennustettuna yönä (klo 00–07).days: päivät 1–7: keskihinta sekä 50 % ja 80 % väli. Päiville 1–4 myös halvin 3 h ja 6 h jakso sekä tuntiennuste (hourly). Päiville 5–7 myösmean_vat: keskihinta ALV 25,5 % kanssa (ALV tunneittain, ei miinustunneille).outlook: päivät 8–14 yhtenä keskihintana ja välinä. Ei päiväkohtaisia lukuja.staleontrue, jos ennuste on yli 12 tuntia vanha. Älä ohjaa laitteita vanhalla ennusteella.
Syöte sisältää vain omia ennusteitamme. Kun huomisen viralliset hinnat on julkaistu (noin klo 14), ennuste siirtyy seuraavaan päivään ja next_night seuraavaan yöhön. Saman illan ohjaukseen käytä virallisia hintoja, esimerkiksi /api/markets/FI/prices.json (EUR/MWh); tämä syöte on suunnitteluun 1–7 päivää eteenpäin.
Esimerkkivastaus (lyhennetty)
{
"schema": "sahkoennuste.ennuste.v1",
"issue_time": "2026-10-22T06:05:00+03:00",
"stale": false,
"units": "c/kWh",
"timezone": "Europe/Helsinki",
"next_night": {"date": "2026-10-23", "start": "2026-10-23T02:00:00+03:00",
"end": "2026-10-23T05:00:00+03:00", "from": "02:00", "to": "05:00",
"hours": 3, "mean": 1.74},
"days": [
{"date": "2026-10-23", "horizon_day": 1, "mean": 3.63,
"range_50": [2.62, 4.12], "range_80": [1.77, 5.33],
"cheapest_3h": {...}, "cheapest_6h": {...},
"hourly": [{"start": "2026-10-23T00:00:00+03:00", "end": "...", "price": 2.1}, ...]},
{"date": "2026-10-26", "horizon_day": 4, "mean": 2.39,
"range_50": [0.86, 3.24], "range_80": [0.37, 5.56]},
...
],
"outlook": {"label": "outlook", "from": "2026-10-29", "to": "2026-11-04",
"mean": 4.9, "range": [2.1, 9.0], "range_note": "..."},
"attribution": "...", "terms": "..."
}
Home Assistant
1. REST-anturit
Lisää configuration.yaml-tiedostoon ja käynnistä Home Assistant uudelleen. Tarkista anturien nimet kohdasta Kehittäjätyökalut → Tilat; ne voivat poiketa esimerkistä.
# configuration.yaml
rest:
- resource: https://sahkonhinta.xn--hlytyslista-l8a.fi/api/v1/ennuste.json
scan_interval: 1800 # 30 min riittää: ennuste päivittyy klo 6, 15 ja 20
sensor:
- name: "Sähköennuste yö 3h alku"
unique_id: sahkoennuste_yo_3h_alku
device_class: timestamp
value_template: "{{ value_json.next_night.start | default(none) }}"
- name: "Sähköennuste yö 3h loppu"
unique_id: sahkoennuste_yo_3h_loppu
device_class: timestamp
value_template: "{{ value_json.next_night.end | default(none) }}"
- name: "Sähköennuste yö 3h hinta"
unique_id: sahkoennuste_yo_3h_hinta
unit_of_measurement: "c/kWh"
value_template: "{{ value_json.next_night.mean | default(none) }}"
- name: "Sähköennuste seuraava päivä"
unique_id: sahkoennuste_seuraava_paiva
unit_of_measurement: "c/kWh"
value_template: "{{ value_json.days[0].mean | default(none) }}"
json_attributes:
- issue_time
- stale
- outlook
2. Mallipohjat: "halvin 3 h ensi yönä"
Binäärianturi on päällä halvimman 3 tunnin jakson ajan. Tekstianturi näyttää jakson kojelaudalla, esim. "03:00–06:00".
# configuration.yaml
template:
- binary_sensor:
- name: "Halvin 3h käynnissä"
unique_id: sahkoennuste_halvin_3h_nyt
state: >
{% if has_value('sensor.sahkoennuste_yo_3h_alku')
and has_value('sensor.sahkoennuste_yo_3h_loppu') %}
{% set s = states('sensor.sahkoennuste_yo_3h_alku') | as_datetime %}
{% set e = states('sensor.sahkoennuste_yo_3h_loppu') | as_datetime %}
{{ s <= now() < e }}
{% else %}
false
{% endif %}
- sensor:
- name: "Halvin 3h ensi yönä"
unique_id: sahkoennuste_halvin_3h_teksti
state: >
{% if has_value('sensor.sahkoennuste_yo_3h_alku') %}
{% set s = as_timestamp(states('sensor.sahkoennuste_yo_3h_alku')) %}
{% set e = as_timestamp(states('sensor.sahkoennuste_yo_3h_loppu')) %}
{{ s | timestamp_custom('%H:%M') }}–{{ e | timestamp_custom('%H:%M') }}
{% else %}
ei ennustetta
{% endif %}
3. Automaatiot: auton lataus ja varaaja
Vaihda switch.auton_laturi ja switch.varaaja omiin laitteisiisi. Varalla-automaatio lämmittää varaajan klo 2–5, jos ennustetta ei saada.
# automations.yaml
- alias: "Auton lataus halvimmalla 3 h jaksolla"
triggers:
- trigger: state
entity_id: binary_sensor.halvin_3h_kaynnissa
actions:
- action: >
{{ 'switch.turn_on' if trigger.to_state.state == 'on' else 'switch.turn_off' }}
target:
entity_id: switch.auton_laturi # vaihda omaksi
- alias: "Lämminvesivaraaja halvimmalla 3 h jaksolla"
triggers:
- trigger: state
entity_id: binary_sensor.halvin_3h_kaynnissa
to: "on"
actions:
- action: switch.turn_on
target:
entity_id: switch.varaaja # vaihda omaksi
- wait_for_trigger:
- trigger: state
entity_id: binary_sensor.halvin_3h_kaynnissa
to: "off"
timeout: "04:00:00"
- action: switch.turn_off
target:
entity_id: switch.varaaja
- alias: "Varaaja: varalla klo 02-05 jos ennustetta ei ole"
triggers:
- trigger: time
at: "02:00:00"
conditions:
- condition: template
value_template: "{{ not has_value('sensor.sahkoennuste_yo_3h_alku') }}"
actions:
- action: switch.turn_on
target:
entity_id: switch.varaaja
- delay: "03:00:00"
- action: switch.turn_off
target:
entity_id: switch.varaaja
- alias: "Ilmoitus: halvin 3 h ensi yönä"
triggers:
- trigger: time
at: "20:30:00"
actions:
- action: notify.notify
data:
message: >
Halvin 3 h ensi yönä {{ states('sensor.halvin_3h_ensi_yona') }},
noin {{ states('sensor.sahkoennuste_yo_3h_hinta') }} c/kWh (ennuste, tukkuhinta).
Homey
Homey Pro, HomeyScript-sovellus (Athomin ilmainen sovellus).
- Luo HomeyScriptissä uusi skripti, esim.
halvin3h, ja liitä alla oleva koodi. - Tee Flow: KUN "Joka 5. minuutti" (Päivämäärä ja aika) → JA HomeyScript "Suorita skripti"
halvin3h→ SITTEN laturi tai varaaja päälle. MUUTEN pois päältä. - Skripti luo myös tagin "Sähkö halvin 3h" (esim. "03:00–06:00"), jota voi käyttää ilmoituksissa.
// HomeyScript: palauttaa true, kun ollaan halvimmalla 3 h jaksolla.
// Hakee syötteen enintään kerran 30 minuutissa ja muistaa sen.
const URL = 'https://sahkonhinta.xn--hlytyslista-l8a.fi/api/v1/ennuste.json';
let d = global.get('sahkoennuste');
if (!d || Date.now() - d.at > 30 * 60 * 1000) {
const res = await fetch(URL);
if (res.ok) {
const j = await res.json();
d = { at: Date.now(), n: j.next_night };
global.set('sahkoennuste', d);
}
}
const n = d && d.n;
if (!n) return false;
await tag('Sähkö halvin 3h', n.from + '–' + n.to);
const now = Date.now();
return now >= Date.parse(n.start) && now < Date.parse(n.end);
Ilman HomeyScriptiä: "HTTP request flow cards" -sovelluksen GET-kortilla voi hakea syötteen ja poimia kentät next_night.from ja next_night.to JSON-polulla. Korttien nimet vaihtelevat sovellusversion mukaan.
Käyttöehdot
- Maksuton. Mainitse lähde: Sähkönhinta (sahkonhinta.hälytyslista.fi).
- Ei hintatakuuta. Emme lupaa säästöjä. Käytä varalla-ohjausta.
- Hae enintään kerran 30 minuutissa. Syötteen rakenne (
v1) pysyy; muutokset tulevat uuteen versioon. - Lähteet: Nord Pool, ENTSO-E.
In English
Free JSON feed of our Finnish day-ahead price forecasts: https://sahkonhinta.xn--hlytyslista-l8a.fi/api/v1/ennuste.json. Prices in c/kWh, wholesale, VAT 0 %, not your bill. Times are Europe/Helsinki with UTC offset. Updated 06:00, 15:00 and 20:00; poll at most every 30 minutes.
next_night is the cheapest 3-hour block in the nearest forecast night (00–07). days covers days 1–7 (mean, 50/80 % ranges); days 1–4 also carry cheapest 3 h/6 h blocks and hourly values. outlook is days 8–14 as one week level with a range, no daily values. The feed never contains exchange (official) prices; once tomorrow's prices are published (about 14:00) the feed moves on to the next day. Check stale before acting. The Home Assistant and Homey examples above work as-is; entity names are Finnish. Credit "Sähkönhinta"; no warranty.
Mitä luvut ovat
Ennuste. Toteutuneet hinnat voivat poiketa. Pörssisähkön tukkuhinta, ei sähkölaskusi hinta. Laskuun tulevat lisäksi ALV 25,5 %, myyjän marginaali, sähkövero ja siirto. Miinushintoihin ei lisätä ALV:tä.
Kuinka pitkälle
Päivät 1–4: tuntihinnat ja halvimmat ajat. Päivät 5–7: päivän keskihinta ja halvin päivä – tuntihinnat tulevat 4 päivää ennen. Viikko 2: viikon keskihinta.
Lähteet
Lähteet: Nord Pool, ENTSO-E. Päivitys klo 6, 15 ja 20. Kellonajat Suomen aikaa. Tämän päivän ja huomisen viralliset hinnat ovat etusivulla.