TapHome

Shelly BLU TRV

Packet Parser → HTTP
Submitted by
Last updated: 04. 2026

Requires external gateway

Shelly BLU Gateway Gen3 — product page

Shelly BLU TRV

The Shelly BLU TRV (model SBTR-001AEU) is a battery-powered thermostatic radiator valve with Bluetooth LE 5 and Zigbee 802.15.4 connectivity. It does not speak Wi-Fi or HTTP directly — TapHome reaches the TRV by talking HTTP to a Shelly BLU Gateway Gen3, which proxies JSON-RPC calls from the BluTrv namespace to the paired TRV over BLE.

A single Shelly BLU Gateway Gen3 can host multiple BLU TRVs as component peripherals (Shelly sells single-, two- and three-packs with one gateway). Each TRV is identified by its component ID on the gateway (typically 200, 201, 202). The TapHome template is imported once per TRV with the same gateway IP and a different component ID.

What you need

  • Shelly BLU TRV (SBTR-001AEU) — the valve head, includes 2× AA 1.5 V batteries and a mounting adapter for M28 × 1.5 threads
  • Shelly BLU Gateway Gen3 (SBGT-3B-001) — USB-A powered Wi-Fi gateway that bridges BLE peripherals to HTTP RPC; also sold in starter kits with the TRV
  • Power — the TRV runs on 2× AA 1.5 V (up to 2 years typical battery life); the gateway plugs into any USB-A port (phone charger, router, powered hub)
  • Network — LAN / Wi-Fi connectivity for the gateway; the TRV itself does not join the Wi-Fi network
  • Valve thread — direct mount on M30 × 1.5 valves, or use the supplied adapter for Danfoss RA/RAV/RAVL, Caleffi, Giacomini, and M28 × 1.5 threads

Pairing the TRV with the gateway

Pair each TRV to the gateway before importing the template in TapHome — the component ID is only assigned after pairing succeeds.

  1. Plug the Shelly BLU Gateway Gen3 into a USB-A port and wait for it to join the local network
  2. Press the Pairing button on the gateway — the LED indicates pairing mode is active for 30 seconds
  3. Within 30 seconds, either remove the battery isolation tab from a brand-new TRV, or single-press the Reset button on an already-running TRV
  4. The TRV display flashes and shows a confirmation animation once pairing succeeds
  5. Add the gateway to the Shelly Smart Control app — the newly paired TRV appears as a child component of the gateway with an assigned component ID

Repeat steps 2–4 for each additional TRV. Each pairing produces a new component ID (200, 201, 202…).

Configuration

The TapHome template connects to the gateway IP (not the TRV itself) and targets a single TRV by its component ID on the gateway.

Import parameters
ParameterDescriptionHow to obtainExample
IpAddressGateway IP address on the local networkShelly Smart Control app → Gateway → Settings → Network, or your router’s DHCP lease table192.168.0.42
IDBluTrv component ID of this TRV on the gatewayGateway web UI (http://<gateway-ip>) → Components list → copy the numeric ID assigned to this TRV200

Each TRV requires its own template import. For three TRVs paired to the same gateway, import the template three times with the same IpAddress and ID values of 200, 201, and 202 (IDs are visible in the gateway web UI).

HTTP Digest Authentication on the gateway must be disabled for TapHome to reach the /rpc/* endpoints — the same constraint as for other Shelly Gen2+/Gen3 devices.

Device capabilities

Thermostat

The template exposes the TRV as a thermostat device. The current temperature is read from $.status.trv:0.current_C and the target setpoint from $.status.trv:0.target_C (both polled from BluTrv.GetRemoteStatus). Writing a new setpoint sends TRV.SetTarget through BluTrv.Call in the 4–31 °C range supported by the device.

A valve state service attribute reports the current valve opening as a percentage ($.status.trv:0.pos), where 0 % is fully closed and 100 % is fully open. The valve position is controlled by the TRV’s internal regulation loop — the template only reads it.

Battery

Battery charge is exposed as a 5-state indicator mapped from the raw percentage ($.battery):

StateBattery levelIcon
Critical< 25 %Battery almost empty
Low25–50 %Battery low
Normal50–75 %Battery medium
Full> 75 %Battery full
ChargingCharging (not typical for AA cells)Charging icon

A Value [%] service attribute exposes the raw 0–100 % battery reading. Module-level warnings are emitted automatically when the battery drops below 50 % (Low battery) and below 25 % (Critically low battery).

Diagnostics and actions

Module-level signals:

  • Received signal strength — BLE link RSSI (dBm) between the gateway and the TRV ($.rssi)
  • Automatic warning when $.update.has_update is set (firmware update available through Shelly Smart Control)
  • Automatic error emitting the content of $.trv[0].errors when the TRV reports a problem

Two module-level service actions are available:

  • Reboot — reboots the paired TRV via Shelly.Reboot proxied through BluTrv.Call
  • Calibrate — runs the stepper motor calibration (TRV.Calibrate) through the gateway. Calibration takes up to 10 seconds during which the TRV is unresponsive. Required after first mounting or after changing the valve adapter.

Troubleshooting

Gateway not reachable
  1. Verify the gateway is powered (USB-A LED lit) and has joined Wi-Fi / LAN (visible in the Shelly Smart Control app)
  2. Open http://<gateway-ip>/rpc/Shelly.GetDeviceInfo in a browser — a JSON response confirms the gateway is reachable
  3. If the IP has changed after a DHCP lease renewal, try the mDNS hostname shellyblugwg3-<MAC>.local (the gateway advertises _http._tcp.local.)
  4. Confirm HTTP Digest Auth is disabled on the gateway (Settings → Authentication)
TRV errors reported in TapHome

The template surfaces $.trv[0].errors as a generic error string. Common flags and fixes:

  • not_calibrated — run the Calibrate service action; calibration must complete within 10 seconds without manual valve interference
  • not_mounted — the back cover of the TRV is open or the valve body is not properly seated; reseat the TRV on the valve and close the battery compartment
  • battery_low — replace the 2× AA cells; battery warnings are also emitted automatically when the level drops below 50 % / 25 %
  • ext_temp_missing — an external sensor was configured on the TRV but is no longer reporting; either pair the sensor again or clear the external reading
Target temperature change is not applied
  1. Check the valve state service attribute — if it is at 0 % with a target set above current temperature, the valve may need recalibration
  2. Verify that a manual override (via the rotating ring, Shelly app, or TRV.SetPosition from another client) is not active — writing a target via the TapHome thermostat re-enables automatic regulation, but any local ring rotation on the TRV immediately takes priority
  3. Confirm BLE link quality — RSSI below −85 dBm often causes 1–3 s additional latency and occasional dropped commands; consider placing the gateway closer to the TRV (indoor range ≤ 10 m)
Firmware update warning

The template emits a firmware update warning when $.update.has_update is true. Firmware updates for the BLU TRV must be performed through the Shelly Smart Control app — they are not exposed over the local RPC.

BLE round-trip latency between the gateway and the TRV is typically 1–3 seconds. The template polls at 3000 ms, which is already close to the practical minimum — lowering this further increases BLE collisions without improving responsiveness.

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 (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.1Internet & SecurityWi-Fi Mode - Client
  4. Enter SSID and password → Save

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:

1
shelly<model>-<MAC>.local

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

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

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

Shelly BLU TRV Module
Service Attributes
Received signal strengthBluetooth LE link signal strength between the gateway and the TRV (dBm)
Service Actions
Reboot
CalibrateRuns the stepper motor calibration (up to 10 seconds); required after first mounting or adapter change
Custom Variables
ID (numeric) = IDComponent ID of the BLU TRV on the gateway (set during pairing, typically 200+)
Open the Shelly BLU Gateway Gen3 web UI → paired devices → copy the component ID assigned to this TRV

Shelly BLU TRV

Read (module)
VAR response := SENDHTTPREQUEST("/rpc/BluTrv.GetStatus?id=" + ID);
IF response.IsSuccess
    Status := response.Content;
END

response := SENDHTTPREQUEST("/rpc/BluTrv.GetConfig?id=" + ID);
IF response.IsSuccess
    Config := response.Content;
END

response := SENDHTTPREQUEST("/rpc/BluTrv.GetRemoteStatus?id=" + ID);
IF response.IsSuccess
    RemoteStatus := response.Content;
END

response := SENDHTTPREQUEST("/rpc/BluTrv.GetRemoteConfig?id=" + ID);
IF response.IsSuccess
    RemoteConfig := response.Content;
END

if(PARSEJSON(RemoteStatus, "$.trv[0].errors", true), adderror("Error: " + PARSEJSON(RemoteStatus, "$.trv[0].errors")));
if(PARSEJSON(Status, "$.update.has_update", true), addwarning("Firmware update is available"));

var battery := PARSEJSON(Status, "$.battery");
if battery < 25
    addwarning("Battery charge is criticaly low");
elseif battery < 50
    addwarning("Low battery");
end
Service Attributes
Received signal strength
PARSEJSON(Status, "$.rssi")
Service Actions
Reboot
VAR response := SENDHTTPREQUEST("rpc/BluTrv.Call?id=" + ID + "&method=\"Shelly.Reboot\"&params={\"id\":0}");
if(response.IsSuccess, return("OK"), return(response.Content));
Calibrate
VAR response := SENDHTTPREQUEST("rpc/BluTrv.Call?id=" + ID + "&method=\"TRV.Calibrate\"&params={\"id\":0}");
if(response.IsSuccess, return("OK"), return(response.Content));
Battery Multi-value Switch Read-only

Battery state indicator — Critical (<25%), Low (25-50%), Normal (50-75%), Full (>75%), Charging

numeric Unit: % numeric
Values / States: Critical · Low · Normal · Full · Charging

Battery

Read switch state
var battery := PARSEJSON(Status, "$.battery");
if battery > 75
    return(3);
elseif battery > 50
    return(2);
elseif battery > 25
    return(1);
else
    return(0);
end
Service Attributes
Value [%]
PARSEJSON(Status, "$.battery");
Thermostat Thermostat

Radiator valve thermostat — reads current temperature and writes target setpoint (4-31 °C) through the BLU Gateway Gen3

numeric Unit: °C
Service Attributes
Valve state [%]Current valve opening position (0%=closed, 100%=fully open)

Thermostat

Read temperature
PARSEJSON(RemoteStatus, "$.status.trv:0.current_C")
Read desired temperature
PARSEJSON(RemoteStatus, "$.status.trv:0.target_C")
Write desired temperature
VAR response := SENDHTTPREQUEST("rpc/BluTrv.Call?id=" + ID + "&method=\"TRV.SetTarget\"&params={\"id\":0,\"target_C\":" + Se + "}");
IF response.IsSuccess = false
  ADDERROR(response.StatusCode);
END
Service Attributes
${device_variable_valvestate} [%]
PARSEJSON(RemoteStatus, "$.status.trv:0.pos")
Connection: Packet Parser → HTTP
Possible improvements (14)
  • Manual valve position — Sets the valve to a fixed opening percentage (0-100%); disables automatic regulation until TRV.SetTarget is written again. Could be added as a service action.
  • Boost mode — Temporarily opens the valve fully for rapid room warm-up; accepts an optional duration (seconds). Could be exposed as a service action.
  • Clear boost — Terminates an active boost and restores the normal target temperature.
  • Temporary override — Temporarily overrides the target for a given duration (seconds); auto-expires back to the scheduled target.
  • Clear override — Terminates an active override and restores the regular target.
  • External temperature input — Supplies a temperature reading from an external sensor (e.g. room sensor) to the TRV regulation loop.
  • TRV flags (floor_heating, accel, auto_calibrate, anticlog, silent_mode, power_save) — Toggle operating flags that affect regulation behaviour (e.g. floor-heating mode keeps valve from fully closing).
  • Boost / override state — Object with started_at and duration when boost or override is active; currently not surfaced as a service attribute.
  • Error / state flags (not_calibrated, not_mounted, battery_low, ext_temp_missing) — Template only forwards $.trv[0].errors as a generic error string; individual flags are not exposed as discrete sensors.
  • Local schedule rules (up to 10) — Shelly Cron-formatted daily/weekly rules stored on the TRV. TapHome normally drives scheduling externally via smart rules, so this is not exposed.
  • Display message — Shows up to 10 characters of scrolling text on the TRV 7-segment display.
  • Factory reset — Resets configuration to defaults; pairing information is preserved.
  • System diagnostics — Uptime, RAM and clock information from the paired TRV system status; not surfaced in the template.
  • Humidity sensor — BLU TRV can ingest humidity from paired BLU H&T peripherals; the template contains an empty ReadHumidityScriptPacketParser so this capability is not implemented.

Sources