bolliy / ioBroker.sun2000

iobroker adapter for read and write register data from Huawei SUN2000 inverter and LUNA2000 battery via modbus TCP
MIT License
17 stars 4 forks source link

[Bug]: ständig timeout errors in Version 0.60 #64

Closed arnovy closed 6 months ago

arnovy commented 6 months ago

The problem

Hi Stephan,

ich habe heute festgestellt, dass der Adapter dauernd in Timeouts läuft, siehe Screenshots. Ich habe den Haken bei Autoadjust reingemacht und den Adapter neu gestartet, gleiches Fehlerbild. Dann setzt er zwar die Entladeleistung im ioBroker aber nicht in der Batterie (zu sehen im Fusion Portal)

Weiterhin ist mir aufgefallen, dass nach dem neustert des Adapters der Haken bei Autoadjust wieder raus ist. Ist das so gewollt? Meine Modbus Timings habe ich dir auch mal angehängt. modbus_timings Bildschirmfoto vom 2024-03-27 13-47-34

Version of nodejs

18.16.0

Version of ioBroker js-controller

5.0.17

Version of Adapter

0.60

Repository

ioBroker beta

Operating system running ioBroker

No response

Checklist of files to include below

Additional information & file uploads

No response

github-actions[bot] commented 6 months ago

Thanks for reporting a new issue @arnovy!

  1. Please make sure your topic is not covered in the documentation
  2. Ensure that you use the latest beta version (not the current stable version): 0.6.1
  3. Please attach all necessary log files (in debug mode!), screenshots and other information to reproduce this issue
  4. Search for the issue topic in other/closed issues to avoid duplicates!

    Otherwise this issue will be closed.

bolliy commented 6 months ago

Fragt noch ein anderes Gerät (Wallbox, SmartLogger usw.) Daten vom WR? Bitte auch die letzte Version über npm oder über das Beta Repository installieren.

bolliy commented 6 months ago

ja, die auto-adjust Funktion wird auto. deaktiviert. https://github.com/bolliy/ioBroker.sun2000/wiki/auto%E2%80%90adjustment

arnovy commented 6 months ago

die Wallbox hängt über den Virtuellen Smartmeter dran, das lässt sich auch nicht anders lösen. Die Abfragen der Werte funktionieren aber trotzdem ohne Probleme nur wenn ich einen Wert schreibe, in meinem Fall die dischargepower läuft er danach in Timeout, schreibt aber den Wert noch wie ich im Fusion Portal nachvollziehen kann.

Anschließend sehe ich Timeouts. Wenn ich den Adapter jetzt neu starte funktioniert wieder alles. Ich vermute ein Timingproblem nach dem Schreibzugriff und anschließendem direkt darauf folgendem Lesezugriff.

Wäre es möglich nach dem Schreiben eines Registers 20ms Pause vor den nächsten Abfragen einzufügen? Ich habe mir mal eine Umsetzung in NodeRED angesehen, da wird mit der FlexGatterlösung nach dem Registerschreiben 20ms gewartet: https://forum.iobroker.net/post/1089030

Hier ein Screenshot discharge setzen auf 0 mit anschließenden Timeouts:

discharge_0

Hier ein Screenshot vom Adapterneustart mit setzen der dischargepower auf 5000 mit anschließenden Timeouts:

discharge5000

der Vollständigkeithalber: tritt auch unter 0.61 auf

bolliy commented 6 months ago

So ich habe das Problem eingegrenzt bzw. reproduzierbar gemacht. Im ersten Bild war ich nicht in der Batterie-Konfiguration des FusionSolar Portals. Es treten keine Timeouts auf. Im zweitem Bild bin ich zeitgleich in der Batterie-Konfiguration - nun sehe ich Timeouts! grafik

Im FusionSolar Portal werden auch die Werte verspätet oder nicht übernommen. Erst ein Refresh + warten + Wechseln der Ansicht akualisiert den Wert von 500 auf 5000

grafik

Es ist also ein Problem des gleichzeitigen Zufriffs auf den Wechselrichter des Adapters und des Portals. (genauer: Es wird von dem Portal ein Event zu Aktualisierung an den WR übertragen) Das stresst den WR so stark, dass er Timeouts wirft.

Die modbus-Schnittstelle von Huawai ist leider nicht multi-client-fähig; der modbus-Proxy vom Adapter aber schon. Deshalb habe ich auch gleich die Frage nach weiteren Geräten gestellt. Du bist nicht der einzige SCharger Nutzer der Timeout Probleme hat. Und ggf. greift auch der SCharger nicht nur lesend sondern auch schreibend in das Geschehen ein. Was die Sache nicht gerade einfacher macht. Aber dennoch werde ich ein konfigurierbaren Delay beim Schreiben von Registerwerten einbauen. Insofern ist das nicht als Bug des Adapters zu bewerten. Vielleicht kann sich Huawei zu einer besseren modbus Implementierung durchringen und den Microcontroller des Sdongles mit mehr Leistung ausstatten.

Lg Stephan

arnovy commented 6 months ago

Danke für die Klarstellung! Funktioniert wenn man sich nicht ins Portal einloggt ohne Problem trotz Wallbox verbunden mit dem virtuellen Zähler

bolliy commented 6 months ago

Super!

Ich glaube da gibt es seitens Huawei noch einige zu verbessern. Die Timeouts sind ein ständiges Ärgernis! Die Lösung in der NodeRED-Umsetzung hat das Problem nicht beseitigt; durch den langen Delay hatte der SDongle wieder Zeit sich zu berappeln.... Dann brauchen wir eigentlich kein Delay nach dem Schreiben - oder?

arnovy commented 6 months ago

ich habs jetzt nochmal nachgetestet, einmal mit anschließendem Login im Portal und einmal ohne. Die Timeouts treten Tatsache nur beim Login im Portal auf. Da wäre ich ja nie drauf gekommen!

Also brauchen wir kein Delay weil somit sinnlos

bolliy commented 6 months ago

super, wieder ein Problem gelöst ;)