Hintergrund:
Es ist häufig Unsinn bei Solaranlagen zuerst die Batterie zu 100% voll zu machen und dann weitere Systeme anzuwerfen, die den weiteren Überschuss nutzen.
Zielführender wäre es auf Grundlage der Solarschätzung des Tages weitere Systeme bereits früher anzuwerfen, diese über den Tag damit breiter zu streuen und trotzdem am Ende der Solarerzeugung eine volle Batterie (aber langsamer geladen und später, was i.d.R. besser für die Zelle ist) zu haben.
Ziel ist hierbei also eine Berechnung von aktuell nutzbarer Wattleistung unter Beachtung des aktuellen Hausverbrauches, des Netzbezuges, des Batteriefüllstandes und der Solarertragsschätzung zu berechnen. Natürlich aufgrund der Solarertragsschätzung eine Schätzung.
Voraussetzungen:
- Solarertragsschätzung des Tages
- Überwachung Erzeugung Solar
- bisherige Solarerzeugung des Tages
- Überwachung Strom am Hausanschluss
Umsetzung:
Helfer - Template - Sensor
{% set hausanschluss = states('sensor.hausanschluss_summe')|float(0) %}
{% set verbrauch = states('sensor.hausverbrauch')|float(300) %}
{% set tagesschaetzung = (states('sensor.solarerzeugung_tagesschatzung')|float(0))*1000 %}
{% set tagesleistungBisher = (states('sensor.solarerzeugung_positives_tagesintegral')|float(0))*1000 %}
{% set batterieFrei = (states('sensor.qcell_bms_battery_capacity')|float(0) * (states('sensor.qcell_battery_soh')|float(0)/100)) - states('sensor.batterieinhalt')|float(0) %}
{% set uebrig = states('sensor.qcell_battery_power_charge')|float(0) - hausanschluss %}
{# Abschwächung aufgrund der nicht-linearen Verteilung der Solarerzeugung (0 ... 1 Abschwächung )#}
{% set tagessicherheitsfaktor = 0.8 %}
{# battery sollte um 17 Uhr voll sein #}
{% set tagesreststunden = 17 - now().hour %}
{% if tagesreststunden <0 %}
{% set tagesreststunden = 0 %}
{% endif %}
{% set tagesrestschaetzung = tagesschaetzung - tagesleistungBisher %}
{% if tagesrestschaetzung < 0 %}
{% set tagesrestschaetzung = 0 %}
{% endif %}
{#
{{ uebrig }}
{{ batterieFrei }}
{{ tagesrestschaetzung }}
#}
{% if uebrig<=0 %}
0
{% else %}
{# nur noch wenig Unterschied zur Schätzung oder Schätzung übertroffen #}
{% if tagesrestschaetzung-batterieFrei < 1000 %}
{% if hausanschluss < 0 %}
{{ - hausanschluss }}
{% else %}
0
{% endif %}
{% else %}
{% if tagesreststunden== 0 %}
{{ uebrig - batterieFrei}}
{% else %}
{{ uebrig - (batterieFrei)/(tagesreststunden*tagessicherheitsfaktor) }}
{% endif %}
{% endif %}
{% endif %}
Gerne weitere Ideen und Verbesserungen dazu.
Die Tagesreststunden (oben fix 17 Uhr) lassen sich auch noch berechnen:
{# Battterie sollte beim Sonnenuntergang sicher voll sein #}
{% set sonnenvoruntergang = ((state_attr('sun.sun', 'next_setting') | as_timestamp - 1.5*60*60) | timestamp_custom('%H')) |float(23) %}
{% set tagesreststunden = sonnenvoruntergang - now().hour %}
{% if tagesreststunden <0 %}
{% set tagesreststunden = 0 %}
{% endif %}
by HarryP: Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)