Shelly BLU TRV (Thermostatic Radiator Valve)
Short device name: SBTR-001AEU
Functional description
The device's main functionality is to maintain the set temperature in the room by precisely regulating the hot fluid flow trough the radiator.
There are additional functions (available when connected to a Shelly BLU Gateway):
- Schedules - the target temperature gan be automatically changed according to a preprogrammed schedule. Compatible with GEN2 schedules.
- Open window mode - if paired with a Shelly BLU Door Window - the target temperature is lowered while the door or window is opened.
- Child lock mode - if enabled, the target temperature cannot be changed from the rotarion of the TRV's ring.
- Display flip - the display can be flipped programmatically to reflect the orientation the installation.
- Display brightness - the brightness can be programmatically set.
- Temperature override mode - the temperature of the radiator can be temporary increased for fast heating of the room.
- Boost mode - similar to override, but sets the valve position to 100%, instead of the temperature.
In manual only mode, the available actions using the rotation ring are limited to:
What to do | How to do |
---|---|
Activate pairing mode | Single short press of the reset button (next to the battery cover) |
ZigBee identify/stop identifying | Single short press the reset button (works only if the device is associated to a network) |
Activate ZigBee pairing / Leave network | Press 3 times the reset button |
Factory reset | Press and hold the reset button for more than 30 seconds |
Show current temperature | Single short rotation of the ring |
Set target temperature | Further longer rotation in any direction. If boost is active, the display would show on. Further rotation will cancel the boost and the target temperature will be set |
Activate/Deactivate boost mode | Fast rotation from display off state (right=on, left=off) |
Check battery level | Short and fast rotete 4 times in opposite directions when showint current temperature |
Check pairing state (count) | Short rotation to the right from the battery level state |
Activate BLE pairing | Short rotation to the right from previous state |
The device emits BTHome data packets every 8 seconds with the currently set target temperature, measured temperature (aproximated using software to reflect the real room temperature) and the external temperature (if enabled and received).
Device specific settings
There are no device specific settings. Beacon mode is always active.
RPC channel service (_shOS_RPC_SVC_ID_)
Service UUID: 5f6d4f53-5f52-5043-5f53-56435f49445f
Characteristic | UUID | Type | Length | Properties | Function |
---|---|---|---|---|---|
_shOS_RPC_data___ | 5f6d4f53-5f52-5043-5f64-6174615f5f5f | byte | * | Read, Write bonded | Data sent or received trough the RPC channel |
_shOS_RPC_tx_ctl_ | 5f6d4f53-5f52-5043-5f72-785f63746c5f | byte | * | Write | Data length to be sent |
_shOS_RPC_rx_ctl_ | 5f6d4f53-5f52-5043-5f74-785f63746c5f | byte | * | Read, Notify, Indicate | Data length, available for rading. 0 == no data |
Reading and writing data is possible on chinks, smaller or equal to the MTU size. Notify and Indicate are not used at the moment.
*More information about GATT RPC channel is available here: https://github.com/mongoose-os-libs/rpc-gatts/blob/master/README.md
RPC commands
Shelly.GetStatus
This method returns the status of all the components of the device.
Request
Parameters:
Property | Type | Description |
---|---|---|
| number | ID of component. Always 0 Required |
Response
Property | Type | Description | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| object | Information about the system
| ||||||||||||||||||||||||||||||
| object | Information about the temperature
| ||||||||||||||||||||||||||||||
| object | TRV component information
|
Shelly.GetConfig
This method returns the configuration of all the components of the device.
Request
Parameters:
Property | Type | Description |
---|---|---|
| number | ID of component. Always 0 Required |
Response
Property | Type | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| object | System component
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| object | Information about the temperature
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| object | TRV component information
|
Shelly.FactoryReset
This method resets the configuration to its default state. Pairing information is preserved.
Request
Parameters:
Property | Type | Description |
---|---|---|
| number | ID of component. Always 0 Required |
Response
null
Shelly.Reboot
This method reboots the device.
Parameters:
Property | Type | Description |
---|---|---|
| number | ID of component. Always 0 Required |
Response
null
Shelly.GetDeviceInfo
This method returns a meaningful device information.
Parameters:
Property | Type | Description |
---|---|---|
| number | ID of component. Always 0 Required |
Response
Property | Type | Description |
---|---|---|
| string | Internal device name ID including the MAC address |
| string | MAC address |
| string | Firmware version ID |
| number | Bootloader version |
| number | Application name |
| string | Device model |
| number | Production batch id |
| string | Device version |
Sys.SetTime
This method sets the device system time and time offset.
Request
Parameters:
Property | Type | Description |
---|---|---|
| number | ID of component. Always 0 Required |
| number | Required |
| number | Offset from GMT in seconds. Must equal to exact hours Required |
Response
Returns null or error code
Trv.GetConfig
Get TRV configuration
Request
Parameters:
Property | Type | Description |
---|---|---|
| number | ID of component. Always 0 Required |
Response
Property | Type | Description | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| boolean |
| |||||||||||||||
| array of objects | Array of flags Optional.
| |||||||||||||||
| number | Minimal valve position in percent Optional |
Trv.SetConfig
This method sets the configuration of the TRV.
Request
Parameters:
Property | Type | Description | |||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| number | ID of component. Always 0 Required | |||||||||||||||||||||||||||||||||||||||
| array of objects | Configuration properties
|
Response
Returns null or error code.
TRV.SetTarget
Sets the target temperature in degrees Celsius.
Request
Parameters:
Property | Type | Description |
---|---|---|
| number | ID of component. Always 0 Required |
| number | Required |
Response
Returns null or error code
TRV.SetFlag
Sets the target temperature in degrees Celsius.
Available TRV setting flags are: "floor_heating", "accel", "auto_calibrate", "anticlog"
Request
Parameters:
Property | Type | Description |
---|---|---|
| number | ID of component. Always 0 Required |
| string | Required |
Response
Returns null or error code
TRV.ClearFlag
Clear the target temperature in degrees Celsius.
Request
Parameters:
Property | Type | Description |
---|---|---|
| string | Required |
Response
Returns null or error code
TRV.Calibrate
Start stepper motor calibration process. Can take up to 10 seconds. The device will not respond to other commands during the calibration.
Request
Parameters:
Property | Type | Description |
---|---|---|
| number | ID of component. Always 0 Required |
Response
Returns null or error code
The calibration success/fail is reported in the device status.
TRV.SetOverride
This method sets a temporary target temperature.
Request
Parameters:
Property | Type | Description |
---|---|---|
| number | ID of component. Always 0 Required |
| number | Temporaty target temperature in degrees Celsius Required |
| number | Duration in seconds Required |
Response
Returns null or error code
TRV.ClearOverride
This method terminates the previously started temperature override and returns the device to the normal target temperature.
Request
Parameters:
Property | Type | Description |
---|---|---|
| number | ID of component. Always 0 Required |
Response
Returns null or error code
TRV.SetBoost
Temporary open the valve to maximum. Override target_C takes precedence over boost
Request
Parameters:
Property | Type | Description |
---|---|---|
| number | ID of component. Always 0 Required |
| number | Duration in seconds Optional |
Response
Returns null or error code
TRV.ClearBoost
This method terminates the previously started boost state.
Request
Parameters:
Property | Type | Description |
---|---|---|
| number | ID of component. Always 0 Required |
Response
Returns null or error code
TRV.SetExternalTemperature
Sets external temperature. With no parameters - use internal sensor instead of the external one.
Request
Parameters:
Property | Type | Description |
---|---|---|
| number | ID of component. Always 0 Required |
| number | External temperature in degrees Celsius Optional |
Response
Returns null or error code
TRV.SetPosition
This method sets the valve position. Works only if the thermostat function is disabled in the config (Trv.SetConfig).
Request
Parameters:
Property | Type | Description |
---|---|---|
| number | ID of component. Always 0 Required |
| number | New valve position (0-100%) Required |
Response
Returns null or error code.
Trv.AddScheduleRule
This method defines a new schedule rule. The timespecs format is Shelly Cron. 10 slots for schedule rules are available.
Request
Parameters:
Property | Type | Description | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| number | ID of component. Always 0 Required | ||||||||||||
| array of objects | Arguments for the rule.
|
Response
Property | Type | Description |
---|---|---|
| number | The id number of the created rule |
Trv.UpdateScheduleRule
This method modifies an existing schedule rule.
Request
Parameters:
Property | Type | Description | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| number | ID of component. Always 0 Required | ||||||||||||
| number | Rule id to modify | ||||||||||||
| array of objects | Arguments for the rule.
|
Response
Property | Type | Description |
---|---|---|
| number | The id number of the created rule |
Trv.RemoveScheduleRule
Remove a schedule rule.
Request
Parameters:
Property | Type | Description |
---|---|---|
| number | ID of component. Always 0 Required |
| number | The rule id to remove Required |
Response
Returns null or error code.
Trv.ListScheduleRules
List schedule rules.
Request
Parameters:
Property | Type | Description |
---|---|---|
| number | ID of component. Always 0 Required |
Response
Returns a list of defined rules or null or error code.
Trv.ShowMessage
Shows a short running text on the display. Up to 10 characters.
Request
Parameters:
Property | Type | Description |
---|---|---|
| number | ID of component. Always 0 Required |
| string | Text to show Required |
Response
Returns null or error code
Trv.PairingComplete
Shows the result of an operation (e.g. pairing) on the display with "YES" or "NO".
Request
Parameters:
Property | Type | Description |
---|---|---|
| number | ID of component. Always 0 Required |
| boolean |
|
Response
Returns null or error code
Examples
TRV.SetConfig example
Example
{
"id": 0,
"config": {
"enable": true,
"override_enable": true,
"default_boost_duration": 300,
"default_override_duration": 300,
"name": "abc",
"flags": {
"floor_heating": false,
"accel": false,
"auto_calibrate": true,
"anticlog": true
},
"min_valve_position": 0,
"default_override_target_C": 30
}
}
Response
- TRV.SetConfig HTTP GET Response
- TRV.SetConfig Curl Response
- TRV.SetConfig Mos Response
null
{
"id": 1,
"params": null
}
null
TRV.GetConfig example
Example
{
"id": 0
}
Response
- TRV.GetConfig HTTP GET Response
- TRV.GetConfig Curl Response
- TRV.GetConfig Mos Response
{
"id": 0,
"enable": true,
"override_enable": true,
"min_valve_position": 0,
"default_boost_duration": 1800,
"default_override_duration": 2147483647,
"default_override_target_C": 8,
"flags": []
}
{
"id": 1,
"params": {
"id": 0,
"enable": true,
"override_enable": true,
"min_valve_position": 0,
"default_boost_duration": 1800,
"default_override_duration": 2147483647,
"default_override_target_C": 8,
"flags": []
}
}
{
"id": 0,
"enable": true,
"override_enable": true,
"min_valve_position": 0,
"default_boost_duration": 1800,
"default_override_duration": 2147483647,
"default_override_target_C": 8,
"flags": []
}
TRV.GetStatus example
Example
{
"id": 0
}
Response
- TRV.GetStatus HTTP GET Response
- TRV.GetStatus Curl Response
- TRV.GetStatus Mos Response
{
"id": 0,
"pos": 0,
"steps": 0,
"current_C": 21.76,
"target_C": 9.19,
"schedule_rev": 0,
"errors": [
"not_calibrated"
]
}
{
"id": 1,
"params": {
"id": 0,
"pos": 0,
"steps": 0,
"current_C": 21.76,
"target_C": 9.19,
"schedule_rev": 0,
"errors": [
"not_calibrated"
]
}
}
{
"id": 0,
"pos": 0,
"steps": 0,
"current_C": 21.76,
"target_C": 9.19,
"schedule_rev": 0,
"errors": [
"not_calibrated"
]
}
TRV.Calibrate example
Example
{
"id": 0
}
Response
- TRV.Calibrate HTTP GET Response
- TRV.Calibrate Curl Response
- TRV.Calibrate Mos Response
null
{
"id": 1,
"params": null
}
null
Sys.GetConfig example
Example
{
"id": 0
}
Response
- Sys.GetConfig HTTP GET Response
- Sys.GetConfig Curl Response
- Sys.GetConfig Mos Response
{
"device": {
"name": ""
},
"location": {
"lat": 0,
"lon": 0
},
"ui": {
"lock": false,
"t_units": "C",
"flip": false,
"brightness": 7
},
"ble": {
"interval_ms": 333,
"beacon_count": 5
},
"cfg_rev": 1
}
{
"id": 1,
"params": {
"device": {
"name": ""
},
"location": {
"lat": 0,
"lon": 0
},
"ui": {
"lock": false,
"t_units": "C",
"flip": false,
"brightness": 7
},
"ble": {
"interval_ms": 333,
"beacon_count": 5
},
"cfg_rev": 1
}
}
{
"device": {
"name": ""
},
"location": {
"lat": 0,
"lon": 0
},
"ui": {
"lock": false,
"t_units": "C",
"flip": false,
"brightness": 7
},
"ble": {
"interval_ms": 333,
"beacon_count": 5
},
"cfg_rev": 1
}
Sys.SetConfig example
Example
{
"id": 0,
"config": {
"sys": {
"device": {
"name": ""
},
"location": {
"lat": 43.0866,
"lon": 25.2695
},
"ui": {
"lock": false,
"t_units": "C",
"flip": false,
"brightness": 7
},
"ble": {
"interval_ms": 333,
"beacon_count": 5
},
"cfg_rev": 2
},
"temperature:0": {
"id": 0,
"offset_C": 0
},
"trv:0": {
"id": 0,
"enable": true,
"override_enable": false,
"min_valve_position": 0,
"default_boost_duration": 1800,
"default_override_duration": 2147483647,
"default_override_target_C": 8,
"flags": []
}
}
}
Response
- Sys.SetConfig HTTP GET Response
- Sys.SetConfig Curl Response
- Sys.SetConfig Mos Response
null
{
"id": 1,
"src": "shellyplus2pm-a8032ab636ec",
"params": null
}
null
BTHome data
BTHome sensor data objects
id | name | data type | scale factor | description |
---|---|---|---|---|
0x00 | packet id | uint8 | 1 | revolving counter |
0x01 | battery | uint8 | 1 | battery level in percent (0-100) |
0x3A | button | uint8 | 1 | button press event (Only when button is pressed) |
0x45 | temperature | sint16 | 0.1 | target temperature in °C |
0x45 | temperature | sint16 | 0.1 | current temperature in °C |
0x45 | temperature | sint16 | 0.1 | external temperature in °C (only if available) |
Button press events
id | name | example |
---|---|---|
0x01 | single press | 0x3A01 |
0x80 | button hold | 0x3AFE |
ZigBee cluster data objects
General section
Cluster 0x0000 Basic
Attribute id | description | |
---|---|---|
0x0000 | ZCL version | |
0x0004 | manufacturer name | |
0x0005 | model identifier | |
0x0007 | power source | |
0x000A | product code | |
0x000D | serial number | |
0x4000 | sw build id | |
0xFFFD | cluster revision |
Cluster 0x0001 Power Configuration
Attribute id | description | |
---|---|---|
0x0021 | battery percentage remaining |
Cluster 0x0003 Identify
Attribute id | description | |
---|---|---|
0xFFFD | cluster revision (client/server) | |
0x0000 | identify time (server) |
HVAC section
Cluster 0x0201 Thermostat
Attribute id | description | |
---|---|---|
0x0000 | local temperature | |
0x0003 | abs min heat setpoint limit0x0004abs max heat setpoint limit | |
0x0011 | occupied cooling setpoint | |
0x0012 | occupied heating setpoint | |
0x0014 | unoccupied heating setpoint | |
0x0015 | min heat setpoint limit | |
0x0016 | max heat setpoint limit | |
0x001B | control sequence of operation | |
0x001E | thermostat running mode | |
0x001C | system mode |
ZLL section
Cluster 0x1000 ZLL Commissioning
Attribute id | description | |
---|---|---|
0xFFFD | cluster revision |