Insteon Hub (Local)
Local-LAN HTTP control for the Insteon Hub 2245-222 (a.k.a. "Hub II"). Sends standard Insteon direct commands to dimmers, switches, outlets, and KeypadLincs paired with the hub. The Insteon cloud is not used.
Prerequisites
- An Insteon Hub 2245-222 with current firmware on a static or DHCP-reserved LAN IP. The older 2242 hub and the newer Insteon Hub Pro are NOT supported by this driver — they speak different protocols.
- Each Insteon device must already be linked to the hub (paired in the Insteon app or via SET-button linking before adding it to GEM).
- The hub username and password — these are the 6-character codes printed on the bottom sticker. They are NOT the Insteon cloud login.
- Outbound HTTP from the GEM server to the hub on the configured port (default 25105). No internet required.
Setup
- Find the hub's LAN IP. Open the Insteon app → House → Settings → House Information, or check your router's DHCP lease list.
- In GEM, add a new device with driver Insteon Hub (Local):
ip— hub IP, e.g.192.168.1.50port— default25105username— 6-character hub username from the bottom stickerpassword— 6-character hub password from the bottom sticker (encrypted at rest)
- Save. The driver will probe
/buffstatus.xmlto confirm credentials and start the polling loop. - Run get_buffer as a sanity check — you should see an XML buffer response.
- For each Insteon device you want to control, create a GEM zone with
addressset to the device's 6-hex-character id (dots optional). The id is on the back of every Insteon device and shown in the Insteon app under Device Info.
Attribute reference
Device
| Attribute | Type | Required | Notes |
|---|---|---|---|
ip | string | yes | LAN IP of the hub. |
username | string | yes | 6-character username from the bottom sticker. |
password | string | yes | 6-character password from the bottom sticker. Encrypted at rest. |
port | int | no | Local API port. Defaults to 25105. |
status_interval | int | no | Status poll interval in milliseconds. Defaults to 15000. |
Zone
| Attribute | Type | Notes |
|---|---|---|
address | string | Insteon device id (6 hex characters; dots, dashes, or colons allowed). |
state | string | Driver-set: on if level > 0, otherwise off. |
level | int | Driver-set: 0-100. Mapped from the device's 0x00-0xFF Insteon byte. |
Zone address format
1A.2B.3C or 1A2B3C or 1A:2B:3C or 1A-2B-3C
Six hex characters, case-insensitive, separators optional. The driver normalizes to upper-case and strips separators before building the PLM frame.
Commands
| Command | Args | Description |
|---|---|---|
on | address | Standard direct turn-on at full level (cmd1 0x11 / cmd2 0xFF). |
off | address | Standard direct turn-off (cmd1 0x13 / cmd2 0x00). |
set_level | address, level (0-100) | Dim to percentage. Mapped to 0x00-0xFF before sending. |
beep | address | Audible beep — useful for identifying a device on the bench. |
get_status | address | Request current on-level (0x19 0x00) and parse the ACK. |
get_buffer | — | Raw /buffstatus.xml for diagnostics. |
clear_buffer | — | Clear the hub message buffer. |
Known limitations
- KeypadLinc button LEDs and scene-button states are not yet read or written. Only the load on/off and dim level are exposed.
- Insteon does not push unsolicited state changes for every linked device. Wall-paddle changes are seen only on the next poll cycle (default 15 s).
- ACK parsing is buffer-scrape based. Under heavy buffer use the driver may miss the ACK and return
{ok: true, raw: null}; the next status poll will reconcile state. - Ramp rate, fade time, and X10 commands are not yet exposed.
- Linking new devices to the hub still happens through the Insteon app or the SET-button procedure — this driver does not do device pairing.
Troubleshooting
| Symptom | Check |
|---|---|
401 Unauthorized on connect | Verify the username and password match the printed sticker on the hub bottom. After a factory reset you must reboot the hub before retrying. |
| Commands accepted but state never updates | Run get_status against the address. If the buffer stays empty, verify the device is actually linked to the hub via the Insteon app. |
invalid insteon device id error | Address must be 6 hex characters. 1A.2B.3C, 1a2b3c, and 1A:2B:3C are all accepted; anything else is rejected. |
| Driver reports connected but no zone updates | The hub is reachable but no linked devices are responding. Wall-paddle test the device directly; if it works on the wall but not via the hub, re-link it to the hub. |