2025-04-27 23:14:02 +02:00
2025-05-02 19:15:58 +02:00
2026-02-03 15:05:29 +01:00

dev support: 💡 Odbierz 50 zł na prąd w Pstryk! Użyj mojego kodu E3WOTQ w koszyku w aplikacji. Bonus trafi do Twojego Portfela Pstryk po pierwszej opłaconej fakturze!

Integracja Home Assistant z Pstryk API

!!! Dedykowana Karta do integracji: https://github.com/balgerion/ha_Pstryk_card

Wersja

Integracja dla Home Assistant umożliwiająca śledzenie aktualnych cen energii elektrycznej oraz prognoz z platformy Pstryk.

Funkcje

  • 🔌 Aktualna cena kupna i sprzedaży energii
  • 📅 Tabela 24h z prognozowanymi cenami dla sensora API
  • 📆 Tabela 48h z prognozowanymi cenami dla sensora MQTT
  • ⚙️ Konfigurowalna liczba "najlepszych godzin"
  • 🔻 Konfigurowalna liczba "najgorszych godzin"
  • 🕒 Cena w następnej godzinie
  • 📉 Średnia cena z pozostałej ilości godzin do końca doby
  • 🌅 Średnia cena wschód/zachód
  • 🕰️ Automatyczna konwersja czasu UTC → lokalny
  • 🔄 Dane są aktualizowane minutę po pełnej godzinie
  • 🧩 Konfiguracja z poziomu integracji
  • 🔑 Walidacja klucza API / Cache danych / Zabezpieczenie przed timeoutem API
  • 📡 Integracja wystawia po lokalnym MQTT tablice cen w natywnym formacie EVCC
  • 📊 Średnia zakupu oraz sprzedaży - miesięczna/roczna
  • 📈 Bilans miesięczny/roczny
  • 🛡️ Debug i logowanie
  • 🔋 NOWOŚĆ: Sensor rekomendacji baterii (charge/discharge/standby)
  • Algorytm intra-day arbitrage (ładowanie w taniej godziny, rozładowywanie w drogie)
  • 📊 Prognoza SoC na 24h z automatycznym planowaniem

Instalacja

Metoda 1: Via HACS

  1. W HACS przejdź do Integracje
  2. Kliknij Dodaj repozytorium
  3. Wpisz URL: https://github.com/balgerion/ha_Pstryk
  4. Wybierz kategorię: Integration
  5. Zainstaluj i zrestartuj Home Assistant

Metoda 2: Ręczna instalacja

  1. Utwórz folder custom_components/pstryk w katalogu konfiguracyjnym HA
  2. Skopiuj pliki: init.py manifest.json config_flow.py const.py sensor.py logo.png (opcjonalnie)
  3. Zrestartuj Home Assistant

Konfiguracja

  1. Przejdź do UstawieniaUrządzenia i usługi
  2. Kliknij Dodaj integrację
  3. Wyszukaj "Psrryk Energy"
  4. Wprowadź dane:
  • Klucz API: Twój klucz z platformy Pstryk
  • Liczba najlepszych cen kupna: (domyślnie 5)
  • Liczba najlepszych cen sprzedaży: (domyślnie 5)

Scrnshoty

{053A01E2-21A0-4D49-B0DB-3F7E650577AB} {9074A93F-0C5A-416F-BE58-A0C947A21781} {F57D03A2-95A1-4A08-B172-5C476C608624} {DAC0F8E9-63AB-4195-BB26-25C92E1D2270}

Użycie

Dostępne encje

Nazwa encji Opis
sensor.pstryk_current_buy_price Aktualna cena kupna energii + tabela
sensor.pstryk_current_sell_price Aktualna cena sprzedaży energii + tabela
sensor.pstryk_buy_monthly_average Średnia miesięczna cena kupna energii
sensor.pstryk_buy_yearly_average Średnia roczna cena kupna energii
sensor.pstryk_sell_monthly_average Średnia miesięczna cena sprzedaży energii
sensor.pstryk_sell_yearly_average Średnia roczna cena sprzedaży energii
sensor.pstryk_daily_financial_balance Dzienny bilans kupna/sprzedaży
sensor.pstryk_monthly_financial_balance Miesięczny bilans kupna/sprzedaży
sensor.pstryk_yearly_financial_balance Roczny bilans kupna/sprzedaży
sensor.pstryk_battery_recommendation NOWOŚĆ: Rekomendacja baterii (charge/discharge/standby)

Przykładowa Automatyzacja:

Włączanie bojlera IMG_4079

alias: Optymalne grzanie wody
description: ""
triggers:
  - minutes: "1"
    trigger: time_pattern
    hours: /1
conditions:
  - condition: template
    value_template: >
      {% set current_hour = now().replace(minute=0, second=0,
      microsecond=0).isoformat(timespec='seconds').split('+')[0] %}

      {% set best_hours = state_attr('sensor.pstryk_current_buy_price',
      'best_prices') | map(attribute='start') | list %}

      {{ current_hour in best_hours }}
actions:
  - variables:
      current_hour: >-
        {{ now().replace(minute=0, second=0,
        microsecond=0).isoformat(timespec='seconds').split('+')[0] }}
  - choose:
      - conditions:
          - condition: state
            entity_id: light.shellypro3_34987a49142c_switch_2
            state: "off"
        sequence:
          - target:
              entity_id: switch.shellypro3_34987a49142c_switch_2
            action: switch.turn_on
            data: {}
          - data:
              message: |
                Grzanie włączone! Godzina: {{ current_hour }}, Cena: {{
                  state_attr('sensor.pstryk_current_buy_price', 'best_prices')
                  | selectattr('start', 'equalto', current_hour)
                  | map(attribute='price')
                  | first
                }} PLN
            action: notify.mobile_app_balg_iphone
      - conditions:
          - condition: state
            entity_id: light.shellypro3_34987a49142c_switch_2
            state: "on"
        sequence:
          - delay:
              hours: 1
              minutes: 5
          - target:
              entity_id: switch.shellypro3_34987a49142c_switch_2
            action: switch.turn_off
            data: {}


Sensor Rekomendacji Baterii 🔋

Sensor sensor.pstryk_battery_recommendation automatycznie oblicza kiedy ładować/rozładowywać magazyn energii bazując na dynamicznych cenach Pstryk.

Stany sensora

Stan Opis
charge Ładuj baterię (tania energia)
discharge Rozładuj baterię do domu/sieci (droga energia)
standby Bez akcji

Algorytm Intra-day Arbitrage

Algorytm wykrywa wiele okien arbitrażowych w ciągu dnia:

  1. Nocne ładowanie (00:00-05:59) - najtańsze godziny
  2. Poranny szczyt (06:00-10:59) - rozładowanie
  3. Dolina południowa (11:00-14:59) - ładowanie jeśli opłacalne vs wieczór
  4. Wieczorny szczyt (15:00-20:59) - rozładowanie

Przykład typowych cen polskich:

Noc (0.80 PLN)     → CHARGE
Poranek (2.58 PLN) → DISCHARGE
Południe (1.46 PLN)→ CHARGE (arbitraż: 1.46 × 1.25 = 1.83 < 2.63 avg wieczór)
Wieczór (3.10 PLN) → DISCHARGE

Konfiguracja Baterii

W opcjach integracji dostępne są ustawienia:

Parametr Domyślnie Opis
Włącz sensor baterii false Aktywuje sensor
Entity SoC - Sensor stanu naładowania baterii
Pojemność 15 kWh Pojemność magazynu
Szybkość ładowania 28 %/h Jak szybko ładuje się bateria
Szybkość rozładowania 10 %/h Jak szybko rozładowuje się bateria
Minimalny SoC 20% Próg poniżej którego nie rozładowujemy
Liczba godzin ładowania 6 Ile najtańszych godzin do ładowania
Mnożnik progu discharge 1.3 Cena musi być 1.3x wyższa od avg charge

Atrybuty sensora

sensor.pstryk_battery_recommendation:
  state: "charge"
  attributes:
    current_price: 0.45
    current_soc: 65
    avg_charge_price: 0.25
    discharge_threshold: 0.325
    charge_hours: [0,1,2,3,4,11,12,13,14,23]
    discharge_hours: [6,7,8,9,10,15,16,17,18,19,20]
    standby_hours: [5,21,22]
    midday_arbitrage:
      profitable: true
      midday_charge_hours: [11,12,13,14]
    reason: "Mid-day arbitrage charge..."
    next_state_change: "15:00"
    next_state: "discharge"

Automatyzacja sterowania falownikiem

Przykładowa automatyzacja do sterowania falownikami jest dostępna w pliku:
📁 automations/battery_control_pstryk.yaml

Funkcje:

  • Natychmiastowa reakcja na zmianę sensora (30s debounce)
  • Ochrona przed przeładowaniem przyłącza (np. Tesla charging > 2000W → standby)
  • Sterowanie wieloma falownikami
  • Logowanie do logbook

Jak użyć:

  1. Skopiuj zawartość automations/battery_control_pstryk.yaml
  2. W HA: Ustawienia → Automatyzacje → Utwórz → Edytuj w YAML → Wklej
  3. Dostosuj device_id i entity_id do swoich urządzeń
  4. Zapisz i włącz

EVCC

Scrnshoty

{9EE9344A-DAA3-42C0-9084-D2F3B5AE1B08} {6B2DA5CA-5797-43FB-88DC-F908D9B72501}

Konfiguracja

Taryfy:

currency: PLN
grid:
  type: custom
  forecast:
    source: mqtt
    topic: energy/forecast/buy

feedin:
  type: custom
  forecast:
    source: mqtt
    topic: energy/forecast/sell
Description
No description provided
Readme 391 KiB
Languages
Python 100%