-
-
Notifications
You must be signed in to change notification settings - Fork 513
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Nach Deaktivieren/Aktivieren von MQTT werden zyklisch falsche Limit-Werte übertragen #592
Comments
Beim aktivieren des MQTT werden auf jeden fall die retainten Werte übernommen. Also wenn du aktuell retained auf absolut 300W stehen hast, dann aber auf non persistant 200W schreibst ist es normal das nach einem mqtt reconnect wieder 300W angewendet werden. um das zu verhindern dürftest du keine retained values setzen. Dieses Auf und Ab sieht erstmal seltsam aus. Auf der Console sollten aber alle empfangenen MQTT Nachrichten mitgelogged werden. Da sollte man am besten sehen was passiert. |
Das retain flag setzt derjenige der die topic published. Das Protokol selbst sieht vor, dass es für jeden einzelnen publish individuell sein kann. Was der jeweilige Client (in deinem Fall wohl IOBroker) macht, kann ich leider nicht sagen.
Nein. Stelle dir folgendes vor:
Testen kann man das ganz einfach. MQTT-Explorer disconnecten und zum Broker verbinden. Alles was direkt nach dem Verbinden an topics da ist ist mit ziemlicher Sicherheit retained. Wenn garkeine Topic retained wäre, dann wäre die ansicht beim Verbinden erst einmal komplett leer.. |
Ich habe geprüft, ob beim MQTT im iobroker das retain-flag gesetzt wird oder ob man das einstellen kann. Meine Einstellungen im iobroker sind: Von daher sollte es eigentlich passen. Oder der mqqt-iobroker hat eien Bug? |
kann ich so nicht beantworten... wie gesagt. blick in die console und schauen was an topics empfangen wird. Verwendest du scripts welche das limit ändern? ggf. passiert hier etwas wenn das erstemal wieder aktuelle produktionsdaten gepublished werden. |
Ich hab noch weiter probiert....das Verhalten verändert sich, wenn man "Eigene States beim Verbinden publizieren" ausschaltet. Allerdings habe ich mit dieser Einstellung so meine Probleme. Andere Teilnehmer, die sich auch mit dem ioBroker-MQTT-Adapter-Broker verbinden, erhalten dann erstmal keine Werte. Erst wenn sich was ändert, gibt's einen publish. Damit passiert folgendes: Wert1 steht auf x, stundenlang, Teilnehmer ABC wird hochgefahren, meldet sich am MQTT-Broker an, er bekommt keine Werte, weiß also im ersten Moment keinen Ist-Zustand, kann nichts tun. Irgendwann ändert sich Wert1 auf y, MQTT-Broker published das und Teilnehmer ABC kriegt Info, nun kann er damit was anfangen. Auch eine Visu würde solange keinen Wert anzeigen. Das ist meiner Meinung nach sinnfrei. Von daher DARF m.E. OpenDTU mit den publizierten cmd-topics beim Verbinden gar nichts tun (die können ja ewig alt sein und auch zeitlich nicht zusammenpassen, z.B. 100% Limit und Inverter=0), sondern erst mit der nächsten Änderung. |
@ntfrnd wo finden wir denn Deine Consolen Ausgabe ? Kannst Du das nochmal reproduzieren und dabei einen Mitschnitt des USB Serial Logs machen ? |
What happened?
Ich weiß nicht, ob es ein Bug ist. Ich konnte es reproduzieren und glaube, dass es an OpenDTU liegen könnte.
Nach Deaktivieren und erneutem Aktivieren der MQTT-Übertragung in den OpenDTU-MQTT-Einstellungen werden zyklisch nicht nachvollziehbare Limit-Werte übertragen. Hier mit dem MQTT-Explorer beobachtet:
To Reproduce Bug
Ich hatte mittels MQTT das "cmd/limit_nonpersistent_absolute" auf 300W gesetzt, der HM600 hat dies akzeptiert.
In der OpenDTU-GUI steht
Die Rückmeldung erfolgte über MQTT in "status/limit_absolute" mit 300 W. Von daher alles ok.
Nun deaktiviere ich in den OpenDTU-Einstellungen die MQTT-Übertragung, warte etwas, schalte diese wieder ein. Dann dauert es kurz und schon wird im 5 sec. Takt das Limit (status/limit_absolute) geändert, wie man auf dem oberen Bild sieht.
150 W (entspricht 20%) -> 300 W -> 600 W ->150 W ->300 W -> 600 W usw. das Ganze wiederholt sich ein paar Mal, bis das Limit schließlich bei 600 W bleibt.
Dies sieht man aber nur über MQTT in "status/limit_absolute" - auf der OpenDTU-GUI bleibt es unverändert (weiß jetzt nicht mehr, ob es der Wert vor dem MQTT-Deaktivieren war oder die 600W).
Die 600 W könnten das "cmd/limit_persistent_absolute" sein, dass dann greift. Ist aber nicht nachvollziehbar, denn vor einigen Tagen habe ich das Limit über die OpenDTU-GUI auf 300 W dauerhaft gesetzt. Jeden Morgen startet er seitdem mit 300 W, ebenso wenn er spannungslos war und neu bootet.
Für mich ist das Verhalten nicht nachvollziehbar.
Vielleicht kann mal jemand anderes dies ausprobieren?
Expected Behavior
Aktuelles Limit wird vom HM600 ausgelesen und übertragen. Das sollte dem vorherigen entsprechen, da der HM600 ja nicht spannungslos war bzw. neu gebootet hat. Von daher sehe ich keine Grund, warum er sein Limit ändern sollte.
Install Method
Pre-Compiled binary from GitHub
What git-hash/version of OpenDTU?
b8ced54
Relevant log/trace output
No response
Anything else?
No response
The text was updated successfully, but these errors were encountered: