<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ZLBC26AA/" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
前言
建议用户先学习完自建物联网平台,使用完自己搭建的MQTT之后再来学习此部分.
当前的各种物联网平台整体思想是提供一个网页端让用户去注册设备
这个设备就对应一个MQTT客户端,然后把这个设备的信息放到单片机/APP/微信小程序上使用.
单片机/APP/微信小程序等就作为了客户端接入了物联网平台.
物联网平台应该说是对设备进行管理的平台.
开通阿里云物联网平台
https://www.aliyun.com/
1.搜索 物联网平台 (如果没有开通请自行开通)
创建产品(并在产品下面添加设备)
1.咱们做产品的时候,一般都是有个产品.
2.设置下产品的名称
3.产品弄好了,就要在产品下面挂上设备
4.设置下添加的设备的名字
注意:看看自己的这里是那个区域的,后面会用到
提示:后面咱就会使用下面三个参数(三元组)组合MQTT参数
"ProductKey": "a1m7er1nJbQ",
"DeviceName": "Mqtt",
"DeviceSecret": "7GUrQwgDUcXWV3EIuLwdEvmRPWcl7VsU"
https://help.aliyun.com/document_detail/86706.html 阿里云的说明文档
MQTT的IP地址
"ProductKey": "a1m7er1nJbQ",
"DeviceName": "Mqtt",
"DeviceSecret": "7GUrQwgDUcXWV3EIuLwdEvmRPWcl7VsU"
${YourProductKey}.iot-as-mqtt.${region}.aliyuncs.com
1.替换ProductKey:
a1m7er1nJbQ.iot-as-mqtt.${region}.aliyuncs.com
2.替换 ${region}
最终IP地址:
a1m7er1nJbQ.iot-as-mqtt.cn-shanghai.aliyuncs.com
MQTT的端口号(1883)
MQTT的Client ID
1.我就规定我的clientId是 112233445566
2.咱呢先不走SSL, 所以 securemode=3 (注意:即使走SSL,端口号也是1883)
3.最后一个呢,咱就选用 hmacsha1(这个选择的是计算MQTT密码的算法)
最终Client ID:
112233445566|securemode=3,signmethod=hmacsha1|
MQTT的用户名
"ProductKey": "a1m7er1nJbQ",
"DeviceName": "Mqtt",
"DeviceSecret": "7GUrQwgDUcXWV3EIuLwdEvmRPWcl7VsU"
最终用户名: Mqtt&a1m7er1nJbQ
MQTT的密码
所以MQTT连接的密码:
8B286A9E99B49E19A0964589E8F3C2DBB1C1A8DE
最终
IP地址: a1m7er1nJbQ.iot-as-mqtt.cn-shanghai.aliyuncs.com
端口号: 1883
Client ID: 112233445566|securemode=3,signmethod=hmacsha1|
用户名: Mqtt&a1m7er1nJbQ
密码: 8B286A9E99B49E19A0964589E8F3C2DBB1C1A8DE
测试
1.打开调试助手
2.填入相应的参数,点击连接
使用单片机设备连接
1.关闭测试软件
注:一开始说了,一个设备就作为一个MQTT客户端,也只能一个设备使用.
2.打开这节的单片机程序
3.根据自己的替换下面的参数
4.别忘了安装好手机卡和天线
5.编译下载到单片机测试
单片机程序说明
1.根据参数组合IP地址,然后以TCP连接TCP服务器(MQTT服务器本身就是TCP服务器)
2.发送接入MQTT服务器协议
关于密码计算
1.首先咱选择的密码计算方式是 hmacsha1
为计算密码,单片机程序移植了Mbedtls
2.关于计算密码
注:hmacsha1(参数是DeviceSecret , 参数是 clientId${clientId}deviceName${deviceName}productKey${productKey})
3.单片机程序
4.使用
接着说
3.连接成功以后调用连接成功回调函数
关于组合计算MQTT密码程序
sprintf((char *)MainBuffer,"clientId%sdeviceName%sproductKey%s",ClientID,DeviceName,ProductKey);
上面是按照官方要求拼接,
aly_hmac_sha1((char *)MainBuffer,strlen((char *)MainBuffer),DeviceSecret,strlen(DeviceSecret),MQTTPassWord);
这个函数是自己添加的程序
参考的阿里云文档