matter协议软路由模块乐鑫esp32 wifi ble芯片ESPInsights远程监察平台,前面的文章对乐鑫提供的设备连云的解决方案 ESP RainMaker 物联网云平台进行了介绍。使用ESP RainMaker 物联网云平台的组件,可以帮助用户轻松地对接 ESP RainMaker,实现设备的远程控制。借助 ESP RainMaker 物联网云平台,用户可以轻松地完成matter协议软路由模块乐鑫esp32 wifi ble芯片ESP32-C3 智能灯产品的开发。但我们都知道,一个产品从立项到量产,需要经历功能评估、功能实现与功能验证这几个主要过程。
前几篇文章已经帮助了解了智能灯产品所具备的功能,以及这些功能是如何实现的。在实现智能灯的功能后,该如何进行系统性的功能验证与挂机验证呢?在开发完一个项目的功能代码后,还需要进行功能验证,这时可以将日志的等级设置为 Debug模式,并且在串口监控日志,完成调试工作,这是一个软件开发临近发版之前的必要验证。当完成基础的功能验证后,往往还会关闭日志输出和命令行调试等功能,matter协议软路由模块乐鑫esp32 wifi ble芯片发布 Release 版本此后,即使软件在 QA (Quality Assurance) 测试中或者在用户使用过程中出现异常,开发者也很难通过获取设备日志来快速定位并修复问题,甚至还可能需要通过拆机查看日志来分析异常原因。为解决这一问题,乐鑫科技开发了 ESPInsights,可支持开发者远程查看固件的运行状态和日志,以便及时发现并解决固件问题,加快软件开发进程。
ESPInsights 组件的简介
ESP Insights 组件(工程链接为 https://github.com/espressif/esp-insights)是一个远程监察平台,允许用户远程监控设备健康状况,包括警告和错误日志、设备运行参数指标、设备 Coredump 信息,以及用户自定义数据与事件。本文基于matter协议软路由模块乐鑫esp32 wifi ble芯片esp-insights 工程介绍 ESP Insights 组件的功能与使用,使用的 commit ID为afd70855eb4f456e7ef7dc233bf082ec7892d9df。ESPInsights 组件包括一个固件代理 (Insights代理),这个固件代理会在运行期间从设备捕获些重要的诊断信息,并定期将这些诊断信息上传到ESP Insights 云,然后由 ESP Insights云处理设备上报的诊断信息并进行可视化处理。开发者可以登录基于 Web 的仪表板,查看设备报告的健康状况和问题。目前只支持在 ESP RainMaker 物联网云平台上处理诊断信息和报告显示,其他云平台的支持会在后续版本中提供。
目前,可以从基于matter协议软路由模块乐鑫esp32 wifi ble芯片Web 的仪表板监控以下信息:
(1)错误日志。组件或者用户应用程序调用日志打印函数 ESP_LOGE()输出到串口的内容。
(2)警告日志。组件或者用户应用程序调用日志打印函数 ESP_LOGW()输出到串口的内容。
(3)自定义事件。用户应用程序调用函数 ESP_DIAG_EVENT()输出到串口的内容,自定义事件可以用于用户自定义的数据。
(4)复位原因。设备复位的原因 (如上电、软件复位、掉电等)。
(5)Coredump摘要。在发生崩溃的情况下,寄存器内容以及违规线程的堆栈回溯。
(6)指标。随时间变化的数据,如空闲堆大小、一段时间内绘制的 Wi-Fi信号强度等。
(7)变量。变量值,如设备IP 地址、网关地址、Wi-Fi 连接信息等。
1.ESP Insights 组件的功能
(1)查看设备属性(如名称、ID、固件版本等)和设备状态(如内存使用情况、大空闲块空闲堆值、Wi-Fi信号强度等)。
(2)查看设备固件运行期间生成的日志,如故障和警告等级的日志、固件崩溃时的回溯信息重启和其他自定义事件。
(3)查看设备上报的当前数据,并按照时间生成数据图表。
(4)支持用户自定义添加感兴趣的指标和变量。
2.ESP Insights 组件的优势
(1)加速软件产品的开发与发布。软件产品在正式发布前通常要进行 Beta 测试。在 Beta测试期内,用户会将产品在真实使用场景下出现的性能、稳定性、可靠性等问题反馈给开发者并由他们进行处理和修复。在此过程中,开发者往往需要花费大量的时间和精力定位问题并分析原因。使用 ESP Insights 组件,开发者能够远程查看设备的运行情况,并及时获取异常事件的详细信息,可大大节省处理问题的时间,加快软件开发和发布进程。matter协议软路由模块乐鑫esp32 wifi ble芯片ESP Insights 组件还会保存设备固件在崩溃前发生的异常事件,并在设备重启后将数据上传至云端,避免丢失异常信息。
(2)及时解决各类固件问题,例如:
1、开发者能够使用 ESP Insights 组件查看设备状态(如可用内存空间、大空闲块、Wi-Fi信号强度等),分析得出设备各指标的峰值,并在未来的固件版本中进行优化。
2、ESP Insights 组件的日志会记录所有异常事件的详细信息,开发者能够在用户发现异常之前就及时处理问题,避免设备异常对用户的实际使用造成影响。
(3)数据传输轻量、简洁且安全可靠。ESP Insights 组件能够以HTTPS 协议和MQTT 协议传输诊断数据。结合使用 ESP RainMaker 物联网云平台,可以与 RainMaker 物联网云平台共享MQTT 协议加密通道传输的诊断数据,在保证用户设备信息安全的同时,大大减少用户设备内存的开销。如果没有结合使用ESP RainMaker 物联网云平台,则可以单独使用HTTPS 协议传输诊断数据。matter协议软路由模块乐鑫esp32 wifi ble芯片相比结合使用ESP RainMaker 物联网云平台,会增加一条 TLS 链接,增大内存开销。设备与云平台之间传输的数据通过 CBOR 编码进行了优化,可大大节省数据传输带宽。后续 ESP Insights 组件还将把设备数据与来自云端的命令和控制数据整合到同一个MOTT消息中,通过减少 MOTT 消息的数量可以进一步降低成本。
ESPInsights 组件的使用
下面将基于 esp-insights 工程介绍 ESPInsights 组件的使用,并且指导如何在远端 Dashboard 上查看设备上报的信息。在esp-insights 工程中使用 ESPInsights 组件的步骤如下:
1.下载新的 esp-RainMaker
依据前文对 ESP RainMaker 物联网云平台的介绍,拉取 esp-RainMaker 的工程代码
esp-insights 会以子模组的形式存在于该工程目录 esp-RainMaker/components 下。$ git clone --recursive https://github.com/espressif/esp-RainMaker.git
2.修改 esp-RainMaker 的 CMakeLists.txt
将esp-insight 作为组件添加进esp-RainMaker 工程,保证在esp-RainMaker 工程代码下可以调用 esp-insight 的函数。在工程编译的当前目录,修改 CMakeLists.txt,将下面的命令:
1.set(EXTRA_COMPONENT_DIRS $(RMAKER_PATH)/components $(RMAKER PATH)/examples/common)
修改为:
1.set(EXTRA_COMPONENT_DIRS $(RMAKER_PATHJ/components $(RMAKER PATH)/examples/common $(RMAKER_PATH)/components/esp-insights/components)
3.使用 ESPInsights 组件的功能
matter协议软路由模块乐鑫esp32 wifi ble芯片ESP Insights 组件的相关代码已经由 examples/common/app_insights 组件封装好了,用户只需要在代码里包含app_insghts.h,并且在调用esp_rmaker_start()函数之前调用app_insights_enable()函数即可。但该功能由宏 CONEIG_ESP_INSIGHTS_ENABLEI控制,默认是关闭的,可以通过默认配置打开或者图像配置界面打开(使用 idf.py 工具打开菜单menuconfig- Component config - ESP Insights - Enable ESP Insights).
4,编译烧录运行
执行如下命令进行烧录编译:
$ idf.py build flash monitor
编译完成时会看到如下编译日志,会在build目录下生成压缩文件 led light-v1.0.zip该文件会在后续使用。
-===Generating insights firmware package build/led light-vl.0.zip =======
led light-vl.0
led light-v1.0/led_light.bin
led light-v1.0/sdkconfig
led light-v1.0/partition table
led light-v1.0/partition_table/partition-table.bin
led light-v1.0/bootloader
led light-v1.0/bootloader/bootloader.bin
led light-v1.0/partitions.csv
led light-vl.0/project_build_config.json
led light-v1.0/led_light.map
led light-vl.0/led_light.elf
led light-v1.0/project_description.json