
The Shelly i3 is a compact Wi-Fi 3-input action and scenes controller (model SHIX3-1). It has no relays or outputs — it functions purely as an input device that monitors three external switches or push-buttons connected to terminals SW1, SW2 and SW3. The 40 x 36 x 10 mm form factor allows it to be installed inside a standard back-box behind an existing wall switch. It is powered from 110–230 VAC (neutral required) or 24–60 VDC and consumes less than 1 W.
TapHome communicates with the device over HTTP on the local Wi-Fi network — no cloud connection is required. For each input the template creates two devices: a multi-value switch that decodes multi-click events (single, double, triple, long, and combined sequences) and a reed contact that exposes the raw 0/1 input state plus a service action to switch between toggle and momentary mode.
Setup
Wi-Fi pairing and IP address
After power-up, the i3 boots into Access Point mode with SSID shellyi3-XXXXXX (where XXXXXX is the last 6 hex digits of the MAC). To pair it with the home network:
- Connect a phone or laptop to the i3 access point
- Open
http://192.168.33.1in a browser (or use the Shelly mobile app) - In the web UI go to Internet & Security → WIFI MODE - CLIENT, enter your home Wi-Fi credentials and save
- The device reboots and joins the home network via DHCP
To recover the assigned IP address use the router’s DHCP lease table or the mDNS hostname shellyi3-XXXXXXXXXXXX.local (12-character MAC suffix, advertised as _http._tcp.local.). During TapHome template import, enter this IP address as the only required parameter.
Disable HTTP authentication
TapHome cannot authenticate against the device. In the Shelly web UI go to Internet & Security → RESTRICT LOGIN and make sure the option is disabled before importing the template — otherwise every poll will fail with HTTP 401.
Button type configuration
Each of the three inputs can run in one of five btn_type modes. Only two are relevant for TapHome and exposed as a service action on the I1 / I2 / I3 devices:
- Momentary — for push-buttons. The firmware decodes single short push (
S), long push (L), double short push (SS), triple short push (SSS), short→long (SL) and long→short (LS). Required for the Events I{N} devices to fire anything other thanNone. - Toggle — for traditional rocker or toggle switches. Only the raw 0/1 state is reported; the multi-value switch stays at index 0.
The button type can be changed at any time from TapHome via the Button Type service action on each I1 / I2 / I3 device, or directly in the Shelly web UI under Settings → Input/Output settings.
The firmware also supports
edge,detachedandactionmodes, but these are not exposed in the TapHome template. They can still be set from the Shelly web UI without breaking the integration — only the multi-click decoding behaviour changes.
Device capabilities
Multi-click event decoding (Events I1, Events I2, Events I3)
For each input, a multi-value switch decodes the firmware-level event code into one of seven values:
| Index | Event | Shelly code |
|---|---|---|
| 0 | None | "" (idle) |
| 1 | Shortpush | S |
| 2 | Longpush | L |
| 3 | Double Shortpush | SS |
| 4 | Triple Shortpush | SSS |
| 5 | Shortpush + Longpush | SL |
| 6 | Longpush + Shortpush | LS |
The template polls /input/{0,1,2} every 2.5 seconds and reads the event field. With 6 events × 3 inputs Shelly markets the i3 as supporting up to 18 distinct multi-click actions (24 if raw on/off state changes are counted as separate triggers).
The long-push threshold and the multi-push window are configured globally on the device (defaults: 800 ms for long press, 500 ms inter-press window). They can be tuned from the Shelly web UI under Settings → Long Push Duration and Multi Push Time.
Raw input state and button-type control (I1, I2, I3)
For each input a reed-contact device exposes the raw logical state read from /input/{N} input field (0 = open, 1 = closed, after the optional btn_reverse inversion). Each I1 / I2 / I3 device also carries:
- Button Type service attribute — current
btn_typevalue (toggle / momentary / edge / detached / action) - Button Type service action — switches the input between Toggle and Momentary by writing
POST /settings/input/{N}?btn_type=...
The raw state is suitable for door / window magnetic contacts wired to the SW terminals or for tracking the position of a toggle switch in real time.
Service diagnostics
A single module-level service attribute exposes the Wi-Fi SSID the i3 is currently connected to (read from /status → wifi_sta.ssid). Other Gen1 diagnostics (uptime, MAC, RSSI, firmware update flag) are available on the device’s REST API but not exposed in this template.
Multi-click events fire only in momentary mode. If a physical input is wired through a traditional toggle switch, configure that input as Toggle and use the I{N} reed-contact device to read its 0/1 state — the matching Events I{N} device will stay at index 0.
Troubleshooting
Multi-click events not detected
- Verify the input is in momentary mode — open the I{N} device in TapHome, run the Button Type service action and select Momentary, or set it directly in the Shelly web UI under Settings → Input/Output settings
- In toggle mode the firmware reports only state changes; the Events I{N} multi-value switch remains at index 0
- Adjust Long Push Duration (default 800 ms) and Multi Push Time (default 500 ms) in the Shelly web UI if presses are decoded as the wrong event
- Long sequences such as
SSS,SLorLSneed the user to keep all presses inside the multi-push window — release pauses longer than that window are decoded as separateSevents
Same event repeats forever / “stuck” event
The event field returned by /input/{N} is the last event decoded — the firmware does not auto-clear it. TapHome reads this field on every poll, so the multi-value switch will keep reporting the previous event until a new one occurs. This is normal behaviour and does not indicate a fault. When writing custom logic that triggers on every press, pair the event with the monotonic event_cnt counter (also exposed in /input/{N}) to detect a change instead of relying on the event value alone.
Device not responding
- Verify the i3 is connected to Wi-Fi — open
http://{device-ip}/shellyin a browser; if it returns a JSON object, the device is reachable - Try the mDNS hostname
shellyi3-XXXXXXXXXXXX.localinstead of the IP address — the IP may have changed after a DHCP renewal - Make sure HTTP authentication is disabled under Internet & Security → Restrict login — TapHome cannot send credentials and every request will return HTTP 401
- Check that the TapHome Core and the Shelly device are on the same network or VLAN with mDNS / multicast allowed
Gen1 Shelly devices accept a maximum of 2 concurrent HTTP connections. The shipped template polls every input at 2.5 s intervals which is already close to the limit. Do not lower the poll interval, and avoid running another system (e.g., Home Assistant, custom scripts) that polls the same i3 simultaneously — communication may become unreliable.
The XML template ships with three reserved multi-value indices (7, 8, 9 with raw codes 71/72/73 and generic labels “7” / “8” / “9”). The Gen1 firmware emits no events beyond
S,L,SS,SSS,SLandLS, so these indices are unused placeholders and the corresponding Events I{N} device value should never reach 7-9 in practice.