菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
365
0

006-STM32+ESP8266+AIR202/302基本控制篇(阿里云物联网平台)-在阿里云物联网平台上动态注册设备(基于STM32+ESP8266)

原创
05/13 14:22
阅读数 8657

<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ESA2GJK1DH1K_A/aly.html" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

 

说明

前面的章节中写了使用APP或者微信小程序连接阿里云平台实现动态注册设备

这节说明一下使用STM32+ESP8266,AT指令实现动态注册设备

 

为啥要弄动态注册?

如果设备成批量的出售,谁也不想,一个一个的在网页上添加上设备

然后再一个一个的把设备信息(三元组)烧录到设备!!!!

这节呢就是不需要再烧录或者配置什么三元组,

所有的设备都是一个程序.

设备连接上网络以后自己去注册.

然后设备的名字我规定的是:

如果是WiFi设备,就用WiFi的MAC地址作为设备名字

如果是GPRS设备,就用IMEI作为设备的名字.

 

动态注册的方式(咱使用的是,一型一密(免预注册))

先解释几个名词:一机一密 ;一型一密(预注册) ;一型一密(免预注册)

 

一机一密:就是咱原先测试的在网页上去注册设备,然后把ProductKey、DeviceSecret、DeviceName

给设备,然后设备根据这三个信息组合计算下得到mqtt的连接参数,然后就连接通信了

https://help.aliyun.com/document_detail/74005.html?spm=a2c4g.11186623.6.585.3bb41114l1EN77

 

 

一型一密(预注册):

需要咱先在网页上注册上设备,然后把ProductKey、ProductSecret、DeviceName

给设备,然后设备通过https或者mqtt获取DeviceSecret

然后设备根据ProductKey、DeviceSecret、DeviceName这三个信息组合计算下得到mqtt的连接参数,然后就连接通信了

https://help.aliyun.com/document_detail/132111.html?spm=a2c4g.11186623.2.18.59863f82PBOpQr#task-1545804

 

 

 

一型一密(免预注册): 免预注册就是不用在云端自己注册设备,设备连接上网络以后设备自己去注册.

这样子的话,每个设备烧录同样的程序就可以,不用再配置什么三元组了!

不过每个设备程序里面的需要写上产品的ProductKey 和 ProductSecret  的值,这两个值是固定的.

主要是区分开你注册的时候注册到哪个产品下.

然后设备通过https或者mqtt接口注册设备,

注册的时候服务器会返回ClientID和DeviceToken 等参数

最后按照平台规定的组合MQTT参数

MQTT连接的方式注册设备:

https://help.aliyun.com/document_detail/132111.html?spm=a2c4g.11186623.2.18.59863f82PBOpQr#task-1545804

 

 

 

拼接注册返回的参数连接MQTT:

https://help.aliyun.com/document_detail/73742.html?spm=a2c4g.11186623.2.16.1c99426ff6ECtQ#concept-mhv-ghm-b2b

 

测试本节一型一密(免预注册)程序

1.打开本节的单片机程序

 

 

 

2.登录自己的云平台查看自己产品的ProductSecret; ProductKey; 

注:我前面的设备这个产品下设备,所以我也注册到这个产品下.

 

 

 

 

 

 

 

 

 

 

 

3.替换自己的 ProductSecret; ProductKey; 

 

 

 

 

 

4.因为是WiFi模块所以需要连接路由器

注:也可以屏蔽这句话用APP给设备配网(APUConfig)

 

 

 

 

 

 

5.别忘了

(STM32) PA3 -- TX (WiFi)
(STM32) PA2 -- RX (WiFi)

 

 

 

6.下载后测试(可以观察日志口)

 

 

 

 

 

 

 

7.在物联网平台上刷新一下设备列表,会看到注册了一个新设备

 

 

 

 

 

单片机程序说明

1. 先浏览下阿里云文档

https://help.aliyun.com/document_detail/132111.html?spm=a2c4g.11186623.2.18.59863f82PBOpQr#task-1545804

 

 

 

 

 

 

2.连接阿里云的MQTT服务器,和以前的地址是一样的(不过需要使用SSL方式)

 

 

 

3.根据阿里云的文档,组合MQTT信息

注:DeviceName 是获取的WiFi模块的MAC地址

 

 

 

4.发送连接信息,并接受处理返回

 

 

 

5.解析并存储数据

 

 

 

 

 

 

6.解析说明

//·µ»ØµÄÊý¾Ý+IPD,166:0?/ext/regnwl{"clientId":"RYzzfPbVqLE6J5H5dvSm000100","productKey":"a1m7er1nJbQ",
"deviceName":"10:52:1c:f0:82:21","deviceToken":"^1^1602183887248^35fa4b40451a986"}

服务器规定的组合:

 

mqttClientId: clientId+"|securemode=-2,authType=connwl|"
mqttUsername: deviceName+"&"+productKey
mqttPassword: deviceToken

 

连接地址: ${YourProductKey}.iot-as-mqtt.${YourRegionId}.aliyuncs.com:1883

 

因为咱的deviceName在注册的时候就是使用的设备的MAC地址

然后咱已经知道了,productKey也已经知道了

所以我解析的时候只是判断了下,并没有提取

 

 

 

 

7.使用注册的设备连接阿里云(设备就正常使用了)

 

 

 

 

 

 

 

8.复位重启,如果已经注册了,则直接跳过注册步骤

 

 

 

 

9.正常使用时和咱在平台上手动注册的没有什么区别

订阅和发布的主题还是由 ProductKey和DeviceName决定的

只不过现在设备的DeviceName是由程序获取的WiFi的MAC地址

 

 

 

 

结语

有了动态注册以后,咱的设备就可以烧录一个程序

然后只要设备可以连接网络,那么注册的事情就交给设备去做了.

这节设置的设备的名字是使用的WiFi模块的MAC地址

 

发表评论

0/200
365 点赞
0 评论
收藏
为你推荐 换一批