Genie Aladdin Connect
The genie_aladdin_connect driver controls Genie / Overhead Door "Aladdin Connect" Wi-Fi garage door openers via the cloud REST API that the Aladdin Connect mobile app uses. It polls per-door status, opens and closes individual doors, and surfaces battery and Wi-Fi link state.
The driver is cloud-only — Overhead Door does not publish a LAN protocol — and uses the same endpoint as the mobile app. Overhead Door has not published an official integrator key, so the mobile app x-api-key value must be supplied by the integrator. Treat this driver as best-effort: it has been stable for years but the vendor may change endpoints or keys without notice.
Prerequisites
- Active Aladdin Connect account with at least one opener paired in the mobile app.
- The mobile-app
x-api-keyvalue. This is the same key used by the Android and iOS apps and is widely published in open-source garage-door integrations (Home Assistantgenie_aladdin_connectand similar). The integrator must extract or look up this value; the driver does not ship with a default. - Outbound HTTPS from the GEM controller to the AWS API Gateway endpoint (default
https://pxdqkls7aj.execute-api.us-east-1.amazonaws.com).
Setup
- Confirm the mobile app works. If the Aladdin Connect app cannot reach the opener, this driver cannot either.
- Create the device under System → Devices with driver
genie_aladdin_connect. Set:username— account emailpassword— account password (stored encrypted)api_key— the mobile appx-api-keyvalue (stored encrypted)
- Confirm connection. From the Script Console:
You should see one entry per door, e.g.:await gem.command({device: <device_id>, action: 'get_doors'});[{ "address": "01:23:45:67:89:AB:1", "device_id": "01:23:45:67:89:AB", "door_index": 1, "name": "Main Door", "state": "closed", "battery_level": 100 }]
- Create one zone per door under System → Zones with
addressset to the<device_id>:<door_index>string fromget_doors. Assign the zone to thegaragesubsystem so the standardopen/closeverbs map correctly. - Test a command.
await gem.command({device: <device_id>, action: 'open', address: '01:23:45:67:89:AB:1'});
Attributes
Device
| Attribute | Required | Type | Notes |
|---|---|---|---|
username | yes | string | Aladdin Connect account email. |
password | yes | string (secure) | Aladdin Connect account password. |
api_key | yes | string (secure) | Mobile-app x-api-key header value. |
base_url | no | string | Override only if the vendor rotates the API endpoint. Defaults to the AWS API Gateway URL. |
status_interval | no | int | Poll interval (ms). Default 30000, minimum 5000. |
app_version | no | string | Reported app version in the login payload. Defaults to 5.30. |
build_number | no | string | Reported build number. Defaults to 2042. |
Zone
The zone address is required and follows the format <device_id>:<door_index> (e.g., 01:23:45:67:89:AB:1). The poller writes:
| Attribute | Type | Source |
|---|---|---|
state | string | open / closed / opening / closing / unknown, derived from door_status. |
battery | int | Door sensor battery percentage if reported. |
Commands
| Name | Args | Description |
|---|---|---|
get_devices | — | List openers (one device per gateway) on the account. |
get_doors | — | List every door with its address and current state. |
get_status | address | Force-refresh and return raw status for a single door. |
open | address | Send OpenDoor. |
close | address | Send CloseDoor. |
Door state mapping
The Aladdin Connect API reports door_status as an integer. The driver maps it to GEM zone state as follows:
door_status | GEM state |
|---|---|
| 1 | open |
| 2 | opening |
| 3 | open (timeout-opening surfaced as open to avoid a stuck zone) |
| 4 | closed |
| 5 | closing |
| 6 | closed (timeout-closing surfaced as closed) |
| 0 / 7 | unknown |
Known limitations
- Cloud-only. No LAN protocol path is available.
- There is no
stopoperation in the cloud API — once a door starts moving it runs to completion or hits the opener's safety reverse. - The
x-api-keyis not officially licensed. If Overhead Door rotates the key, the driver will return 401/403 on every request until a new key is supplied. - Movement timing comes from the poll interval. With the default 30 s interval you may see a door transition
closed → opening → openrather than catch every intermediate frame.
Troubleshooting
| Symptom | Check |
|---|---|
login http 401 | Verify the email and password in the Aladdin Connect mobile app. If those work, the api_key is likely stale. |
login response missing token | The endpoint may have changed. Confirm base_url and app_version against the current mobile app. |
| Driver re-auths in a tight loop | The api_key is wrong — every authenticated call returns 401/403, the driver re-logs in, and the next call still returns 401/403. |
Door state stuck on opening or closing | The opener hit a safety reverse, or the poll missed the transition. Run get_status to refresh, or open/close the door manually to clear. |
door not found for address | Run get_doors and verify the GEM zone address matches the printed address (device_id:door_index). |