写点什么

技术实践丨手把手教你使用 MQTT 方式对接华为 IoT 平台 华为云开发者社区

发布于: 2020 年 10 月 20 日

摘要:本文主要讲述使用 MQTT 方式对接华为云 IoT 平台的具体过程。


使用的方案:目标板为 STM32L431BearPI(带 E53 扩展板); TCPIP 功能由开发板的 ESP8266 提供;MQTT 使用 Paho-Client-Embeded;IoT 对接接口采用 V5 版本接口;Demo 选择 target 的 MQTTdemo。


整个开发分为两个部分:云端开发、设备侧开发。云端开发包括创建产品、创建设备;设备侧开发包括根据方案配置功能、编译烧录、调试。


云端开发


创建产品模型


产品模型其实就是用户设备的抽象。用编程术语来解释就是产品模型是 Class,设备是对象。关于产品模型的介绍以及如何创建产品模型可以参考创建产品


本文最后创建的产品模型如下:



设备属性包括:温度、湿度、光照强度、LED 状态、Motor 状态。设备命令包括两条:控制 LED ON/OFF,控制 Motor ON/OFF。


创建设备


当产品模型创建完毕之后,我们可以创建基于该产品模型的设备。设备-->注册设备。根据对话框填写对应的信息。本文为了方便创建的设备标识为 demoTest,秘钥为 012345678(该设备已经删除,请勿连接)。结果如下:



注册成功之后如下:



至此,我们已经注册了端侧设备,并可以在我们的设备-->所有设备中看到我们新注册的设备。


设备端开发


设备端的开发主要包括配置工程、编译烧录、调试几个步骤。下文基于此逐一进行介绍。


工程配置


由于 SDK 是一个全栈的软件,包含所有的代码,因此我们需要告知编译器哪些文件需要编译、怎么编译这些文件,这个工作主要是由 menuconfig 完成。关于工程配置指导可以参考工程配置示范


进入到 target/STM32L431_BearPi 目录下,输入 menuconfig(macos 或者 linux 输入 menuconfig.py)即可进入到配置界面。



确认进入 SDK 的配置。


开发板的串口以及 DEMO 选择


设置 AT 串口波特率和模组匹配;设置设备 ID 和秘钥,其和在 IoT 平台上创建设备时候的设置一致。



TCPIP 配置


在 Network 下,选择 TCPIP 功能,并设置 esp8266 模式,并设置热点的 SSID 和 PWD。




配置 SSL


配置 MBEDTLS 的主要原因是,IoT 平台生成 MQTT 的三元组的时候需要使用到 HMAC 算法。使能 TLS 并选择 mbedtls 并配置为 CERT 模式。



配置 MQTT 协议


在 Network 菜单下使能 MQTT。此处配置的 MQTT 为标准 MQTT 协议。



配置 IoT MQTT 接入服务


在 OC 菜单下,使能 OC MQTT(可以选择关闭 OC COAP 以及 OC LWM2M)。



此处我们配置的为 MQTT 接入 IOT 的流程;没有使能标准 DEMO 是因为我们使用 target 下的 demo.


输入 Q 并保存退出,会发现我们刚才的配置会保存在.config 文件中。



再输入 genconfig(genconfig.py)会生成或者更新 iot_config.h 文件。Makefile 依据.config 文件选择哪些组件编译;编译器会根据 iot_config.h 文件决定怎么编译这个组件。



至此我们对于工程的配置已经完成。


编译烧录调试


编译


功能源码采用的是 Makefile 进行组织,理论上你有 Make 工具以及对应的交叉编译器都可以进行编译。本文使用的是 AC6 公司的 SW4ST 这个工具(基于 Eclipse 的一款工具)。其使用可以参考SW4ST使用



在 SW4ST 的菜单 Project-->Clean 下勾选清除后编译即可编译,并可以在 Console 下看到编译结果。



如果出现 FLASH 溢出行为,可以将不需要的组件(stime shell)通过配置禁用;或者在 Makefile 中修改优化等级从-O0 -g 修改为-Os。


烧录


在 SW4ST 的菜单中 Run-->Debug Configurations。


创建一个 Ac6 STM32Debugging(使用的 stlink)。




只需要保证 MCU 的型号一致即可。


对于 BearPI 而言,还需要设置重启模式,设置为软模式即可。



点击 apply 并 debug,可以看到烧录完毕并进入调试界面。



调试


进入 debug 页面之后,我们可以像其他的 IDE 一样 step into/step over/step out/run 等调试。


同时可以接入串口,设置正确的波特率,会看到系统的输出信息。(wifi 连接上并获取 IP,向 IoT 平台订阅主题成功)。



联合调试


设备在线并上报信息


当端侧显示连接 OK 时候,我们在 IoT 平台可以看到对应的设备应该已经在线,并接收到对应数据。



IoT 平台下发命令


在命令中选择同步命令下发,可以观测到端侧设备可以接收到相关的命令。




至此,我们将设备端和 IoT 平台的数据交互通道打通。


点击关注,第一时间了解华为云新鲜技术~


发布于: 2020 年 10 月 20 日阅读数: 91
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
技术实践丨手把手教你使用MQTT方式对接华为IoT平台 华为云开发者社区