基于MQTT协议的阿里云IOT与单片机开发(一)

  基于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,signmethod=hmacsha1|
 用户名&#x
  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值