luc-ass / homebridge-evohome

Homebridge plugin for Honeywell Evohome
29 stars 16 forks source link

HomeKit temperature adjustments apply until schedule, ignoring active override #149

Open PuzzledUser opened 1 year ago

PuzzledUser commented 1 year ago

My system was set (EDIT: had an override active) to 19°C until 20:30. At 16:01, I used Apple Watch to increase the temperature to 20°C. However, the clever algorithm changed the validity time until the next scheduled target change (which is 17°C @ 18:00).

Why change the until figure when setting the temperature? When using the Honeywell round thermostat to adjust the temperature it applies to any existing schedule or override.

Is it not possible just to send temp info to the server and leave the existing until figure unchanged? If I hadn't spotted what was going on I'd have found it chilly later.

SeaneyC commented 1 year ago

This is just how Evohome works isn't it? If you apply a manual override of temp at the Smart valve or the panel it will default at that temp until the next switchpoint defined in the schedule. In the app the default time suggested at activation is the time of the next switchpoint.

I just tested it setting a new switchpoint at 5pm GMT to 22 degrees and set the dial on the valve to override to 16 degrees. This registers on the panel and sets a manual override until 5pm of 16 degrees, and then the switchpoint kicks in again at 5pm to bring everything back on schedule.

On Wed, 22 Mar 2023 at 16:26, PuzzledUser @.***> wrote:

My system was set to 19°C until 20:30. At 16:01, I used Apple Watch to increase the temperature to 20°C. However, the clever algorithm changed the validity time until the next scheduled target change (which is 17°C @ 18:00).

Why change the until figure when setting the temperature? When using the Honeywell round thermostat to adjust the temperature it applies to any existing schedule or override.

Is it not possible just to send temp info to the server and leave the existing until figure unchanged? If I hadn't spotted what was going on I'd have found it chilly later.

— Reply to this email directly, view it on GitHub https://github.com/luc-ass/homebridge-evohome/issues/149, or unsubscribe https://github.com/notifications/unsubscribe-auth/AT4A6BIFHD3B55JXTP2NWSLW5MR2FANCNFSM6AAAAAAWEB2NWU . You are receiving this because you are subscribed to this thread.Message ID: @.***>

PuzzledUser commented 1 year ago

Yes, that's right @SeaneyC. To my mind, desired behaviour is that homebridge-evohome should respect your override time, not set a fresh override until the next scheduled target change time.

If you re-test in your scenario and use home bridge-evohome to change to 16°. You will find it sets that temperature until the next scheduled target change, not until your override time of 5pm.

The cure would be to not set a new override time, just set the desired target temperature.

PuzzledUser commented 1 year ago

I just tried hacking line 820:

//            .setHeatSetpoint(that.device.zoneID, value, nextScheduleTime)
            .setHeatSetpoint(that.device.zoneID, value, null) // try to stop override time

I passed null as the last parameter (which is done in all other places setHeatSetpoint is called). However, I discovered that this sets a permanent override. Not what I want.

I recall reading previously that it is tricky to just set a new target temp. Hence the workaround of setting until the next scheduled time. However, it must be possible to do this as Honeywell gear does it ok. So it's just figuring out what the API call is... Peesy. 😉

EDIT: I thought I could use the function setTargetTemperature documented at line 892, It seems to just set the target temp. But I don't see/understand the syntax to call that...

luc-ass commented 1 year ago

From what I can see even the Honeywell gear can not set a temperature without choosing either a specific time frame or permanent. Where did you find that?

PuzzledUser commented 1 year ago

I tested this using my Honeywell Round Thermostat: https://www.tradingdepot.co.uk/y87rf2024-honeywell-single-zone-wireless-round-thermostat

I can't easily test on a full EvoHome with rad valves, as that home doesn't have a homebridge setup. But I can check later to confirm that it respects any override time when manually adjusting a rad valve.

PuzzledUser commented 1 year ago

The behaviour is different for Honeywell Home and an adjustment of a rad valve in a Zone. For me a manual target adjustment is never propagated to the Evohome central unit, never reaches the server and hence never gets to HomeKit via homebridge-evohome.

However, adjustments to a Honeywell Round thermostat quickly propagates its new target to the server (without changing the next scheduled switch time or any override time) and hence to HomeKit via home bridge-evohome.

Bottom line

There is definitely an API to update just the target temp on the Honeywell online system at tccna.honeywell.com/WebAPI/

If we can find the call, we can solve my problem and simply the existing code that calculates the next scheduled switch point (and cocks up across midnight).