Ich habe dazu so einiges gesucht, aber nichts so richtig gefunden. Also bin ich erstmal schrittweise vorgegangen und erst mal schrittweise vorgegangen. Zuerst die Get HACS installiert und alle werte waren da. Auch der IR-Lesekopf mit Tasmota, MQTT und Script von otello (spez. für SML Zähler) brachte mich dem Ziel näher. Die nötigen Scripte dazu habe ich von der KI schreiben lassen, diese folgen gleich. Nach einiger Optimierung habe ich nun eine recht gute Lösung gefunden die stabil läuft vertretbare regelzeiten aufweist und stbiel läuft. Das pendeln um die Nullwerte beträgt +/- 2W.
Die Scripte für müssen in configuration.yaml und automation.yaml eingetragen werden. Sensoren sind gegebenenfals anzupassen und auch die Variable für die Regelung.
configuration.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
template:
sensor:
name: “netzleistung_gefiltert”
unit_of_measurement: “W”
state: >
{% set p = states(‘sensor.tasmota_sgm_power’) | float(0) %}
{% if -1 < p < 1 %}
0
{% else %}
{{ p }}
{% endif %}
automations.yaml
alias: “Nulleinspeisung Zendure SF800Pro P-Regler dynamisch”
mode: restart
trigger:
platform: state
entity_id: sensor.netzleistung_gefiltert
for: “00:00:03”
action:
variables:
aktueller Netzbezug (+ = Bezug, - = Einspeisung)
netz: “{{ states(‘sensor.netzleistung_gefiltert’) | float(0) }}”
aktuelle eingestellte Akku-Leistung (Limit)
ist: “{{ states(‘number.solarflow_800_plus_output_limit’) | float(0) }}”
Proportionalfaktor
k: 0.7
maximaler Schritt pro Sekunde (W)
max_step: 250
kleine Totzone um 0 W
netz_eff: >
{% if netz | abs < 5 %}
0
{% else %}
{{ netz }}
{% endif %}
roher Schritt (P-Anteil)
step_roh: “{{ netz_eff * k }}”
begrenzter Schritt
step: >
{% if step_roh > max_step %}
{{ max_step }}
{% elif step_roh < (max_step * -1) %}
{{ max_step * -1 }}
{% else %}
{{ step_roh }}
{% endif %}
neue Soll-Leistung
roh: “{{ ist + step }}”
Begrenzung auf 0–800 W
ziel: >
{% if roh < 0 %}
0
{% elif roh > 800 %}
800
{% else %}
{{ roh }}
{% endif %}
service: logbook.log
data:
name: “Nulleinspeisung P-Regler dynamisch”
message: “Netz: {{ netz }} W, Ist: {{ ist }} W, Step: {{ step }} W, Neu: {{ ziel }} W”
service: number.set_value
target:
entity_id: number.solarflow_800_plus_output_limit
data:
value: “{{ ziel }}”
So ich denke damit ist es mal für die Allgemeinheit festgehalten.
Meinen besonderen Dank geht an simon42 ohne seine tollen und sehr hilfreichen Beiträge hätte ich das Thema HA nie und nimmer beältigen können.
Nochmals vielen Dank
by HarryP: Post formatiert