tbnobody / OpenDTU

Software for ESP32 to talk to Hoymiles/TSUN/Solenso Inverters
GNU General Public License v2.0
1.82k stars 508 forks source link

Limit springt nach einer Änderung per python-Script nach ein paar Sekunden auf 50% #2335

Closed grasmax closed 1 month ago

grasmax commented 1 month ago

What happened?

Es gelingt nicht, das Limit für einen Hoymiles-Wechselrichter über python und OpenDTU dauerhaft zu setzen.

To Reproduce Bug

# limit_type = 0 AbsoluteNonPersistent
# limit_type = 1 RelativeNonPersistent
# limit_type = 256 AbsolutePersistent
# limit_type = 257 RelativePersistent
    ret = requests.post(
             url = f'http://{dtu_ip}/api/limit/config',
             data = f'data={{"serial":"{serial}", "limit_type":256, "limit_value":800}}',# setzt zwar auf 800W, aber danach springt opendtu-Anzeige wieder auf 50%
#             data = f'data={{"serial":"{serial}", "limit_type":257, "limit_value":20}}', # setzt zwar auf 20%, aber danach springt opendtu-Anzeige wieder auf 50%
#             data = f'data={{"serial":"{serial}", "limit_type":0x0101, "limit_value":20}}', # ändert gar nichts
#             data = f'data={{"serial":"{serial}", "limit_type":0x0101, "limit_relative":20}}', #setzt auf 50%
             auth = HTTPBasicAuth(dtu_nutzer, dtu_passwort),
             headers = {'Content-Type': 'application/x-www-form-urlencoded'}
         )

Expected Behavior

Das Limit soll dauerhaft gesetzt werden können über ein python-Script.

Install Method

Pre-Compiled binary from GitHub releases

What git-hash/version of OpenDTU?

v24.1.4

What firmware variant (PIO Environment) are you using?

generic

Relevant log/trace output

No response

Anything else?

No response

Please confirm the following

grasmax commented 1 month ago

reproduziert: Wert auf 1300W gesetzt mit python x-mal Abfrage mit http://192.168.2.39/api/limit/status: Ergebnis: {"serialHoymile":{"limit_relative":65,"max_power":2000,"limit_set_status":"Ok"}} nach ca 90 Sekunden springt der Wert zurück auf 1000W/50% weiterer Test: Rücksprung nach 40 Sekunden, weiterer Test: Rücksprung nach 70 Sekunden,

Interessant: vor dem Rücksprung sieht man, dass das Ändern des Wertes aktiv in Auftrag gegeben wird: {"serialHoy":{"limit_relative":65,"max_power":2000,"limit_set_status":"Pending"}} Dann wieder 50%: {"serialHoy":{"limit_relative":50,"max_power":2000,"limit_set_status":"Ok"}}

grasmax commented 1 month ago

Rücksprung tritt auch auf, wenn man das Limit über curl-Aufruf ändert, wie in der API-Doku vorgeschlagen

ms49434 commented 1 month ago

Es ist mit sehr hoher Wahrscheinlichkeit davon auszugehen, daß ein Programm/Script in deinem Netzwerk diese Werte setzt, da OpenDTU von sich aus so etwas nicht automatisch macht (OpenDTU on Battery aber schon). Welche Komponenten laufen bei dir im Netzwerk, die einen Einfluß auf das Limit nehmen könnten? Z.B. MQTT in Verbindung mit zero export (orphaned MQTT topics) usw.

V24.1.4 ist auch schon ziemlich veraltet, hast du schon mal daran gedacht dein OpenDTU neu zu lackieren?

Eine Idee wäre es, OpenDTU eine andere IP-Addresse zu geben, um den Störenfried ins Leere laufen zu lassen.

grasmax commented 1 month ago

Oh wie peinlich, Ich werde alt... Habe die Tests heute unter Windows im VisualStudio mit einer Kopie des Scripts durchgeführt. Und im Hintergrund lief das Original-Script weiter... Bitte den Vorgang schnell schließen und nochmal sorry.

github-actions[bot] commented 1 week ago

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new discussion or issue for related concerns.