There are two reactors in this array. This line only initializes the first. I would initialize all in a loop in init function and leave it uninitialized here. Also, don't include the word override in the variable name. Also, maybe this shouldn't be an override. And there is already a state in the status record, so maybe this should be removed.
I assume this function is called by HD command handler. I think HD command to start a heat disinfection should probably be handled by Standby Mode and not here. Command is only valid in standby mode so it should take the command and decide if it's valid and request heat disinfect mode when it's ready (e.g. if it's performing a water sample it may defer starting heat disinfect until that's done).
Calculated is the value that is calculated using the equation. Target the value that is set to the fans, for instance if it is ramp up mode and the calculated value is greater than the limit, the target becomes the limit and not the calculated. Also, the calculated value is used to compare it with the newest value to decide whether it is in ramp up mode or ramp down. I renamed it to previous duty cycle for better clarity.