本文将展开叙述如何在新版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表示关闭),或接收平台控制指令后反馈执行结果。