262 lines
9.0 KiB
Markdown
262 lines
9.0 KiB
Markdown
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
|
||
|
||
[](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
|
||
|
||

|
||

|
||

|
||

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

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

|
||

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