跳到主要内容

系统服务

系统服务专用于使用手机应用进行重启、Wi-Fi 重置和恢复出厂设置等操作。可以在 esp_rmaker_start() 函数前包含以下代码片段,从而添加系统服务:

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);

配置系统服务

可以通过 system_serv_config 配置系统服务,所需配置值如下:

  • flags:包含的参数应为使用标志值 SYSTEM_SERV_FLAG_REBOOTSYSTEM_SERV_FLAG_FACTORY_RESETSYSTEM_SERV_FLAG_WIFI_RESET 进行 OR 运算的结果。可以使用 SYSTEM_SERV_FLAGS_ALL 包含所有参数。
  • reboot_seconds:设置设备应在多少秒后重启。当 Reboot 参数接收到写入操作时,若值为零,则将立即触发重启。推荐值:2
  • reset_seconds:设置设备应在多少秒后重置,通常适用于 Wi-Fi 重置和恢复出厂设置。当 Wi-Fi 重置或恢复出厂设置参数接收到写入操作时,若值为零,则将立即触发重置。推荐值:2
  • reset_reboot_seconds:设置设备重置后,应在多少秒后重启。若值为零,则代表重置后无需重启。推荐值:2

运行上述命令行,将以下服务添加至节点配置中:

{
"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"]
}]
}

随后显示如下参数:

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

通过客户端使用系统服务

将参数写作 true 即触发相应操作,例如,{"System":{"Factory-Reset":true}} 将触发恢复出厂设置。

事件

每当触发重启或重置操作时,系统服务都会生成事件通知,以向应用程序代码提供该操作的相关信息。可能生成的事件如下:

  • RMAKER_EVENT_REBOOT:已触发节点重启操作。关联的事件数据表示节点将在多少秒后重启,数据类型为 uint8_t。需注意,由于该事件为异步接收事件,此处数据表示的时间可能与实际有所出入。
  • RMAKER_EVENT_WIFI_RESET:已触发 Wi-Fi 登录凭证重置。因调用 esp_rmaker_wifi_reset() 或相应的系统服务函数触发。
  • RMAKER_EVENT_FACTORY_RESET:已触发将节点重置为出厂默认设置。因调用 esp_rmaker_factory_reset() 或相应的系统服务函数触发。