---
title: "Shelly Pro 3"
description: "Shelly Pro 3 in TapHome over local HTTP JSON-RPC: switch three independent 16 A relay channels on the DIN rail. Pure switching, no power metering."
url: "https://taphome.com/en/compatibility/shelly-pro-3/"
language: en
lastmod: 2026-03-29
generator: hugo
ai:
  topics: ["http","i/o-module","wifi","relay","din-rail","3-channel","mdns","ethernet"]
  questions: ["How to integrate Shelly Pro 3 with TapHome?","What does the Shelly Pro 3 TapHome template control?","How to connect Shelly Pro 3 via HTTP to TapHome?","What is the difference between Shelly Pro 3 and Pro 3EM?","Can Shelly Pro 3 switch three-phase circuits?","Why is Shelly Pro 3 not responding to TapHome commands?"]
---

# Shelly Pro 3

Communication: Packet Parser → HTTP

- [Shelly Pro 3 Product Page](https://www.shelly.com/en/products/shop/shelly-pro-3)

> Network address
> 
> TapHome reaches this device at the address entered on import. Give the device a fixed address — an IP reservation in the router, or its mDNS name if it supports one — otherwise the integration stops working when the router changes the address.
> 
> [Network Preparation](https://taphome.com/en/docs/setup/network-preparation/)

## Integration guide

The Shelly Pro 3 is a DIN rail mountable 3-channel relay module with potential-free contacts. Each of the three independent outputs can switch up to 16 A (total 48 A across all channels), making it suitable for controlling lighting circuits, heating elements, or three-phase loads where each phase is switched separately. TapHome communicates with the device over HTTP using the Gen2 JSON-RPC 2.0 API on the local network — no cloud connection is required.

Unlike the Shelly Pro 3EM, which is an energy meter (monitoring only), the Pro 3 is a pure relay switching device with no power metering capability. The device connects via WiFi, Ethernet (RJ45), or Bluetooth and is designed for professional installation in electrical distribution boards.

## Configuration

The Shelly Pro 3 connects over WiFi or Ethernet. During TapHome template import, enter the device's IP address (default placeholder `192.168.0.1`).

> [!WARNING]
> Authentication must be **disabled** on the Shelly device for TapHome integration. TapHome does not support HTTP Digest Auth used by Gen2 devices. Open the Shelly web UI (`http://{device-ip}`) → Settings → Authentication and ensure it is turned off.

> [!WARNING]
> The LAN cable must only be plugged in or unplugged when the device is **powered off**. Hot-plugging the Ethernet cable may cause issues.

> [!NOTE]
> If ECO mode is enabled on the Shelly device, it may cause communication timeouts due to the fast poll intervals used by the template (2.5–3 seconds). Disable ECO mode in the Shelly web UI if you experience intermittent connectivity issues.

## Device capabilities

### Relay control

The template exposes three independent switch devices, one for each relay channel. Each relay state is read from the `/rpc/Switch.GetStatus?id=N` response (`output` field, boolean) and controlled via `/rpc/Switch.Set?id=N&on=true` or `on=false`, where N is 0, 1, or 2.

All three channels operate independently — they can be on different circuits, different AC phases, or even mixed AC/DC loads. The relay contacts are potential-free (dry contacts), so each output can switch a completely separate circuit from the power supply feeding the device itself.

### Service diagnostics

The template exposes module-level service attributes for device monitoring:

- **WiFi** — connected SSID name
- **IP address** — current station IP
- **Signal strength** — WiFi RSSI in dB
- **MAC** — device MAC address

The module read script also checks for available firmware updates and pending restart requirements, surfacing these as warnings in the TapHome interface.

### Service actions

Two service actions are available at the module level:

- **Update firmware** — triggers a firmware update to the latest stable release via `/rpc/Shelly.Update`
- **Reboot** — triggers a device reboot via `/rpc/Shelly.Reboot`

### Additional capabilities

The Shelly Pro 3 also exposes physical switch/button input states (S1, S2, S3) via the Input component, internal device temperature, device uptime, RAM usage, device time, and Ethernet status via the RPC API. An auto-off timer is available through the `toggle_after` parameter on the Switch.Set command. These capabilities can be added in a future template update.

## Troubleshooting

### Device not responding

1. Verify the Shelly is connected to WiFi or Ethernet and has a valid IP address
2. Try using the mDNS hostname (`ShellyPro3-AABBCCDDEE.local`) instead of the IP address — the IP may have changed after a DHCP renewal
3. Open `http://{device-ip}/rpc/Shelly.GetDeviceInfo` in a browser — if it responds with JSON, the device is reachable
4. Check that TapHome Core and Shelly are on the same network / VLAN
5. Confirm authentication is disabled on the Shelly device

### Only some channels responding

1. Verify each channel is correctly addressed (id=0 for Output 1, id=1 for Output 2, id=2 for Output 3)
2. Check the relay LED indicators on the device front panel — red LED means the corresponding relay is closed (ON)
3. Test the unresponsive channel manually via browser: `http://{device-ip}/rpc/Switch.Set?id=N&on=true`

### Inductive load issues

For inductive loads (fans, transformers, LED drivers), an RC snubber (0.1 µF / 100 Ohm / 1/2 W / 600 VAC) is recommended on the relay output to protect against voltage spikes and extend relay lifetime.

> [!WARNING]
> Gen2 Shelly devices support up to **6 concurrent HTTP connections**. Avoid polling from too many systems simultaneously (TapHome, Home Assistant, custom scripts) to prevent connection exhaustion.

## How to install in TapHome

### Prerequisites

- Shelly device installed and powered on
- Local Wi-Fi network (2.4 GHz)
- TapHome CCU on the same network

### Step 1 — Connect Shelly to Wi-Fi

**Option A — Shelly app (recommended):**

1. Download the [Shelly app](https://www.shelly.com/en/support/shelly-app) (iOS / Android)
2. Tap **+** → **Add Device** and follow the Bluetooth pairing wizard
3. Enter your Wi-Fi credentials when prompted

**Option B — AP mode (no app):**

1. On first power-up the device creates a hotspot: `ShellyXXX-AABBCCDDEE`
2. Connect your phone/PC to that hotspot
3. Open `http://192.168.33.1` → **Internet & Security** → **Wi-Fi Mode - Client**
4. Enter SSID and password → **Save**

> [!NOTE]
> Shelly only supports **2.4 GHz** networks. 5 GHz networks will not appear in the scan.

### Step 2 — Find the device address

Shelly Gen1 devices support **mDNS** (Zeroconf). You can reach the device using a hostname instead of an IP address:

```
shelly<model>-<MAC>.local
```

For example: `shelly1pm-AABBCCDDEE.local` (MAC address in uppercase hex, no colons).

> [!TIP]
> **Recommended: use the TapHome IP Scanner.** Open the TapHome app and use the **IP Scanner** (Settings → Network → Scan). The scanner will discover devices on your network and show both the IP address and the mDNS hostname. Use the **hostname** instead of the IP address for a more reliable connection — it stays the same even if the device's IP changes after a router reboot.

**Alternative methods** to find the IP address:

- **Shelly app:** Device detail → **Device info** → IP address
- **Shelly web UI:** Connect to the device AP before Wi-Fi setup — the IP is shown after saving
- **Router DHCP table:** Look for a hostname like `shelly1pm-AABBCCDDEE`

### Step 3 — Configure in TapHome

1. In TapHome, add a new **Packet Parser (HTTP)** module
2. **Address:** enter the mDNS hostname (e.g., `shelly1pm-AABBCCDDEE.local`) or IP address from Step 2
3. **Port:** `80` (default, no change needed)
4. Import the template — TapHome will poll `/status` to read device state

> [!NOTE]
> HTTP authentication is disabled by default on Shelly devices. If you have enabled login protection, TapHome does not support HTTP Basic Auth at this time — keep auth disabled for TapHome integration.

## Available devices 3

These devices appear in TapHome after import.

Shelly Pro 3 Module

Service Attributes

|                 |
|-----------------|
| WiFi            |
| IP address      |
| Signal strength |
| MAC             |

Service Actions

|                 |
|-----------------|
| Update firmware |
| Reboot          |

Custom Variables

Read (module)

```taphome
VAR response := SENDHTTPREQUEST("/rpc/Sys.GetStatus");
IF response.IsSuccess
    Sys.GetStatus := response.Content;
END

response := SENDHTTPREQUEST("/rpc/Sys.GetConfig");
IF response.IsSuccess
    Sys.GetConfig := response.Content;
END

response := SENDHTTPREQUEST("/rpc/WiFi.GetStatus");
IF response.IsSuccess
    WiFi.GetStatus := response.Content;
END

if ! ISNULL(parsejson(Sys.GetStatus, "available_updates.stable", true))
    addwarning("New firmware update is available");
end

if parsejson(Sys.GetStatus, "restart_required", true)
    addwarning("Restart required");
end
```

Service Attributes

Wifi

```taphome
PARSEJSON(WiFi.GetStatus, "ssid")
```

${ipAddress}

```taphome
PARSEJSON(WiFi.GetStatus, "sta_ip")
```

${xml\_signal\_strength} \[dB]

```taphome
PARSEJSON(WiFi.GetStatus, "rssi")
```

MAC

```taphome
PARSEJSON(Sys.GetStatus, "mac")
```

Service Actions

${xml\_update\_fw}

```taphome
VAR response := SENDHTTPREQUEST("/rpc/Shelly.Update?stage=\"stable\"");
IF response.IsSuccess
    return("OK");
else
    return("Error");
END

```

Reboot

```taphome
VAR response := SENDHTTPREQUEST("/rpc/Shelly.Reboot");
IF response.IsSuccess
    return("OK");
else
    return("Error");
END
```

Switch 1 Switch Read and write

boolean

Values / States: ON · OFF

Read switch state

```taphome
VAR response := SENDHTTPREQUEST("/rpc/Switch.GetStatus?id=" + id);
IF response.IsSuccess
    Switch.GetStatus := response.Content;
END
return(parsejson(Switch.GetStatus, "output"));
```

Write switch state

```taphome
VAR path := "/rpc/Switch.Set?id=" + id + "&on=" + SWITCH(St, 1, "true", "false");
SENDHTTPREQUEST(path);
```

Switch 2 Switch Read and write

boolean

Values / States: ON · OFF

Read switch state

```taphome
VAR response := SENDHTTPREQUEST("/rpc/Switch.GetStatus?id=" + id);
IF response.IsSuccess
    Switch.GetStatus := response.Content;
END
return(parsejson(Switch.GetStatus, "output"));
```

Write switch state

```taphome
VAR path := "/rpc/Switch.Set?id=" + id + "&on=" + SWITCH(St, 1, "true", "false");
SENDHTTPREQUEST(path);
```

Switch 3 Switch Read and write

boolean

Values / States: ON · OFF

Read switch state

```taphome
VAR response := SENDHTTPREQUEST("/rpc/Switch.GetStatus?id=" + id);
IF response.IsSuccess
    Switch.GetStatus := response.Content;
END
return(parsejson(Switch.GetStatus, "output"));
```

Write switch state

```taphome
VAR path := "/rpc/Switch.Set?id=" + id + "&on=" + SWITCH(St, 1, "true", "false");
SENDHTTPREQUEST(path);
```

**Connection:** Packet Parser → HTTP • Hostname: `ShellyPro3-{MAC}.local`

Possible improvements (9)

- Input 1 State — Physical switch/button input S1 state, available via /rpc/Input.GetStatus?id=0
- Input 2 State — Physical switch/button input S2 state, available via /rpc/Input.GetStatus?id=1
- Input 3 State — Physical switch/button input S3 state, available via /rpc/Input.GetStatus?id=2
- Device Temperature — Internal temperature in °C, available in Switch.GetStatus response (non-metered devices may still report temperature)
- Uptime — Seconds since last reboot, available in Sys.GetStatus response
- RAM Usage — Total and free RAM in bytes, available in Sys.GetStatus response
- Device Time — Current device time in HH:MM format, available in Sys.GetStatus response
- Auto-off Timer — Auto-reset timer in seconds via toggle\_after parameter, could be added as switch parameter for all 3 channels
- Ethernet Status — Pro 3 has RJ45 LAN port; Ethernet status (IP, link) available via /rpc/Ethernet.GetStatus

## Import parameters

Enter these values when you import the XML.

| Asked in the app | Default       |
|------------------|---------------|
| IP address       | `192.168.0.1` |

## Sources

- Shelly Gen2+/Gen3 RPC API Reference
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/) 2026-03-29
- Shelly Gen2+ Switch Component API
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Switch/) 2026-03-29
- Shelly Gen2+ System (Sys) Component API
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Sys/) 2026-03-29
- Shelly Gen2+ WiFi Component API
  
  [shelly-api-docs.shelly.cloud](https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/WiFi/) 2026-03-29
- Home Assistant Shelly Integration
  
  [www.home-assistant.io](https://www.home-assistant.io/integrations/shelly/) 2026-03-29
- Shelly Pro 3 Knowledge Base
  
  [kb.shelly.cloud](https://kb.shelly.cloud/knowledge-base/shelly-pro-3) 2026-03-29

## Related Documentation

- [Packet Parser Integration](https://taphome.com/en/compatibility/packet-parser-guide/)
- [Packet Parser (HTTP, TCP, UDP, FTP, MQTT)](https://taphome.com/en/docs/integration/packet-parser/)
- [Packet parser functions](https://taphome.com/en/docs/script/packet-parser/)
- [Parsing functions](https://taphome.com/en/docs/script/parsing-functions/)

