diff --git a/docs/SOLAR_FORECAST_INTEGRATION.md b/docs/SOLAR_FORECAST_INTEGRATION.md new file mode 100644 index 0000000..1c25258 --- /dev/null +++ b/docs/SOLAR_FORECAST_INTEGRATION.md @@ -0,0 +1,484 @@ +# ☀️ Przewidywanie produkcji PV dla inteligentnego zarządzania Deye + +## 🎯 Cel +Dodać integrację przewidującą produkcję słoneczną, aby inteligentnie zarządzać ładowaniem baterii: +- Jeśli jutro będzie słonecznie → nie ładuj z sieci w nocy +- Jeśli jutro pochmurnie → doładuj baterię z taniej taryfy +- Optymalizacja kosztów energii + +--- + +## 🌤️ Rekomendowane integracje + +### 1. **Forecast.Solar** ⭐ NAJLEPSZY START + +**Zalety:** +- ✅ Całkowicie darmowy +- ✅ Łatwa konfiguracja (bez rejestracji) +- ✅ Dokładne prognozy produkcji PV +- ✅ Wbudowana w Home Assistant +- ✅ Aktualizacja co godzinę +- ✅ Uwzględnia: nachylenie, azymut, moc instalacji + +**Dane:** +- Prognoza produkcji na dziś/jutro (kWh) +- Moc w kolejnych godzinach (W) +- Energia pozostała do wyprodukowania dziś + +**Instalacja:** +```yaml +1. Settings → Devices & Services → Add Integration +2. Szukaj: "Forecast.Solar" +3. Podaj: + - Latitude/Longitude (automatycznie z HA) + - Nachylenie paneli: np. 35° (kąt do poziomu) + - Azymut: np. 180° (południe), 135° (PŁD-WSC), 225° (PŁD-ZAC) + - Moc instalacji: np. 12 kWp + - Damping: 0 (lub 0.5 dla konserwatywnych prognoz) +4. Gotowe! +``` + +**Encje:** +```yaml +sensor.energy_production_today # Prognoza na dziś (kWh) +sensor.energy_production_tomorrow # Prognoza na jutro (kWh) +sensor.energy_current_hour # Prognoza dla bieżącej godziny +sensor.power_production_now # Aktualna przewidywana moc (W) +``` + +--- + +### 2. **Solcast** ⭐ NAJBARDZIEJ DOKŁADNY + +**Zalety:** +- ✅ Bardzo dokładne prognozy +- ✅ Uwzględnia zachmurzenie satelitarne +- ✅ 50 zapytań/dzień (plan darmowy) +- ✅ Do 2 lokalizacji (np. dach wschód + zachód) +- ✅ Aktualizacja co 30 min + +**Wady:** +- ⚠️ Wymaga rejestracji (darmowy plan wystarczy) +- ⚠️ Limit 50 zapytań/dzień + +**Instalacja:** +```yaml +1. Zarejestruj się: https://solcast.com/ (FREE plan) +2. Dodaj swoją instalację: + - Resource Name: "Dach Południe" + - Latitude/Longitude + - Capacity: 12 kWp + - Tilt: 35° + - Azimuth: 180° + - Install Date +3. Skopiuj API Key z Account → API Key +4. W HA: HACS → Integrations → Szukaj "Solcast PV Forecast" +5. Instaluj → Restart HA +6. Settings → Integrations → Add Integration → "Solcast PV Forecast" +7. Wklej API Key +8. Gotowe! +``` + +**Encje:** +```yaml +sensor.solcast_pv_forecast_forecast_today # Dziś (kWh) +sensor.solcast_pv_forecast_forecast_tomorrow # Jutro (kWh) +sensor.solcast_pv_forecast_forecast_day_3 # Pojutrze (kWh) +sensor.solcast_pv_forecast_power_now # Teraz (W) +sensor.solcast_pv_forecast_peak_power_today # Szczyt dziś (W) +``` + +--- + +### 3. **OpenWeatherMap** - Pogoda + Nasłonecznienie + +**Zalety:** +- ✅ Darmowy (do 1000 zapytań/dzień) +- ✅ Cloud coverage (% zachmurzenia) +- ✅ UV index +- ✅ Szczegółowa pogoda + +**Instalacja:** +```yaml +1. Zarejestruj się: https://openweathermap.org/api +2. Skopiuj API Key (FREE plan) +3. HA: Settings → Integrations → Add Integration +4. Szukaj: "OpenWeatherMap" +5. Wklej API Key +6. Wybierz tryb: "Forecast + Current" +``` + +**Encje:** +```yaml +weather.openweathermap # Główna pogoda +sensor.openweathermap_cloud_coverage # Zachmurzenie (%) +sensor.openweathermap_uv_index # Indeks UV +sensor.openweathermap_forecast_temperature # Prognoza temperatura +sensor.openweathermap_forecast_clouds # Prognoza chmur +``` + +--- + +## 🤖 Inteligentne automatyzacje z prognozą + +### Scenariusz 1: Ładuj z sieci jeśli jutro pochmurnie + +```yaml +automation: + - alias: "Deye - Inteligentne ładowanie oparte na prognozie" + description: "Doładuj baterię jeśli jutro mała produkcja PV" + trigger: + - platform: time + at: "22:00:00" # Sprawdź wieczorem + + condition: + # Jeśli prognoza na jutro < 10 kWh + - condition: numeric_state + entity_id: sensor.energy_production_tomorrow + below: 10 + + # I bateria nie jest pełna + - condition: numeric_state + entity_id: sensor.inverter_deye_battery_soc + below: 80 + + action: + # Włącz ładowanie w nocy + - service: switch.turn_on + target: + entity_id: switch.inverter_deye_battery_grid_charging + + # Ustaw program nocny + - service: select.select_option + target: + entity_id: select.inverter_deye_program_1_charging + data: + option: "Grid" + + - service: time.set_value + target: + entity_id: time.inverter_deye_program_1_time + data: + time: "01:00:00" + + # Powiadomienie + - service: notify.notify + data: + title: "🌥️ Mała produkcja PV jutro" + message: | + Prognoza na jutro: {{ states('sensor.energy_production_tomorrow') }} kWh + Włączono ładowanie z sieci w nocy (01:00-07:00) +``` + +--- + +### Scenariusz 2: Nie ładuj jeśli jutro słonecznie + +```yaml +automation: + - alias: "Deye - Wyłącz ładowanie gdy słonecznie" + description: "Nie marnuj pieniędzy gdy jutro dużo słońca" + trigger: + - platform: time + at: "22:00:00" + + condition: + # Jeśli prognoza na jutro > 30 kWh (dużo słońca) + - condition: numeric_state + entity_id: sensor.energy_production_tomorrow + above: 30 + + # I bateria ma przynajmniej 40% + - condition: numeric_state + entity_id: sensor.inverter_deye_battery_soc + above: 40 + + action: + # Wyłącz ładowanie nocne + - service: switch.turn_off + target: + entity_id: switch.inverter_deye_battery_grid_charging + + - service: select.select_option + target: + entity_id: select.inverter_deye_program_1_charging + data: + option: "Disabled" + + - service: notify.notify + data: + title: "☀️ Duża produkcja PV jutro!" + message: | + Prognoza: {{ states('sensor.energy_production_tomorrow') }} kWh + Ładowanie z sieci wyłączone - zaoszczędzisz na prądzie! +``` + +--- + +### Scenariusz 3: Dynamiczny limit ładowania + +```yaml +automation: + - alias: "Deye - Dynamiczny SOC target" + description: "Dostosuj cel ładowania do prognozy" + trigger: + - platform: time + at: "23:00:00" + + action: + - choose: + # Jeśli jutro bardzo pochmurnie (< 5 kWh) + - conditions: + - condition: numeric_state + entity_id: sensor.energy_production_tomorrow + below: 5 + sequence: + # Naładuj do 95% + - service: notify.notify + data: + message: "🌧️ Bardzo pochmurnie - ładuję do 95%" + # Tu można dodać logikę stop przy 95% + + # Jeśli średnio (5-20 kWh) + - conditions: + - condition: numeric_state + entity_id: sensor.energy_production_tomorrow + above: 5 + below: 20 + sequence: + # Naładuj do 70% + - service: notify.notify + data: + message: "🌤️ Średnie nasłonecznienie - ładuję do 70%" + + # Jeśli słonecznie (> 20 kWh) + - conditions: + - condition: numeric_state + entity_id: sensor.energy_production_tomorrow + above: 20 + sequence: + # Zostaw jak jest + - service: notify.notify + data: + message: "☀️ Będzie słonecznie - nie ładuję z sieci" +``` + +--- + +### Scenariusz 4: Adaptacyjne harmonogramy na weekend + +```yaml +automation: + - alias: "Deye - Weekend z prognozą" + description: "W weekend dostosuj strategię do pogody" + trigger: + - platform: time + at: "20:00:00" + id: "check_forecast" + + condition: + # Tylko piątek wieczorem + - condition: time + weekday: + - fri + + action: + - choose: + # Jeśli weekend będzie słoneczny + - conditions: + - condition: numeric_state + entity_id: sensor.energy_production_tomorrow + above: 25 + sequence: + - service: select.select_option + target: + entity_id: select.inverter_deye_time_of_use + data: + option: "Weekend" # Specjalny tryb weekendowy + + - service: notify.notify + data: + message: "🎉 Słoneczny weekend - przełączam na tryb Weekend" +``` + +--- + +## 📊 Dashboard z prognozą + +```yaml +# Dodaj do Lovelace Dashboard + +- type: entities + title: ☀️ Prognoza produkcji PV + entities: + - entity: sensor.energy_production_today + name: Dziś (prognoza) + icon: mdi:solar-power + + - entity: sensor.energy_production_tomorrow + name: Jutro (prognoza) + icon: mdi:weather-sunny + + - entity: sensor.power_production_now + name: Moc teraz (prognoza) + icon: mdi:flash + + - type: divider + + - entity: sensor.inverter_deye_daily_production + name: Dziś (rzeczywista) + icon: mdi:chart-line + + - entity: sensor.inverter_deye_battery_soc + name: Bateria SOC + icon: mdi:battery + +# Wykres porównawczy +- type: history-graph + title: Prognoza vs Rzeczywistość + hours_to_show: 48 + entities: + - entity: sensor.energy_production_today + name: Prognoza + - entity: sensor.inverter_deye_pv_power + name: Rzeczywista moc +``` + +--- + +## 🧮 Sensor obliczający "godziny słoneczne" + +```yaml +# configuration.yaml + +template: + - sensor: + - name: "Słoneczne godziny jutro" + unique_id: sunny_hours_tomorrow + unit_of_measurement: "h" + state: > + {% set forecast = states('sensor.energy_production_tomorrow') | float(0) %} + {% set peak_power = 12 %} {# Twoja moc instalacji w kWp #} + {# Szacowane pełne godziny = energia / moc szczytowa #} + {{ (forecast / peak_power) | round(1) }} + icon: mdi:weather-sunny + attributes: + forecast_kwh: "{{ states('sensor.energy_production_tomorrow') }}" + rating: > + {% set hours = (states('sensor.energy_production_tomorrow') | float(0) / 12) %} + {% if hours > 6 %}Doskonale☀️ + {% elif hours > 4 %}Dobrze🌤️ + {% elif hours > 2 %}Średnio⛅ + {% else %}Słabo🌧️{% endif %} + + - sensor: + - name: "Strategia ładowania baterii" + unique_id: battery_charging_strategy + state: > + {% set forecast = states('sensor.energy_production_tomorrow') | float(0) %} + {% set soc = states('sensor.inverter_deye_battery_soc') | float(0) %} + {% if forecast < 5 and soc < 80 %} + Ładuj do maksimum + {% elif forecast < 15 and soc < 60 %} + Ładuj do 70% + {% elif forecast > 25 %} + Nie ładuj + {% else %} + Standardowo + {% endif %} + icon: mdi:strategy +``` + +--- + +## 🎯 Progi decyzyjne (dostosuj do swoich potrzeb) + +```yaml +Prognoza produkcji PV na jutro: +┌────────────────────────────────────────────────┐ +│ > 30 kWh 🌞 Doskonale → NIE ładuj │ +│ 20-30 kWh ☀️ Dobrze → Ładuj minimalnie │ +│ 10-20 kWh ⛅ Średnio → Ładuj do 60-70% │ +│ 5-10 kWh 🌥️ Słabo → Ładuj do 80% │ +│ < 5 kWh 🌧️ Bardzo źle → Ładuj do 95% │ +└────────────────────────────────────────────────┘ + +Dla instalacji 12 kWp w Polsce (zima/lato): +- Grudzień/Styczeń: 2-8 kWh/dzień +- Marzec/Wrzesień: 20-40 kWh/dzień +- Czerwiec/Lipiec: 50-80 kWh/dzień +``` + +--- + +## 🚀 Quick Start + +### Krok 1: Zainstaluj Forecast.Solar +```yaml +1. Settings → Devices & Services → Add Integration +2. "Forecast.Solar" +3. Podaj parametry instalacji PV +4. Gotowe! (bez rejestracji) +``` + +### Krok 2: Dodaj sensory do Dashboard +```yaml +Dodaj kartę z sensor.energy_production_tomorrow +``` + +### Krok 3: Utwórz automatyzację +```yaml +Skopiuj "Scenariusz 1" i dostosuj progi +``` + +### Krok 4: Testuj! +```yaml +Sprawdź przez tydzień jak sprawdza się prognoza +Dostosuj progi do swoich potrzeb +``` + +--- + +## 💰 Szacunkowe oszczędności + +```yaml +Przykład (taryfa G12): +- Droga taryfa: 0.80 zł/kWh +- Tania taryfa: 0.40 zł/kWh + +Scenariusz A (bez prognozy): +- Ładujesz co noc: 15 kWh × 0.40 zł = 6 zł +- Przez miesiąc: 6 zł × 30 = 180 zł + +Scenariusz B (z prognozą): +- Ładujesz tylko gdy potrzeba (60% dni): 6 zł × 18 = 108 zł +- Oszczędność: 72 zł/miesiąc = 864 zł/rok 💰 + +Dodatkowa korzyść: +- Mniejsze zużycie baterii (mniej cykli) +- Dłuższa żywotność baterii +- Lepszy ROI instalacji PV +``` + +--- + +## 📚 Dodatkowe zasoby + +**Integracje HACS:** +- Solcast PV Forecast: https://github.com/BJReplay/ha-solcast-solar +- Forecast.Solar: wbudowana w HA +- Sun2: https://github.com/pnbruckner/ha-sun2 (zaawansowane dane słoneczne) + +**Kalkulatory:** +- PVGIS (EU): https://re.jrc.ec.europa.eu/pvg_tools/en/ +- PVWatts Calculator: https://pvwatts.nrel.gov/ + +**Tutoriale:** +- Forecast.Solar setup: https://www.home-assistant.io/integrations/forecast_solar/ +- Solcast Community: https://community.home-assistant.io/ + +--- + +**Autor:** Copilot CLI +**Data:** 2026-02-05 +**Wersja:** 1.0