Component Concept
General
A component is an encapsulated functional unit which exposes methods for communication with the outside world. Each component has a status and a configuration. Hence, each component supports the methods: <component>.GetStatus
, <component>.GetConfig
, <component>.SetConfig
. The behavior of these methods is identical, they only differ in the format of the configuration and status structures.
Status
The status contains all static characteristics of a component. To get the status of a component, the method <component>.GetStatus
can be used. Alternatively, to see the status of all components in your device in one place, you can use Shelly.GetStatus
.
As the status characteristics are static, they cannot be set and that's the reason why Shelly Gen2+ devices support only <component>.GetStatus
method (but not a <component>.SetStatus
one).
The <component>.GetStatus
method returns an object specific to the chosen component. Hence, a parameter id
is needed in case the device has more than one instance of this component. Otherwise, <component>.GetStatus
takes no parameters. For example, a Shelly Pro4PM device has 4 instances of the switch component and only one instance of the cloud component. To get the status of the switch instance with id=2
, the request frame should be:
- Switch.GetStatus HTTP GET Request
- Switch.GetStatus Curl Request
- Switch.GetStatus Mos Request
http://192.168.33.1/rpc/Switch.GetStatus?id=2
curl -X POST -d '{"id":1, "method":"Switch.GetStatus", "params":{"id":2}}' http://${SHELLY}/rpc
mos --port ${PORT} call Switch.GetStatus '{"id":2}'
On the other hand, for getting the status of the only cloud instance, the request frame should be:
- Cloud.GetStatus HTTP GET Request
- Cloud.GetStatus Curl Request
- Cloud.GetStatus Mos Request
http://192.168.33.1/rpc/Cloud.GetStatus
curl -X POST -d '{"id":1, "method":"Cloud.GetStatus"}' http://${SHELLY}/rpc
mos --port ${PORT} call Cloud.GetStatus
Configuration
The configuration contains all component's configuration parameters. Here, the method <component>.GetConfig
is provided to return the configuration of a component and <component>.SetConfig
can be used to update configuration parameters of a component. A shorthand for obtaining the configuration of all the components in your device in one place, you can use Shelly.GetConfig
.
<component>.GetConfig
Analogically to <component>.GetStatus
, the method <component>.GetConfig
takes a parameter id
in case the device has more than one instance of a component. Otherwise, it takes no parameters. Response will contain the configuration structure
- Sys.GetConfig HTTP GET Request
- Sys.GetConfig Curl Request
- Sys.GetConfig Mos Request
http://192.168.33.1/rpc/Sys.GetConfig
curl -X POST -d '{"id":1, "method":"Sys.GetConfig"}' http://${SHELLY}/rpc
mos --port ${PORT} call Sys.GetConfig
<component>.SetConfig
Configuration of a component can be set through the method <component>.SetConfig
. Once again, it takes as parameter the id of the component, if needed. Additionally, it takes the required parameter config
- JSON object, containing the configuration to be applied. This object should be identical in structure to the JSON payload returned by <component>.GetConfig
, containing only the keys that need to be modified.
The response of <component>.SetConfig
is a JSON object, which contains only one attribute:
restart_required
: boolean, true if restart is required to apply the changes, false otherwise.
- Eth.SetConfig Curl Request
- Eth.SetConfig Mos Request
curl -X POST -d '{"id":1, "method":"Eth.SetConfig",
"params":{"config":{"enable":false}}}' http://${SHELLY}/rpc
mos --port ${PORT} call Eth.SetConfig '{"config":{"enable":false}}'
- Input.SetConfig Curl Request
- Input.SetConfig Mos Request
curl -X POST -d '{"id":1, "method":"Input.SetConfig",
"params":{"id":0, "config":{"name":"my-Shelly-One", "type":"switch"}}}' http://${SHELLY}/rpc
mos --port ${PORT} call Input.SetConfig '{"id":0, "config":{"name":"my-Shelly-One",
"type":"switch"}}'