本文将展开叙述如何在新版Onenet平台创建产品和添加设备,为后续通过esp8266发送信息给云端进行通信做好准备
相关资料下载大家可以到【Freertos实战】零基础制作基于stm32的物联网温湿度检测(教程非常简易)中进行下载
1.云平台的搭建
添加产品
首先进入网站并登录:OneNET - 中国移动物联网开放平台
填写完各内容后,选择确定
添加设备
记录设备参数

记录下所需的参数,这是连接Onenet云平台服务的身份证
产品ID: PtAFXPCG49
设备ID: DB01
设备密匙:SnVod1ZQWmZwejNxxxxxxxxxxxx
添加数据流模板


创建湿度模板
创建LED模板
创建温度模板

记录下这三个物理模型的标识符,这个很重要
湿度 Humi
灯光 LED
温度 Temp
添加完毕

不了解MQTT协议的可以看看我这篇文章:MQTT协议
2.Token三元组生成
在创建通信报文前,我们需要通过Token工具将产品ID、设备ID、设备密钥三参数加入时间戳后生成三元组,这是我们能否建立通信的关键。
et时间戳获取
我们在计算Token之前需要获取时间戳,et时间戳计算网址:https://tool.lu/timestamp/
Token三元组计算
打开在专栏序章下载的资料,并打开Token生成工具

产品ID:PtAFXPCG49
设备ID:DB01
设备密钥:SnVod1ZQWmZwejNRSUR2ekJkSUgzSnJTSnJwd1ZHTVE=
Token:version=2018-10-31&res=products%2FPtAFXPCG49%2Fdevices
%2FDB01&et=1756260513&method=sha1&sign=TcuMb4Vdl%2FQiGc6AkEceJHmt2pI%3D
3.esp8266通信报文数据流
1.AT
2.AT+RST
3.AT+CWMODE=1
4.AT+CWDHCP=1,1
5.AT+CWJAP="CMCC-yr24","4fy@brba"
6.AT+MQTTUSERCFG=0,1,"DB01","PtAFXPCG49","version=2018-10-31&res=products%2FPtAFXPCG49%2Fdevices%2FDB01&et=1756260513&method=sha1&sign=TcuMb4Vdl%2FQiGc6AkEceJHmt2pI%3D",0,0,""
7.AT+MQTTCONN=0,"mqtts.heclouds.com",1883,1
AT+MQTTSUB=0,"$sys/PtAFXPCG49/DB01/thing/property/post/reply",0
AT+MQTTSUB=0,"$sys/PtAFXPCG49/DB01/thing/property/set",0
AT+MQTTPUB=0,"$sys/PtAFXPCG49/DB01/thing/property/post","{\"id\":\"123\"\,\"params\":{\"Temp\":{\"value\":16\}\,\"Humi\":{\"value\":66\}}}",0,0
或
AT+MQTTPUBRAW=0,"$sys/PtAFXPCG49/DB01/thing/property/post",65,0,0
{"id":"123","params":{"Temp":{"value":33},"Humi":{"value":58}}}
返回信息
AT+MQTTPUB=0,"$sys/PtAFXPCG49/DB01/thing/property/set_reply","{\"id\":\"28\"\,\"code\": 200\,\"msg\":\"success\"}",0,0
8.AT+MQTTCONN?//确认MQTT的连接状态
9.AT+MQTTCLEAN=0//断开MQTT连接
10.AT+MQTTPUB=0,"$sys/PtAFXPCG49/DB01/thing/property/post","{\"id\":\"123\"\,\"params\":{\"LED\":{\"value\":true\}}}",0,0
AT+MQTTPUB=0,"$sys/PtAFXPCG49/DB01/thing/property/post","{\"id\":\"123\"\,\"params\":{\"LED\":{\"value\":false\}}}",0,0
通信测试
AT
- 作用:测试 ESP8266 模块是否正常响应(AT 指令交互的 "心跳测试")。
- 预期返回 :
OK
(表示模块工作正常,可接收后续指令)。
AT+RST
- 作用:复位 ESP8266 模块,恢复初始状态(清除临时配置,重启模块)。
- 预期返回 :模块重启信息(如
ready
),表示复位完成。
WiFi 网络配置
AT+CWMODE=1
- 作用 :设置 ESP8266 的 WiFi 模式为 "Station 模式"(即 "客户端模式")。
1
:Station 模式(模块作为客户端,连接外部路由器 / AP);- 其他模式:
2
(AP 模式,模块自身作为热点)、3
(AP+Station 混合模式)。
AT+CWDHCP=1,1
- 作用 :开启 Station 模式下的 DHCP 功能(自动获取 IP 地址)。
- 第一个
1
:指定对 "Station 模式" 配置 DHCP; - 第二个
1
:开启 DHCP(0
为关闭)。
- 第一个
- 目的:模块连接 WiFi 后无需手动配置 IP,自动从路由器获取。
AT+CWJAP="CMCC-yr24","4fy@brba"
- 作用 :连接指定 WiFi 网络。
- 参数 1:
"CMCC-yr24"
(WiFi 的 SSID,即网络名称); - 参数 2:
"4fy@brba"
(WiFi 的密码)。
- 参数 1:
- 预期返回 :
WIFI CONNECTED
(连接成功)→WIFI GOT IP
(获取 IP 成功)→OK
。
MQTT 连接配置(对接中移物联网平台)
AT+MQTTUSERCFG=0,1,"DB01","PtAFXPCG49","version=2018-10-31&res=products%2FPtAFXPCG49%2Fdevices%2FDB01&et=1756260513&method=sha1&sign=TcuMb4Vdl%2FQiGc6AkEceJHmt2pI%3D",0,0,""
- 作用 :配置 MQTT 连接的用户认证信息(适配中移物联网平台的设备认证机制)。
- 参数解析:
0
:MQTT 连接索引(ESP8266 支持多连接,这里用索引0
表示第一个连接);1
:认证方式(1
为用户名 + 密码认证);"DB01"
:客户端 ID(MQTT 连接的设备唯一标识,需与平台注册一致);"PtAFXPCG49"
:用户名(平台设备的产品 ID);- 长字符串:密码(平台生成的签名,包含过期时间
et
、加密方法method
等,用于身份验证); - 后续
0,0,""
:禁用遗嘱消息(Will Message)配置(物联网场景中通常不需要)。
- 参数解析:
AT+MQTTCONN=0,"mqtts.heclouds.com",1883,1
- 作用 :建立与 MQTT 服务器的连接。
- 参数解析:
0
:连接索引(与步骤 6 的0
对应);"mqtts.heclouds.com"
:中移物联网平台的 MQTT 服务器域名;1883
:MQTT 协议默认端口(非加密端口,加密端口为 8883);1
:Clean Session 标志(1
表示服务器不保存客户端离线消息,0
则保存)。
- 参数解析:
- 预期返回 :
MQTTCONN:0,0
(0,0
表示连接成功,第一个0
为索引,第二个0
为错误码)。
MQTT 主题订阅(接收平台指令)
AT+MQTTSUB=0,"$sys/PtAFXPCG49/DB01/thing/property/post/reply",0
- 作用 :订阅 "属性上报回复" 主题(接收平台对设备上报数据的响应)。
- 参数解析:
0
:连接索引;- 主题:
"$sys/PtAFXPCG49/DB01/thing/property/post/reply"
(中移平台的系统主题格式):$sys
:平台系统主题前缀;PtAFXPCG49
:产品 ID;DB01
:设备 ID;thing/property/post/reply
:属性上报的回复类型;
0
:订阅的 QoS 等级(0
表示 "最多一次",消息不保证到达)。
- 参数解析:
AT+MQTTSUB=0,"$sys/PtAFXPCG49/DB01/thing/property/set",0
- 作用 :订阅 "属性设置" 主题(接收平台下发的控制指令,如远程控制 LED 开关)。
- 主题含义:
$sys/产品ID/设备ID/thing/property/set
是平台向设备下发属性控制指令的标准主题(例如:控制设备的 LED、电机等); 0
:QoS 等级(同上)。
- 主题含义:
MQTT 消息发布(设备上报数据 / 响应指令)
上报温湿度数据(AT+MQTTPUB
)
AT+MQTTPUB=0,"$sys/PtAFXPCG49/DB01/thing/property/post","{\"id\":\"123\"\,\"params\":{\"Temp\":{\"value\":16\}\,\"Humi\":{\"value\":66\}}}",0,0
- 作用 :向平台上报温湿度属性数据。
- 参数解析:
0
:连接索引;- 主题:
"$sys/PtAFXPCG49/DB01/thing/property/post"
(设备属性上报的标准主题); - 消息内容:
{"id":"123","params":{"Temp":{"value":16},"Humi":{"value":66}}}
(JSON 格式,符合平台属性上报协议):"id":"123"
:消息 ID(用于匹配回复,需唯一);"params"
:属性参数集合;"Temp":{"value":16}
:温度属性,值为 16℃;"Humi":{"value":66}
:湿度属性,值为 66%;
- 指令中的
\
是转义符(ESP8266 AT 指令中,双引号"
和逗号,
需用\
转义,否则会被解析为指令分隔符); 0
:QoS 等级(最多一次,不保证到达);0
:Retained 标志(0
表示服务器不保留该消息)。
- 参数解析:
原始数据发布(AT+MQTTPUBRAW
)
AT+MQTTPUBRAW=0,"$sys/PtAFXPCG49/DB01/thing/property/post",65,0,0
{"id":"123","params":{"Temp":{"value":33},"Humi":{"value":58}}}
- 作用 :与
AT+MQTTPUB
功能相同,但发布 "原始数据"(无需转义符,更高效)。- 参数解析:
65
:消息长度(字节数,需与后续 JSON 字符串的实际长度一致);- 后续行:原始 JSON 数据(无需转义,直接发送)。
- 参数解析:
平台回复与设备响应
平台回复示例
AT+MQTTPUB=0,"$sys/PtAFXPCG49/DB01/thing/property/set_reply","{\"id\":\"28\"\,\"code\": 200\,\"msg\":\"success\"}",0,0
- 含义 :设备向平台回复 "属性设置指令" 的处理结果(例如,平台下发控制 LED 的指令,设备执行后回复成功)。
- 消息内容:
{"id":"28","code":200,"msg":"success"}
:"id":"28"
:匹配平台下发指令的 ID;"code":200
:状态码(200 表示处理成功);"msg":"success"
:描述信息。
- 消息内容:
MQTT 连接管理
查询连接状态
AT+MQTTCONN?
- 作用:查询当前 MQTT 连接状态。
- 预期返回 :如
MQTTCONN:0,1
(0
为连接索引,1
表示已连接;0
表示未连接)。
断开连接
AT+MQTTCLEAN=0
- 作用 :断开索引为
0
的 MQTT 连接,并清理会话(服务器删除该设备的临时数据)。
扩展:控制类属性上报
AT+MQTTPUB=0,"$sys/PtAFXPCG49/DB01/thing/property/post","{\"id\":\"123\"\,\"params\":{\"LED\":{\"value\":true\}}}",0,0
- 作用 :向平台上报 LED 的状态(
true
表示打开,false
表示关闭),或接收平台控制指令后反馈执行结果。