// We consumed this reading pair.
//id(solar_out_fails) = id(solar_in_fails) = 1;
+ // We believe the output sensor is reading slightly lower than the
+ // input sensor. We see a fair amount of hysteresis, and the bypass
+ // kicks in before the output reports lower than the input... but
+ // the roof temperature continues to rise. When it gets high enough,
+ // the bypass turns off again and the warm water is pumped out. But
+ // then the reported output temperature is lower than the input again
+ // and it switches off again. Repeatedly, each 5 minutes over the
+ // course of an hour or so.
+ //
+ // By adjusting the output sensor up by about 0.1°C we attempt to
+ // reduce this hysteresis. Overcorrection would mean that we keep
+ // pumping heat into the sky for longer than we should, which is
+ // much worse than a little bit of hysteresis when the heat *is*
+ // actually accumulating in the water on the roof even while we
+ // vacillate.
+ //
+ outtemp += 0.1;
+
if (outtemp == intemp)
return;