HomeKit Import pairs Hubitat directly to a Wi-Fi/LAN HomeKit (HAP) accessory, reads what it exposes, and auto-creates the matching Hubitat devices — with live updates and control. Think of it as Homebridge in reverse: instead of exporting Hubitat devices to HomeKit, it imports HomeKit accessories into Hubitat. 100% local — no cloud account, no Apple hub, no bridge, no extra hardware. It speaks HAP natively on the hub (SRP pairing, encrypted session, the lot), so the accessory talks to Hubitat exactly as it would to a HomePod/Apple TV.
How it works
-
Install from HPM (search "HomeKit Import").
-
Add a Virtual Device of type "HomeKit Accessory".
-
Enter the accessory's IP and 8-digit HomeKit setup code, Save.
-
It pairs, discovers every supported service, and creates a child device for each — a garage opener becomes a Garage Door device, a sensor becomes a sensor, a bulb becomes a dimmer. Physical changes on the device push to Hubitat in real time.
I suggest you use DHCP reservation for said device. I’ve seen some devices losing the initial IP and grabbing another one. That will throw the Hubitat device “offline” but with DHCP reservation/static IP, that should never happen.
Supported types
Switch/Outlet, dimmable & color Lights, Locks, Garage Door openers, Window shades/blinds, Fans, Thermostats (generic), Contact/Motion/Occupancy/Temperature/Humidity/Light sensors, Battery. Each device also carries the accessory's manufacturer, model, and firmware.
What it is / isn't
- LAN/Wi-Fi HomeKit accessories only (anything with an IP).
- Not Bluetooth-only or Thread-only devices (the hub has no BLE/Thread radio for HAP).
- HomeKit allows multiple controllers, so depending on the accessory this can coexist with Apple Home — it doesn't always have to replace it. (Some accessories allow only one controller; for those it's one or the other.)
Pairing / release
The accessory must be unpaired or have a free pairing slot; if it's fully paired to Apple Home and won't take another controller, reset HomeKit on it first. Built-in Unpair (clean HAP RemovePairing — frees the slot, like a Z-Wave exclude) and Forget (local-only, for a dead/offline accessory). Always Unpair before deleting the Hubitat device.
Connection modes
Persistent (default, instant event push) or On-demand poll (fallback for accessories that won't hold a session).
Status
The HAP engine and the full pair → discover → control → live-update loop are validated on real hardware (a Meross garage opener). Several types are mapped from the HomeKit spec but haven't met a real device yet — if you try one, a Dump Accessories log is gold. Unknown device? Click Dump Accessories and post the log; if it's an unmapped service type, adding it is usually quick.
Apache 2.0, as-is. You control real hardware (locks, garage doors) at your own risk.
For the manual users:
1) Library — install FIRST (Libraries Code):
https://raw.githubusercontent.com/RamSet/hubitat/main/libraries/hap-core/hap-core.groovy
2) Parent (Drivers Code):
3) Child drivers (Drivers Code — only the types you actually have are needed, but the parent will warn if it tries to create one you skipped):
https://raw.githubusercontent.com/RamSet/hubitat/main/drivers/homekit-switch/homekit-switch.groovy
https://raw.githubusercontent.com/RamSet/hubitat/main/drivers/homekit-light/homekit-light.groovy
https://raw.githubusercontent.com/RamSet/hubitat/main/drivers/homekit-lock/homekit-lock.groovy
https://raw.githubusercontent.com/RamSet/hubitat/main/drivers/homekit-fan/homekit-fan.groovy
https://raw.githubusercontent.com/RamSet/hubitat/main/drivers/homekit-battery/homekit-battery.groovy
https://raw.githubusercontent.com/RamSet/hubitat/main/drivers/homekit-generic/homekit-generic.groovy










