Integracja RCE PSE do Home Assistant

April 18, 2026 · View on GitHub

hacs_badge GitHub Release GitHub Actions Workflow Status hacs_downloads GitHub License GitHub commit activity Maintenance

Rynkowa Cena Energii

Integracja monitoruje polskie ceny rynkowe energii (RCE) publikowane przez PSE. Dane mają rozdzielczość 15 minut, integracja odpytuje API co 30 minut. Ceny na jutro publikowane są przez PSE zwykle po 14:00. Drugie źródło danych to raport PDGSZ (Kompas Energetyczny) z rekomendacją PSE co do użytkowania energii w danej godzinie.

Prezentacja i instalacja: https://youtu.be/6N71uXgf9yc

Przykładowy dashboard Lovelace

Przykładowy pulpit Lovelace

Gotowy plik YAML: examples/dashboard-lovelace-PL.yaml. Zawiera dwa widoki — Ceny Energii (wykres 48h, kolumny Dziś i Jutro) oraz Kompas Energetyczny (siatka godzin PDGSZ, legenda alertów).

Wymagania:

  • Karta ApexCharts Card zainstalowana z HACS (custom:apexcharts-card).
  • Widok typu Sekcje w pulpicie Home Assistant.
  • Integracja w trybie pełnym (nie Lite) — wszystkie użyte encje muszą istnieć.

Plik korzysta z polskich entity_id. Przy HA po angielsku podmień identyfikatory

Instalacja

Otwórz HACS i dodaj repozytorium

HACS (zalecane)

  1. Otwórz HACS w Home Assistant.
  2. Wyszukaj RCE PSE.
  3. Pobierz integrację.
  4. Zrestartuj Home Assistant.

Instalacja ręczna

  1. Skopiuj folder custom_components/rce_pse do katalogu custom_components w Home Assistant.
  2. Zrestartuj Home Assistant.

Pierwsza konfiguracja

Dodaj integrację

  1. UstawieniaIntegracje.
  2. Dodaj integrację → wyszukaj RCE PSE.
  3. Ustaw opcje cenowe, tryb Lite, okna czasowe i progi cenowe.
  4. Zapisz.

Spis treści

Konfiguracja

Formularz konfiguracji dzieli się na sekcje: podstawowe ustawienia, okno tanich godzin, okno drogich godzin, drugie okno drogich godzin, progi cenowe.

Tryb Lite

Domyślnie wyłączony. Po włączeniu integracja publikuje wyłącznie cztery sensory: Cena, Cena Jutro, Kompas Energetyczny Dzisiaj i Kompas Energetyczny Jutro. Statystyki, sensory poprzedniego i następnego okresu, wszystkie okna konfigurowalne, wszystkie sensory progów cenowych oraz wszystkie binary sensory są wtedy wyłączone razem z ich obliczeniami. Pełne dane PSE (dziś i jutro) zostają w atrybucie sensora Cena i Cena Jutro do własnych szablonów.

Jednostka ceny

Pole Jednostka przyjmuje PLN/MWh (domyślnie) lub PLN/kWh. Ta sama jednostka obowiązuje dla wszystkich sensorów i progów. Po przełączeniu PLN/MWh ↔ PLN/kWh historia w recorderze może mieszać stare i nowe próbki przy tym samym entity_id — zaktualizuj progi i automatyzacje. Konwersja z MWh na kWh odbywa się w koordynatorze przez podzielenie wartości API przez 1000; sensory zaokrąglają do 2 miejsc po przecinku, w raw_data jest wyższa precyzja wewnętrzna.

Średnie ceny godzinowe

Domyślnie wyłączone. Po włączeniu każda godzina dostaje średnią z czterech kwadransów PSE i ta sama wartość trafia do wszystkich czterech przedziałów 15-minutowych w danej godzinie. Tryb przydatny w rozliczeniach net-billing, gdzie liczniki prosumenckie raportują z dokładnością do godziny mimo cen 15-minutowych (Art. 4b ust. 11 Ustawy o OZE). Po wyłączeniu sensory pracują na surowych cenach 15-minutowych z API.

Ceny brutto (z VAT)

Domyślnie wyłączone — ceny pozostają w wartościach netto z API. Po włączeniu integracja mnoży ceny przez 1.23 (stawka 23%), zanim dane trafią do sensorów i zanim nastąpi konwersja jednostki. Wszystkie sensory cenowe automatycznie pokazują wartości brutto.

Sensor Cena Sprzedaży Prosument (sensor.rce_pse_cena_sprzedazy_prosument) zawsze ceny ujemne sprowadza do 0 dla każdego 15 minutowgo okresu. W trybie Cen netto dolicza VAT nawet gdy inne wartości go nie mają. Sensor ten może zwracać wartości dodatnie nawet jeśli dana godzina przez główny sensor Cena prezentowania jest ujemnie. Wynika to ze sposobu rozliczania prosumentów w przypadku rozbieżności między okresami publikowanych cen a odczytami z liczników.

Okna tanie / drogie / drugie drogie

Każde z trzech okien ma własny przełącznik włączenia, Początek przeszukiwania (HH:MM), Koniec przeszukiwania (HH:MM) i Długość poszukiwanego okna (HH:MM). Skok wartości to 15 minut. Po wyłączeniu przełącznika integracja nie publikuje sensorów ani binary sensora dla tego okna i nie wykonuje obliczeń.

Semantyka zakresów:

  • Zakres przeszukiwania mieści się w jednym dniu kalendarzowym.
  • 00:00 w polu Koniec przeszukiwania oznacza koniec tego samego dnia (ostatni kwadrans przypisany do dnia w danych PSE), nie północ na początku dnia.
  • Para 00:00 → 00:00 przeszukuje cały dzień.
  • Długość okna to ciągły blok kwadransów (od 00:15 do 24:00); nie może być dłuższa niż zakres przeszukiwania.

Domyślne wartości:

  • Tanie i drogie okno: początek 00:00, koniec 00:00, długość 02:00.
  • Drugie drogie okno: początek 06:00, koniec 10:00, długość 02:00.

Progi cenowe

Sekcja Progi cenowe zawiera Próg niskiej ceny (domyślnie 0) i Próg wysokiej ceny (domyślnie 1000). Każdy próg ma własny przełącznik włączenia. Progi podaj w tej samej jednostce co Jednostka ceny.

Sensory timestamp Cena Poniżej / Powyżej Progu Początek i Koniec pokazują okno aktualnie trwające (kwadrans po kwadransie z ceną ≤ progu niskiego albo ≥ progu wysokiego). Jeśli takiego okna nie ma, sensory wskazują najbliższe przyszłe okno spośród rekordów dziś i jutra (jutro tylko gdy PSE już opublikuje dane). Brak trwającego i przyszłego okna → stan unknown.

Binary sensor Cena Poniżej / Powyżej Progu Aktywna reaguje wyłącznie na bieżącą cenę (tę samą wartość co sensor Cena), niezależnie od logiki okien timestampów.

Zmiana ustawień

UstawieniaIntegracjeRCE PSEKonfiguruj. Po zapisaniu integracja przeładuje się z nowymi ustawieniami. Encje na chwilę mogą być niedostępne.

Sensory

Tabele poniżej używają polskich entity_id — Home Assistant w polskiej wersji generuje je ze slugowanej polskiej nazwy. W angielskiej wersji UI te same encje mają slugi angielskie (np. sensor.rce_pse_price zamiast sensor.rce_pse_cena); zasada jest ta sama, tłumaczy się tylko nazwa wyświetlana. Ceny zaokrąglane są do 2 miejsc po przecinku. Tryb Lite ogranicza listę do Cena, Cena Jutro, Kompas Energetyczny Dzisiaj i Kompas Energetyczny Jutro.

Cena bieżąca i prosument

entity_id PLNazwa PLentity_id ENNazwa ENOpis
sensor.rce_pse_cenaCenasensor.rce_pse_pricePriceAktualna cena energii dla bieżącego okresu; atrybut raw_data zawiera wszystkie kwadranse na dziś.
sensor.rce_pse_cena_sprzedazy_prosumentCena Sprzedaży Prosumentsensor.rce_pse_prosumer_selling_priceProsumer Selling PriceCena sprzedaży prosumenta: ujemne wartości sprowadzone do 0; w trybie netto VAT 23% doliczany lokalnie, w trybie brutto bez podwójnego VAT.

Cena sąsiedniego okresu

Długość okresu wynika z opcji Średnie ceny godzinowe: 15 min przy surowych kwadransach, 1 h przy średnich godzinowych.

entity_id PLNazwa PLentity_id ENNazwa EN
sensor.rce_pse_cena_nastepny_okresCena Następny Okressensor.rce_pse_next_period_priceNext Period Price
sensor.rce_pse_cena_poprzedni_okresCena Poprzedni Okressensor.rce_pse_previous_period_pricePrevious Period Price

Statystyki dzisiaj

entity_id PLNazwa PLentity_id ENNazwa EN
sensor.rce_pse_srednia_cena_dzisiajŚrednia Cena Dzisiajsensor.rce_pse_average_price_todayAverage Price Today
sensor.rce_pse_maksymalna_cena_dzisiajMaksymalna Cena Dzisiajsensor.rce_pse_maximum_price_todayMaximum Price Today
sensor.rce_pse_minimalna_cena_dzisiajMinimalna Cena Dzisiajsensor.rce_pse_minimum_price_todayMinimum Price Today
sensor.rce_pse_mediana_cen_dzisiajMediana Cen Dzisiajsensor.rce_pse_median_price_todayMedian Price Today
sensor.rce_pse_aktualna_vs_srednia_dzisiajAktualna vs Średnia Dzisiajsensor.rce_pse_current_vs_average_todayCurrent vs Average Today

Statystyki jutro

Dostępne, gdy PSE opublikuje dane na następny dzień (zwykle po 14:00).

entity_id PLNazwa PLentity_id ENNazwa EN
sensor.rce_pse_cena_jutroCena Jutrosensor.rce_pse_price_tomorrowPrice Tomorrow
sensor.rce_pse_srednia_cena_jutroŚrednia Cena Jutrosensor.rce_pse_average_price_tomorrowAverage Price Tomorrow
sensor.rce_pse_maksymalna_cena_jutroMaksymalna Cena Jutrosensor.rce_pse_maximum_price_tomorrowMaximum Price Tomorrow
sensor.rce_pse_minimalna_cena_jutroMinimalna Cena Jutrosensor.rce_pse_minimum_price_tomorrowMinimum Price Tomorrow
sensor.rce_pse_mediana_cen_jutroMediana Cen Jutrosensor.rce_pse_median_price_tomorrowMedian Price Tomorrow
sensor.rce_pse_jutro_vs_dzisiaj_sredniaJutro vs Dzisiaj Średniasensor.rce_pse_tomorrow_vs_today_averageTomorrow vs Today Average

Najwyższa i najniższa cena w dniu (timestamp)

Wszystkie zwracają datetime. Do wyświetlenia HH:MM użyj as_timestamp(...) | timestamp_custom('%H:%M').

entity_id PLNazwa PLentity_id ENNazwa EN
sensor.rce_pse_najnizsza_cena_dzisiaj_poczatekNajniższa Cena Dzisiaj Począteksensor.rce_pse_lowest_price_today_startLowest Price Today Start
sensor.rce_pse_najnizsza_cena_dzisiaj_koniecNajniższa Cena Dzisiaj Koniecsensor.rce_pse_lowest_price_today_endLowest Price Today End
sensor.rce_pse_najwyzsza_cena_dzisiaj_poczatekNajwyższa Cena Dzisiaj Począteksensor.rce_pse_highest_price_today_startHighest Price Today Start
sensor.rce_pse_najwyzsza_cena_dzisiaj_koniecNajwyższa Cena Dzisiaj Koniecsensor.rce_pse_highest_price_today_endHighest Price Today End
sensor.rce_pse_najnizsza_cena_jutro_poczatekNajniższa Cena Jutro Począteksensor.rce_pse_lowest_price_tomorrow_startLowest Price Tomorrow Start
sensor.rce_pse_najnizsza_cena_jutro_koniecNajniższa Cena Jutro Koniecsensor.rce_pse_lowest_price_tomorrow_endLowest Price Tomorrow End
sensor.rce_pse_najwyzsza_cena_jutro_poczatekNajwyższa Cena Jutro Począteksensor.rce_pse_highest_price_tomorrow_startHighest Price Tomorrow Start
sensor.rce_pse_najwyzsza_cena_jutro_koniecNajwyższa Cena Jutro Koniecsensor.rce_pse_highest_price_tomorrow_endHighest Price Tomorrow End

Tanie okno (konfigurowalne)

entity_id PLNazwa PLentity_id ENNazwa EN
sensor.rce_pse_tanie_okno_dzisiaj_poczatekTanie Okno Dzisiaj Począteksensor.rce_pse_cheap_window_today_startCheap Window Today Start
sensor.rce_pse_tanie_okno_dzisiaj_koniecTanie Okno Dzisiaj Koniecsensor.rce_pse_cheap_window_today_endCheap Window Today End
sensor.rce_pse_tanie_okno_jutro_poczatekTanie Okno Jutro Począteksensor.rce_pse_cheap_window_tomorrow_startCheap Window Tomorrow Start
sensor.rce_pse_tanie_okno_jutro_koniecTanie Okno Jutro Koniecsensor.rce_pse_cheap_window_tomorrow_endCheap Window Tomorrow End
sensor.rce_pse_tanie_okno_srednia_cena_dzisiajTanie Okno Średnia Cena Dzisiajsensor.rce_pse_cheap_window_avg_price_todayCheap Window Avg Price Today
sensor.rce_pse_tanie_okno_srednia_cena_jutroTanie Okno Średnia Cena Jutrosensor.rce_pse_cheap_window_avg_price_tomorrowCheap Window Avg Price Tomorrow

Drogie okno (konfigurowalne)

entity_id PLNazwa PLentity_id ENNazwa EN
sensor.rce_pse_drogie_okno_dzisiaj_poczatekDrogie Okno Dzisiaj Począteksensor.rce_pse_expensive_window_today_startExpensive Window Today Start
sensor.rce_pse_drogie_okno_dzisiaj_koniecDrogie Okno Dzisiaj Koniecsensor.rce_pse_expensive_window_today_endExpensive Window Today End
sensor.rce_pse_drogie_okno_jutro_poczatekDrogie Okno Jutro Począteksensor.rce_pse_expensive_window_tomorrow_startExpensive Window Tomorrow Start
sensor.rce_pse_drogie_okno_jutro_koniecDrogie Okno Jutro Koniecsensor.rce_pse_expensive_window_tomorrow_endExpensive Window Tomorrow End
sensor.rce_pse_drogie_okno_srednia_cena_dzisiajDrogie Okno Średnia Cena Dzisiajsensor.rce_pse_expensive_window_avg_price_todayExpensive Window Avg Price Today
sensor.rce_pse_drogie_okno_srednia_cena_jutroDrogie Okno Średnia Cena Jutrosensor.rce_pse_expensive_window_avg_price_tomorrowExpensive Window Avg Price Tomorrow

Drugie drogie okno (konfigurowalne)

entity_id PLNazwa PLentity_id ENNazwa EN
sensor.rce_pse_drugie_drogie_okno_dzisiaj_poczatekDrugie Drogie Okno Dzisiaj Począteksensor.rce_pse_second_expensive_window_today_startSecond Expensive Window Today Start
sensor.rce_pse_drugie_drogie_okno_dzisiaj_koniecDrugie Drogie Okno Dzisiaj Koniecsensor.rce_pse_second_expensive_window_today_endSecond Expensive Window Today End
sensor.rce_pse_drugie_drogie_okno_jutro_poczatekDrugie Drogie Okno Jutro Począteksensor.rce_pse_second_expensive_window_tomorrow_startSecond Expensive Window Tomorrow Start
sensor.rce_pse_drugie_drogie_okno_jutro_koniecDrugie Drogie Okno Jutro Koniecsensor.rce_pse_second_expensive_window_tomorrow_endSecond Expensive Window Tomorrow End
sensor.rce_pse_drugie_drogie_okno_srednia_cena_dzisiajDrugie Drogie Okno Średnia Cena Dzisiajsensor.rce_pse_second_expensive_window_avg_price_todaySecond Expensive Window Avg Price Today
sensor.rce_pse_drugie_drogie_okno_srednia_cena_jutroDrugie Drogie Okno Średnia Cena Jutrosensor.rce_pse_second_expensive_window_avg_price_tomorrowSecond Expensive Window Avg Price Tomorrow

Okna progowe

Sensory pokazują okno trwające albo najbliższe przyszłe, uwzględniając łącznie dane na dziś i jutro. Brak trwającego i przyszłego okna → stan unknown.

entity_id PLNazwa PLentity_id ENNazwa EN
sensor.rce_pse_cena_ponizej_progu_poczatekCena Poniżej Progu Począteksensor.rce_pse_price_below_threshold_startPrice Below Threshold Start
sensor.rce_pse_cena_ponizej_progu_koniecCena Poniżej Progu Koniecsensor.rce_pse_price_below_threshold_endPrice Below Threshold End
sensor.rce_pse_cena_powyzej_progu_poczatekCena Powyżej Progu Począteksensor.rce_pse_price_above_threshold_startPrice Above Threshold Start
sensor.rce_pse_cena_powyzej_progu_koniecCena Powyżej Progu Koniecsensor.rce_pse_price_above_threshold_endPrice Above Threshold End

Kompas Energetyczny (PDGSZ)

Dwa sensory korzystają z raportu PDGSZ pobieranego z https://api.raporty.pse.pl/api/pdgsz:

  • sensor.rce_pse_kompas_energetyczny_dzisiaj — Kompas Energetyczny Dzisiaj (EN: sensor.rce_pse_energy_compass_today / Energy Compass Today).
  • sensor.rce_pse_kompas_energetyczny_jutro — Kompas Energetyczny Jutro (EN: sensor.rce_pse_energy_compass_tomorrow / Energy Compass Tomorrow).

Stan sensora to rekomendacja PSE dla bieżącej godziny. Możliwe stany (tekst w języku UI):

  • Zalecane użytkowanie (recommended_usage)
  • Normalne użytkowanie (normal_usage)
  • Zalecane oszczędzanie (recommended_saving)
  • Wymagane ograniczenie (required_restriction)

Atrybut values zawiera listę rekordów z API (dtime, usage_fcst, business_date) wzbogaconych o klucze state i display_state. Sensor Jutro ma dane wyłącznie wtedy, gdy PSE już je opublikuje (zachowanie jak przy Cena Jutro); w przeciwnym razie stan unknown.

Binary sensory

entity_id PLNazwa PLentity_id ENNazwa ENStan on gdy
binary_sensor.rce_pse_najnizsza_cena_aktywnaNajniższa Cena Aktywnabinary_sensor.rce_pse_lowest_price_activeLowest Price ActiveTrwa okres najniższej ceny dnia wg danych PSE.
binary_sensor.rce_pse_najwyzsza_cena_aktywnaNajwyższa Cena Aktywnabinary_sensor.rce_pse_highest_price_activeHighest Price ActiveTrwa okres najwyższej ceny dnia wg danych PSE.
binary_sensor.rce_pse_tanie_okno_aktywneTanie Okno Aktywnebinary_sensor.rce_pse_cheap_window_activeCheap Window ActiveAktualny czas mieści się w skonfigurowanym tanim oknie.
binary_sensor.rce_pse_drogie_okno_aktywneDrogie Okno Aktywnebinary_sensor.rce_pse_expensive_window_activeExpensive Window ActiveAktualny czas mieści się w skonfigurowanym drogim oknie.
binary_sensor.rce_pse_drugie_drogie_okno_aktywneDrugie Drogie Okno Aktywnebinary_sensor.rce_pse_second_expensive_window_activeSecond Expensive Window ActiveAktualny czas mieści się w drugim drogim oknie.
binary_sensor.rce_pse_cena_ponizej_progu_aktywnaCena Poniżej Progu Aktywnabinary_sensor.rce_pse_price_below_threshold_activePrice Below Threshold ActiveBieżąca cena (jak w sensorze Cena) ≤ progowi niskiemu.
binary_sensor.rce_pse_cena_powyzej_progu_aktywnaCena Powyżej Progu Aktywnabinary_sensor.rce_pse_price_above_threshold_activePrice Above Threshold ActiveBieżąca cena (jak w sensorze Cena) ≥ progowi wysokiemu.

Debugowanie

Włącz logi debugowe integracji w configuration.yaml:

logger:
  default: info
  logs:
    custom_components.rce_pse: debug

Zrestartuj Home Assistant. Logi sprawdź w UstawieniaLogi lub bezpośrednio w pliku home-assistant.log. W trybie debug widać żądania do API PSE, status odpowiedzi, kroki config flow oraz błędy i ostrzeżenia.

Źródło danych

Integracja korzysta z oficjalnego API PSE pod adresem https://api.raporty.pse.pl/api, odświeżanie co 30 minut.

  • rce-pln — ceny RCE w PLN/MWh, rozdzielczość 15 minut. Pobierane pola: dtime, period, rce_pln, business_date. Ceny na jutro publikowane są zwykle po 14:00.
  • pdgsz — godziny szczytu z rekomendacją usage_fcst. Pobierane pola: business_date, dtime, is_active, usage_fcst.

Migracja z v1.x

Wpis konfiguracyjny migruje się automatycznie (okna z wartości godzinowych na format HH:MM, jednostka cen). Pełna lista zmian niekompatybilnych wstecz: docs/MIGRACJA-V2.md.

Licencja

Projekt na licencji GNU Affero General Public License v3.0 or later (SPDX: AGPL-3.0-or-later) — pełny tekst w pliku LICENSE. To zmiana licencji w v2.0.0 (wcześniej Apache 2.0).

RCE PSE Home Assistant integration
Copyright (C) 2025 Lewa-Reka and RCE PSE Integration Contributors

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

Współpraca

Pull Requesty mile widziane. Przy większych zmianach najpierw otwórz issue. Trzymaj się standardów projektu.