{# Configuration #} {% set totalWh = 3200 %} {% set maxPower = 600 %} {% set targetChargePercent = 100 %} {% set sunsetOffset = -3 %} {% set currentChargePercent = states('sensor.system_flos_bkw_sb_state_of_charge') | float(0) %} {% set solarAvailable = states('binary_sensor.solar_power_available') | bool(false) %} {% if solarAvailable and currentChargePercent < 100 %} {# Current state infos #} {% set timeToSunsetHours = ((as_timestamp(state_attr('sun.sun', 'next_setting')) - as_timestamp(now()))) / 3600 + sunsetOffset %} {# Average battery power for the day to reach targetChargePercent #} {% set remainingChargePercent = [ 0, targetChargePercent - currentChargePercent ] | max %} {% set remainingChargeWh = (remainingChargePercent / 100) * totalWh %} {% set remainingAvgPower = (remainingChargeWh / timeToSunsetHours) %} {# Today average production power #} {% set todayProductionWh = (states('sensor.balkon_solcast_pv_forecast_balkonsolar_forecast_remaining_today') | float(0)) * 1000 %} {% set todayOffsetWh = todayProductionWh - remainingChargeWh %} {% set todayOffsetPower = todayOffsetWh / timeToSunsetHours %} {% set positiveOffsetPower = [ 0, todayOffsetPower ] | max %} {% set limitedOffsetPower = [ maxPower, positiveOffsetPower ] | min %} {{ limitedOffsetPower | round(0) }} {% else %} {{ 0 }} {% endif %}