9.0 KiB
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
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
- W HACS przejdź do
Integracje - Kliknij
Dodaj repozytorium - Wpisz URL:
https://github.com/balgerion/ha_Pstryk - Wybierz kategorię:
Integration - Zainstaluj i zrestartuj Home Assistant
Metoda 2: Ręczna instalacja
- Utwórz folder
custom_components/pstrykw katalogu konfiguracyjnym HA - Skopiuj pliki: init.py manifest.json config_flow.py const.py sensor.py logo.png (opcjonalnie)
- Zrestartuj Home Assistant
Konfiguracja
- Przejdź do
Ustawienia→Urządzenia i usługi - Kliknij
Dodaj integrację - Wyszukaj "Psrryk Energy"
- 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
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:
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:
- Nocne ładowanie (00:00-05:59) - najtańsze godziny
- Poranny szczyt (06:00-10:59) - rozładowanie
- Dolina południowa (11:00-14:59) - ładowanie jeśli opłacalne vs wieczór
- 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ć:
- Skopiuj zawartość
automations/battery_control_pstryk.yaml - W HA: Ustawienia → Automatyzacje → Utwórz → Edytuj w YAML → Wklej
- Dostosuj
device_idientity_iddo swoich urządzeń - Zapisz i włącz
EVCC
Scrnshoty
Konfiguracja
Taryfy:
currency: PLN
grid:
type: custom
forecast:
source: mqtt
topic: energy/forecast/buy
feedin:
type: custom
forecast:
source: mqtt
topic: energy/forecast/sell