imany
25. Juni 2023 um 21:03
21
Moin,
jetzt sind wir hier vom Limit einstellen zum ein- und ausschalten gekommen. Befehlsmäßig wird das sicher ähnlich sein.
Nun meine Frage:
Ich habe 2 Hoymiles in Reihe. Muss ich jedem WR den Befehl senden, oder dem der letztendlich am Hausnetz hängt?
Danke schon mal.
Uwe
Edit: Ich habe es mir noch mal genauer betrachtet.
Meine Antwort: Ja, ich muss …
Hi Zusammen,
Ich habe eine Automatisierung welche die Wechselrichter über die Ahoy DTU steuert. Hier der Befehl dazu:
- service: mqtt.publish
data:
topic: inverter/ctrl/limit/1
payload: >-
{{ (states('sensor.batterieeinspeisung')|float -10)|float if
(states('sensor.batterieeinspeisung') |float -10)| int < 800
else 800 }}W
Bei Payload reicht auch nur der Wert in Watt („xxx W“), bei mir ist der aber dynamisch abhängig von einer anderen Entität.
„Inverter“ ist das MQTT Topic das ihr in der Ahoy DTU einstellen könnt, und die 1 hinten ist die Nummer des Wechselrichters (startet mit 0).
2 „Gefällt mir“
Hallo.
Ich muss leider das Thema nochmal aufmachen.
Eigentlich habe ich ein gutes technisches Verständnis und habe auch einige Erfahrungen im Programmieren. Naja irgendwie stehe ich auf dem Schlauch.
Nun zu meiner Frage.
Ich habe einen Hoymiles HM-800 bei den ich über MQTT ein dynamisches Limit setzen möchte. Das ganze soll über einen Flow bei Nodered erfolgen.
Leider habe ich auch noch Stunden es nicht geschafft ein Payload zu generieren das vom Wechselrichter akzeptiert wird.
Kann mir jemand anhand der Daten den MQTT Flow in Nodered posten mit dem ich das Limit setzten kann.
Meine Daten
MQTT Topic des Wechselrichters : AhoyDTU/Akku WS
Moin Marko076,
wenn du in dem oben verlinkten Thread ein wenig gestöbert hast wirst du sicherlich auch den dort eingestellten Flow gefunden haben der eine NodeRed Steuerung mittels Ahoy-DTU darstellt. Wenn du damit nicht klarkommst kannst du gerne deinen Flow hier einstellen damit dir uns das mal ansehen können.
Grüße
LL
Ich habe den Flow nochmal genau angesehen.
Mein Fehler war das ich bei der ID für den Wechselrichter die Seriennummer eingetragen hatte. Statt einfach nur der 0 für den ersten und 1 für den zweiten Wechselrichter.
Nun klappt es so wie es sein soll.
Vielen Dank für eure Unterstützung.
dquantz
21. Februar 2025 um 09:30
28
Hi,
ich bin über das Thema gestolpert, weil ich gerne eine Minimaleinspeisung realisieren wollte.
Ich habe in der configuration.yaml mir eine Ententiät zur Leistungsbegrenzung für meinen Wechselrichter gemacht.
mqtt:
number:
name: "PV_Leistungsbegrenzung_Prozent"
state_topic: "inverter/Balkon/ch0/active_PowerLimit" # Topic zum Auslesen des aktuellen Wertes (optional)
command_topic: "inverter/ctrl/limit/0" # Topic zum Setzen des Wertes
min: 10
max: 100
step: 1
unit_of_measurement: "%"
Und mir eine Automatisierung angelegt:
- service: number.set_value
data_template:
entity_id: number.pv_leistungsbegrenzung_prozent # Ihre erstellte Number Entity
value: >
{% set pv_leistung = states('sensor.balkon_p_ac') | float(0) %}
{% set netz_bezug = states('sensor.kg_versorgungskeller_stromzahler_leistung') | float(0) %}
{% set leistungs_differenz = pv_leistung - netz_bezug %}
{% set aktuelle_begrenzung = states('number.pv_leistungsbegrenzung_prozent') | float(0) %} # Aktuelle Begrenzung auslesen
{% set minimale_reduktion = 10 %} # Minimale Reduktion in Prozent
{% if leistungs_differenz > 0 %}
{# PV Überschuss - Reduzierung berechnen #}
{% set reduktions_prozent_linear = (leistungs_differenz / pv_leistung * 100) | round(0) %}
{% set neue_begrenzung = aktuelle_begrenzung + reduktions_prozent_linear %} {# Lineare Reduktion additiv zur aktuellen Begrenzung #}
{# Lineare Reduktion auf minimale und maximale Werte begrenzen #}
{% set neue_begrenzung_geclamped = [neue_begrenzung, 100] | min | round(0) | max(minimale_reduktion) %} {# Auf max 100%, min 10% begrenzen #}
{{ neue_begrenzung_geclamped }}
{% else %}
{# Kein PV Überschuss oder sogar Bezug - Begrenzung aufheben (minimal) #}
{{ minimale_reduktion }} {# Auf minimale Begrenzung setzen #}
{% endif %}
- service: system_log.write
data_template:
message: "PV Leistung: {{ states('sensor.balkon_p_ac') }}, Netzbezug: {{ states('sensor.kg_versorgungskeller_stromzahler_leistung') }}, Leistungsdifferenz: {{ leistungs_differenz }}, Neue Begrenzung: {{ value }}"
level: info # Optional, für Debugging im Systemprotokoll
Leider funktioniert die Automatisierung nicht, ich bekomme die Fehlermeldung:
Fehler: expected float for dictionary value @ data['value']
Ergebnis:
params:
domain: number
service: set_value
service_data:
entity_id: number.pv_leistungsbegrenzung_prozent
value: |-
# Aktuelle Begrenzung auslesen # Minimale Reduktion in Prozent
10
target: {}
running_script: false
Kann mir da jemand auf die Sprünge helfen?