Newer
Older
homeassistant-infra / ha-configs / 151 / automations.yaml
- alias: Solcast - Raport poranny
  description: Dzienny raport o 7:00
  trigger:
  - platform: time
    at: 07:00:00
  action:
  - service: notify.persistent_notification
    data:
      title: ☀️ Prognoza PV
      message: 'Dziś: {{ states(''sensor.solcast_pv_forecast_prognoza_na_dzisiaj'') }} kWh

        Jutro: {{ states(''sensor.solcast_pv_forecast_prognoza_na_jutro'') }} kWh

        Bateria: {{ states(''sensor.inverter_deye_battery'') }}%

        '

- alias: Solcast G12W - Bardzo pochmurnie (Pn-Czw)
  description: Ładowanie 22:00-06:00 + 13:00-15:00 gdy < 3 kWh
  trigger:
  - platform: time
    at: '20:30:00'
  condition:
  - condition: time
    weekday:
    - mon
    - tue
    - wed
    - thu
  - condition: numeric_state
    entity_id: sensor.solcast_pv_forecast_prognoza_na_jutro
    below: 3
  - condition: numeric_state
    entity_id: sensor.inverter_deye_battery
    below: 95
  action:
  - service: switch.turn_on
    target:
      entity_id: switch.inverter_deye_battery_grid_charging
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_energy_pattern
    data:
      option: Load First
  - service: number.set_value
    target:
      entity_id: number.inverter_deye_battery_grid_charging_current
    data:
      value: 80
  # Program 1: 22:00 - start nocnego ładowania
  - service: time.set_value
    target:
      entity_id: time.inverter_deye_program_1_time
    data:
      time: '22:00:00'
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_program_1_charging
    data:
      option: Grid
  - service: number.set_value
    target:
      entity_id: number.inverter_deye_program_1_soc
    data:
      value: 100
  # Program 2: kontynuacja nocnego ładowania
  - service: time.set_value
    target:
      entity_id: time.inverter_deye_program_2_time
    data:
      time: '00:00:00'
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_program_2_charging
    data:
      option: Grid
  - service: number.set_value
    target:
      entity_id: number.inverter_deye_program_2_soc
    data:
      value: 100
  # Program 3: 06:00 - koniec nocnego ładowania
  - service: time.set_value
    target:
      entity_id: time.inverter_deye_program_3_time
    data:
      time: '06:00:00'
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_program_3_charging
    data:
      option: Disabled
  - service: number.set_value
    target:
      entity_id: number.inverter_deye_program_3_soc
    data:
      value: 15
  # Program 4: 13:00 - start dziennego ładowania
  - service: time.set_value
    target:
      entity_id: time.inverter_deye_program_4_time
    data:
      time: '13:00:00'
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_program_4_charging
    data:
      option: Grid
  - service: number.set_value
    target:
      entity_id: number.inverter_deye_program_4_soc
    data:
      value: 100
  # Program 5: 15:00 - koniec dziennego ładowania
  - service: time.set_value
    target:
      entity_id: time.inverter_deye_program_5_time
    data:
      time: '15:00:00'
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_program_5_charging
    data:
      option: Disabled
  - service: number.set_value
    target:
      entity_id: number.inverter_deye_program_5_soc
    data:
      value: 15
  # Program 6: 22:00 - taki sam jak Program 1 (żeby nie blokował)
  - service: time.set_value
    target:
      entity_id: time.inverter_deye_program_6_time
    data:
      time: '22:00:00'
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_program_6_charging
    data:
      option: Grid
  - service: number.set_value
    target:
      entity_id: number.inverter_deye_program_6_soc
    data:
      value: 100
  - service: notify.persistent_notification
    data:
      title: '🌧️ G12W: Bardzo pochmurnie!'
      message: 'Prognoza: {{ states(''sensor.solcast_pv_forecast_prognoza_na_jutro'') }} kWh. Ładowanie 22:00-06:00 (80A) + 13:00-15:00 (100A)!'

- alias: Solcast G12W - Pochmurnie (Pn-Czw)
  description: Ładowanie 22:00-06:00 gdy >= 3 kWh
  trigger:
  - platform: time
    at: '20:30:00'
  condition:
  - condition: time
    weekday:
    - mon
    - tue
    - wed
    - thu
  - condition: numeric_state
    entity_id: sensor.solcast_pv_forecast_prognoza_na_jutro
    above: 3
  - condition: numeric_state
    entity_id: sensor.inverter_deye_battery
    below: 95
  action:
  - service: switch.turn_on
    target:
      entity_id: switch.inverter_deye_battery_grid_charging
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_energy_pattern
    data:
      option: Load First
  - service: number.set_value
    target:
      entity_id: number.inverter_deye_battery_grid_charging_current
    data:
      value: 80
  # Program 1: 22:00 - start nocnego ładowania
  - service: time.set_value
    target:
      entity_id: time.inverter_deye_program_1_time
    data:
      time: '22:00:00'
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_program_1_charging
    data:
      option: Grid
  - service: number.set_value
    target:
      entity_id: number.inverter_deye_program_1_soc
    data:
      value: 100
  # Program 2: kontynuacja
  - service: time.set_value
    target:
      entity_id: time.inverter_deye_program_2_time
    data:
      time: '00:00:00'
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_program_2_charging
    data:
      option: Grid
  - service: number.set_value
    target:
      entity_id: number.inverter_deye_program_2_soc
    data:
      value: 100
  # Program 3: 06:00 - koniec
  - service: time.set_value
    target:
      entity_id: time.inverter_deye_program_3_time
    data:
      time: '06:00:00'
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_program_3_charging
    data:
      option: Disabled
  - service: number.set_value
    target:
      entity_id: number.inverter_deye_program_3_soc
    data:
      value: 15
  # Program 4: 13:00 - dzienne disabled (słonecznie)
  - service: time.set_value
    target:
      entity_id: time.inverter_deye_program_4_time
    data:
      time: '13:00:00'
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_program_4_charging
    data:
      option: Disabled
  - service: number.set_value
    target:
      entity_id: number.inverter_deye_program_4_soc
    data:
      value: 15
  # Program 5: 15:00
  - service: time.set_value
    target:
      entity_id: time.inverter_deye_program_5_time
    data:
      time: '15:00:00'
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_program_5_charging
    data:
      option: Disabled
  - service: number.set_value
    target:
      entity_id: number.inverter_deye_program_5_soc
    data:
      value: 15
  # Program 6: 22:00 - taki sam jak Program 1
  - service: time.set_value
    target:
      entity_id: time.inverter_deye_program_6_time
    data:
      time: '22:00:00'
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_program_6_charging
    data:
      option: Grid
  - service: number.set_value
    target:
      entity_id: number.inverter_deye_program_6_soc
    data:
      value: 100
  - service: notify.persistent_notification
    data:
      title: '⛅ G12W: Pochmurnie'
      message: 'Prognoza: {{ states(''sensor.solcast_pv_forecast_prognoza_na_jutro'') }} kWh. Ładowanie 22:00-06:00 (80A).'

- alias: Solcast G12W - Piątek wyłącz (sobota tania)
  description: Piątek wieczór - wyłącz ładowanie bo sobota jest tania cała doba
  trigger:
  - platform: time
    at: '21:30:00'
  condition:
  - condition: time
    weekday:
    - fri
  action:
  - service: switch.turn_off
    target:
      entity_id: switch.inverter_deye_battery_grid_charging
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_energy_pattern
    data:
      option: Battery First
  - service: notify.persistent_notification
    data:
      title: '🎉 G12W: Weekend startuje!'
      message: Sobota i niedziela = tania energia całą dobę.

- alias: Solcast G12W - Sobota bez zmian
  description: Sobota - niedziela też jest tania
  trigger:
  - platform: time
    at: '21:30:00'
  condition:
  - condition: time
    weekday:
    - sat
  action:
  - service: notify.persistent_notification
    data:
      title: '🎉 G12W: Niedziela też tania!'
      message: Niedziela = tania energia całą dobę.

- alias: Solcast G12W - Niedziela ładowanie na poniedziałek
  description: Niedziela 20:30 - ustaw ładowanie 22:00-06:00 na poniedziałek
  trigger:
  - platform: time
    at: '20:30:00'
  condition:
  - condition: time
    weekday:
    - sun
  action:
  - service: switch.turn_on
    target:
      entity_id: switch.inverter_deye_battery_grid_charging
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_energy_pattern
    data:
      option: Load First
  - service: number.set_value
    target:
      entity_id: number.inverter_deye_battery_grid_charging_current
    data:
      value: 80
  # Program 1: 22:00
  - service: time.set_value
    target:
      entity_id: time.inverter_deye_program_1_time
    data:
      time: '22:00:00'
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_program_1_charging
    data:
      option: Grid
  - service: number.set_value
    target:
      entity_id: number.inverter_deye_program_1_soc
    data:
      value: 100
  # Program 2: 00:00
  - service: time.set_value
    target:
      entity_id: time.inverter_deye_program_2_time
    data:
      time: '00:00:00'
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_program_2_charging
    data:
      option: Grid
  - service: number.set_value
    target:
      entity_id: number.inverter_deye_program_2_soc
    data:
      value: 100
  # Program 3: 06:00
  - service: time.set_value
    target:
      entity_id: time.inverter_deye_program_3_time
    data:
      time: '06:00:00'
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_program_3_charging
    data:
      option: Disabled
  - service: number.set_value
    target:
      entity_id: number.inverter_deye_program_3_soc
    data:
      value: 15
  # Program 4,5 - dzienne disabled
  - service: time.set_value
    target:
      entity_id: time.inverter_deye_program_4_time
    data:
      time: '13:00:00'
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_program_4_charging
    data:
      option: Disabled
  - service: time.set_value
    target:
      entity_id: time.inverter_deye_program_5_time
    data:
      time: '15:00:00'
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_program_5_charging
    data:
      option: Disabled
  # Program 6: 22:00 - tak samo jak 1
  - service: time.set_value
    target:
      entity_id: time.inverter_deye_program_6_time
    data:
      time: '22:00:00'
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_program_6_charging
    data:
      option: Grid
  - service: number.set_value
    target:
      entity_id: number.inverter_deye_program_6_soc
    data:
      value: 100
  - service: notify.persistent_notification
    data:
      title: '🌙 G12W: Ładowanie na poniedziałek'
      message: 'Bateria: {{ states(''sensor.inverter_deye_battery'') }}%. Ładowanie 22:00-06:00 (80A).'

- alias: Solcast G12W - Wyłącz ładowanie 06:00
  description: Wyłącza ładowanie po taniej strefie nocnej
  trigger:
  - platform: time
    at: '06:00:00'
  condition:
  - condition: state
    entity_id: switch.inverter_deye_battery_grid_charging
    state: 'on'
  action:
  - service: switch.turn_off
    target:
      entity_id: switch.inverter_deye_battery_grid_charging
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_energy_pattern
    data:
      option: Battery First
  - service: notify.persistent_notification
    data:
      title: '🌅 G12W: Koniec ładowania nocnego'
      message: 'SOC: {{ states(''sensor.inverter_deye_battery'') }}%'

- alias: Solcast G12W - Włącz ładowanie dzienne 13:00
  description: Ładowanie 13:00-15:00 w dni robocze (G12W tania taryfa) - 100A
  trigger:
  - platform: time
    at: '12:55:00'
  condition:
  - condition: time
    weekday:
    - mon
    - tue
    - wed
    - thu
    - fri
  - condition: numeric_state
    entity_id: sensor.inverter_deye_battery
    below: 95
  action:
  - service: switch.turn_on
    target:
      entity_id: switch.inverter_deye_battery_grid_charging
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_energy_pattern
    data:
      option: Load First
  - service: number.set_value
    target:
      entity_id: number.inverter_deye_battery_grid_charging_current
    data:
      value: 100
  # Program 4: 13:00 - Grid
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_program_4_charging
    data:
      option: Grid
  - service: number.set_value
    target:
      entity_id: number.inverter_deye_program_4_soc
    data:
      value: 100
  - service: notify.persistent_notification
    data:
      title: '⚡ G12W: Ładowanie dzienne (100A)!'
      message: 'Prognoza: {{ states(''sensor.solcast_pv_forecast_prognoza_na_dzisiaj'') }} kWh, SOC: {{ states(''sensor.inverter_deye_battery'') }}%'

- alias: Solcast G12W - Wyłącz ładowanie dzienne 15:00
  description: Wyłącza ładowanie po taniej strefie dziennej
  trigger:
  - platform: time
    at: '15:00:00'
  condition:
  - condition: state
    entity_id: switch.inverter_deye_battery_grid_charging
    state: 'on'
  - condition: time
    weekday:
    - mon
    - tue
    - wed
    - thu
    - fri
  action:
  - service: switch.turn_off
    target:
      entity_id: switch.inverter_deye_battery_grid_charging
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_energy_pattern
    data:
      option: Battery First
  # Reset prądu do 80A i Program 4 do Disabled
  - service: number.set_value
    target:
      entity_id: number.inverter_deye_battery_grid_charging_current
    data:
      value: 80
  - service: select.select_option
    target:
      entity_id: select.inverter_deye_program_4_charging
    data:
      option: Disabled
  - service: notify.persistent_notification
    data:
      title: '🔋 G12W: Koniec ładowania dziennego'
      message: 'SOC: {{ states(''sensor.inverter_deye_battery'') }}%. Prąd: 80A.'

- alias: Solcast G12W - Raport poranny
  description: Status o 6:05
  trigger:
  - platform: time
    at: 06:05:00
  action:
  - service: notify.persistent_notification
    data:
      title: '🌅 G12W: Raport poranny'
      message: 'SOC: {{ states(''sensor.inverter_deye_battery'') }}%

        Naładowano: {{ states(''sensor.inverter_deye_today_battery_charge'') }} kWh

        Prognoza: {{ states(''sensor.solcast_pv_forecast_prognoza_na_dzisiaj'') }} kWh'

- id: heating_curve_auto_adjust
  alias: Ogrzewanie - Auto dostosowanie krzywej
  description: Automatycznie dostosowuje krzywą grzewczą
  trigger:
  - platform: state
    entity_id: sensor.temperatura_w_salonie
    for:
      minutes: 10
  - platform: time_pattern
    hours: /1
  condition:
  - condition: template
    value_template: '{% set diff = states(''sensor.roznica_temperatury_2'') | float(0) %} {{ diff | abs > 0.3 }}'
  action:
  - service: shell_command.set_heating_t1s
    data:
      value: '{% set current_t1s = states(''sensor.sterownik_1_rs0_id1_setting_t1s'') | int(7215) %} {% set diff = states(''sensor.roznica_temperatury_2'') | float(0) %} {% set adjustment = (diff * 350) | int %} {% set new_t1s = current_t1s - adjustment %} {% if new_t1s < 5000 %}5000{% elif new_t1s > 7000 %}7000{% else %}{{ new_t1s }}{% endif %}'
  mode: single

- id: heating_temp_limit_enforcer
  alias: Ogrzewanie - Wymuszenie limitu temperatury
  description: Obniża T1S gdy temperatura przekracza 35°C
  trigger:
  - platform: numeric_state
    entity_id: sensor.aktualna_nastawa_temperatury_2
    above: 35
    for:
      minutes: 5
  action:
  - service: shell_command.set_heating_t1s
    data:
      value: '{% set current = states(''sensor.sterownik_1_rs0_id1_setting_t1s'') | int(7215) %} {{ current - 500 }}'
  - service: persistent_notification.create
    data:
      message: Temperatura przekroczyła limit 35°C. Obniżam T1S.
  mode: single

- id: defrost_counter
  alias: Licznik defrostów
  description: Zlicza ilość defrostów pompy
  trigger:
  - platform: state
    entity_id: binary_sensor.pompa_defrost
    from: 'off'
    to: 'on'
  action:
  - service: counter.increment
    target:
      entity_id: counter.defrost_count
  mode: single