Good news! My ESS is now running for three days without any swinging so the problem seems to be solved and the D-Bus Round-trip time is a good indicator for it.
On last weekend i could start testing again. While ESS was swinging i tried the suggested command on ssh.
- top: CPU was a little bit more busy. CPU 40-50% instead of 10-20%.
- vmstat: not available on venus os
- netstat: Recv-Q = 0
D-Bus Round-trip was very high during that time. See Screenshot.
Then i exchanged my script with a newer version (with the recommended change in registering to VeDbusService) but that did not help.
Then i changed my update interval (it triggers reading from serial device and updating values on D-Bus afterwards) from 500 to 1000ms and that solved my problem. D-Bus Round-trip droped immediately from 2500ms to an average arround 8ms and swinging disapeared. I use “time.sleep(0.2)” in my script and assume that this is pausing my own script only. Am i right or does it block everything else as well?
Publishing around 70 values every 500ms apparently generates a significant load on my system but it is still able to handle it until the ESS function starts publishing setpoint for the inverter with high frequency.
Now i just wonder whats happening on D-Bus every 12 minutes…
Thanks a lot to both of you!