I had my Ecobee Switch+ integrated as a Homekit accessory for the past few months and it had been working fine. However, yesterday I noticed that the ON state was no longer working (had an automation set up to turn on the switch when motion is detected). I found that trying to set the state to on either via a card in the UI or calling the switch.turn_on service directly did not work. Oddly enough, whenever the switch is turned on either physically or via the Ecobee app/website, ANY service call from HA results in the switch turning OFF (e.g. when I turn the switch on manually, if I go into HA,1) the updated state is not reflected, and 2) if I manually attempt to “turn on” the switch via the UI or service, it will actually turn the switch off. I set the logging level to debug and don’t really see any errors related to the particular switch, but debugging in HA is all very new to me so I’m not sure if I’m doing everything correctly there.
Unless you were running a beta i’m not sure what could have gone wrong. Worth trying 0.107.0 - massive update to support state push updates and the underlying code is completely different.
Also if there is a way to power cycle the Ecobee Switch+ thats worth a try too.
Best place for homekit accessory support is github btw - i don’t often check the forums and its easy to miss issues here. On GitHub an army of volunteers triage incoming support requests and its much harder to miss them.
Thanks, I just updated to 0.107.0 and am still seeing the issue. I also power-cycled the switch and even did a factory reset and homekit re-pairing as well without any success. I will head over to GitHub to report the issue. Thanks for the heads up!
I am seeing this issue as well. Tried to reset HomeKit on the switch itself, removed from HA, restarted, and then paired again. No luck with the ON command.
For anyone finding this thread, the GitHub issues is here.
Pretty certain a firmware update broke things on the Ecobee Switch+ side. According to the Apple spec, when you write to the on/off characteristic its supposed to support 1
, 0
, true
, false
. We were sending true
and false
and this used to work. Indeed, it still does with other accessories. Thanks to @cab426’s help we were able to run a few experiments and find that 1
, 0
and false
work as expected, but true
is buggy. The device accepts it as a valid value but then doesn’t react to it.
An iPhone does work though, and that turned out to be because it sends 1
and 0
.
This post describes a manual fix for anyone keen to fix this now, and i’m going to try and fix it properly ASAP.