alias: Solar Cascade P1 regeling description: >- Cascade regeling met dynamische stappen en 200W batterij-laadmarge. 2 minuten interval, herstelt met stappen van 25%. Geoptimaliseerd voor druppelladen vanaf 95%. triggers: - minutes: /2 trigger: time_pattern id: timer - entity_id: input_boolean.solar_limiet_regeling_actief trigger: state id: modus_wissel - entity_id: automation.solar_cascade_regeling to: "on" trigger: state id: start_regeling conditions: [] actions: - choose: - conditions: - condition: template value_template: >- {{ trigger.id == 'start_regeling' or trigger.id == 'modus_wissel' }} sequence: - action: number.set_value target: entity_id: - number.se6000_i2_active_power_limit - number.se3500_i1_active_power_limit data: value: 100 - action: button.press target: entity_id: - button.se6000_i2_commit_power_settings - button.se3500_i1_commit_power_settings - action: input_number.set_value target: entity_id: - input_number.demo_se6000_active_power_limit - input_number.demo_se3500_active_power_limit data: value: 100 - if: - condition: state entity_id: input_boolean.solar_limiet_regeling_actief state: "on" - condition: template value_template: >- {{ states('sensor.huidige_netto_energiebalans') | float(0) > 0.2 and states('sensor.solarflow_2400_ac_electric_level') | int(0) >= 95 }} then: - if: - condition: template value_template: >- {{ states('number.se6000_i2_active_power_limit') | float(default=100.0) > 10.0 }} then: - action: number.set_value target: entity_id: number.se6000_i2_active_power_limit data: value: >- {% set export_watt = states('sensor.huidige_netto_energiebalans') | float(0) * 1000 %} {% set regel_watt = [ (export_watt - 200), 0 ] | max %} {% set benodigde_stap = (regel_watt / 3980) * 100 %} {% set huidige_limiet = states('number.se6000_i2_active_power_limit') | float(100) %} {{ [ (huidige_limiet - benodigde_stap) | round(0), 10.0 ] | max }} - action: button.press target: entity_id: button.se6000_i2_commit_power_settings - if: - condition: template value_template: >- {{ states('number.se6000_i2_active_power_limit') | float(default=0.0) <= 10.0 and states('number.se3500_i1_active_power_limit') | float(default=100.0) > 0.0 }} then: - action: number.set_value target: entity_id: number.se3500_i1_active_power_limit data: value: >- {% set export_watt = states('sensor.huidige_netto_energiebalans') | float(0) * 1000 %} {% set regel_watt = [ (export_watt - 200), 0 ] | max %} {% set benodigde_stap = (regel_watt / 3200) * 100 %} {% set huidige_limiet = states('number.se3500_i1_active_power_limit') | float(100) %} {{ [ (huidige_limiet - benodigde_stap) | round(0), 0.0 ] | max }} - action: button.press target: entity_id: button.se3500_i1_commit_power_settings - if: - condition: state entity_id: input_boolean.solar_limiet_regeling_actief state: "on" - condition: template value_template: >- {{ states('sensor.huidige_netto_energiebalans') | float(0) < 0.0 or states('sensor.solarflow_2400_ac_electric_level') | int(0) < 95 }} then: - if: - condition: template value_template: >- {{ states('number.se3500_i1_active_power_limit') | float(default=100.0) < 100.0 }} then: - action: number.set_value target: entity_id: number.se3500_i1_active_power_limit data: value: >- {{ [ (states('number.se3500_i1_active_power_limit') | float(default=100.0) + 25.0), 100.0 ] | min }} - action: button.press target: entity_id: button.se3500_i1_commit_power_settings - if: - condition: template value_template: >- {{ states('number.se3500_i1_active_power_limit') | float(default=100.0) >= 100.0 and states('number.se6000_i2_active_power_limit') | float(default=100.0) < 100.0 }} then: - action: number.set_value target: entity_id: number.se6000_i2_active_power_limit data: value: >- {{ [ (states('number.se6000_i2_active_power_limit') | float(default=100.0) + 25.0), 100.0 ] | min }} - action: button.press target: entity_id: button.se6000_i2_commit_power_settings - if: - condition: state entity_id: input_boolean.solar_limiet_regeling_actief state: "off" then: - if: - condition: template value_template: >- {{ states('sensor.huidige_netto_energiebalans') | float(0) > 0.2 and states('sensor.solarflow_2400_ac_electric_level') | int(0) >= 95 }} then: - if: - condition: template value_template: >- {{ states('input_number.demo_se6000_active_power_limit') | float(default=100.0) > 10.0 }} then: - action: input_number.set_value target: entity_id: input_number.demo_se6000_active_power_limit data: value: >- {% set export_watt = states('sensor.huidige_netto_energiebalans') | float(0) * 1000 %} {% set regel_watt = [ (export_watt - 200), 0 ] | max %} {% set benodigde_stap = (regel_watt / 3980) * 100 %} {% set huidige_limiet = states('input_number.demo_se6000_active_power_limit') | float(100) %} {{ [ (huidige_limiet - benodigde_stap) | round(0), 10.0 ] | max }} - if: - condition: template value_template: >- {{ states('input_number.demo_se6000_active_power_limit') | float(default=0.0) <= 10.0 and states('input_number.demo_se3500_active_power_limit') | float(default=100.0) > 0.0 }} then: - action: input_number.set_value target: entity_id: input_number.demo_se3500_active_power_limit data: value: >- {% set export_watt = states('sensor.huidige_netto_energiebalans') | float(0) * 1000 %} {% set regel_watt = [ (export_watt - 200), 0 ] | max %} {% set benodigde_stap = (regel_watt / 3200) * 100 %} {% set huidige_limiet = states('input_number.demo_se3500_active_power_limit') | float(100) %} {{ [ (huidige_limiet - benodigde_stap) | round(0), 0.0 ] | max }} - if: - condition: template value_template: >- {{ states('sensor.huidige_netto_energiebalans') | float(0) < 0.0 or states('sensor.solarflow_2400_ac_electric_level') | int(0) < 95 }} then: - if: - condition: template value_template: >- {{ states('input_number.demo_se3500_active_power_limit') | float(default=100.0) < 100.0 }} then: - action: input_number.set_value target: entity_id: input_number.demo_se3500_active_power_limit data: value: >- {{ [ (states('input_number.demo_se3500_active_power_limit') | float(default=100.0) + 25.0), 100.0 ] | min }} - if: - condition: template value_template: >- {{ states('input_number.demo_se3500_active_power_limit') | float(default=100.0) >= 100.0 and states('input_number.demo_se6000_active_power_limit') | float(default=100.0) < 100.0 }} then: - action: input_number.set_value target: entity_id: input_number.demo_se6000_active_power_limit data: value: >- {{ [ (states('input_number.demo_se6000_active_power_limit') | float(default=100.0) + 25.0), 100.0 ] | min }} mode: single