I have a (pretty clunky) solution to keeping HomeKit accessories organised:
It’s a macOS app, and a script:
The main functionality works like so…
- Fetch at all of your accessories in HomeKit
- For the accessories that are from Home Assistant:
a. Look up the Room/Area
b. Note when Home Assistant and HomeKit rooms conflict - Saves a plan that resolves the accessory room conflicts by selecting the room from Home Assistant
Example:
$ scripts/manage_homekit_rooms.py
Wrote plan CSV: artifacts/homekit-plan-20260312-223133.csv
Accessories scanned: 201
Planned moves: 8
Dry run only. Re-run with --apply to move accessories.
...
$ ./manage_homekit_rooms.py --apply-plan artifacts/homekit-plan-20260312-223133.csv
Loaded plan CSV: artifacts/homekit-plan-20260312-223133.csv
Rows in plan: 99
Planned moves: 8
Moves applied: 8
Wrote snapshot CSV: artifacts/homekit-snapshot-20260312-223725.csv
Some other features:
- Edit the CSV before applying (might be handy for bulk changes)
- Save and restore snapshots (e.g. don’t check Home Assistant)
