Billc wrote:To add this offset in the code would be irresponsible.
I don't think Anvan meant that the offset value should be hard coded. I think he meant that the offset value set by the factory (or the advanced user) should be added by the firmware automatically so the user isn't required to mentally subtract the offset in order to set the brew temperature. That's by far the strangest and most unfriendly aspect of the GS/3.
For example, if my offset is -4F, and the desired brew temperature is 200F, then I have to set the boiler temperature to 204F. The firmware heats the boiler to 204F, then adds the offset to the temperature reported by the probe (204F) so that the display will show 200F.
This correctly deals with the difference in temperature between the sensor location and the group head, but it's a very unfriendly way to do it. The user should not be required to know the offset value (or that it even exists!)
Instead, the firmware should do the offset adjustment transparently to the user. It should do so by
subtracting the offset value from the brew temperature set by the user, and then use the resulting value to set the boiler temperature at the sensor location. It should
add the offset to the temperature reported by the probe and show that value on the display. That way, when the boiler reaches the desired temperature, the brew temperature set by the user and the temperature shown on the display will be the same. The user won't have to know that the offset value exists.
For example, let's say the offset is -4F and the desired brew temperature is 200F. The user intuitively enters 200F in the brew temperature menu. The firmware
subtracts the offset value from the desired brew temperature, which results in the value 204F. It then applies heat to the boiler until the probe reports 204F. It then
adds the offset value to the probe temperature and displays the result -- 200F, which is the target brew temperature. Again, the offset manipulation is completely transparent to the user.
How, then would the offset be calibrated? I can think of a couple of ways to do it, but the simplest approach would be to use a Scace or similar device to determine the difference between the temperature shown on the display and the temperature at the group head. For example, the factory would begin by setting the offset to zero and the brew temperature to 200F. After the display temperature reaches that value, the temperature of the water at the group head would be measured. The brew temperature setting would be
subtracted from the measured value to obtain the offset value.
For example, on my machine, when the offset is set to zero and the brew temperature is set to 200F, the display temperature would be 200F (per the algorithm above) and the group temperature would measure 196F. 196F-200F = -4F, which is the correct offset value for my machine. That value would be plugged into the offset menu by the factory, as it is now. Once that's done, the firmware would actually heat the boiler to 204F to produce the desired target temperature of 200F at the group head.
It's not a one-line change in the firmware, but it certainly seems like it would be a simple modification.