ML307A模组使用MQTT协议连接ONENET平台
资料准备
模组的资料去ONEMO网站下载,链接:http://onemo10086.com/#/product/detail/82
ONENET平台接入文档,链接:https://open.iot.10086.cn/doc/v5/fuse/detail/919
数据流通讯接入
1. 产品与设备创建


2. 获取MQTT CONNECT报文三要素
设备使用mqtt连接时,需要用到三个参数,分别为
| 参数 | 参数说明 |
|---|---|
| clientid | 设备名称 |
| username | 平台分配的产品ID |
| password | 填写经过key计算的token |
我们打开设备详情页,可以看到clientid、username 和 key,我创建的产品只是测试用,为了方便大家查找问题,我就不打码了

| 参数 | 参数值 |
|---|---|
| clientid | 50230004 |
| username | f039gsIoBs |
| key | cm9LUDk4SkRKMEd2ZFptZEhRQ1VISlhSazU1NXoxMEo= |
计算token,ONENET平台提供了工具,需要注意的是【et】这个参数,要大于当前时间。
大家可以使用这个链接获取:https://tool.lu/timestamp/

3. MQTT.fx客户端配置


Publish Topic : $sys/f039gsIoBs/50230004/dp/post/json
Subscribe Topic : $sys/f039gsIoBs/50230004/cmd/request/+
发布的内容必须是json格式,必须要有id参数
{
“id”: “123”,
“params”: {
“temp”: {
“value”: “123”
}
}
}
4. ML307A模组接入
在我测试过程中,使用AT+MQTTCONN命令连接ONENET平台,返回+MQTTURC: “conn”,0,1。按照参考文档试了一天多都没成功,后面我用MQTT.fx工具测试这几个参数,完全是没问题的。
后来我在官方文档中看到了这样一个参数,AT+MQTTCFG=“clean”,0,1
<clean_session> 整型,配置会话类型。默认值0。
0
服务端必须根据当前的会话状态恢复与客户端的通信
1
服务端必须清除之前的会话启动一个新的会话与客户端通信
先发送一个 AT+MQTTCFG=“clean”,0,1 后面就能成功连接了。我感觉是因为这个模组之前是使用LwM2M协议连接过平台的原因。官方文档也垃圾了,按照步骤根本就成功不了,碰见问题真是求助无门啊,还好稀里糊涂弄成功了。
AT+MQTTCONN=0,“mqtts.heclouds.com”,1883,“50230004”,“f039gsIoBs”,“version=2018-10-31&res=products%2Ff039gsIoBs%2Fdevices%2F50230004&et=1724123945&method=md5&sign=6f%2FPY4KX%2FNqlSu44JgLTvQ%3D%3D”
AT+MQTTPUB=0,“$sys/f039gsIoBs/50230004/dp/post/json”,0,0,0,35,“{“id”:123,“dp”:{“temp”:[{“v”:38}]}}”
AT+MQTTSUB=0,“$sys/f039gsIoBs/50230004/cmd/request/+”,0
本文介绍了如何使用ML307A模组通过MQTT协议连接到ONENET物联网平台,包括产品与设备创建、获取连接参数、MQTT.fx客户端配置以及解决连接问题的方法,详细解析了连接过程中的关键步骤和注意事项。



2376

被折叠的 条评论
为什么被折叠?



