[Integracja] Ceny dynamiczne PGE

Cześć!

Przygotowałem integrację do Home Assistant, która pobiera aktualne ceny energii bezpośrednio z API PGE DataHub. Skupiłem się na dostarczeniu rzetelnych danych z rynku bilansującego (kontrakt Fix_1), co jest kluczowe w kontekście nadchodzących taryf dynamicznych.

Dlaczego ta integracja?

  • Źródło: Bezpośrednie połączenie z PGE (Fix_1), bez pośredników i opóźnień.
  • Jednostki: Dane z giełdy (MWh) są automatycznie przeliczane na PLN/kWh.
  • Struktura danych: Sensor ceny aktualnej + 24 sensory z harmonogramem dobowym (00:00 - 23:00).
  • Optymalizacja: Kod oparty na DataUpdateCoordinator (minimalne obciążenie zasobów).
  • Prosta konfiguracja: Pełne wsparcie Config Flow – dodajesz przez interfejs, zero YAML-a.

Rozwój i wsparcie: To początkowy etap projektu i zamierzam go aktywnie rozwijać. Chętnie wysłucham Waszych sugestii – jeśli brakuje Wam wyliczeń takich jak średnia dobową, najtańsze okno czasowe czy progi cenowe, dajcie znać. Chcę dopasować to narzędzie do realnych potrzeb osób z magazynami energii i EV.

W README na GitHubie wrzuciłem kod karty apexcharts-card, dzięki któremu uzyskacie przejrzysty wykres cen na cały dzień (taki jak na screenie).

Repozytorium: GitHub - AllonGit/ha_pge_dynamic: Ceny dynamiczne PGE/TGE dla Home Assistant. 25 sensorów (24h + aktualna cena) do inteligentnego ładowania magazynów energii i EV.

Instalacja: Przez HACS (dodaj jako Custom Repository). Zapraszam do testów i zgłaszania uwag w sekcji Issues lub tutaj w wątku.

5 Likes

Generalnie HACS sygnalizuje, że ta integracja jest w sklepie, więc nie trzeba instalować poprzez “3 kropki” . Instalacje przeszła bez problemu. Kartę wrzuciłem dokładnie ze wskazanym yaml. Działa, ale dane pojawiły się po jakimś czasie - sugeruje cierpliwość.
Będę obserwował.

Jest coś nie tak, albo proszę o wyjaśnienie.
Karta ma datę dzisiejszą 6.01, ale to są kontrakty godzinowe na jutro - 7.01.



W związku z tym cena aktualna jest nie ta co na wykresie, ale rzeczywista (czy nie jest zaokrąglona za bardzo?).

Jest “już” w HACS jeśli się kliknie 2x przy dodawaniu repozytorium (pierwszy klik dodaje repo, a drugi powoduje wyświetlenie tej informacji, bo już je masz na liście repozytoriów w twoim lokalnym HACS).

Oczywiście życzę autorowi jak najszybszego dodania repozytorium do oficjalnej listy komponentów niestandardowych w HACS.


A do użytkowników takich niestandardowych rozwiązań apeluję o włączenie pełnej analityki (jest to forma feedbacku przydatna autorom)
Ustawienia → System → Dane analityczne → tu zachęcam do włączenia wszystkich przełączników

można to też zrobić używając My-HA klikając poniższy przycisk
Open your Home Assistant instance and manage your analytics preferences.

więcej informacji o tym jakie dane są zbierane i jak przetwarzane

Dane uzyskane za pomocą analityki (te odnośnie komponentów niestandardowych) są dostępne w formie json tutaj
https://analytics.home-assistant.io/custom_integrations.json
jest nawet niestandardowy komponent umożliwiający podgląd liczby instalacji


I proszę nie nazywajmy HACS po prostu Sklepem, bo w standardowym Sklepie są wyłącznie Dodatki, a w HACS jest wszystko, tylko NIE Dodatki
Takie mieszanie terminologii powoduje dezorientację szczególnie wśród nowych użytkowników HA, ale i starych wyjadaczy potrafi czasem zmylić.

2 Likes


@Romek_Z, sprawdziłem to dokładnie i dane w HA są w 100% zgodne z tym, co publikuje PGE na dany dzień.

Zerknij proszę na porównanie:

  • PGE dla godziny 08:00 podaje 1500 PLN/MWh → mój sensor pokazuje 1,5 PLN/kWh.
  • PGE dla godziny 06:00 podaje 652,80 PLN/MWh → mój sensor pokazuje 0,6528 PLN/kWh.

Wszystko pokrywa się co do grosza. Wykres w ApexCharts może być mylący wizualnie, jeśli na osi X przeskakuje już data na kolejny dzień, ale same wartości sensorów są pobierane i przypisywane poprawnie dla aktualnej doby. Jeśli Twój wykres pokazuje inne dane, upewnij się, że Dashboard odświeżył się po instalacji.

Dodatkowo, przygotowałem specjalnie dla Ciebie zaktualizowany kod YAML, który wymusza precyzyjne wyświetlanie danych (3 miejsca po przecinku) po najechaniu na słupek, abyś mógł widzieć te wartości dokładnie tak, jak podaje je API:

type: custom:apexcharts-card
header:
  show: true
  title: Ceny Energii PGE (Netto)
  show_states: true
graph_span: 24h
span:
  start: day
yaxis:
  - decimals: 3
series:
  - entity: sensor.pge_cena_aktualna
    type: column
    color: "#ff9800"
    float_precision: 3
    data_generator: |
      const prices = [];
      for (let i = 0; i < 24; i++) {
        // Przywróciłem końcówkę _00, która była w Twoim działającym kodzie
        const entity = `sensor.pge_cena_${i.toString().padStart(2, '0')}_00`;
        const state = hass.states[entity];
        if (state) {
          prices.push([new Date().setHours(i, 0, 0, 0), parseFloat(state.state)]);
        }
      }
      return prices;

Dzięki za czujność – takie uwagi pomagają mi dopracować projekt pod kątem czytelności dla każdego użytkownika!

1 Like

Może się nie rozumiemy. A może błądzę. Na Twoim screenie widać o co mi chodzi.
Na stronie PGE: "Kontrakty godzinowe dla dostawy w dniu 07-01-20267 - jutro. Na Twoim wykresie słupkowym to data 6-01. “Cena aktualna : 0,5zł” - to jest cena dzisiejsza - nie ma jej na wykresie słupkowym, który dotyczy jutra. Jak przestawi się na stronie PGE - ceny na dzisiaj (data obrotu 5-01), to widać, ze jest Święto - ceny są niższe i równiejsze w ciągu dnia.

2 Likes

Cześć @Romek_Z! Dzięki za screeny i czujność – masz 100% racji. Przeanalizowałem kod i zachowanie API PGE DataHub i już wiem, gdzie leży problem.

Co się dzieje? Integracja pobiera dane z kontraktu Fix_1 (Rynek Dnia Następnego). Problem polega na tym, że po godzinie 14:00 (po tzw. fixingu), API pod tym samym adresem zaczyna zwracać już dane na jutro (7.01), nawet jeśli w zapytaniu prosimy o datę dzisiejszą. Mój obecny kod zaciągał te najnowsze wartości i nadpisywał nimi dzisiejsze sensory, nie sprawdzając daty konkretnego rekordu. Dlatego na Twoim wykresie godziny były z dziś, ale ceny już z jutra.

Właśnie pracuję nad poprawką, która:

Doda filtr daty: Integracja będzie porównywać datę każdego rekordu z API z datą systemową. Jeśli dane będą dotyczyć jutra, zostaną zignorowane przez sensory „dzisiejsze”, aby wykres na dany dzień był zawsze poprawny.
Doda atrybut daty: Do każdego sensora trafi atrybut date, dzięki czemu po kliknięciu w encję zobaczysz czarno na białym, z którego dnia pochodzi cena.

Niedługo wypuszczę aktualizację na GitHub. Dam znać, jak tylko będzie gotowa do pobrania przez HACS.

5 Likes

Właśnie wypuściłem aktualizację v1.1.0, która definitywnie rozwiązuje ten problem. Okazało się, że API PGE daje dane z jutrzejszego fixingu pod tą samą datą, co wprowadzało zamieszanie w sensorach.

Co poprawiłem (wbrew pozorom było to dość proste):

  • Zmiana logiki zapytania: Integracja generuje teraz URL z “datą obrotu” (trading date) z dnia poprzedniego. Dzięki temu API zwraca dokładnie te same dane, które widzicie w tabeli na stronie PGE dla dostawy na dzień dzisiejszy.
  • Synchronizacja z tabelą: Teraz ceny w HA zgadzają się co do grosza z tym, co publikuje PGE (np. dzisiejsza cena świąteczna 0,460 PLN zamiast 0,476 PLN, która dotyczyła już jutra).
  • Stabilny wykres: Koniec ze “skokami” cen na wykresie po godzinie 14:00. Dane są teraz filtrowane tak, aby trzymały się wyłącznie doby, która aktualnie trwa.

Aktualizacja jest już dostępna w HACS. Wystarczy kliknąć Update, a potem dla pewności Przeładować (Reload) integrację w ustawieniach.

Dajcie znać, czy u Was też już wszystko wyświetla się poprawnie!

1 Like

Teraz wygląda OK. Wydaje się, że należy obserwować większy zakres czyli jednak skusiłbym się na dodanie daty do encji i obserwacje “planów” na kolejny dzień. To ile będzie kosztować energia jest ważniejsze niż to, ile kosztowała kilka godzin temu. Ale i tak super.

2 Likes

Jako, że nie widzę “powitalni”. Więc: witam wszystkich. Jak to zwykle bywa, czytam stronę od dawna. W końcu odpaliłem HA OS na starszym PC. Działa od kilku dni i tak bardziej siebie niż HA męczę.
Do rzeczy: W końcu, dzięki w/w integracji HACS coś się pokazuje w encjach. Do tej pory próbowałem sił w FileEditor’ze w pliku: configuration.yaml. Jednak bez sukcesów. Tak jak @Romek_Z zależy mi na cenach z RDN. Jednak cieszę się niezmiernie, że coś mi ruszyło. Udostępniłem analitycs w HA. Za dużo czytam różnych informacji i miesza mi się wszystko.

Witaj ememka w społeczności HA!

Cieszę się niezmiernie, że integracja pomogła Ci przejść przez ten trudny pierwszy etap. Sam wiem, jak frustrujące potrafi być edytowanie, gdy dopiero zaczyna się przygodę z Home Assistantem – właśnie dlatego postawiłem na pełną konfigurację przez interfejs (UI), żeby oszczędzić Wam (i sobie!) szukania błędnych wcięć w kodzie. :wink:

Jeśli chodzi o ceny RDN (Rynek Dnia Następnego) – moja integracja korzysta z oficjalnego API PGE DataHub (Rynek Bilansujący), co dla większości użytkowników taryf dynamicznych jest najbardziej miarodajne.

Ważna informacja: Właśnie kończę przygotowania i za chwilę wyjdzie nowa, poprawiona wersja (v1.1.1). Będzie ona jeszcze stabilniejsza i lepiej obsłuży sytuacje, w których API PGE ma przerwy w dostawie danych.

Mam dla Ciebie (i innych osób na start) małą podpowiedź: W nowym wydaniu zaktualizowałem też README o dokładną instrukcję, jak te ceny wpiąć bezpośrednio w oficjalny panel Energia. Dzięki temu będziesz widział realne koszty prądu w złotówkach, a nie tylko same liczby.

Dzięki wielkie za włączenie analityki! To dla mnie sygnał, że projekt żyje i warto go rozwijać. Jak tylko nowa wersja pojawi się w HACS – daj znać, czy wszystko śmiga!

2 Likes