@guezli würdest Du Deine Automation hier als Yaml code zur Verfügung stellen? das wäre toll…
Klar doch. Ich befinde mich hier noch im Feinjustieren. Ich stellte bspw. die Abwichung von 25% auf 10%. Bei meinem Setting passt der Wert. Zudem habe ich noch eine Option eingebaut, bei dem der Akku unter 20% nicht weiter entlädt, wenn die Module keinen Strom produzieren.
alias: "Anker Nulleinspeisung – PV‑Deckel"
description: Stellt die Einspeisevorgabe auf min(PV‑Leistung, Haushaltsbedarf)
triggers:
- alias: Verbrauch sich
entity_id:
- sensor.power_verbrauch_haushalt_min_5min
trigger: state
to: null
enabled: true
for:
hours: 0
minutes: 0
seconds: 0
from: null
- alias: PV‑Leistung
trigger: numeric_state
entity_id:
- sensor.solarbank_2_e1600_plus_solarleistung
above: 30
value_template: >-
{{ ( states('sensor.solarbank_2_e1600_plus_solarleistung')|float(0) -
states('sensor.power_verbrauch_haushalt_min_5min')|float(0) ) | abs }}
- alias: "Akku unter 20 %"
entity_id: sensor.solarbank_2_e1600_plus_ladestand
below: 20
trigger: numeric_state
conditions:
- condition: state
entity_id: switch.ank_ch_api_nutzung
state: "on"
- condition: state
entity_id: binary_sensor.system_anker_solarbank_terrasse_systemadministration
state: "on"
- alias: Cool‑Down 180 s
condition: template
value_template: >-
{{ state_attr("automation.anker_nulleinspeisung_pv_deckel",
"last_triggered") == None or ( as_timestamp(now()) -
as_timestamp(state_attr("automation.anker_nulleinspeisung_pv_deckel",
"last_triggered")) |int(0) ) >= 180 }}
- alias: 10‑Prozent‑Diff
condition: template
value_template: >-
{% set pv =
states('sensor.solarbank_2_e1600_plus_solarleistung')|float(0) %}
{% set min5 =
states('sensor.power_verbrauch_haushalt_min_5min')|float(0) %}
{% set mean =
states('sensor.power_verbrauch_haushalt_mittelwert_5min')|float(0) %}
{% set target = ([ ((min5*2)+mean)/3 , pv ] | min) | round(0) %}
{% set current =
states('number.solarbank_2_e1600_plus_system_einspeisevorgabe')|float(0)
%}
{% if current == 0 or target == 0 %}
{{ current != target }}
{% else %}
{{ (target - current) | abs > current * 0.10 }}
{% endif %}
actions:
- choose:
- conditions:
- condition: numeric_state
entity_id: sensor.solarbank_2_e1600_plus_ladestand
below: 20
- condition: numeric_state
entity_id: sensor.solarbank_2_e1600_plus_solarleistung
below: 5
sequence:
- target:
entity_id: number.solarbank_2_e1600_plus_system_einspeisevorgabe
data:
value: "0"
action: number.set_value
default:
- target:
entity_id: number.solarbank_2_e1600_plus_system_einspeisevorgabe
data:
value: >-
{% set pv =
states('sensor.solarbank_2_e1600_plus_solarleistung')|float(0) %}
{% set min5 =
states('sensor.power_verbrauch_haushalt_min_5min')|float(0) %}
{% set mean =
states('sensor.power_verbrauch_haushalt_mittelwert_5min')|float(0)
%}
{% set raw = ((min5*2)+mean) / 3 %}
{% set deckel = [raw, pv] | min %}
{{ [ [ deckel , 0 ] | max , 600 ] | min | round(0) }}
action: number.set_value
mode: single
Ich arbeite noch fortlaufend an der Optimierung. Nun habe ich einen Stand erreicht, mit dem ich zufrieden bin.
alias: Anker Nulleinspeisung – PV‑Deckel
description: Stellt die Einspeisevorgabe auf min(PV‑Leistung, Haushaltsbedarf)
triggers:
- alias: Verbrauch sich
entity_id:
- sensor.power_verbrauch_haushalt_min_5min
trigger: state
to: null
enabled: true
for:
hours: 0
minutes: 0
seconds: 0
from: null
- alias: PV‑Leistung
trigger: numeric_state
entity_id:
- sensor.solarbank_2_e1600_plus_solarleistung
above: 30
value_template: >-
{{ ( states('sensor.solarbank_2_e1600_plus_solarleistung')|float(0) -
states('sensor.power_verbrauch_haushalt_min_5min')|float(0) ) | abs }}
- alias: Akku unter 20 %
entity_id:
- sensor.solarbank_2_e1600_plus_ladestand
below: 20
trigger: numeric_state
id: Akku < 20%
conditions:
- condition: state
entity_id: switch.ank_ch_api_nutzung
state: "on"
- condition: state
entity_id: binary_sensor.system_anker_solarbank_terrasse_systemadministration
state: "on"
- alias: Cool‑Down 180 s
condition: template
value_template: >-
{{ state_attr("automation.anker_nulleinspeisung_pv_deckel",
"last_triggered") == None or ( as_timestamp(now()) -
as_timestamp(state_attr("automation.anker_nulleinspeisung_pv_deckel",
"last_triggered")) |int(0) ) >= 180 }}
- alias: 10‑Prozent‑Diff
condition: template
value_template: >-
{% set pv =
states('sensor.solarbank_2_e1600_plus_solarleistung')|float(0) %}
{% set min5 =
states('sensor.power_verbrauch_haushalt_min_5min')|float(0) %}
{% set mean =
states('sensor.power_verbrauch_haushalt_mittelwert_5min')|float(0) %}
{% set target = ([ ((min5*2)+mean)/3 , pv ] | min) | round(0) %}
{% set current =
states('number.solarbank_2_e1600_plus_system_einspeisevorgabe')|float(0)
%}
{% if current == 0 or target == 0 %}
{{ current != target }}
{% else %}
{{
( (target - current) | abs > current * 0.1 )
or ( (pv - current) | abs > current * 0.1 )
}}
{% endif %}
enabled: true
actions:
- choose:
- conditions:
- condition: numeric_state
entity_id: sensor.solarbank_2_e1600_plus_ladestand
below: 20
- condition: numeric_state
entity_id: sensor.solarbank_2_e1600_plus_solarleistung
below: 5
sequence:
- target:
entity_id: number.solarbank_2_e1600_plus_system_einspeisevorgabe
data:
value: "0"
action: number.set_value
- conditions:
- condition: numeric_state
entity_id: sensor.solarbank_2_e1600_plus_ladestand
above: 20
- condition: numeric_state
entity_id: sensor.solarbank_2_e1600_plus_solarleistung
below: 10
- condition: time
after: "19:30:00"
before: "01:00:00"
sequence:
- target:
entity_id: number.solarbank_2_e1600_plus_system_einspeisevorgabe
data:
value: "250"
action: number.set_value
alias: Akku entladen ohne PV
default:
- target:
entity_id: number.solarbank_2_e1600_plus_system_einspeisevorgabe
data:
value: >-
{% set pv =
states('sensor.solarbank_2_e1600_plus_solarleistung')|float(0) %} {%
set min5 =
states('sensor.power_verbrauch_haushalt_min_5min')|float(0) %} {%
set mean =
states('sensor.power_verbrauch_haushalt_mittelwert_5min')|float(0)
%} {% set raw = ((min5*2) + mean) / 3 %} {% set deckel = [ raw , pv
] | min %}
{% set capped = [ [ deckel , 0 ] | max , 600 ] | min %}
{% if pv < 20 %}
0
{% else %}
{{ (capped * 0.9) | round(0) }}
{% endif %}
action: number.set_value
mode: single
Hier wird die Differenz zwischen der Einspeisevorgabe und dem Wohnungsverbrauch ermittelt. Neu hinzugekommen ist die Differenz zwischen Einspeisevorgabe und Solarleistung.
- alias: 10‑Prozent‑Diff
condition: template
value_template: >-
{% set pv =
states('sensor.solarbank_2_e1600_plus_solarleistung')|float(0) %}
{% set min5 =
states('sensor.power_verbrauch_haushalt_min_5min')|float(0) %}
{% set mean =
states('sensor.power_verbrauch_haushalt_mittelwert_5min')|float(0) %}
{% set target = ([ ((min5*2)+mean)/3 , pv ] | min) | round(0) %}
{% set current =
states('number.solarbank_2_e1600_plus_system_einspeisevorgabe')|float(0)
%}
{% if current == 0 or target == 0 %}
{{ current != target }}
{% else %}
{{
( (target - current) | abs > current * 0.1 )
or ( (pv - current) | abs > current * 0.1 )
}}
{% endif %}
enabled: true
Ich möchte, dass sich der Akku am Abend mit einer Leistung von 250 Watt entlädt und den gespeicherten PV-Strom abgibt.
- conditions:
- condition: numeric_state
entity_id: sensor.solarbank_2_e1600_plus_ladestand
above: 20
- condition: numeric_state
entity_id: sensor.solarbank_2_e1600_plus_solarleistung
below: 10
- condition: time
after: "19:30:00"
before: "01:00:00"
sequence:
- target:
entity_id: number.solarbank_2_e1600_plus_system_einspeisevorgabe
data:
value: "250"
action: number.set_value
alias: Akku entladen ohne PV
Da das System sehr träge ist und zuvor immer wieder Strom eingespeist wurde, habe ich die Vorgabe gemacht, dass die Einspeisung 10 % unter dem tatsächlichen Bedarf liegt. Damit konnte ich das Einspeisen fast vollständig verhindern.
default:
- target:
entity_id: number.solarbank_2_e1600_plus_system_einspeisevorgabe
data:
value: >-
{% set pv =
states('sensor.solarbank_2_e1600_plus_solarleistung')|float(0) %} {%
set min5 =
states('sensor.power_verbrauch_haushalt_min_5min')|float(0) %} {%
set mean =
states('sensor.power_verbrauch_haushalt_mittelwert_5min')|float(0)
%} {% set raw = ((min5*2) + mean) / 3 %} {% set deckel = [ raw , pv
] | min %}
{% set capped = [ [ deckel , 0 ] | max , 600 ] | min %}
{% if pv < 20 %}
0
{% else %}
{{ (capped * 0.9) | round(0) }}
{% endif %}
action: number.set_value
Servus, bin gerade nicht zu hause und es wird kaum Strom verbraucht. Der Akku sollte bis auf 100% aufgeladen sein. Das habe ich die letzten 3 Tage trotz intensiver Sonne aber nicht erreicht.
vielmehr verschenke ich Strom währen der Akku noch Luft hat, stimmt irgendwas mit meinen Einstellungen nicht?
was bedeutet der Schalter “Entladepriorität” und was der Regler “Ladeprioritätslimit” (steht bei mir auf 80%)
danke für kurze Hilfe.
Schick mal deine Code sowie die Sensoren mit Code. Einfach so ist es schwierig etwas zu sagen.
Die Entladepriorität ist verhindert, dass das Entladen nicht aus Gründen unterbrochen wird. Ich hatte vorher das Problem, dass nicht woe gewünscht entladen wurde. Ich habe bei mir keinen Ladeprioritätslimit-Schieber.
komisch, gibt es doch schon seit etlichen Versionen der Integration, bei mir läuft Vers. 3.1.1
was meinst Du mit Sensoren Code?
Vielleicht habe ich diese nicht aktiviert … Das mache ich aber auch nicht, weil mir sonst die Templatesensoren rausfliegen.
Hier ist der Code für deine verwendeten Sensoren.
Wenn ich mir deinen Sensor-Netzbezug aktuell anschaue, steht dort ein Minuszeichen. Ist das richtig? Ich habe einen Template-Sensor erstellt, der jeweils die Netzeinspeisung sowie den Netzbezug ausgibt. Die sind wichtig für die Automation. Sonst kann es gut sein, dass die Automation nicht wie gewünscht funktioniert. Anders gesagt: Ich habe es so nicht getestet und vermutlich spuckt die Konfiguration falsche Werte aus.
Das wäre der Sensor für den Netzbezug:
{% if states('sensor.energiezahler_electric_consumption_w') | float(0) >= 0 %}
{{(states('sensor.energiezahler_electric_consumption_w') | float(0)) | round (3) }}
{% else %}
{{(states ('0.0') | float(0)) |round(3) }}
{% endif %}
… und das der Sensor für die Einspeisung:
{% if states('sensor.energiezahler_electric_consumption_w') | float(0) < 0 %}
{{(states('sensor.energiezahler_electric_consumption_w') | float(0))*-1 | round (3) }}
{% else %}
{{(states ('0.0') | float(0)) |round(3) }}
{% endif %}
Damit hast du in beiden Fällen positive Werte.
Wie misst du den Haushaltsverbrauch? PV-Produktion + Netzbezug + Netzeinspeisung? Ich habe bei der PV-Anlage an der Steckdose ein Messgerät installiert und einen Kombisensor erstellt. Diesen Sensor nutze ich für die 5-Minuten-Werte-Sensor.
danke für Deine Antwort aber wir kommen glaube ich etwas von der Frage weg:
vielleicht kann @Tholu etwas dazu sagen, das würde uns sicher weiterbringen, danke.
Wenn Entladepriorität aktiviert wird, dann wird PV Produktion gestoppt falls noch existent und der Akku stattdessen entladen. Anker hat das eingeführt, damit man im Sommer abends bei vollem Akku nicht warten muss, bis PV unter 30 W oder so fallt, damit der volle Akku endlich entladen werden kann, um den Mehrbedarf im Haus auch decken zu können.
Ladeprio % wird in der App nur mit dem MI80 unterstützt, die Funktion kann aber mit allen WR benutzt werden. Unter dem eingestellten limit wird nicht die eingestellte Abgabe per Bypass ins Haus gelassen, sondern NUR das untere Limit. Das wiederum hängt von der verbauten HW ab, bei MI80 oder verbautem 0W Schalter sind das wirklich 0W ins Haus. Das heißt unter Ladepriolimit 80% SOC wird NUR geladen ohne Hausabgabe. Erst über 80% SOC wird die eingestellte Abgabe ans Haus gegeben. Bei anderer HW wird trotzdem immer das minimum (100 oder 150W) via Bypass ans Haus abgegeben, um WR Kompatibilität sicherzustellen. Da ich Ladeprio für ineffizient halte und lieber so viel wir möglich im direkten Bypass verbrauchen will, stelle ich das bei mir auf 5% (unterste SOC reserve, wird also NIE genutzt).
Der Screenshot sieht für mich so aus, als wenn immer das Bypass Minimum abgegeben wird. Bei den meisten WR sind das 150W wie man hier sieht. Auch bei aktiver Ladeprio wird dann immer 150W Minimum abgegben, aufgrund von WR Kompatibilität. Wenn du einen Anker WR einstellst, dann kannst du das untere Limit auf 100 W beschränken.
Wenn du MI80 Hardware hast, oder den 0W Schalter verbaut, dann kannst du auch 0W abgeben.
Achtung, wenn das Ladepriolimit zu hoch ist, über dem SOC bei dem die Solarbank anfängt die Ladeleistung zu drosseln zum Akkuschutz (9x %), dann wird PV gedrosselt auf:
Min Bypass ins Haus + Max Ladeleistung
Mehr kann die Solarbank dann aufgrund der Einstellungen nicht an PV abnehmen und muss drosseln, also Energie verschenken.
Das gleiche passiert im Winter wenn die Ladeleistung gedrosselt ist (z.B 0W, 160 W), aber mehr PV ansteht und das Ladepriolimit aktiv ist. Im schlimmsten Fall hast du dann eine komplette PV Drosselung:
Min Bypass = 0 W + max. Ladeleistung = 0 W => PV komplett abgereget, weil die SB nix verarbeiten kann aufgrund der Einstellungen.
Auch deswegen macht das Ladepriolimit in meinen Augen keinen Sinn und verringert nur den möglichen Ertrag.
by HarryP: Zusammenführung Doppelpost (bei Änderungen oder hinzufügen von Inhalten bitte die „Bearbeitungsfunktion“ anstatt „Antworten“ zu nutzen)
vielen Dank für Deine sehr ausführliche Erklärung. Jetzt muß ich doch nochmal kurz nachfragen, was in meinem Falle jetzt die beste Einstellung wäre:
ich verwende einen hoymiles HM600 (später einen HM800) ohne 0W Schalter und eine 2. kleine PV auf dem Gartenhaus (nennt sich Solar)
der Schieberegler für die Hauseinspeisung steht auf 100W aber es werden immer 150W abgegeben…
aktuell bin ich im Urlaub und es gibt eine Grundlast von ca. 250W, davon liefert 190W die Solaranlage am Gartenhaus.
Vom BKW müsste nur noch 60W kommen aber es werden immer 150W abgegeben…
was zu ungenutzter Solar-Energie führt.
und am Ende des Tages ist der Akku nichtmal auf 1600W aufgeladen.
wäre schön, wenn ich das noch irgendwie anders regeln könnte, hast Du noch eine Idee (ohne zusätzliche Hardware)?
Sollte ich Ladeprio auch auf 0% einstellen?
Die Einstellung des Schiebreglers ist der Solarbank herzlich egal, wenn der Wert unterhalb des Limit ist, was für den eingestellten Wechselrichtertyp erlaubt ist. Es wird schilichtweg ignoriert, bzw gekappt auf die erlaubten Grenzen.
Du mußt einen Anker WR einstellen, nimm den MI60 dann brauchst du keine SN zu suchen für die Einstellung.
Dann ist der minimum Bypass 100 W, weniger geht nicht. Nur noch 0W wenn du den Export komplett ausschaltest, aber dafür brauchst du einen verbauten 0W Switch.
Ohne 0W Schalter gehen bei dir IMMER bis zu 100 bzw 150 W PV als Bypass ins Haus. Das hängt von deinem eingestellten WR ab.
Alles andere mit Ladeprio usw. ändert nichts an der unteren Bypassgrenze die die Solarbank FW vorgibt.
Ich denke ich werden die Grenzen der Number Entitiy auch anpassen an die Limits die im Schedule gegeben sind.
vielen Dank für den Tipp. Diese Einstellung habe ich in der Anker Handy App gemacht und den HM600 durch den MI60 ersetzt.
ich denke mal daß dies sonst weiter keine Auswirkungen hat ausser der App ein 100W Einspeise-Minimum vorzugaukeln …
werde mal beobachten, ob das auf die HA-Integration jetzt Auswirkungen hat (oder muß diese erst nochmal neu gestartet werden)?
jedenfalls sehe ich heute zum 1. Mal einen komplett vollen Akku …
mit dem upgrade auf Version 3.4.0 kommt ja eine MQTT Schnittstelle.
Tolle Arbeit!!!
Aber wie muß ich das denn einrichten, damit ich es auch nutzen kann?
MQTT läuft bei mir bereits für Ai-on-the edge Gas-/Wasserzähler
@Tholu allerdings steht in der release note auch, daß der Daten-Traffic zunimmt etc.
und ich habe eh schon z.Zt. ein recht lahmes HA dashboard.
Also wenn ich dieses MQTT erstmal nicht verwenden will, muß ich dann noch etwas machen
bzw. bleibt der Daten-Treffic bei Nichtverwendung auch so wie zuvor?







