Skip to main content

System Service

System service is designed for operations like reboot, Wi-Fi reset, and factory reset via phone apps. The service can be added using the following snippet before the esp_rmaker_start() function:

esp_rmaker_system_serv_config_t system_serv_config = {
.flags = SYSTEM_SERV_FLAGS_ALL,
.reboot_seconds = 2,
.reset_seconds = 2,
.reset_reboot_seconds = 2
};
esp_rmaker_system_service_enable(&system_serv_config);

Configuring System Service

The system service can be configured by setting the following values in system_serv_config:

  • flags: The parameters to be included are chosen using OR of flag values SYSTEM_SERV_FLAG_REBOOT, SYSTEM_SERV_FLAG_FACTORY_RESET, and SYSTEM_SERV_FLAG_WIFI_RESET. SYSTEM_SERV_FLAGS_ALL will include all parameters.
  • reboot_seconds: Time in seconds after which the device should reboot. A value of zero would trigger an immediate reboot if a write operation is received for the Reboot parameter. Recommended value: 2.
  • reset_seconds: Time in seconds after which the device should reset (Wi-Fi or factory). A value of zero would trigger an immediate action if a write operation is received for the Wi-Fi reset or factory reset parameter. Recommended value: 2.
  • reset_reboot_seconds: Time in seconds after which the device should reboot after it has been reset. A value of zero would mean that there will not be any reboot after the reset. Recommended value: 2.

With the above call, the following service gets added to the node configuration:

{
"name": "System",
"type": "esp.service.system",
"params": [{
"name": "Reboot",
"type": "esp.param.reboot",
"data_type": "bool",
"properties": ["read", "write"]
}, {
"name": "Factory-Reset",
"type": "esp.param.factory-reset",
"data_type": "bool",
"properties": ["read", "write"]
}, {
"name": "Wi-Fi-Reset",
"type": "esp.param.wifi-reset",
"data_type": "bool",
"properties": ["read", "write"]
}]
}

The parameters show up like this:

{
"System": {
"Reboot": false,
"Factory-Reset": false,
"Wi-Fi-Reset": false
}
}

Using System Service from Clients

Writing true to any of these would trigger the corresponding action. For example, {"System":{"Factory-Reset":true}} will trigger a factory reset.

Events

Whenever any of the reboot/reset is triggered, event notifications are generated to indicate the application code about the operation. Here are the various events generated:

  • RMAKER_EVENT_REBOOT: Node reboot has been triggered. The associated event data is the time in seconds (type: uint8_t) after which the node will reboot. Note that this time may not be accurate as the events are received asynchronously.
  • RMAKER_EVENT_WIFI_RESET: Wi-Fi credentials reset. Triggered after calling esp_rmaker_wifi_reset() or the corresponding system service call.
  • RMAKER_EVENT_FACTORY_RESET: Node reset to factory defaults. Triggered after calling esp_rmaker_factory_reset() or the corresponding system service call.