I’m nearly there with the heat pump features and will be moving on to adding support to boost the fan next. That is the last change I expect to make apart from things that might come up in final testing. If anyone wants a preview of the heat pump work, here’s the image.
But don’t bother spending a lot of time doing serious testing because when I add the fan boost feature, it’s going to require doing the testing all over again, as those changes could introduce new problems. So unless you want to see the heat pump in action, you might as well wait test everything all at once.
Update: I’ve decided that the user should be able to boost to the fan while it’s on AUTO (the fan is active because the heating/cooling is active). The expected behavior is that the fan will stay on for the duration of the boost and then return to it’s previous state after that: either ON or AUTO (and AUTO is basically OFF except if the heat/cooling is activate).
I’ve also been testing out various combinations like: Fan OFF → Fan Boost → Heat on (and active; which causes the fan goes into AUTO mode) → Heat off (should cause fan should return to Boost mode). That one in particular doesn’t work as expected right now, it goes back to OFF, so I’m working on that.
I’m also thinking about the simplest way to describe what the expected behavior should be. I think the two general rules are 1.) it will obey the most recent command if there’s ambiguity, and 2.) Boost will guarantee that function will stay active for the duration.
For example, if someone turns on the Fan, then boosts the fan (even though it’s already on), the expectation is that they want the fan to be turned off at the end of the boost. This would be an example of obeying the most recent command in the event it is ambiguous. The most likely way that would happen in practice is if the person pressing boost isn’t the same as the person who turned the fan on, and they didn’t realize it was already on. That’d lead to the two people having different expectations on what should happen, and we’re going to respect the most recent one (whether it was the same user or not, since we can’t tell).
The extra testing should make sure that this Fan Boost feature is implemented in the most easy to understand fashion so it behaves as people expect (or people know what to expect) in complicated situations.