001-STM32+BC26丨260Y基本控制篇(阿里云物联网平台)-设备使用MQTT接入阿里云物联网平台


<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ZLBC26AA/aly.html" 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.提示:

WS方式:

IP地址: ws://a1m7er1nJbQ.iot-as-mqtt.cn-shanghai.aliyuncs.com:443/mqtt

ClientID: 112233445566|securemode=3,signmethod=hmacsha1|

用户名: Mqtt&a1m7er1nJbQ

密码: 8B286A9E99B49E19A0964589E8F3C2DBB1C1A8DE

 

 

 

 

WSS方式:

IP地址: wss://a1m7er1nJbQ.iot-as-mqtt.cn-shanghai.aliyuncs.com:443/mqtt

ClientID: 112233445566|securemode=2,signmethod=hmacsha1|

用户名: Mqtt&a1m7er1nJbQ

密码: 8B286A9E99B49E19A0964589E8F3C2DBB1C1A8DE

 

 

使用单片机设备连接(BC260Y)

1.关闭测试软件

注:一开始说了,一个设备就作为一个MQTT客户端,也只能一个设备使用.

 

 

 

 

2.打开这节的单片机程序

 

 

 

 

 

3.根据自己的替换下面的参数

 

 

 

 

4.别忘了安装好手机卡和天线

 

5.编译下载到单片机测试

 

 

 

 

 

 

单片机程序说明

1.根据参数组合IP地址,然后以TCP连接TCP服务器(MQTT服务器本身就是TCP服务器)

 

 

 

 

2.发送接入MQTT服务器协议

 

 

 

 

 

3.为了便于处理数据,接收模组数据采用了两份缓存,一个接收全部数据,一个只缓存网络数据

 

 

 

 

使用Android连接

1.打开本节的Android工程

 

 

 

 

2.修改参数

注意:一开始说了,一个设备就作为一个MQTT客户端,也只能一个设备使用.

或者也可以再注册个设备,然后把参数给APP使用.

如果多个客户端用的同一个设备的参数,就会互相挤掉线.

 

 

 

 

4.安装到手机以后查看下日志

 

 

 

Android程序说明

1.整体说明

 

 

 

org.eclipse.paho.client.mqttv3-1.2.0: 使用的mqtt的jar包

MyMqttClient 是再次封装的class文件

 

2.根据参数拼接MQTT信息

 

 

 

3.计算密码

 

 

 

4.连接MQTT服务器

 

 

 

 

 

 

 

使用微信小程序连接

1.打开工程

 

 

2.修改MQTT参数

注意:一开始说了,一个设备就作为一个MQTT客户端,也只能一个设备使用.

或者也可以再注册个设备,然后把参数给小程序使用.

如果多个客户端用的同一个设备的参数,就会互相挤掉线.

 

 

 

3.如果想快速测试,可以设置软件不校验服务器域名(测试的时候这样方便点)

 

4.不过还是建议在微信小程序平台上设置域名白名单

 

 

注:wss://阿里云的域名

我的设备接入的域名是:  a1m7er1nJbQ.iot-as-mqtt.cn-shanghai.aliyuncs.com

 

 

 

 

5.正常运行以后,控制台会打印

 

 

 

微信小程序源码说明

1.整体说明

 

 

paho-mqtt.js : 底层MQTT包

mqtt.js : 在底层包之上封装的包

hmac_sha1.js : 计算MQTT密码

public.js : 公共函数

 

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);

这个函数是自己添加的程序

 

参考的阿里云文档

 

 

 

 

 

 

 

 

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM