A HACS custom integration for Skylink Orbit Wi‑Fi garage
door openers — the Atoms, Atoms Pro, and Nova controllers driven by
the Orbit Home app (com.mtqqdemo.skylink).
Not the same as
bhyve-home-assistant, which is for Orbit Irrigation's B‑hyve sprinklers — a different company that happens to share the name "Orbit".
SPEC.md); the code is arranged so that wiring in a real, captured
protocol is a localized edit to orbitclient/const.py and two parse helpers in
orbitclient/models.py. Everything else — auth lifecycle, coordinator, entities,
config/reauth/options flows, and the test suite — is complete and green.
If you own one of these openers and can run a mitmproxy capture, see
SPEC.md §2.1 — that's the one missing
piece.
| Entity | Description |
|---|---|
Cover (garage) |
Open / close / stop the door, live door state |
| Light | The opener's built‑in light (if present) |
| Binary sensor | Obstruction (problem), connectivity |
| Sensor | Wi‑Fi signal, battery (diagnostic) |
State is polled every 30 s, with an optional MQTT push channel for near‑instant updates that falls back to polling if the broker is unreachable.
- HACS → ⋮ → Custom repositories → add
https://github.com/xerhab/ha-orbit, category Integration. - Install Orbit Garage Door Opener (Skylink), then restart Home Assistant.
- Settings → Devices & Services → Add Integration → Orbit and sign in with your Orbit Home account.
Advanced fields let you override the API base URL and MQTT host — use these to point at a captured host without editing source.
Copy custom_components/orbit_gdo into your Home Assistant config/custom_components/
directory and restart.
uv sync --group dev # or: pip install -e '.[dev]'
uv run ruff check .
uv run pytestThe orbitclient/ package under custom_components/orbit_gdo/ has no Home
Assistant dependency and is unit‑tested standalone with aioresponses.
MIT — see LICENSE.