Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Setting to disable bond.api.toggleFan when changing fan from off to a set speed #255

Open
Shamus03 opened this issue Dec 15, 2023 · 3 comments

Comments

@Shamus03
Copy link

Shamus03 commented Dec 15, 2023

Is your feature request related to a problem? Please describe.
I have a Hunter ceiling fan. The remote can send the following fan-related signals:

  • toggle fan (single-press the fan button)
  • fan speed up (single-press the fan up button)
  • fan speed down (single-press the fan down button)
  • set fan speed to 1 (long-press the fan down button
    • this command will turn the fan ON if it is currently off (important for my issue!)
  • set fan speed to 3 (long-press the fan up button)
    • this command will also turn the fan ON if it's currently off

Since there is no button to explicitly set the fan speed to 2, it just works out better to map only the "toggle fan" button to Bond's on/off button, the "set fan speed to 1" signal to Bond's "fan speed 1" button, and the "set fan speed to 3" signal to Bond's "fan speed 2" button - essentially faking Bond out and turning it into a 2-speed fan (I don't really need fan speed 2). This works well when interacting with the fan through Bond, because tapping either fan speed button sends only the command required to set the fan to the desired speed.

My problem:
If the fan is off, and I drag the fan speed slider from 0% to 50% in Homekit, the Bond Homebridge plugin actually sends BOTH the "toggle fan" signal AND the "set fan speed to 1" signal. This causes the fan to turn on and then off immediately after, with both Bond and Homekit incorrectly thinking the fan is now at 50% speed. For some reason this problem does not happen when transitioning from off to 100%. So in practice to actually get the fan to go from 0% to 50%, I need to first set it to 100% followed by 50% shortly after.

Describe the solution you'd like
I think the best solution in my case is a setting to disable the "toggle fan" command (bond.api.toggleFan) when the fan is currently off and transitioning to a set power level (since sending ONLY the "set fan speed to 1" command is sufficient to turn on the fan). That would cause ONLY the "set fan speed to 1" signal to be transmitted in that case.

Describe alternatives you've considered
If my fan had explicit ON/OFF signals I could send it, I think this problem would be fixed. I also considered removing the on/off button in Bond and ONLY creating an "off" button, but that does not end up working well.

Also if Bond was smart enough to understand that to actually get to the "real" fan speed 2, it should send the "fan speed 1" signal, shortly followed by the "increase fan speed" button, I'd actually be able to map all 3 speeds. As mentioned earlier I am happy with just having 2 speeds but if someone has a workaround for this I'd be interested to hear it. I thought perhaps mapping Bond's "set fan speed to 2" signal to a dummy RF signal that does nothing would work, but that causes an issue when transitioning straight from off to fan speed 2 (fan does nothing, Bond now thinks the fan is at speed 2).

Additional context
N/A

@Shamus03
Copy link
Author

I think just adding something like if (isCurrentlyOff && disableFanOnSignal) return (where disableFanOnSignal is the setting I am requesting) to this section of the code would work:

That would cause the bond.api.toggleFan call to be skipped in my specific case.

Alternatively, it would be much more work, but if this plugin could allow you to configure more advanced sequences of signals for specific state transitions, that would allow me to fix my issue AND possibly support other devices with similar issues.

@Shamus03
Copy link
Author

@Shamus03
Copy link
Author

Shamus03 commented Dec 20, 2023

An update on this, I decided to try removing the on/off toggle button within bond and only bind the "off" button. This means clicking the "off" button within the Bond app actually sends the "toggle" signal, but now the Bond Homebridge plugin knows it only needs to send that signal when I actually want to turn the fan OFF. So I have an acceptable workaround, but it would be nice if it worked without the hacky setup.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant