Skip to main content

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​

  1. Find the hub's LAN IP. Open the Insteon app → House → Settings → House Information, or check your router's DHCP lease list.
  2. In GEM, add a new device with driver Insteon Hub (Local):
    • ip — hub IP, e.g. 192.168.1.50
    • port — default 25105
    • username — 6-character hub username from the bottom sticker
    • password — 6-character hub password from the bottom sticker (encrypted at rest)
  3. Save. The driver will probe /buffstatus.xml to confirm credentials and start the polling loop.
  4. Run get_buffer as a sanity check — you should see an XML buffer response.
  5. For each Insteon device you want to control, create a GEM zone with address set 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​

AttributeTypeRequiredNotes
ipstringyesLAN IP of the hub.
usernamestringyes6-character username from the bottom sticker.
passwordstringyes6-character password from the bottom sticker. Encrypted at rest.
portintnoLocal API port. Defaults to 25105.
status_intervalintnoStatus poll interval in milliseconds. Defaults to 15000.

Zone​

AttributeTypeNotes
addressstringInsteon device id (6 hex characters; dots, dashes, or colons allowed).
statestringDriver-set: on if level > 0, otherwise off.
levelintDriver-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​

CommandArgsDescription
onaddressStandard direct turn-on at full level (cmd1 0x11 / cmd2 0xFF).
offaddressStandard direct turn-off (cmd1 0x13 / cmd2 0x00).
set_leveladdress, level (0-100)Dim to percentage. Mapped to 0x00-0xFF before sending.
beepaddressAudible beep — useful for identifying a device on the bench.
get_statusaddressRequest 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​

SymptomCheck
401 Unauthorized on connectVerify 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 updatesRun 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 errorAddress 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 updatesThe 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.