Closed jandado closed 2 years ago
Hi, it didn't integrate, the PID is not called nor refreshed while thermostat is off. But when you switch it back on, the last sample might be several hours or days old, so dt will become huge, and then the PID will multiply it by the new temperature error. I'll need to fix that.
Hi, it didn't integrate, the PID is not called nor refreshed while thermostat is off. But when you switch it back on, the last sample might be several hours or days old, so dt will become huge, and then the PID will multiply it by the new temperature error. I'll need to fix that.
Hi @ScratMan - yes, that is what I was trying to say :) It causes wild over-shoots (even with no-overshoot autotuned parameters) and oscillations that take long time to settle. Thank you!
Hello @jandado , please try this beta release https://github.com/ScratMan/HASmartThermostat/releases/tag/2021.12.2-beta1
I have just updated, @ScratMan - I will let you know how it goes.
Hello @ScratMan. It behaves much better now - see attached screenshot. There is one jump in the evening before the 2021.12.2-beta1, the black circle is cause by me calling smart_thermostat.clear_integral to have a fresh start. All the way on the right is todays behavior after one hour in off state. I made sure the temperature dropped by reasonably significant margin. The integral picks up where it should as it was turned back on.
Thank you!
Fix merged in v2021.12.2
Describe the bug I have three floor heating circuits regulated by the Smart Thermostat. I am forced to shut them down during peak hours. When the thermostat is turned back ON (usually after 1 hour) the temperature drop is accumulated into the integral part for the whole duration it was OFF. See attached recent chart of the pid_i attribute of one of the thermostats. The flat lines are during the OFF periods, the immediate jumps are right after it is turned back on. I have highlighted the parts I am referring to.
To Reproduce Steps to reproduce the behavior:
Expected behavior The integral part of the thermostat should not account for the time it has spent in the OFF state and keep the value unchanged until there is an update (temperature change / sampling period). It was obviously not missing the target temperature furing OFF period, because it could not act to achieve it.
*Screenshots
*