示例程序

ali-iotkit 软件包同时支持阿里现有的 LinkDevelopLinkPlatform 平台。

本文针对这两个平台分别进行示例程序的演示,用户可以根据自己的需求选择使用其中的一个。

LinkDevelop 平台

LinkDevelop 平台以 RGB_LED 为例,介绍设备与云端如何进行双向通讯。

准备工作

  • 注册 LinkDevelop 平台
    注册 LinkDevelop 平台

  • 新建项目
    新建项目

  • 新增产品
    新增产品的时候,根据需要选择数据格式,这里使用 Alink 数据格式演示,并选择 WiFi 通信方式。

打开产品开发页面

创建产品

填写产品信息

进入产品开发

  • 增加功能
    为 RGB LED 演示产品添加 RGB 调色功能,如下图所示:

增加产品功能

  • 添加设备
    创建产品后,点击查看进入产品详情页面,点击设备开发,新增一个调试设备。

添加设备

成功创建设备后,可以获取到设备激活需要的三元组(ProductKey、DeviceName、DeviceSecret),后面需要使用 menuconfig 配置到设备 SDK 中。

获取设备激活凭证

  • 获取软件包

打开 RT-Thread 提供的 ENV 工具,使用 menuconfig 配置软件包。

  • 配置 iotkit 软件包
    配置使能 iotkit 软件包并填写设备激活凭证

menuconfig 中选择阿里云平台为 LinkDevelop,OTA channel 选择 MQTT(以 MQTT 为例),详细的配置如下所示:

shell
RT-Thread online packages —->
IoT - internet of things —->
IoT Cloud —->
[] Ali-iotkit: Ali Cloud SDK for IoT platform —->
Select Aliyun platform (LinkDevelop Platform) —->
(a1dSQSGZ77X) Config Product Key
(RGB-LED-DEV-1) Config Device Name
(Ghuiyd9nmGowdZzjPqFtxhm3WUHEbIlI) Config Device Secret
-
- Enable MQTT
[] Enable MQTT sample
[
] Enable MQTT direct connect
[] Enable SSL
[ ] Enable COAP
[
] Enable OTA
Select OTA channel (Use MQTT OTA channel) —->
version (latest) —->

  • 增加 mbedTLS 帧大小
    阿里 TLS 认证过程中数据包较大,这里需要增加 TLS 帧大小,OTA 的时候至少需要 8K 大小。

打开 RT-Thread 提供的 ENV 工具,使用 menuconfig 配置 TLS 帧大小。

shell
RT-Thread online packages —->
security packages —->
-*- mbedtls:An open source, portable, easy to use,
readable and flexible SSL library —->
(8192) Maxium fragment length in bytes

  • 使用 pkgs —update 命令下载软件包

    MQTT 示例

该 MQTT 示例程序以 RGB-LED 为例,演示了如何在设备上使用 MQTT + TLS/SSL 通道与阿里云平台建立双向通信。

示例文件

示例程序路径 验证平台 说明
samples/mqtt/mqtt-example.c LinkDevelop, LinkPlatform 基于 MQTT 通道的设备和云双向通信例程

命令列表

例程中,使用 MSH 命令启动 MQTT 例程,命令如下所示:

命令 说明
ali_mqtt_test start 启动 MQTT 示例
ali_mqtt_test pub open 开灯,并向云端同步开灯状态
ali_mqtt_test pub close 关灯,并向云端同步关灯状态
ali_mqtt_test stop 停止 MQTT 示例

启动 MQTT

使用 ali_mqtt_test start 命令启动 MQTT 示例,成功后设备 log 显示订阅成功。

设备 log 如下所示:

  1. msh />ali_mqtt_test start
  2. ali_mqtt_main|645 :: iotkit-embedded sdk version: V2.10
  3. [inf] iotx_device_info_init(40): device_info created successfully!
  4. [dbg] iotx_device_info_set(50): start to set device info!
  5. [dbg] iotx_device_info_set(64): device_info set successfully!
  6. ···
  7. [inf] iotx_mc_init(1703): MQTT init success!
  8. [inf] _ssl_client_init(175): Loading the CA root certificate ...
  9. ···
  10. [inf] _TLSConnectNetwork(420): . Verifying peer X.509 certificate..
  11. [inf] _real_confirm(92): certificate verification result: 0x200
  12. [inf] iotx_mc_connect(2035): mqtt connect success!
  13. ···
  14. [inf] iotx_mc_subscribe(1388): mqtt subscribe success,topic = /sys/a1HETlEuvri/RGB-LED-DEV-1/thing/service/property/set!
  15. [inf] iotx_mc_subscribe(1388): mqtt subscribe success,topic = /sys/a1HETlEuvri/RGB-LED-DEV-1/thing/event/property/post_reply!
  16. [dbg] iotx_mc_cycle(1269): SUBACK
  17. event_handle|124 :: subscribe success, packet-id=0
  18. [dbg] iotx_mc_cycle(1269): SUBACK
  19. event_handle|124 :: subscribe success, packet-id=0
  20. [inf] iotx_mc_keepalive_sub(2226): send MQTT ping...
  21. [inf] iotx_mc_cycle(1295): receive ping response!

设备发布消息

使用 ali_mqtt_test pub open 命令发送 LED 状态到云端,成功后设备 log 显示成功码 200

设备 log 如下所示:

  1. msh />ali_mqtt_test pub open
  2. ···
  3. [dbg] iotx_mc_cycle(1277): PUBLISH
  4. [dbg] iotx_mc_handle_recv_PUBLISH(1091): Packet Ident : 00000000
  5. [dbg] iotx_mc_handle_recv_PUBLISH(1092): Topic Length : 57
  6. [dbg] iotx_mc_handle_recv_PUBLISH(1096): Topic Name : /sys/a1HETlEuvri/RGB-LED-DEV-1/thing/service/property/set
  7. [dbg] iotx_mc_handle_recv_PUBLISH(1099): Payload Len/Room : 100 / 962
  8. [dbg] iotx_mc_handle_recv_PUBLISH(1100): Receive Buflen : 1024
  9. [dbg] iotx_mc_handle_recv_PUBLISH(1111): delivering msg ...
  10. [dbg] iotx_mc_deliver_message(866): topic be matched
  11. _demo_message_arrive|182 :: ----
  12. _demo_message_arrive|183 :: packetId: 0
  13. _demo_message_arrive|187 :: Topic: '/sys/a1HETlEuvri/RGB-LED-DEV-1/thing/service/property/set' (Length: 57)
  14. _demo_message_arrive|191 :: Payload:
  15. '{"method": "thing.service.property.set","id": "36195462","params":{"LightSwitch":1},"version":"1.0.0"}' (Length: 100)
  16. _demo_message_arrive|192 :: ----

云端查看发布的消息

在设备详情里的运行状态里可以查看设备的上报到云端的消息内容。

查看设备详情

查看设备运行状态

云端推送消息到设备

使用云端的调试控制台给设备推送消息。

  • 打开调试控制台
    打开调试控制台

  • 发送调试命令
    在线调试页面

查看设备订阅日志

使用调试控制台发送命令后,设备可以接受到命令,log 如下所示:

  1. [dbg] iotx_mc_handle_recv_PUBLISH(1091): Packet Ident : 00000000
  2. [dbg] iotx_mc_handle_recv_PUBLISH(1092): Topic Length : 52
  3. [dbg] iotx_mc_handle_recv_PUBLISH(1096): Topic Name : /sys/a1Ayv8xhoIl/RGB-DEV1/thing/service/property/set
  4. [dbg] iotx_mc_handle_recv_PUBLISH(1099): Payload Len/Room : 100 / 967
  5. [dbg] iotx_mc_handle_recv_PUBLISH(1100): Receive Buflen : 1024
  6. [dbg] iotx_mc_handle_recv_PUBLISH(1111): delivering msg ...
  7. [dbg] iotx_mc_deliver_message(866): topic be matched
  8. _demo_message_arrive|178 :: ----
  9. _demo_message_arrive|179 :: packetId: 0
  10. _demo_message_arrive|183 :: Topic: '/sys/a1Ayv8xhoIl/RGB-DEV1/thing/service/property/set' (Length: 52)
  11. _demo_message_arrive|187 :: Payload:
  12. '{"method":"thing.service.property.set","id":"35974024","params":{"LightSwitch":0},"version":"1.0.0"}' (Length: 100)
  13. _demo_message_arrive|188 :: ----

退出 MQTT 示例

使用 ali_mqtt_test stop 命令退出 MQTT 示例,设备 log 如下所示:

  1. msh />ali_mqtt_test stop
  2. [inf] iotx_mc_unsubscribe(1423): mqtt unsubscribe success,topic = /sys/a1HETlEuvri/RGB-LED-DEV-1/thing/event/property/post_reply!
  3. [inf] iotx_mc_unsubscribe(1423): mqtt unsubscribe success,topic = /sys/a1HETlEuvri/RGB-LED-DEV-1/thing/service/property/set!
  4. event_handle|136 :: unsubscribe success, packet-id=0
  5. event_handle|136 :: unsubscribe success, packet-id=0
  6. [dbg] iotx_mc_disconnect(2121): rc = MQTTDisconnect() = 0
  7. [inf] _network_ssl_disconnect(514): ssl_disconnect
  8. [inf] iotx_mc_disconnect(2129): mqtt disconnect!
  9. [inf] iotx_mc_release(2175): mqtt release!
  10. [err] LITE_dump_malloc_free_stats(594): WITH_MEM_STATS = 0
  11. mqtt_client|329 :: out of sample!

OTA 示例

固件升级支持对设备的固件进行远程空中升级(Over-The-Air),实现对设备的远程维护、功能升级、问题修复等场景的使用。您可以指定产品新增一个固件,对固件进行验证,验证通过后开始批量升级,并在固件详情中查看升级结果。

示例文件

示例程序路径 验证平台 说明
samples/ota/ota_mqtt-example.c LinkDevelop, LinkPlatform 基于 MQTT 通道的设备 OTA 例程

命令列表

例程中,使用 MSH 命令启动 OTA 例程,命令如下所示:

命令 说明
ali_ota_test start 启动 OTA 示例
ali_ota_test stop 手动退出 OTA 示例

运行 OTA 示例

使用 ali_ota_test start 命令启动 OTA 例程,然后等待云端发送 OTA 指令。

设备 log 如下所示:

  1. msh />ali_ota_test start
  2. ali_ota_main|372 :: iotkit-embedded sdk version: V2.10
  3. [inf] iotx_device_info_init(40): device_info created successfully!
  4. [dbg] iotx_device_info_set(50): start to set device info!
  5. [dbg] iotx_device_info_set(64): device_info set successfully!
  6. ···
  7. [inf] iotx_mc_init(1703): MQTT init success!
  8. [inf] _ssl_client_init(175): Loading the CA root certificate ...
  9. ···
  10. [inf] _TLSConnectNetwork(420): . Verifying peer X.509 certificate..
  11. [inf] _real_confirm(92): certificate verification result: 0x200
  12. [inf] iotx_mc_connect(2035): mqtt connect success!
  13. ···
  14. [inf] iotx_mc_subscribe(1388): mqtt subscribe success,topic = /ota/device/upgrade/a1HETlEuvri/RGB-LED-DEV-1!
  15. mqtt_client|241 :: wait ota upgrade command....
  16. [dbg] iotx_mc_cycle(1260): PUBACK
  17. event_handle|130 :: publish success, packet-id=2
  18. [dbg] iotx_mc_cycle(1269): SUBACK
  19. event_handle|106 :: subscribe success, packet-id=1
  20. mqtt_client|241 :: wait ota upgrade command....
  21. mqtt_client|241 :: wait ota upgrade command....

新增固件

这里需要用户上传一个 bin 类型的测试固件,随意一个 bin 固件即可,演示例程只进行固件下载及校验,不会写入 Flash,所以也不会真正进行固件搬运升级。

LinkDevelop 平台新增 OTA 固件

验证固件

LinkDevelop 平台验证 OTA 固件

设备日志

推送成功后,设备开始下载固件,下载完成后自动进行固件完整性校验,设备端测试日志如下所示:

  1. ···
  2. mqtt_client|254 :: Here write OTA data to file....
  3. [dbg] IOT_OTA_Ioctl(457):
  4. origin=e4e54df52a3b530c7e0544b2872f1305, now=e4e54df52a3b530c7e0544b2872f1305
  5. mqtt_client|280 :: The firmware is valid! Download firmware successfully.
  6. mqtt_client|294 :: OTA FW version: v10

云端升级进度展示

设备升级过程中云端会显示设备下载固件的进度,固件下载完成并校验固件成功,设备 SDK 上报新的版本号到云端,云端会显示升级成功,如下图所示:

升级进度

升级进度 100% 后,再次运行 ali_ota_test start 命令,将最新的版本号上传到云端,版本号匹配成功后,云端显示升级成功,如下图所示:

升级成功

退出 OTA 例程

升级成功或者升级失败会自动退出 OTA 例程,如果需要手动退出 OTA 例程,请使用 ali_ota_test stop 命令。

  1. msh />ali_ota_test stop
  2. msh />[dbg] iotx_mc_disconnect(2121): rc = MQTTDisconnect() = 0
  3. [inf] _network_ssl_disconnect(514): ssl_disconnect
  4. [inf] iotx_mc_disconnect(2129): mqtt disconnect!
  5. [inf] iotx_mc_release(2175): mqtt release!
  6. [err] LITE_dump_malloc_free_stats(594): WITH_MEM_STATS = 0
  7. mqtt_client|340 :: out of sample!

LinkPlatform 平台

准备工作

  • 注册 LinkPlatform 平台
    注册 LinkPlatform 平台

  • 创建产品
    创建产品

  • 添加设备
    在设备管理菜单下,新增一个测试设备,点击查看进入设备详情页面。

成功创建设备后,可以获取到设备激活需要的三元组(ProductKey、DeviceName、DeviceSecret),后面需要使用 menuconfig 配置到设备 SDK 中。

添加设备

设备激活凭证

  • 查看消息 Topic 列表
    进入设备详情页面,然后在 Topic 列表 选项查看创建设备默认分配的 Topic 列表,以及 Topic 权限。

进入设备详情页

查看 MQTT Topic 列表

  • 自定义 Topic
    MQTT 示例程序中会用到名为 data 的 Topic,Topic 权限为发布和订阅,因此这里必须自定义一个 data Topic,如下图所示:

自定义 Topic

  • 开通固件升级服务
    开通固件升级服务

开通固件升级服务

  • 获取软件包

打开 RT-Thread 提供的 ENV 工具,使用 menuconfig 配置软件包。

  • 配置 iotkit 软件包
    配置使能 iotkit 软件包并填写设备激活凭证

menuconfig 中选择阿里云平台为 LinkPlatform,OTA channel 选择 MQTT(以 MQTT 为例),详细的配置如下所示:

shell
RT-Thread online packages —->
IoT - internet of things —->
IoT Cloud —->
[] Ali-iotkit: Ali Cloud SDK for IoT platform —->
Select Aliyun platform (LinkPlatform Platform) —->
(a1dSQSGZ77X) Config Product Key
(RGB-LED-DEV-1) Config Device Name
(Ghuiyd9nmGowdZzjPqFtxhm3WUHEbIlI) Config Device Secret
-
- Enable MQTT
[] Enable MQTT sample
[
] Enable MQTT direct connect
[] Enable SSL
[ ] Enable COAP
[
] Enable OTA
Select OTA channel (Use MQTT OTA channel) —->
version (latest) —->

  • 增加 mbedTLS 帧大小
    阿里 TLS 认证过程中数据包较大,这里需要增加 TLS 帧大小,OTA 的时候至少需要 8K 大小。

打开 RT-Thread 提供的 ENV 工具,使用 menuconfig 配置 TLS 帧大小。

{.c}
RT-Thread online packages —->
security packages —->
-*- mbedtls:An open source, portable, easy to use,
readable and flexible SSL library —->
(8192) Maxium fragment length in bytes

  • 使用 pkgs —update 命令下载软件包

    MQTT 示例

该 MQTT 示例程序以data Topic 为例,演示了如何在设备上使用 MQTT + TLS/SSL 通道与阿里云平台建立双向通信。

示例文件

示例程序路径 验证平台 说明
samples/mqtt/mqtt-example.c LinkDevelop, LinkPlatform 基于 MQTT 通道的设备和云双向通信例程

命令列表

例程中,使用 MSH 命令启动 MQTT 例程,命令如下所示:

命令 说明
ali_mqtt_test start 启动 MQTT 示例
ali_mqtt_test pub open 开灯,并向云端同步开灯状态
ali_mqtt_test pub close 关灯,并向云端同步关灯状态
ali_mqtt_test stop 停止 MQTT 示例

启动 MQTT

使用 ali_mqtt_test start 命令启动 MQTT 示例,成功后设备 log 显示订阅成功。

设备 log 如下所示:

  1. msh />ali_mqtt_test start
  2. ali_mqtt_main|645 :: iotkit-embedded sdk version: V2.10
  3. [inf] iotx_device_info_init(40): device_info created successfully!
  4. [dbg] iotx_device_info_set(50): start to set device info!
  5. [dbg] iotx_device_info_set(64): device_info set successfully!
  6. ···
  7. [inf] iotx_mc_init(1703): MQTT init success!
  8. [inf] _ssl_client_init(175): Loading the CA root certificate ...
  9. ···
  10. [inf] _TLSConnectNetwork(420): . Verifying peer X.509 certificate..
  11. [inf] _real_confirm(92): certificate verification result: 0x200
  12. [inf] iotx_mc_connect(2035): mqtt connect success!
  13. ···
  14. [inf] iotx_mc_subscribe(1388): mqtt subscribe success,topic = /a1P1TlTjU9Q/LP-TEST-DEV-1/data!
  15. [dbg] iotx_mc_cycle(1269): SUBACK
  16. event_handle|124 :: subscribe success, packet-id=0
  17. [inf] iotx_mc_keepalive_sub(2226): send MQTT ping...
  18. [inf] iotx_mc_cycle(1295): receive ping response!

设备发布消息

使用 ali_mqtt_test pub open 命令发送消息 data Topic。

设备 log 如下所示:

  1. msh />ali_mqtt_test pub open
  2. ali_mqtt_test_pub|583 ::
  3. publish message:
  4. topic: /a1P1TlTjU9Q/LP-TEST-DEV-1/data
  5. payload: {"id" : "1","version":"1.0","params" : {"RGBColor" : {"Red":247,"Green":60,"Blue":74},"LightSwitch" : 1},"method":"thing.event.property.post"}
  6. rc = 3
  7. msh />[dbg] iotx_mc_cycle(1260): PUBACK
  8. event_handle|148 :: publish success, packet-id=0
  9. [dbg] iotx_mc_cycle(1260): PUBACK
  10. event_handle|148 :: publish success, packet-id=0
  11. [dbg] iotx_mc_cycle(1277): PUBLISH
  12. ···
  13. [dbg] iotx_mc_handle_recv_PUBLISH(1100): Receive Buflen : 1024
  14. [dbg] iotx_mc_handle_recv_PUBLISH(1111): delivering msg ...
  15. [dbg] iotx_mc_deliver_message(866): topic be matched
  16. _demo_message_arrive|182 :: ----
  17. _demo_message_arrive|183 :: packetId: 19324
  18. _demo_message_arrive|187 :: Topic: '/a1P1TlTjU9Q/LP-TEST-DEV-1/data' (Length: 31)
  19. _demo_message_arrive|191 :: Payload:
  20. '{"id" : "1","version":"1.0","params" : {"RGBColor" : {"Red":247,"Green":60,"Blue":74},"LightSwitch" : 1},
  21. "method":"thing.event.property.post"}' (Length: 142)
  22. _demo_message_arrive|192 :: ----

查看云端日志

在设备详情里的运行状态里可以查看设备的上报到云端的消息内容。

查看云端日志

云端推送消息到设备

云端发布消息到设备

查看设备订阅日志

使用调试控制台发送命令后,设备可以接受到命令,log 如下所示:

  1. msh />[dbg] iotx_mc_cycle(1277): PUBLISH
  2. [dbg] iotx_mc_handle_recv_PUBLISH(1091): Packet Ident : 00000000
  3. [dbg] iotx_mc_handle_recv_PUBLISH(1092): Topic Length : 31
  4. [dbg] iotx_mc_handle_recv_PUBLISH(1096): Topic Name : /a1P1TlTjU9Q/LP-TEST-DEV-1/data
  5. [dbg] iotx_mc_handle_recv_PUBLISH(1099): Payload Len/Room : 33 / 989
  6. [dbg] iotx_mc_handle_recv_PUBLISH(1100): Receive Buflen : 1024
  7. [dbg] iotx_mc_handle_recv_PUBLISH(1111): delivering msg ...
  8. [dbg] iotx_mc_deliver_message(866): topic be matched
  9. _demo_message_arrive|182 :: ----
  10. _demo_message_arrive|183 :: packetId: 0
  11. _demo_message_arrive|187 :: Topic: '/a1P1TlTjU9Q/LP-TEST-DEV-1/data' (Length: 31)
  12. _demo_message_arrive|191 :: Payload: 'This message comes from the cloud' (Length: 33)
  13. _demo_message_arrive|192 :: ----

退出 MQTT 示例

使用 ali_mqtt_test stop 命令退出 MQTT 示例,设备 log 如下所示:

  1. msh />ali_mqtt_test stop
  2. msh />[inf] iotx_mc_unsubscribe(1423): mqtt unsubscribe success,topic = /a1P1TlTjU9Q/LP-TEST-DEV-1/data!
  3. event_handle|136 :: unsubscribe success, packet-id=0
  4. [dbg] iotx_mc_disconnect(2121): rc = MQTTDisconnect() = 0
  5. [inf] _network_ssl_disconnect(514): ssl_disconnect
  6. [inf] iotx_mc_disconnect(2129): mqtt disconnect!
  7. [inf] iotx_mc_release(2175): mqtt release!
  8. [err] LITE_dump_malloc_free_stats(594): WITH_MEM_STATS = 0
  9. mqtt_client|329 :: out of sample!

OTA 示例

固件升级支持对设备的固件进行远程空中升级(Over-The-Air),实现对设备的远程维护、功能升级、问题修复等场景的使用。您可以指定产品新增一个固件,对固件进行验证,验证通过后开始批量升级,并在固件详情中查看升级结果。

示例文件

示例程序路径 验证平台 说明
samples/ota/ota_mqtt-example.c LinkDevelop, LinkPlatform 基于 MQTT 通道的设备 OTA 例程

命令列表

例程中,使用 MSH 命令启动 OTA 例程,命令如下所示:

命令 说明
ali_ota_test start 启动 OTA 示例
ali_ota_test stop 手动退出 OTA 示例

运行 OTA 示例

使用 ali_ota_test start 命令启动 OTA 例程,然后等待云端发送 OTA 指令。

设备 log 如下所示:

  1. msh />ali_ota_test start
  2. ali_ota_main|372 :: iotkit-embedded sdk version: V2.10
  3. [inf] iotx_device_info_init(40): device_info created successfully!
  4. [dbg] iotx_device_info_set(50): start to set device info!
  5. [dbg] iotx_device_info_set(64): device_info set successfully!
  6. ···
  7. [inf] iotx_mc_init(1703): MQTT init success!
  8. [inf] _ssl_client_init(175): Loading the CA root certificate ...
  9. ···
  10. [inf] _TLSConnectNetwork(420): . Verifying peer X.509 certificate..
  11. [inf] _real_confirm(92): certificate verification result: 0x200
  12. [inf] iotx_mc_connect(2035): mqtt connect success!
  13. ···
  14. [dbg] iotx_mc_report_mid(2292): MID Report: topic name = '/sys/a1P1TlTjU9Q/LP-TEST-DEV-1/thing/status/update'
  15. [dbg] iotx_mc_report_mid(2309): MID Report: finished, IOT_MQTT_Publish() = 0
  16. [inf] iotx_mc_subscribe(1388): mqtt subscribe success,topic = /ota/device/upgrade/a1P1TlTjU9Q/LP-TEST-DEV-1!
  17. mqtt_client|241 :: wait ota upgrade command....
  18. mqtt_client|241 :: wait ota upgrade command....

新增固件

这里需要用户上传一个 bin 类型的测试固件,随意一个 bin 固件即可,演示例程只进行固件下载及校验,不会写入 Flash,所以也不会真正进行固件搬运升级。

LinkPlatform 平台新增 OTA 固件

验证固件

LinkPlatform 验证 OTA 固件

设备日志

推送成功后,设备开始下载固件,下载完成后自动进行固件完整性校验,设备端测试日志如下所示:

  1. ···
  2. mqtt_client|254 :: Here write OTA data to file....
  3. [dbg] IOT_OTA_Ioctl(457):
  4. origin=e4e54df52a3b530c7e0544b2872f1305, now=e4e54df52a3b530c7e0544b2872f1305
  5. mqtt_client|280 :: The firmware is valid! Download firmware successfully.
  6. mqtt_client|294 :: OTA FW version: v10

云端升级进度展示

设备升级过程中云端会显示设备下载固件的进度,固件下载完成并校验固件成功,设备 SDK 上报新的版本号到云端,云端会显示升级成功,如下图所示:

升级进度

升级成功

退出 OTA 例程

升级成功或者升级失败会自动退出 OTA 例程,如果需要手动退出 OTA 例程,请使用 ali_ota_test stop 命令。

  1. msh />ali_ota_test stop
  2. msh />[dbg] iotx_mc_disconnect(2121): rc = MQTTDisconnect() = 0
  3. [inf] _network_ssl_disconnect(514): ssl_disconnect
  4. [inf] iotx_mc_disconnect(2129): mqtt disconnect!
  5. [inf] iotx_mc_release(2175): mqtt release!
  6. [err] LITE_dump_malloc_free_stats(594): WITH_MEM_STATS = 0
  7. mqtt_client|340 :: out of sample!

注意事项

  • 使用前请在 menuconfig 里配置自己的设备激活凭证(PRODUCT_KEY、DEVICE_NAME 和 DEVICE_SECRET)
  • 使用 menuconfig 配置选择要接入的平台(LinkDevelop 或者 LinkPlatform
  • 开启 OTA 功能必须使能加密连接,默认选择(因为 OTA 升级必须使用 HTTPS 下载固件)

    常见问题

  • MbedTLS 返回 0x7200 错误

通常是由于 MbedTLS 帧长度过小,请增加 MbedTLS 帧长度(至少需要 8K 大小)。

原文: https://www.rt-thread.org/document/site/submodules/ali-iotkit/docs/samples/