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_bufferRaw /buffstatus.xml for diagnostics.
clear_bufferClear 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.