Fan speed controls?

Hey all -

I've been using HomeKit via the Tonesto HomeBridge integration for ages, but have always had one major complaint - with the way fan speeds were implemented in that plugin. I did extensive research into the cause of the issue but fell short of being able to PR a fix for it, and the developer was unable to reproduce or resolve the issue.

So, I'm looking at phasing some devices over to HomeKit via the native Hubitat integration. I got it all set up and working no problem, and exported the 5 fan devices I want to control. They show up, I can control them, all is well. Problem is that the device control types are the "infinite slider" style, with no steps, and as such are wickedly misaligned to what the switch can actually do. The steps in the driver/device itself actuate Low, Medium, and High at 33, 66, and 99 respectively. But I can see when I change the fan speed via the native HomeKit integration that it behaves much the same way as the Tonesto plugin did.

Any value from iOS between 100-60% is "High", 59-20% is "Medium" and 19-1% is "Low", with 0% properly being "Off"

These steps are WAY too wide and I'd like to be able to configure them. Best case scenario, I'd like there to be actual "low, medium, high" steps instead of an infinite slider. I know HomeKit supports this.

Any advice anyone can offer?

BTW, for what it's worth I am on a C-7 running 2.3.9.166 and these are all Inovelli switches, either the Blue series VZM35 or one single LZW36

From the GitHub discussion you linked to, what he actually said was:

Hello! Sorry, I haven't followed up.
I don't know where the issue is for you... I have both GE/jasco fan controllers and Innovelli Fan controllers and it works fine for me.
Try enabling debug logs on both the Hubitat app and the homebridge plugin and see if something stands out. If you could show me the flaw, I will be sure to fix the issue as soon as possible. I'm just not seeing it on my side

That reads as much less dismissive than the abridged version in the OP of this thread, IMO.

5 Likes

Fair, but given the amount of detail I had already provided, it felt that way. I gave everything short of a PR (and it took 8 months to get that answer)

I can understand your frustration but community developers do this in their spare time and are kind enough to share their hard work with us for free.

I’m sure some of them have less spare time than others.

I do hope you find a solution that works for you, either with a community developed Homebridge integration or the built-in HomeKit integration. Best of luck.

3 Likes

Oh, for sure. There is no sense of entitlement on my side which is why I let it drop when it was obvious he didn't have time to address it!

That's why I'm here to seek alternative resolution :slight_smile:

1 Like

@jtp10181 any ideas?

1 Like

FWIW I updated my original post to speak with more empathy and not let frustration cloud fact. Thank you for the reminder to keep the tone productive.

2 Likes

Really appreciate your consideration about that.

There are greater minds than mine here that can hopefully help you figure out a way to do what you need :crossed_fingers:.

2 Likes

I hope so! If nothing else it could be an opportunity for improvement. I was super pleased with how simple it was to set up and get the native integration working, though I have other questions if this one is successful.

1 Like

Not to muddy the waters, but most fans only have 3 speeds and the drivers map any values requested to them using preset ranges. So maybe define a 4 button button controller…

Interesting, I’m not sure what you mean by that. You mean a virtual device that can be exposed in lieu of the actual fan?

I can see kinda the approach here, create the virtual device, map each button via a piston or a local simple rule (the latter probably better for simplicity) and have button 1=33, 2=66, 3=99, 4=0 and then expose the controller to HomeKit. The question is just… how do I make that look like a fan to HomeKit, so Siri and all the other related things that rely on that device type to be correct will work. Hmm… a different problem at least

Could still expose the fan (maybe not display it) for automation purposes as Siri, etc. will react to the fan events even if they are initiated from the button controller.

what driver are you using for this?

Are you exporting the devices to HK as a fan, dimmer or some other device?

I have fans, Homebridge, a custom virtual fan driver I have worked on, and also working on a Z-Wave Universal Fan Controller driver.

I will flag this for follow up and see if I can come up with anything.

I have another person looking for help around the same topic as well!

Im using the Inovelli provided drivers, since I make extensive use of the custom capabilities those provide. They export as Fan type

Oh nice! I do want to be able to keep using the manufacturer provided drivers though, as I do use a lot of the advanced features of the devices that are exposed by them. I’d prefer (given any choice) to have some of this config shifted to the integration level instead. But that’s me - just some more control over what’s exposed to HomeKit

On my setup I solved some of the issues by mapping the real device to a virtual device that plays nicer with Homekit. May be a possible solution.

Yeah I think @thebearmay was suggesting something similar! Do you have any tips on what that might look like? I was poking at the virtual fan controller briefly just now but it’s got a crapload of speeds I think would confuse things more, and I don’t see where I can grab the code to modify it

The more I play with the native fan integration, the more I think it just needs to be changed so Low, Medium and High aren’t quite so far apart. By using this integration I’ve regained access to all 3 fan speeds, but the “medium” band stretching from 20% to 60% is just too big a block to gain good control over using the HomeKit slider steps. I personally think this would be a whole lot more usable if the 3-speed fan control devices had steps at 33, 66, and 100 instead of 20, 60, 100. Seems like a pretty minor and impactful change.