Bluetooth Low Energy
The Bluetooth Low Energy component is called BLE
. It handles bluetooth services of a device. The Bluetooth Low Energy component uses BLE
as RPC namespace and provides the methods:
BLE.GetConfig
to obtain the component's configurationBLE.SetConfig
to update the component's configurationBLE.GetStatus
to obtain the component's status
It uses the key ble
when enumerated in objects including multiple component payloads, like Shelly.GetStatus
.
Observer
To support Shelly Bluetooth peripheral devices, the BLE component can act as a perpetual BT LE Observer. When enabled via the observer.enable
configuration flag, the device will run a constant passive Bluetooth LE scan and relay received advertisement packets to Shelly Cloud service, to enable scene triggers.
Enabling the observer relay functionality might impact BLE advertisement scanner in scripts. A requested interval and window for scanning in scripting might get adjusted to allow for the coexistence of both functionalities.
Observer is not applicable for battery-operated devices.
Methods
BLE.SetConfig
Properties:
Property | Type | Description |
---|---|---|
| object | Configuration that the method takes |
Find more about the config properties in config section
BLE.GetConfig
Find the BLE.GetConfig response properties in config section
BLE.GetStatus
Find more about the status response properties in status section
BLE.StartBluTrvAssociations
Available only on devices that support BLUTRV devices. Currently Shelly BLU Gateway Gen3
Associate BLUTRV device with the gateway or associate already associated BLUTRV device with BTHome temperature and/or window sensors (BLUHT, BLUDW) which can either be existing or will be added.
Request:
Property | Type | Description |
---|---|---|
| number | optional If not specified discover and associate new BLUTRV device with the gateway or Id of the BluTrv component instance to perform sensor associations (device doesn't need to be in pairing mode in this case) |
| number | optional Max discovery duration, seconds. Defaults to 30 if not provided. |
| number | optional Defaults to -80 if not provided. |
Response:
null
on success or error
StartBluTrvAssociations
will add a status entry when active and will emit status change notifications on start and end.
AssociationsStarted
status change:
{"blutrv_assoc":{"duration":30,"started_at":1729259344}}
AssociationsEnded
status change:
{"blutrv_assoc":null}
Configuration
The configuration of the Bluetooth Low Energy component shows whether the bluetooth connection is enabled.
Property | Type | Description | ||||||
---|---|---|---|---|---|---|---|---|
| boolean | True if bluetooth is enabled, false otherwise | ||||||
| object | Configuration of the rpc service
| ||||||
| object | Configuration of the BT LE observer
|
Currently only rpc service is implemented, but a global enable
flag is maintained for possible other future BLE functionality implementation. If either of the enable
flags is set to false
the device is not advertised. Changing the configuration requires restart.
Status
Property | Type | Description | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| object | BluTrvAssociations information, present only when associations are active
|
Examples
BLE.GetStatus example
- BLE.GetStatus HTTP GET Request
- BLE.GetStatus Curl Request
- BLE.GetStatus Mos Request
http://192.168.33.1/rpc/BLE.GetStatus
curl -X POST -d '{"id":1,"method":"BLE.GetStatus"}' http://${SHELLY}/rpc
mos --port ${PORT} call BLE.GetStatus
Response
- BLE.GetStatus HTTP GET Response
- BLE.GetStatus Curl Response
- BLE.GetStatus Mos Response
{}
{
"id": 1,
"src": "shellyplus1pm-441793ce3f08",
"params": {}
}
{}
BLE.GetConfig example
- BLE.GetConfig HTTP GET Request
- BLE.GetConfig Curl Request
- BLE.GetConfig Mos Request
http://192.168.33.1/rpc/BLE.GetConfig
curl -X POST -d '{"id":1,"method":"BLE.GetConfig"}' http://${SHELLY}/rpc
mos --port ${PORT} call BLE.GetConfig
Response
- BLE.GetConfig HTTP GET Response
- BLE.GetConfig Curl Response
- BLE.GetConfig Mos Response
{
"enable": true,
"rpc": {
"enable": true
}
}
{
"id": 1,
"src": "shellyplus1pm-441793ce3f08",
"params": {
"enable": true,
"rpc": {
"enable": true
}
}
}
{
"enable": true,
"rpc": {
"enable": true
}
}
BLE.SetConfig example
- BLE.SetConfig HTTP GET Request
- BLE.SetConfig Curl Request
- BLE.SetConfig Mos Request
http://192.168.33.1/rpc/BLE.SetConfig?config={"enable":true,"rpc":{"enable":true}}
curl -X POST -d '{"id":1,"method":"BLE.SetConfig","params":{"config":{"enable":true,"rpc":{"enable":true}}}}' http://${SHELLY}/rpc
mos --port ${PORT} call BLE.SetConfig '{"config":{"enable":true,"rpc":{"enable":true}}}'
Response
- BLE.SetConfig HTTP GET Response
- BLE.SetConfig Curl Response
- BLE.SetConfig Mos Response
{
"restart_required": true
}
{
"id": 1,
"src": "shellyplus1pm-441793ce3f08",
"params": {
"restart_required": true
}
}
{
"restart_required": true
}
BLE.StartBluTrvAssociations example
- BLE.StartBluTrvAssociations HTTP GET Request
- BLE.StartBluTrvAssociations Curl Request
- BLE.StartBluTrvAssociations Mos Request
http://192.168.33.1/rpc/BLE.StartBluTrvAssociations?blutrv_id=200&duration=120&rssi_thr=-80
curl -X POST -d '{"id":1,"method":"BLE.StartBluTrvAssociations","params":{"blutrv_id":200,"duration":120,"rssi_thr":-80}}' http://${SHELLY}/rpc
mos --port ${PORT} call BLE.StartBluTrvAssociations '{"blutrv_id":200,"duration":120,"rssi_thr":-80}'
Response
- BLE.StartBluTrvAssociations HTTP GET Response
- BLE.StartBluTrvAssociations Curl Response
- BLE.StartBluTrvAssociations Mos Response
null
{
"id": 1,
"src": "shellyblugwg3-3030f9ed6698",
"params": null
}
null