31 speed fan - HA control

Sorry to hear that, @dmac79 - hopefully the Bond team will be able to come up with a solution at some point in the nearish future. :crossed_fingers:

Iā€™ve got 3 of these same DC fan controllers (different DIP switch configuration). My fans also have BLE that Iā€™ve reverse engineered. Given how I know the BLE API works, I believe the KUJCE10711 remote actually maintains state of the speed. The indicator light on the front increases when you press volume up, suggesting its actually sending ā€œset fan to speed 8ā€, ā€œset fan to speed 9ā€, etc.

I have a HackRF One and tried to capture the radio signals on 302.25 MHz, which I was able to do, but Iā€™m out of my league to translate that to a serial signal of binary commands. Iā€™d guess the fan controller has a single lookup table for the commands since the same controller receives RF, BLE, or a two-wire wall mount controller. If so, I already have the serial codes that BLE uses.

1 Like

Welcome, @dcode !
Out of curiosity, using your HackRF One - does it appear that your understanding (/ my theory of what might be happening) is proved out by a different signal being sent by subsequent fan up speed commands?
I was hoping that you wouldnā€™t have to be able to translate them to see if it is the same command repeated each time, or if it is a different command sent.

So are you able to use the BLE for anything?
I built a pretty nice automated fan system with Node Red and Iā€™d really like to have all 31 of those speeds at my disposal. I still only have 6, via a template remote that Bond suggested.

I reverse engineered all the commands in the fanSyncBT app on android. I was hoping the Bond could serve all my needs reliably, because the BLE is a little finickyā€¦not that the RF is flawless. I havenā€™t gotten the Bond to work at all past the setup stage.

So, Iā€™ve got the Python code to control the fan, I just need to cleanly package it so it can be integrated with MQTT or HA directly or something. Iā€™m happy to share.

Iā€™d love to see that. Thank you.

Iā€™m just having issue with only having 6 of 31 speeds available. Iā€™ve read where people have setup numerous fans to cover for Bondā€™s app, but I canā€™t anything more than 6 speeds to work. :man_shrugging:t2:

@merck did you ever determine the status of this ticket?

@dcode youā€™re right. I didnā€™t consider the little speed light on the remote. The speed stays the same, even if youā€™ve shut the fan down. You have to run the speeds back down. So, that remote is holding the called speed somehow.

We had some discussions on this internally yesterday. Sorry that this has kept getting put behind BBP launch activities. Hereā€™s where we are at.

The app currently has icons for only up to 9 speeds, and we find that really anything over ~6 speeds and itā€™s too many icons on the UI. A slider UI element would be possible, but weā€™ve avoided that as for many users it implies true state feedback. We donā€™t want to set the wrong impression with less savvy users. For this reason, weā€™ve mapped the 31 speed device to 6 speeds, spreading those speeds out in the range of capabilities of the fan.

That said, I agree that we really should give you the full capabilities of your fan on the API. So, how about this:

item current proposed
properties.max_speed 6 31
buttons in app Speed 1ā€“6 Low, Med, Hi
integrations 6-speed 31-speed

Where Low = physical speed 1, Med = physical speed 16, Hi = physical speed 31.

Thoughts?

2 Likes

Perfect. Once I load the thing up in Node Red, I donā€™t care if the app has 1 button or 100 buttons. Having 31 speeds via integrations, Iā€™m sold. Iā€™d run a range from 1-31 in Node Red and itā€™ll select the appropriate speed to capture the ā€œtime to tempā€ trend.

Great. We are on it. Awesome use-case with the gradual increase of speed as temperature increases.

2 Likes

Awesome hybrid solution, @merck. Should give the best of both worlds as far as app UI / casual user vs integrator power users.

Your particular use case doesnā€™t really seem to have you using the original physical remote very much, @dmac79?

Iā€™m thinking this remote may get out of sync if the physical remote thought it was at speed 3 of 31, and your Node Red had it at speed 16 of 31.
Pressing ā€œspeed upā€ on the physical remote may set it to speed 4 in that case.
I am super curious to hear about it once the Bond team is able to roll out the proposed solution and your get your integrations updated to take advantage of it.

I donā€™t use it at all. It will quickly out of sync if you even think about touching the remote. My setup is totally dependent on Node Red. Since there is nothing in the fan actually showing its ACTUAL status, thereā€™s no way to hold the remote, or even the fan in sync. You have to trust that the commands are getting to the fan. My setup sends each command multiple times with time delays, just to be sure.

It polls my Ecobee for its high and low target temps and then compares it to the actual temp in the room. It shoots for 3 degrees under the top, if weā€™re cooling and 1 degree above the bottom if weā€™re heating. If weā€™re heating, the fan reverses and pulls the heat through the room, only while the heat is running.

1 Like

Thanks for the explanation, @dmac79. I figured that was your setup but itā€™s nice to have it confirmed.
For others in the thread now or in the future who may want a mix of using remote and integration, be aware of this potential.

max_speed is read-only for good reason: weā€™d have no idea what to do to achieve those higher speeds without signals for them.

For raw-recorded remotes, you can POST additional commands, and associate signals with them. We derive max_speed from the highest speed seen in a command (max_speed = max(command.argument if command.action = SetSpeed))

But, in this case, it seems that @dmac had to use the template remote, which is immutable.

It was either the template remote, or nothing. It was very strange how little I could get it to do.

Rereading this questionā€¦I havenā€™t been able to translate the signal to specific coding yet. Tried a couple times, but got different waveforms. Iā€™m new to the framing to an analog signal and havenā€™t gone back to the HackRF One, but I think theyre unique commands.

Any updates on this?

I also have this remote for one of my fans and would love to see this as well, been using the 6 speed template as well.

Thanks for bumping. I just implemented this. Looks good in simulation. Weā€™ll try it later on the real receiver and if that goes OK, we will get this into the next beta firmware. Tomorrow? Maybe even later today.

Donā€™t threaten me with a good time. :wink:

I might need a refresher on how to call all 31 speedsā€¦ Iā€™ve gotten lazy with the 6 I have.

Today might well make my week.