系统服务
系统服务专用于使用手机应用进行重启、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_REBOOT
、SYSTEM_SERV_FLAG_FACTORY_RESET
和SYSTEM_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()
或相应的系统服务函数触发。