homebridge-unifi-wifi
v0.1.0
Published
Expose UniFi WiFi broadcasts as switches in HomeKit.
Maintainers
Readme
Homebridge UniFi WiFi
Expose selected UniFi WiFi broadcasts as stateful switches in Apple Home.
The plugin uses Ubiquiti's supported UniFi Network Integration API. It reads the complete WiFi
broadcast before changing its enabled state, preserving the rest of the broadcast configuration.
This project is under active development and has not been published to npm yet.
Requirements
- Homebridge 1.8 or 2.x
- Node.js 22 or 24
- A UniFi OS console with the Network Integration API
- A UniFi API key generated at unifi.ui.com
Installation
Until the package is published, clone the repository and link it into the Homebridge installation:
npm install
npm run build
npm linkConfiguration
Set the API key in the environment used to launch Homebridge:
export UNIFI_API_KEY='replace-with-your-api-key'Then add the platform to the Homebridge configuration:
{
"platform": "UniFiWifi",
"name": "UniFi WiFi",
"apiUrl": "https://192.168.1.1/proxy/network/integration",
"apiKeyEnvironmentVariable": "UNIFI_API_KEY",
"wifiBroadcasts": [
{
"name": "Guest",
"displayName": "Guest Wi-Fi"
}
]
}For remote access through UniFi's cloud connector, use:
https://api.ui.com/v1/connector/consoles/CONSOLE_ID/proxy/network/integrationWhen the console has multiple sites, configure either siteId or siteName. Stable site and WiFi
broadcast IDs are preferred because names can change.
TLS verification
TLS verification is enabled by default. If a local console uses an untrusted self-signed certificate,
set verifyTls to false only while you arrange a trusted certificate or local trust chain.
Behavior
- Each configured WiFi broadcast appears as a HomeKit switch.
- Switch state is refreshed every 30 seconds by default.
- Writes use a full read-modify-write cycle required by the UniFi API.
- A failed UniFi request leaves the last confirmed state in place and reports the accessory as unavailable.
- API keys are never included in plugin logs.
Development
npm install
npm run check
npm pack --dry-runLicense
MIT
