Looking for installation, setup, and the short overview? See README.md.
This file contains practical details for users who want more information about this integration than just the README file
The integration aims to support all devices and sensors exposed by the Homely API.
Not every device shown in the Homely app is exposed through the API. If Homely does not expose a device or sensor, the integration cannot add it in Home Assistant. Some vendor-specific devices, such as the Namron Smart Plug 16A, are known examples.
The Homely API is read-only for now. Many users have contacted Homely by email to ask whether write access is planned, but the replies have varied. Based on those replies, it currently seems that Homely does not have plans to add write access.
If a device is missing, or a device only shows partial data, use the Missing device or sensor issue form.
When Homely adds or removes devices on a home, the integration reloads the config entry automatically. New devices can then appear automatically. Devices that disappear from the API are not deleted automatically.
All Frient devices should be supported. Most locks and other devices shown in the Homely app should also be available. Some vendor-specific devices, such as the Namron Smart Plug 16A, are currently not exposed through the API and therefore cannot be supported. The goal is to support all devices and sensors available through the Homely API, but sadly not every device shown in the Homely app is necessarily available through that API. If a device is missing, or a device is present but missing sensors, please use the Missing device or sensor issue form. The Homely API is read-only for now. Many users have contacted Homely by email to ask whether direct device control is planned, but the responses have varied. Based on those replies, it currently seems that Homely does not have plans to add direct device control.
| Device type | Typical entities |
|---|---|
| Home | Alarm status, WebSocket status, Battery status, Online |
| Frient motion sensors | Motion, Temperature, Battery low, Online |
| Frient door/window sensors | Contact, Temperature, Battery low, Online |
| Frient smoke detectors | Fire, Tamper, Temperature, Battery low, Online |
| Frient flood alarms | Flood, Temperature, Battery low, Online |
| Frient HAN meters | Consumption, Production, Demand, Metering Check, Online |
| Most locks | Lock, Door, Low battery, Jammed, Online |
The config flow now selects locations by the actual Homely location name returned by the API.
- If your account has only one location, it is selected automatically during setup.
- If your account has multiple locations, Home Assistant shows one location dropdown.
- The dropdown includes an
Add all homesoption together with the available individual locations. - If you choose
Add all homes, the integration creates the first entry during setup and then adds the remaining available locations automatically. Add all homescreates one config entry per available location.- Locations that are already configured are skipped automatically.
- The integration prevents adding the same location twice.
- If you want to use a different location later, remove the existing entry and add the integration again for the desired location.
Advanced runtime settings such as polling interval and WebSocket behavior live in the integration Options flow, not in the initial login step.
Possible alarm states shown in Home Assistant:
disarmedarmed_homearmed_awayarmed_nightarmingtriggered
Status of batteries is on when at least one device reports a low or defective battery. It is off when no battery problem is detected.
The WebSocket status sensor can show:
Not initializedConnectingConnectedDisconnected
When available, reason shows the current websocket reason and last_disconnect_reason keeps the latest disconnect reason after reconnect.
If Homely stops reporting a device, you can remove it manually in Home Assistant:
- Go to Settings → Devices & Services → Homely.
- Open the stale device.
- Click Delete device.
The integration only allows deleting Homely devices that are no longer present in the latest API data. The home device itself is protected and cannot be deleted.
Enable WebSocket = onandPolling while WebSocket is connected = on: Polling continues at the configured interval, and WebSocket provides live updates.Enable WebSocket = onandPolling while WebSocket is connected = off: Polling pauses while WebSocket is connected, but the integration still does a safety poll every 6 hours. If WebSocket disconnects, the integration requests an immediate refresh and then continues polling until WebSocket reconnects.Enable WebSocket = off: Polling-only mode.
Contributions are very welcome, and I really appreciate everyone who takes the time to help improve this integration.
If something does not work as expected, please open a GitHub issue and choose the matching form:
If you have an idea, a feature request, or something that should be improved, please open a GitHub issue.
Before opening a pull request, run:
python -m ruff check custom_components testspytestpython -m mypy --config-file mypy.ini -p custom_components.homely