Files
homeassistant/helpers/sensor.estimated_optimal_output_limit.jinja
2026-06-29 17:06:30 +02:00

29 lines
1.4 KiB
Django/Jinja

{# 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 %}