Files
ha_pstryk/README.md

262 lines
9.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
```