Guten Morgen,
ich habe einen Hoymiles HMS 800 an meinen Batterien zur Einspeisung.
Die Regelung erfolgt im Moment manuell über den Schieberegler in Homeassistiant “Entität: Leistungsbegrenzung” für den Hoymiles.
Nun habe ich den folgenden Code, der mir beim Testen des Templates (in den Entwicklerwerkzeugen) auch vernünftige Werte liefert:
trigger:
- platform: state
entity_id: sensor.power_import
condition: []
action:
- service: number.set_value
target:
entity_id: number.wechselrichter_leistungsbegrenzung
data:
value: >-
{% set power =
states('sensor.power_import') | float %}
{% set max_power = 800 %} {% if power > max_power %}
100
{% else %}
{{ (power / max_power * 100) | round(2) }}
{% endif %}
mode: single
Als “power_import” wird der Shelly 3EM genutzt.
Kann mir hier jemand helfen?
Meine Frage wäre, wie ich die Daten (also den Wert für die Leistungsbegrenzung) nun an den Hoymiles weitergeben kann.
Wie wird hierfür ein Trigger gebastelt, der z.B. jede Minute 1x läuft und
den Wert überträgt.
Meine Programmierkenntnisse sind tatsächlich ewige Jahre her und auch nicht für das Thema Home Assistant brauchbar ;-(
Wäre cool, wenn das jemand schon am Laufen hat oder sich auskennt und den Code oben selbst nutzen möchte und weiß wie…
1 „Gefällt mir“
Guten Morgen!
Dieses Thema interessiert mich auch sehr. Ich habe noch keinen Weg gefunden, um einen von mir errechneten Wert in diesen “Schieberegler” zu bekommen.
Aufgabe hatte ich OpenDTU übertragen. Funktionierte da sehr gut. Habs aber wieder abgeschaltet. WM ist eh so ein eckliger Verbraucher mit wechselnden Lasten. Induktionsfeld auch. Deshalb lass ich meinen nun Vollgas durchlaufen.
Gruß
Ich wollte meine Einspeisung auf ca. 800Watt begrenzen - das ist ja die offizielle Grenze bei einem Balkonkraftwerk für die Einspeisung… daher mein Interesse… weis ja nicht, ob das geprüft wird oder wer mir dann auf die Finger klopft…
Grüße
Peter
Würde ich dann mit der OpenDTU machen. Den Shely hab ich direkt da eingebunden. Falls du noch keine hast, schau mal bei google nach ’ AllianceApps OpenDTU Fusion’ Ich glaube viel günstiger kommst du auch nicht mit selbst löten.
Gruß
Ich habe schon ein älteres Balkonkraftwerk in Betrieb - mit einem Hoymiles HM-600. Dazu habe ich mir eine AhoyDTU gelötet/gebaut und für die Anzeige klappt das alles gut. Das Regeln habe ich nicht hinbekommen. Ich kann zwar über die DTU die Leistung einstellen, aber nicht automatisert.
Jetzt habe ich ein 2. Balkonkraftwerk am Netz - mit einem HMS 800W-"T dazu die Hoymiles Integration und dieses möchte ich gerne regeln.
Aber noch eine DTU extra kaufen, wollte ich vermeiden - das sollte doch auch anders gehen…???
Soweit ich das gesehen und verstanden habe, gibt es mit der Hoymiles Integration dann eine DTU die ich auch (momentan eben nur per Hand via Schieber) regeln kann.
Ja, so sieht es aus… Nur eben manuell…
So krass kompliziert kann es nicht sein. Der Code oben gibt den Wert aus, den man an die Schieberegler - Variable " weitergeben musste, z. B. mittels Trigger alle Minute…
Ich kriegs bloß nicht hin…
Beim 600er, ohne W, findest du das in OpenDTU unter Einstellungen, Dynamic Power Limiter. Sorry. Das der 800er ein W ist, kam oben nicht raus.
Gruß
Hallo Fritz.
Bei mir funktioniert deine Automation. Zumindest was die Übergabe des berechneten Wertes an den Schieberegler in Homeassistant betrifft.
Ich habe die Hoymiles Integration für Home Assistant installiert - und damit funktioniert die Übergabe einwandfrei.
Ich verstehe nur deine Logik nicht, wie du hier die Werte berechnest. Kannst du mir das bitte etwas genauer erklären?
Gruß
Peter
Servus Peter,
hab Deinen Beitrag gestern Abend erst gesehen. Das hört sich ja super an, dass das bei Dir klappt. Hast Du die Zeilen in die YAML eingebunden oder über einen Trigger realisiert ? Da hapert es bei mir. Im Template - Editor kommt auch ein plausibler Wert für den Schieberegler raus, ich krieg nur den Übertrag dorthin nicht zusammen…
Soweit ich es verstanden habe, kann man über “set value” eben den “Schieberegler” bedampfen. Ich habe einen 800er HMS, daher MaxPower =800 (wobei real eher bei ca. 720W). Wegen der “Anpassung von Watt zu Schieberegler” nimmt man dann Power (Bsp. 500W werden bezogen) dann 500W / 800W * 100 → Schieberegler auf “62,5”). Da es (noch) nicht läuft, kann ich nicht genau nachvollziehen, ob das so passt - klingt aber erst mal ganz gut 
Könntest Du mir helfen bzw. beschreiben, wie der Wert nun an den Regler kommt? Ggf. alle 60 sek. mit Trigger oder ähnlichem… Bin irgendwie kurz davor, aber gestrandet…
Viele Grüße !!!
Fritz
Die Zeilen selber sind ja eine komplette Automation. Also unter Einstellungen → Automationen und Szenen dann eine neue Automation erstellen, und oben rechts auf die drei Punkte und hier “In Yaml bearbeiten” und rein mit dem Code. Dieser Code kann auch nicht im visuellen Editor aufgerufen werden.
Der Trigger ist auch schon dabei - Sobald sich der Wert von der Stromeinspeisung irgendwie ändert - sieht bei mir so aus:
entity_id:
- sensor.tasmota_strom_verbrauch_aktuell
trigger: state
Um den Schieberegler abzufragen - also den Wert in % den er gerade hat - gibt es den Sensor: number.dtu_leistungsbegrenzung
diesen musst du auch in der Automation unter “Dann” nehmen, dann wird er von der Automation mit Werten befüllt.
Bei dir muss also oben die entity_id so aussehen:
target:
entity_id: number.dtu_leistungsbegrenzung
weil du über die DTU den Wechselrichter steuern kannst, und nicht direkt. (so habe ich das zumindest verstanden).
Wenn du einen Trigger willst, der alle 60 sek. läuft sieht der so aus in YAML:
trigger: time_pattern
minutes: /1
Hier meine komplette Automation:
sensor.tasmota_strom_verbrauch_aktuell ist mein Strom-/ bzw. Leistungsmesser auf meinem Zähler
input_number.wert_einspeisung_netz ist ein Schieberegler den ich mir gebaut habe, um zu regeln wieviel Watt ich ins Netz einspeise
alias: Automation-Einspeisung
description: ""
triggers:
- entity_id:
- sensor.tasmota_strom_verbrauch_aktuell
trigger: state
conditions: []
actions:
- target:
entity_id: number.dtu_leistungsbegrenzung
data:
value: >-
{% set power = states('sensor.tasmota_strom_verbrauch_aktuell') | float
%} {% set max_power = states('input_number.wert_einspeisung_netz') |
float %}
{% if power > max_power %} 100
{% else %}
{{ (max_power *100 / power ) | round(2) }}
{% endif %}
action: number.set_value
mode: single
Gruß
Peter
by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)
Oha Peter,
das hab ich gar nicht gecheckt, dass ich das gleich in eine Automatisation packen kann / soll… Ich hab mal rum probiert und das Ganze auch mal in die YAML eingetragen, da gibt´s Fehler beim Speichern…
Mit Deiner Nachricht wurde es jetzt klar - vielen Dank dafür !!!
Jetzt muss ich tatsächlich noch einen wert für die max. Einspeisung definieren. Klar, es funktioniert z.B., wenn ich 500W beziehe, dann rechnet er den Schieberegler bei mir direkt und das passt auch. Nach der Regelung beziehe ich ja dann ggf. nur 10W - also regelt es den Regler auch fast ganz runter und beziehe wieder z.B. 490W, dann wird wieder hoch geregelt… Das meintest Du bestimmt, als Du geschrieben hast wegen der Logik…
das funzt ja auch gar nicht so richtig… also es regelt dauernd…
und auch die negativen Werte (=Einspeisen aus der Batterie) gilt es abzufangen… das hast Du wohl schon hin bekommen, da muss ich nochmal ran…