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](https://img.shields.io/badge/wersja-1.8.0-blue)](https://github.com/balgerion/ha_Pstryk/) 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 `Ustawienia` → `Urzą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}](https://github.com/user-attachments/assets/92c216e5-2a97-408a-aec4-c0cb50eba5fb) ![{9074A93F-0C5A-416F-BE58-A0C947A21781}](https://github.com/user-attachments/assets/e0cfd1d5-a35d-42aa-8ea4-d01b014b4fbc) ![{F57D03A2-95A1-4A08-B172-5C476C608624}](https://github.com/user-attachments/assets/de1bf119-6775-4c07-98b2-06db8a4f5b2c) ![{DAC0F8E9-63AB-4195-BB26-25C92E1D2270}](https://github.com/user-attachments/assets/e2f1b6ea-c6c9-49c9-a992-f3a759ea2ad8) ## 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](https://github.com/user-attachments/assets/ccdfd05c-3b38-4af5-a8db-36fe7fd645ee) ```yaml 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 ```yaml 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}](https://github.com/user-attachments/assets/1812343e-3fa7-4e44-9205-f8f0c524f771) ![{6B2DA5CA-5797-43FB-88DC-F908D9B72501}](https://github.com/user-attachments/assets/0a4a6e46-8b49-4a6b-8676-3e57bf272bf8) ### Konfiguracja Taryfy: ```yaml currency: PLN grid: type: custom forecast: source: mqtt topic: energy/forecast/buy feedin: type: custom forecast: source: mqtt topic: energy/forecast/sell ```