
The Shelly Plus 1PM is a compact Gen2+ Wi-Fi relay switch with built-in power metering. It fits behind a standard wall switch and can control one circuit up to 16 A (3500 W at 230 V AC) or 10 A (30 V DC). The device supports 110-240 VAC or 24-30 VDC power supply, making it suitable for both mains-powered and low-voltage installations. TapHome communicates with the device locally over Wi-Fi — no cloud connection is required.
Two TapHome templates are available: an HTTP template that polls the device’s Gen2+ RPC API, and an MQTT template that receives data via an MQTT broker. Both expose the same two devices — an energy meter and a relay switch.
Configuration
HTTP template
The HTTP template requires only the device’s IP address (default placeholder 192.168.0.1). TapHome polls the /rpc/Switch.GetStatus?id=0 endpoint for both relay state and power metering data. The module caches the JSON response in a status variable so that individual device scripts can parse it without making redundant HTTP calls.
MQTT template
The MQTT template requires three parameters during import:
- MQTT Broker IP — the IP address of the MQTT broker (not the Shelly device itself)
- MQTT Broker Port — default
1883 - Shelly MQTT Client ID — format
shellyplus1pm-{deviceid}, found in the Shelly web UI under Settings > MQTT Settings > Client ID
After enabling MQTT on the Shelly Plus 1PM (Settings > MQTT), TapHome subscribes to shellyplus1pm-{deviceid}/status/switch:0 and publishes control commands to shellyplus1pm-{deviceid}/command/switch:0.
Device capabilities
Relay control
The template exposes the relay as a switch device. The relay state is read from the output field (boolean) and controlled via /rpc/Switch.Set?id=0 with on=true or on=false (HTTP) or by publishing on/off to the command topic (MQTT).
The HTTP template polls the relay at a 2.5-second interval, providing near-real-time state feedback. The MQTT template receives updates as they occur via the listener script.
Power metering
The built-in energy meter reads two values from the Switch.GetStatus response:
- Instantaneous power —
apowerreported in watts, converted to kW by the template (divided by 1000) - Cumulative energy —
aenergy.totalreported in watt-hours, converted to kWh by the template (divided by 1000)
The meter is read-only — it updates automatically with every poll cycle (HTTP) or on each MQTT status message.
The HTTP template also exposes three service attributes on the energy meter:
| Attribute | Unit | Description |
|---|---|---|
| Current | A | Instantaneous current draw |
| Voltage | V | RMS line voltage |
| Temperature | °C | Internal device temperature |
The MQTT template exposes internal temperature, voltage, and current as module-level service attributes with the same data, parsed from the MQTT status payload.
Additional capabilities
The Shelly Plus 1PM also exposes power factor, network frequency, returned energy (for bidirectional metering), physical input state, WiFi signal strength, MAC address, uptime, RAM usage, and device time through its RPC API. A firmware update action, device reboot, auto-off timer, energy counter reset, and overpower protection configuration are also available. These capabilities can be added in a future template update.
Troubleshooting
Device not responding (HTTP)
- Verify the Shelly is connected to Wi-Fi and has a valid IP address
- Try using the mDNS hostname (
shellyplus1pm-AABBCCDDEE.local) instead of the IP address — the IP may have changed after a DHCP renewal - Open
http://{device-ip}/rpc/Shelly.GetDeviceInfoin a browser — if it responds with JSON, the device is reachable - Check that TapHome CCU and Shelly are on the same network / VLAN
- Ensure HTTP Digest Authentication is disabled in the Shelly web UI — TapHome does not support authenticated requests
MQTT messages not arriving
- Verify MQTT is enabled in the Shelly web UI (Settings > MQTT)
- Confirm the broker address and port are correct in both the Shelly device and TapHome module settings
- Check that the
plug1topiccustom variable matches the Shelly’s MQTT Client ID exactly (e.g.,shellyplus1pm-AABBCCDDEE) - Use an MQTT client (e.g., MQTT Explorer) to subscribe to
shellyplus1pm-#and verify the device publishes messages
Power readings show zero
- Confirm the load is connected through the Shelly relay (not bypassed)
- Check that the relay is turned on — the meter only reads when current flows through the relay
- Poll
/rpc/Switch.GetStatus?id=0manually and verifyapowerreturns a non-zero value
Slow response or timeouts
- Gen2+ devices support up to 6 concurrent HTTP connections (vs. 2 on Gen1) — but avoid excessive polling from multiple systems
- Disable ECO mode in the Shelly web UI if enabled — it puts the device to sleep between polls and can cause timeouts with short poll intervals
- Use a static IP or DHCP reservation to prevent address changes
- Consider switching to the MQTT template for multi-system environments — MQTT avoids the connection limit issue entirely