I have an issue with the tracked state on a couple of Harbor Breeze fans. They’re older DC ones with the six speed remote. The fans have different beeps depending on the command sent to them so I always can tell when the bond sends a command and what the fan received. Buttons are Power and speed 1-6.
When I turn the fans on through the app or Alexa the turn on seems to work fine, which makes sense as the Bond seems to track and send the last speed command which is a discreet command so it always works, or if it doesn’t know it for some reason it defaults to the power toggle. However, the power off command always sends a power command no matter what the tracked state, which then toggles the fans power on if the fan is already off.
So it seems to be tracking the On / Speed commands, but not the Off. This happens from the app, Alexa or with API commands. It’s also odd that it sends the On / Speed command every time I tell it to turn on, though it seems it shouldn’t since it knows the last command that was sent is the same one it resends.
Has anyone else seen this or have a clue as to why it might be happening?
You’re right about the light, it does track it’s state and repeating the last command won’t toggle it.
It turns out I was wrong about the fan’s beep telling me exactly what command it received. If I use its remote and set it to speed 4, then turn it off, then hit the remote’s power button again the fan gives me the speed 4 beep and that’s where it goes. So it’s the fan that’s remembering its last speed and the Bond is just resending the power toggle command the second time I tell it to turn off.
That partially defeats the whole purpose of the Bond controlling the fan in any sort of automation system though. If you use anything to control it that issues a turn off command to the fan, say a whole house off command as you leave a house, if the fan is off it turns on instead. You can get around that by first telling the fan to go to a set speed which is a discreet command, than waiting a few seconds, then issuing the off command, but it would be so much better if it could simply track the last command it sent and act correctly.
I know the Trust State in general has been a mixed success depending on the user / environment in which Bond is integrated.
I get around some of the challenges by (a) never using original remotes for things which are controlled via Bond or Harmony, (b) using Bond’s Trust State tracking for lights, and (c) leveraging my own ISY programs/integrations for any voice assistants.
I don’t use the native Bond (nor really any device’s native) voice assistant integration - it all goes through my ISY so I can programmatically track what is happening in my entire home ecosystem and only send “Power Toggle” commands to devices which I have tracked to be opposite of what I intend in the moment to turn on / off via voice.
I am able to rely partially on Bond for any controlled lights via Trust State, but I have smart keypads set up with programmatically discrete Light On and Light Off buttons, where a single tap sends the Bond “Light On” or “Light Off” command, per Trust State. A double tap sends the Bond “Light Power Toggle” command AND patches / updates the Bond’s Trust State to the opposite of whatever it thinks it currently was.
Same basic idea for “Fan On” or “Fan Off” - I just have to track the fan power state through my ISY and if voice command = “Turn On”, only issue the Bond “Fan Power Toggle” command if my ISY-tracked fan power state is OFF / 0 (and vice versa).
Not 100% perfect, but nearly so. Now, if Bond offered a Bond-Bridge-pairable universal remote and/or hardwired keypad that could be set to handle the majority of fans (with or without light kits), then I think there’s a more consumer friendly option available at that point in time.
As it stands, using original remotes, having original receivers without the ability for discrete ON/OFF commands (be they for lights or fan), and mixing of voice assistant routines / whole home setups / third party integrations without a central, customized-per-home controller continues to have a mixed bag of success for most folks.
I’ve thought about a similar sort of workaround by only using my Crestron system or ISY to actually drive the Bond and tracking the state from whichever one I decide will be the master controller with things like Alexa flowing from there. But I’m still disappointed that the Bond won’t do it on it’s own since it will do the light but not the fan itself. It seems like it would be a pretty easy thing for them to add in.
Maybe @merck will be able to stop by this thread and give some commentary. I feel like the Bond team was moving away from State tracking as a whole since it’s so fragile (particularly when people insist on still using original remotes).
But I’d add my voice for a wishlist item of adding fan power Trust State inside of Bond’s device properties, separate from light power Trust State.
Yep, software state tracking is always shaky at best when controlling devices with no real feedback and toggles.for power or whatever. When I first started programming Crestron systems many years ago most electronics didn’t have discreet power commands so the answer was typically putting current sensors on the TV’s or whatever, I’ve thought about that for the fans but don’t see a way to do it that wouldn’t be way too much effort.
One way we could address is changing our TurnOff implementation. Instead of sending the TogglePower signal, we could send SetSpeed(1) followed by TogglePower, that way we ensure that the fan goes off. For TurnOn, we would just send SetSpeed(n) where n is the memorized speed.
Only downside is that your fans, if already off, may spin up briefly when asked to turn off.
Indeed the track/trust state is really not ideal. I’m considering the above kind of solution, possibly also for the lights (we can do something similar with the dimmer… light would glitch on if asked to turn off. Also not ideal, but what can we really do here?).
It actually gets kind of hard to add trust/track state behaviors based on how we’ve implemented it right now.
That will work, I used to do the same thing with CD and DVD players with no discreet power commands that would turn on when you sent a play command, then you would send power to turn them off.
I did try that with my fans but they didn’t like it much, they wouldn’t respond to the power command very quickly after the speed command, and being DC fans they do a whole little dance and make noise while they decide which way to spin when turned on. I just didn’t like doing it every time an automated all off either in the room or house wide command was triggered.
If it bugs me enough I’ll end up doing what residualimages has done and just do it on the control system side and let it go at that.
You may be able to manually construct a signal via the API, by concatenating the data from the Off and Speed(1) buttons, with some spacing in between, and patching it to the Off button’s signal endpoint (and setting reps to 1 so it doesn’t repeat). I know, it’s not user friendly but that’s what’s possible ATM without scripting somewhere else.