ShellyX
Powered by Shelly Devices
Powered by Shelly devices are products manufactured by third-party vendors that embed ShellyX modules to connect seamlessly with the Shelly ecosystem, transforming them into smart devices.
There are two main categories of such devices:
Shelly-developed firmware devices
- The device firmware is fully developed by Shelly and integrated directly into Shelly OS, hereafter referred to as the Application.
ShellyX devices
These devices are split into two subgroups: XMOD and XT.
Both rely on specialized Application software (XMOD or XT) which contains no device-specific functionality by default.
Shelly.GetDeviceInfoto obtain information about the device.
XMOD Devices — No-Code Solution
XMOD devices use predefined Application Components to implement device-specific functionality. A special configuration defines which Components to use, how they should be set up, and how the Shelly module interacts with the device’s MCU using inputs/outputs. This approach enables a no-code solution: third-party manufacturers can configure ShellyX modules entirely through the ShellyX Developer Portal, without writing custom software.
XT Devices — Low-Code Solution
XT devices are designed for cases where Application Components are not sufficient. Manufacturers can extend functionality by writing a custom JavaScript module that runs on the ShellyX module. This module is called a Service.
A Service is similar to a Component, but it is bound to the specific device it manages. Each Service acts as a bridge between the device's unique functionality and the XT module, and it encapsulates its own Virtual Components. These Virtual Components function the same way as standard Virtual Components, but they can't be managed through Virtual API.
Additionally, XT modules require a configuration to instruct Application on which Service to run and how to configure inputs/outputs.
Configuration Data for ShellyX Modules (JWS)
Configuration for ShellyX modules is provided in the form of a JSON Web Token (JWT), referred to as JWS (JWT Signed). A JWS defines key information about the device, including:
- Assigned inputs and outputs
- Product name and manufacturer name
- Product URL
To obtain a JWS token, the manufacturer must create the configuration through the ShellyX Developer Portal.
Methods
Shelly.GetDeviceInfo
Request
Response
For XT1 devices, the response includes additional attributes:
| Property | Type | Description | |||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| string | Unique identifier of the JWS configuration. | |||||||||||||||||||||||||||
| object | Decoded JWS payload containing detailed configuration data.
|
Example
Shelly.GetDeviceInfo example
- Shelly.GetDeviceInfo HTTP GET Request
- Shelly.GetDeviceInfo Curl Request
- Shelly.GetDeviceInfo Mos Request
http://192.168.33.1/rpc/Shelly.GetDeviceInfo
curl -X POST -d '{"id":1,"method":"Shelly.GetDeviceInfo"}' http://${SHELLY}/rpc
mos --port ${PORT} call Shelly.GetDeviceInfo
Response
- Shelly.GetDeviceInfo HTTP GET Response
- Shelly.GetDeviceInfo Curl Response
- Shelly.GetDeviceInfo Mos Response
{
"name": null,
"id": "watervalve-84fce6368be0",
"mac": "84FCE6368BE0",
"slot": 0,
"model": "S3XT-0S",
"gen": 3,
"fw_id": "20251009-012418/gee47857",
"ver": "1.8.99-dev141821+1-dev141902",
"app": "XT1+simple-water-valve-controller",
"auth_en": false,
"auth_domain": null,
"jti": "0000C1000003",
"jwt": {
"aud": "XT1",
"iat": 1000000000,
"jti": "000000000000",
"v": 1,
"p": "WaterValve",
"n": "Water Valve",
"m": "",
"url": "",
"f": 0,
"xt1": {
"svc0": {
"type": "simple-water-valve-controller"
}
}
},
"svc0": {
"type": "simple-water-valve-controller",
"ver": "1-dev141902",
"build_id": "20251009-103105/6997087"
}
}
{
"id": 1,
"src": "st-802-54320440a210",
"params": {
"name": null,
"id": "watervalve-84fce6368be0",
"mac": "84FCE6368BE0",
"slot": 0,
"model": "S3XT-0S",
"gen": 3,
"fw_id": "20251009-012418/gee47857",
"ver": "1.8.99-dev141821+1-dev141902",
"app": "XT1+simple-water-valve-controller",
"auth_en": false,
"auth_domain": null,
"jti": "0000C1000003",
"jwt": {
"aud": "XT1",
"iat": 1000000000,
"jti": "000000000000",
"v": 1,
"p": "WaterValve",
"n": "Water Valve",
"m": "",
"url": "",
"f": 0,
"xt1": {
"svc0": {
"type": "simple-water-valve-controller"
}
}
},
"svc0": {
"type": "simple-water-valve-controller",
"ver": "1-dev141902",
"build_id": "20251009-103105/6997087"
}
}
}
{
"name": null,
"id": "watervalve-84fce6368be0",
"mac": "84FCE6368BE0",
"slot": 0,
"model": "S3XT-0S",
"gen": 3,
"fw_id": "20251009-012418/gee47857",
"ver": "1.8.99-dev141821+1-dev141902",
"app": "XT1+simple-water-valve-controller",
"auth_en": false,
"auth_domain": null,
"jti": "0000C1000003",
"jwt": {
"aud": "XT1",
"iat": 1000000000,
"jti": "000000000000",
"v": 1,
"p": "WaterValve",
"n": "Water Valve",
"m": "",
"url": "",
"f": 0,
"xt1": {
"svc0": {
"type": "simple-water-valve-controller"
}
}
},
"svc0": {
"type": "simple-water-valve-controller",
"ver": "1-dev141902",
"build_id": "20251009-103105/6997087"
}
}