Newer
Older
homeassistant-infra / ha-configs / solcast_automations_zarki.yaml
# 🤖 Automatyzacje Solcast dla instalacji w Żarkach (5.0 kWp)
# Dostosowane progi dla małej instalacji

automation:
  # ============================================
  # INTELIGENTNE ŁADOWANIE OPARTE NA PROGNOZIE
  # ============================================
  
  - alias: "Solcast - Bardzo pochmurnie jutro"
    description: "Ładuj do maksimum gdy jutro < 3 kWh"
    trigger:
      - platform: time
        at: "22:00:00"
    
    condition:
      # Bardzo mała produkcja jutro
      - condition: numeric_state
        entity_id: sensor.solcast_pv_forecast_forecast_tomorrow
        below: 2
      
      # Bateria nie pełna
      - condition: numeric_state
        entity_id: sensor.inverter_deye_battery_soc
        below: 95
    
    action:
      # Włącz ładowanie
      - service: switch.turn_on
        target:
          entity_id: switch.inverter_deye_battery_grid_charging
      
      # Ustaw program nocny (01:00-07:00)
      - 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"
      
      # Ustaw program koniec (07:00)
      - service: select.select_option
        target:
          entity_id: select.inverter_deye_program_2_charging
        data:
          option: "Disabled"
      
      - service: time.set_value
        target:
          entity_id: time.inverter_deye_program_2_time
        data:
          time: "07:00:00"
      
      # Powiadomienie
      - service: notify.persistent_notification
        data:
          title: "🌧️ Solcast: Bardzo pochmurnie!"
          message: |
            Prognoza na jutro: {{ states('sensor.solcast_pv_forecast_forecast_tomorrow') }} kWh
            Włączono pełne ładowanie z sieci (01:00-07:00)
            Cel: 95% SOC

  - alias: "Solcast - Pochmurnie jutro"
    description: "Ładuj do 80% gdy jutro 3-6 kWh"
    trigger:
      - platform: time
        at: "22:00:00"
    
    condition:
      # Mała produkcja
      - condition: numeric_state
        entity_id: sensor.solcast_pv_forecast_forecast_tomorrow
        above: 2
        below: 5
      
      # Bateria poniżej 80%
      - condition: numeric_state
        entity_id: sensor.inverter_deye_battery_soc
        below: 80
    
    action:
      - service: switch.turn_on
        target:
          entity_id: switch.inverter_deye_battery_grid_charging
      
      - 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"
      
      - service: notify.persistent_notification
        data:
          title: "🌥️ Solcast: Pochmurnie"
          message: |
            Prognoza: {{ states('sensor.solcast_pv_forecast_forecast_tomorrow') }} kWh
            Ładowanie do 80% SOC

  - alias: "Solcast - Średnie nasłonecznienie"
    description: "Ładuj do 60% gdy jutro 6-13 kWh"
    trigger:
      - platform: time
        at: "22:00:00"
    
    condition:
      - condition: numeric_state
        entity_id: sensor.solcast_pv_forecast_forecast_tomorrow
        above: 5
        below: 12
      
      - condition: numeric_state
        entity_id: sensor.inverter_deye_battery_soc
        below: 60
    
    action:
      - service: switch.turn_on
        target:
          entity_id: switch.inverter_deye_battery_grid_charging
      
      - 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"
      
      - service: notify.persistent_notification
        data:
          title: "⛅ Solcast: Średnio"
          message: |
            Prognoza: {{ states('sensor.solcast_pv_forecast_forecast_tomorrow') }} kWh
            Ładowanie do 60% SOC

  - alias: "Solcast - Dobrze słonecznie"
    description: "Minimalne ładowanie gdy jutro 13-20 kWh"
    trigger:
      - platform: time
        at: "22:00:00"
    
    condition:
      - condition: numeric_state
        entity_id: sensor.solcast_pv_forecast_forecast_tomorrow
        above: 12
        below: 18
      
      # Tylko jeśli bateria naprawdę niska
      - condition: numeric_state
        entity_id: sensor.inverter_deye_battery_soc
        below: 40
    
    action:
      - service: switch.turn_on
        target:
          entity_id: switch.inverter_deye_battery_grid_charging
      
      # Tylko krótkie ładowanie (01:00-04:00)
      - 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"
      
      - service: select.select_option
        target:
          entity_id: select.inverter_deye_program_2_charging
        data:
          option: "Disabled"
      
      - service: time.set_value
        target:
          entity_id: time.inverter_deye_program_2_time
        data:
          time: "04:00:00"
      
      - service: notify.persistent_notification
        data:
          title: "🌤️ Solcast: Dobrze"
          message: |
            Prognoza: {{ states('sensor.solcast_pv_forecast_forecast_tomorrow') }} kWh
            Minimalne ładowanie (tylko do 40%)

  - alias: "Solcast - Słonecznie!"
    description: "Wyłącz ładowanie gdy jutro > 20 kWh"
    trigger:
      - platform: time
        at: "22:00:00"
    
    condition:
      # Duża produkcja jutro
      - condition: numeric_state
        entity_id: sensor.solcast_pv_forecast_forecast_tomorrow
        above: 18
      
      # I bateria ma przynajmniej 30%
      - condition: numeric_state
        entity_id: sensor.inverter_deye_battery_soc
        above: 30
    
    action:
      # Wyłącz ładowanie z sieci
      - 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.persistent_notification
        data:
          title: "☀️ Solcast: Będzie słonecznie!"
          message: |
            Prognoza: {{ states('sensor.solcast_pv_forecast_forecast_tomorrow') }} kWh
            Ładowanie z sieci WYŁĄCZONE - oszczędzasz! 💰

  # ============================================
  # RAPORT PORANNY
  # ============================================
  
  - alias: "Solcast - Raport poranny"
    description: "Dzienny raport prognozy o 7:00"
    trigger:
      - platform: time
        at: "07:00:00"
    
    action:
      - service: notify.persistent_notification
        data:
          title: "☀️ Prognoza produkcji PV"
          message: |
            📅 Dzisiaj: {{ states('sensor.solcast_pv_forecast_forecast_today') }} kWh
            📅 Jutro: {{ states('sensor.solcast_pv_forecast_forecast_tomorrow') }} kWh
            🔋 Bateria: {{ states('sensor.inverter_deye_battery_soc') }}%
            
            Strategia dziś:
            {% set forecast_today = states('sensor.solcast_pv_forecast_forecast_today') | float(0) %}
            {% if forecast_today > 15 %}☀️ Doskonale - dużo słońca!
            {% elif forecast_today > 10 %}🌤️ Dobrze - będzie produkcja
            {% elif forecast_today > 5 %}⛅ Średnio - trochę słońca
            {% else %}🌥️ Słabo - mało produkcji{% endif %}

  # ============================================
  # MONITORING ACCURACY
  # ============================================
  
  - alias: "Solcast - Raport wieczorny accuracy"
    description: "Porównaj prognozę z rzeczywistością"
    trigger:
      - platform: time
        at: "23:00:00"
    
    action:
      - service: notify.persistent_notification
        data:
          title: "📊 Solcast: Dokładność prognozy"
          message: |
            Prognoza dzisiaj: {{ states('sensor.solcast_pv_forecast_forecast_today') }} kWh
            Rzeczywista produkcja: {{ states('sensor.inverter_deye_daily_production') }} kWh
            
            {% set forecast = states('sensor.solcast_pv_forecast_forecast_today') | float(0) %}
            {% set actual = states('sensor.inverter_deye_daily_production') | float(0) %}
            {% set diff = ((actual - forecast) / forecast * 100) | round(1) if forecast > 0 else 0 %}
            Różnica: {{ diff }}%
            
            {% if diff | abs < 10 %}✅ Doskonała prognoza!
            {% elif diff | abs < 20 %}👍 Dobra prognoza
            {% else %}⚠️ Spore odchylenie{% endif %}