003-STM32+W5500基本控制篇(阿里云物联网平台)-在阿里云物联网平台上一型一密动态注册设备(STM32+W5500)
<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/STM32W5500AIR202A/aliyun.html" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
说明
一定要看完前面的章节再来看这节.......
如果设备成批量的出售,谁也不想,一个一个的在网页上添加上设备
然后再一个一个的把设备信息(三元组)烧录到设备!!!!
这节呢就是不需要再烧录或者配置什么三元组,
所有的设备都是一个程序.
设备连接上网络以后自己去注册.
然后设备的名字我规定的是:
如果是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的连接参数,然后就连接通信了
一型一密(免预注册): 免预注册就是不用在云端自己注册设备,设备连接上网络以后设备自己去注册.
这样子的话,每个设备烧录同样的程序就可以.
不过每个设备程序里面的需要写上产品的ProductKey 和 ProductSecret 的值,这两个值是固定的.
主要是区分开你注册的时候注册到哪个产品下.
然后设备通过https或者mqtt接口注册设备,
注册的时候服务器会返回ClientID和DeviceToken 等参数
最后按照平台规定的组合MQTT参数
MQTT连接的方式注册设备:
拼接注册返回的参数连接MQTT:
测试本节一型一密(免预注册)程序
1.打开本节的单片机程序
2.登录自己的云平台打开动态注册
注:选择哪个产品,设备就会注册到哪个产品下
打开动态注册
3,查看并替换自己产品的ProductSecret; ProductKey;
4,查看并替换自己instanceId
提示:在2021年7月30日之前购买的实例是没有 instanceId 的, 单片机程序里面可保持空
如果有, 则需要填写上.
5.编译下载后测试(可以观察日志口)
6.在物联网平台上刷新一下设备列表,会看到注册了一个新设备
单片机程序说明
1. 先浏览下阿里云文档
2.连接阿里云的TCP服务器(MQTT服务器),发送MQTT连接协议(实际是注册设备协议)
先以SSL方式连接TCP服务器(MQTT服务器), 然后发送注册协议
提前说下哈, 设备的名字 DeviceName 在一开始初始化的时候就赋值了 (使用的设备的MAC地址)
根据阿里云的文档,组合发送注册设备信息,
使用MQTT发送完以后, 服务器会把注册信息通过MQTT发送给设备, 所以咱直接在MQTT接收回调函数里面获取就可以
把获取到的设备注册信息存储到flash, 然后重启
3.重启之后呢判断下已经注册了
4.设备使用注册的信息连接MQTT服务器
其实最终就是mqtt连接通信哈, 只不过mqtt的那些参数是使用先前的注册的设备信息进行拼接.
程序显得有点多, 因为除了注册以外, 我还把正常通信时使用SSL 或者 不使用SSL的程序同时加在了程序里面;
结语
有了动态注册以后,咱的设备就可以烧录一个程序
然后只要设备可以连接网络,那么注册的事情就交给设备去做了.