[RELEASE] Modern Forms Fan and Light Driver for HomeKit Integration

Modern Forms Fan and Light Driver for HomeKit

A Hubitat driver for Modern Forms fans and lights that works with HomeKit Integration by utilizing child devices. Based on drivers from @bertabcd1234, @bhamiltoncx, @1info, and Hubitat.

Raw URL: raw.githubusercontent.com/staines/modern-forms-for-hubitat-and-homekit/main/modern-forms-for-hubitat-and-homekit.groovy


  1. Add to Hubitat as a Virtual Device with User Type (bottom of list) of Modern Forms for Hubitat and HomeKit
  2. Set IP Address in main device and other preferences
  3. Add child devices to HomeKit Integration


  • To support various scenarios, you can decide to enable or disable the light and fan, which will delete the respective device. You can also choose whether to turn on the device when setting a new level or speed.

  • The current HomeKit integration sends a lighting level of 100 when turning the light on.

  • Modern Forms fans retain the last used fan speed, but this makes HomeKit think the fan is still on even if the switch is turned off. To circumvent this, the driver ignores the fan speed from the fan and tells Hubitat the fan speed is off if the switch is off.

1 Like

@poet - Curious, what features or enhancements does this add that the one by @bhamiltoncx doesn’t?

The driver by @bhamiltoncx uses a child device for the light but not the fan, which makes the fan incompatible with HomeKit Integration. I think Generic Component Fan Control was not released until after he made that driver.

I wrote this driver using Generic Component Fan Control to ensure compatibility with HomeKit Integration, and created various user preferences to further support that integration.

@poet - Thanks for putting this together. Trying it out now, and I’m getting the below errors; however, the commands are being successfully sent (fan is changing). Any idea what might be going on? My WAC fan is on Firmware 2.00.0037 / 02.06.0000
EDIT: Looks like it’s because I have the light device turned off. I turned on the light device, and I stopped receiving the error. Seems that in the driver the deviceNetworkId for the light is being queried even though the light does not exist.