
The Shelly Sensor Add-On (marketed as Shelly Plus Add-On) is a galvanically isolated expansion board that plugs onto the add-on header of a compatible Shelly Plus, Gen3, or Gen4 device. It extends the host Shelly with a 1-Wire temperature bus (DS18B20), a digital input (reed / dry contact), an analog input (0–10 V / 0–100 %), and a 0–10 V voltmeter. The add-on is not a standalone Wi-Fi device — it is read through the host Shelly’s HTTP interface on the local network, so TapHome targets the host device’s IP, not a dedicated IP for the add-on.
The TapHome template exposes four DS18B20 temperature sensors (Component IDs 100–103), one reed contact, one analog input, and one voltmeter. All readings are polled over the standard Shelly Gen2+ JSON-RPC API on port 80 — no cloud connection is required.
Hardware connection
The add-on seats onto the host Shelly via a proprietary serial header and draws 3.3 V DC directly from the host (consumption below 0.5 W without sensors). The user-accessible terminals are grouped into an analog/digital block and three 1-Wire sensor positions.
Analog and digital terminals
ANALOG IN— 0–10 V analog input (accuracy ±5 %, 1 % reporting threshold)DIGITAL IN— dry contact / reed switch input (True: −15 V to 0.5 V, False: 2.5 V to 15 V)VREF OUT— reference voltage (1 mA max) for powering potentiometer-style sensorsVREF+R1 OUT— reference voltage with 10 kΩ pull-up resistor, designed for NTC and photoresistor voltage dividersGND× 2 — ground returns
1-Wire bus
Three three-terminal groups (VCC, DATA, GND) share a common 1-Wire data line internally. Up to 5 DS18B20 probes can be wired in parallel on the shared bus; alternatively, a single DHT22 sensor can occupy the bus (DHT22 blocks the OneWire scan while active). The total VCC output is limited to 10 mA, which is sufficient for five DS18B20 probes.
Max conductor size on all terminals is 1 mm² (17 AWG).
Do not mix a DHT22 with DS18B20 probes on the bus. The DHT22 blocks OneWire enumeration and the host Shelly will fail to rescan the bus while it is connected.
Configuration
The Shelly Sensor Add-On has no IP address of its own. During TapHome template import, enter the host Shelly’s IP address (the Plus / Gen3 / Gen4 device the add-on is seated onto) in the IpAddress parameter (default placeholder 192.168.0.1).
All communication uses the Gen2+ JSON-RPC API over HTTP GET on port 80. Once per poll cycle the template reads /rpc/Sys.GetStatus and /rpc/SensorAddon.GetPeripherals into internal cache variables, then each device script queries its dedicated endpoint (Temperature.GetStatus, Input.GetStatus, or Voltmeter.GetStatus).
Compatible host devices
The add-on works with the following Shelly devices (from the manufacturer’s compatibility list):
- Shelly Plus: 1, 1PM, 1 UL, 1PM UL, 2PM, 2PM UL, i4, i4DC, 0-10 V Dimmer PM, RGBW PM
- Shelly Gen3: 1, 1PM, 2PM, Shutter, i4, DALI Dimmer, Dimmer 0/1-10 V PM, EM
- Shelly Gen4: 1, 1PM, 2PM
The host Shelly’s firmware must expose the SensorAddon service — older Plus firmware releases may not have it. Update the host to the latest firmware if the add-on menu is missing in the web UI.
Enabling Add-on peripherals
The add-on is a one-time setup in the host Shelly’s web interface — TapHome does not configure it. Complete the following before importing the template:
- Seat the add-on board onto the host Shelly’s add-on header and power the host.
- Open the host’s web UI at
http://{host-ip}/and sign in. - Navigate to Settings → Add-on and register the add-on (this calls
Sys.SetConfigwithdevice.addon_type = "sensor"under the hood). Reboot the host if prompted. - Open Settings → Components → Peripherals and click the + button.
- Pick the peripheral type — Temperature (DS18B20), Digital Input, Analog Input, or Voltmeter.
- For DS18B20, click Rescan, tick each discovered probe, then choose Add and reboot. The first probe gets Component ID
100, the second101, and so on. - For Digital Input, set Mode to Switch or Button (the template reads
statefrom this Component). - For Analog Input and Voltmeter, the defaults are fine — only the name and delta threshold are relevant.
The TapHome template hard-codes Component IDs 100–103 for DS18B20 and ID 100 for the reed contact, analog input, and voltmeter. When adding peripherals in the Shelly web UI, verify that the assigned IDs match this numbering — if you delete a peripheral and re-add it, the Shelly assigns the next free ID, which can push the ID above 103 and the TapHome device will silently stop receiving data.
Before removing a peripheral, note down its Component ID. If you rewire a DS18B20 probe, prefer the web UI’s Edit → Update address action so the Component ID stays the same.
HTTP Digest Authentication must be disabled on the host Shelly — TapHome does not send authenticated requests. Leave the device ungated or restrict access at the network level.
Device capabilities
The template groups seven read-only sensor devices under a single HTTP module that targets the host Shelly.
Temperature probes (DS18B20)
Four DS18B20 OneWire temperature probes are exposed, one per Component ID 100–103:
- Temperature Sensor DS18B20 (100) — reads
/rpc/Temperature.GetStatus?id=100→tC(°C) - Temperature Sensor DS18B20 (101) — reads
/rpc/Temperature.GetStatus?id=101→tC - Temperature Sensor DS18B20 (102) — reads
/rpc/Temperature.GetStatus?id=102→tC - Temperature Sensor DS18B20 (103) — reads
/rpc/Temperature.GetStatus?id=103→tC
Each device has a user-configurable Id custom variable (default matches the position). Poll interval is 15 seconds per probe. The Shelly web UI allows fine-tuning each probe’s delta threshold (0.1–5 °C) and offset (±50 °C) for calibration.
Reed contact (digital input)
Reed Contact (100) reads /rpc/Input.GetStatus?id=100 → state (boolean). In the Shelly UI the input must be configured as Switch or Button (not Analog or Count). Poll interval is 2.5 seconds. The default Id custom variable is 100.
Analog input
Analog Input (100) reads /rpc/Input.GetStatus?id=100 → percent, divided by 100 so the value is normalised to the 0.0–1.0 fraction TapHome expects for analog inputs. The input must be configured as Analog in the Shelly UI. Accuracy is ±5 %, with a 1 % reporting threshold. Poll interval is 2.5 seconds.
Note that the reed contact and the analog input share Component ID 100 — the Shelly hardware has only one digital and one analog input on the add-on, and the active mode is set by the input’s type in the web UI (switch/button vs analog). Use either the reed contact device or the analog input device in TapHome, not both at the same time.
Voltmeter
Voltmeter (100) reads /rpc/Voltmeter.GetStatus?id=100 → voltage (V). The range is 0–10 V with ±5 % accuracy and a 0.1 V reporting threshold. It is modelled as a PacketParserVariable with the sensor capability — the raw voltage is exposed as a scalar value, not as a dedicated voltmeter device type. Poll interval is 15 seconds.
Additional capabilities
The Shelly Sensor Add-On also natively supports a DHT22 temperature and humidity sensor (a single probe that creates paired temperature:100 and humidity:100 Components on the host). The TapHome template wires temperature through on all four DS18B20 devices but hard-codes the humidity script to NaN — DHT22 humidity is therefore not exposed. Users needing humidity can extend the template with a separate read script on /rpc/Humidity.GetStatus?id=100.
Two further capabilities exist at the hardware/firmware level but are out of scope for this template: a fifth DS18B20 slot (the Shelly bus supports up to five probes; the template only polls IDs 100–103), and the digital input’s pulse counter mode (counts.total, counts.by_minute, freq), which requires configuring the input as type=count in the Shelly UI. Both can be added in a future template update.
Troubleshooting
Host Shelly not responding
- Verify the host Shelly is connected to Wi-Fi and has a valid IP address.
- Try using the host’s mDNS hostname (e.g.
shellyplus1pm-AABBCCDDEE.local) instead of the IP — the IP may have changed after a DHCP renewal. The add-on inherits the host’s hostname, it does not have its own. - Open
http://{host-ip}/rpc/Shelly.GetDeviceInfoin a browser — if it responds with JSON, the host is reachable. - Check that TapHome CCU and the host Shelly are on the same network / VLAN.
- Ensure HTTP Digest Authentication is disabled in the Shelly web UI.
Sensors show no data
- Open the Shelly web UI → Components → Peripherals. Confirm the peripheral is listed with the exact Component ID the template expects (
temperature:100–103,input:100,voltmeter:100). If the ID is above103or shifted, renumber the peripherals by deleting and re-adding them in the right order, or edit the template to match your IDs. - For DS18B20: click Rescan on the DS18B20 peripheral row — the bus address should resolve. If the address shows N/A, check VCC/DATA/GND wiring and the 10 kΩ pull-up on
DATA(some generic DS18B20 boards omit it; the Shelly provides it internally). - Poll the endpoint directly:
GET http://{host-ip}/rpc/Temperature.GetStatus?id=100. The response should include a non-nulltCvalue. - Reboot the host Shelly after adding or removing peripherals. Components may not appear until after a reboot.
Analog input reads zero
- Confirm the input
typein the Shelly UI is set toanalog(notswitch,button, orcount). The template readspercent, which is only populated in analog mode. - Check the wiring — a 0–10 V source must be between
ANALOG INandGND. For potentiometer-style sensors (NTC, photoresistor), useVREF+R1 OUT(with the built-in 10 kΩ pull-up) instead ofVREF OUT. - Remember that TapHome receives the value as a 0.0–1.0 fraction (the template divides
percentby 100).
DHT22 humidity is missing
This is an intentional limitation of the template — the readhumidity script is hardcoded to NaN on every DS18B20 device slot. The add-on hardware supports DHT22, but to expose humidity in TapHome you need to extend the template with a dedicated device that reads /rpc/Humidity.GetStatus?id=100 → rh. The DS18B20 and DHT22 cannot coexist on the same bus — remove DS18B20 probes if you switch to DHT22.
Fifth DS18B20 probe not visible
The template only polls IDs 100–103. A fifth probe registered in the Shelly web UI as temperature:104 will exist on the host but will not be read by TapHome. Either move the probe you care about into one of the 100–103 slots (delete and re-add in order), or extend the template with a fifth device that targets id=104.