Newer
Older
homeassistant-infra / docs / SOLAR_FORECAST_INTEGRATION.md

☀️ 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:

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:

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:

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:

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:

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:

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

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

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

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

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ą

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

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

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

1. Settings → Devices & Services → Add Integration
2. "Forecast.Solar"
3. Podaj parametry instalacji PV
4. Gotowe! (bez rejestracji)

Krok 2: Dodaj sensory do Dashboard

Dodaj kartę z sensor.energy_production_tomorrow

Krok 3: Utwórz automatyzację

Skopiuj "Scenariusz 1" i dostosuj progi

Krok 4: Testuj!

Sprawdź przez tydzień jak sprawdza się prognoza
Dostosuj progi do swoich potrzeb

💰 Szacunkowe oszczędności

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:

Kalkulatory:

Tutoriale:


Autor: Copilot CLI
Data: 2026-02-05
Wersja: 1.0