lumapu / ahoy

Various tools, examples, and documentation for communicating with Hoymiles microinverters
https://ahoydtu.de
Other
956 stars 226 forks source link

Momentane Leistungsbegrenzung per MQTT übertragen #135

Closed hubsi5 closed 2 years ago

hubsi5 commented 2 years ago

Habe die neueste 0.5.5 Verion auf meinem Wemos übertragen. Muss sagen, ist die erste Version die bei mir bis jetzt stabil läuft. Danke!

Ich steuere per MQTT die Leistungsbegrenzung. Hätte da eine Frage. Wäre es möglich, per MQTT die Momentane Begrenzung mit zu übertragen? Also einfach ein Topic mit der Zahl der Begrenzung. Hat auch den Hinitergrund, da per IoBroker auf Ahoy ab und zu statt 800 Begrenzung 8000 ankommt. Irgendwie werden da ab und zu einige Zahlen zu viel versendet

aschiffler commented 2 years ago

Einfach auf das Topic selbst noch mal ein subscribe machen. So habe ich das auch in OpenHAB. Dort (OpenHAB) sieht das so aus: commandTopic: home/devcontrol/0/11 stateTopic: home/devcontrol/0/11

Also sowohl Lesen als auch Schreiben.

Das mit 800 --> 8000 kommt nun nicht mehr. War ein Bug.

hubsi5 commented 2 years ago

Ok danke. Das mit den 8000 hatte ich gerade mit der 0.5.5 Version.

aschiffler commented 2 years ago

Ok danke. Das mit den 8000 hatte ich gerade mit der 0.5.5 Version. Das ist nicht gut. Falls es nochmals / öfters auftritt versuche mal heraus zu finden ob das dann der Fall ist wenn du "häufig hintereinander" das commando sendest.

hubsi5 commented 2 years ago

Leider kommt bei mir noch immer eine falsche ;QTT Übertragung zustande. Wollte auf 600W begrenzen, angekommen sind 6000W Version 0.5.5

aschiffler commented 2 years ago

Ich denke das liegt an der MQTT Implementierung. Wir sind hier dran. Grund ist hier wahrscheinlich das mehrfache Senden der Nachricht an die DTU und das fehlende Handling für diesen Fall.

HorstG-57 commented 2 years ago

Was ich gesehen habe ist, das beim Senden der Leistungsbegrenzung an den WR der Wert für die Leistung direkt vorm Senden mal 10 gerechnet wird und danach wieder durch 10 geteilt wird. Da die Rechnung auf der Variablen stattfindet die über einen Pointer erreicht wird, könnte da auch ein Problem vorliegen.

Was muss denn an der WR übertragen werden, die Leistung in W als Ganze Zahl oder muss die Leistung in 1/10 W als Ganzzahl übergegen werden.

Oder ist das Ganze einfach nur ein Anzeige-Fehler innerhalb der Webseite, da der Original Leitungswert beim Senden an den WR kurz verändert wird ?

Ich habe ausserdem ein PR #138 erstellt, wegen des Subscription für die Steuerung über MQTT. Ev. spielt das da auch noch mit rein.

lumapu commented 2 years ago

ist das jetzt mit Version 0.5.6 behoben?

hubsi5 commented 2 years ago

bis jetzt sieht es bei mir gut aus !

stefan123t commented 2 years ago

@HorstG-57 an den WR müssen wir den 10-fachen Wert in Watt senden, da der WR für das ActivePower Limit einen "fixed point integer" erwartet mit genau einer "Nachkommastelle".

@aschiffler hier noch die entsprechenden Kommentare aus dem DTU-Pro Source Code AntiReflux.c

1101:    //Use power> When each unit is 30w,= Turn on the power limit of each unit and turn on the full amount when the full amount is exceeded
1212:    //When it is not enough for 30w per unit, because the power limit cannot be maintained, some units need to be turned off to make the remaining power limit
stefan123t commented 2 years ago

@hubsi5 bitte mit der v.0.5.9 überprüfen und ggf. als gelöst schließen. Danke

aschiffler commented 2 years ago

solved in new versions. given information was taken into account

MubiTec commented 2 years ago

Ich hab im iobroker den state subscribed, aber ich bekomme keine Rückmeldung, ob mein Limit eingetragen ist oder nicht. Deshalb die Frage, gibt es wirklich eine Bestätigung, ob das Limit gesetzt wurde?

stefan123t commented 2 years ago

Wir bekommen aktuell mW nur eine Kommando ActivePower Limit setzen erfolgreich Meldung. Wir können aber die Art und den Wert des Power Limits nicht abfragen. @aschiffler was bringt die MQTT Topic subscription an der Stelle ? Es ist ja nur eine synchrone Rückmeldung macht das als asynchroner „Zustand“ an der Stelle überhaupt Sinn ?

aschiffler commented 2 years ago

@stefan123t Nein das ist in sofern nicht sinnvoll da keine andere/neue Information gegeben wird.