基于MQTT通信协议 实现单片机与腾讯云IOT|阿里云IOT|中国移动ONENET的对接。
在实际调试时选择STM32F103C8T6与ESP826601S的开发板,对接过程是一个比较艰难的过程。编译、烧录、下载
至单片机后通过串口调试助手能够实现配置连接WIFI加入网络,和远端服务器建立TCP联系,但是云端设备始终处于
未激活状态,查找了很多做IOT通信方面的例程,很多例程都是基于云的SDK实现的,对于第一次调试玩IOT的小白而言
着实有点不大友好。后来查找设备未激活的缘由,主要认为是本机地址没能够和远程服务器实现匹配,然后就通过网络
调试助手,将MQTT协议报文发送过去。
ONENET更新的幅度有点大,导致我竟然找不到它的加入产品与设备在哪个点击栏。我根据MQTT协议的配置方式和
腾讯云主机地址、官方文档、加密解密方式发现挣扎了很久还是没能够得到对方主机20 02 00 00的CONNACK报文回复。
那我最后辗转反侧又回到了阿里云的IOT,真的得感谢马云爸爸,总算是成功实现了设备激活,那主要就是分享一下和
阿里云的故事了。
1.首先要登录阿里云,可以使用支付宝登录,进行个人实名验证。然后找到物联网通信,阿里在物联网通信这方面的开发文档
说实话其实蛮丰富的,其SDK环境也为各种语言的开发提供了可能,还提供了设备与云中间的开发平台便利操作。
2.进入物联网通信控制平台,选择产品创建,在产品创建中完善相关信息,可以选择JSON数据格式,我本人选择的还是
比较Low级别的自定义透传的二进制,选择设备节点类型。这个页面完成之后会出现产品密钥PRODUCTKEY,这个密钥可
以复制到建立的记事本中,后面的一些配置会用到。还有一点,在这个创建产品的时候你需要注意到左上角你的远程
主机地址是在哪,一般情况下默认设置为华东上海地区,地址不同可能导致你最后需要建立连接的域名也是不同的。
以前阿里云和腾讯云的远程主机对接是不同的,现在好像两家都是一样的,配置时前面是:产品ID + “.” + 服务器地址
类似于这样:PRODUCTID.iot-as-mqtt.cn-shanghai.aliyuncs.com PRODUCTID是你创建产品时会生成的,一般格式
可能就是这样a16lzjHgAYy
3.产品一栏中有产品名称与设备管理,点击设备管理,添加设备,添加设备页面需要填写对应归属的产品和设备名称,
设备名称要用中文,一般情况下如果是建立三元关系组(APP IOT 单片机)的话,那可以命名为###kfb ###app,现在的
要求长度是至少六个字符,我在设置的时候用的szykfb szyapp分别加入两个设备,设备建立完成后会出现如下提醒信息
那分别是产品密钥和设备名称、设备密钥
{
"ProductKey": "a16lzjHgAYy",
"DeviceName": "szykfb",
"DeviceSecret": "PKxVLqDI5bOnvbUXw299vG5nDOTjosbj"
}
那剩下APP设备的加入也是这样,那接下来主要就是配置相应的加密解密信息了。
4.阿里云MQTT协议需要首先建立connect报文,建立三元关系组的connect报文。
客户端ID : *|securemode=3,signmethod=hmacsha1| *设备名称 注意替换
用户名 : *&# *设备名称 #ProductKey 注意替换
密码 用设备密钥对clientId*deviceName*productKey#进行hmacsha1加密后的结果 *设备名称 #ProductKey 注意替换
这里提供一个网站:http://encode.chahuo.com/ 用来实现获取密码 加密hmacsha1
那么把上述三元关系组存储在记事本中,我们的记事本中现在有以下信息:
开发板:
PRODUCTKET :a16lzjHgAYy
客户端ID : szykfb|securemode=3,signmeth
基于MQTT协议的阿里云IOT与单片机开发(一)
最新推荐文章于 2025-03-25 22:15:19 发布