ESP8266连接新版ONENET平台详细步骤----串口调试助手
ESP8266连接新版ONENET平台详细步骤----串口调试助手
一、onenet云平台用户环境搭建
1.1 注册登录:https://open.iot.10086.cn


1.2 创建产品
**选择产品种类:**可以选择与自己产品定义相似的方案直接应用,也可以随便选择然后根据项目需求自己创建相关的功能点。
**选择智能化方式:**选择设备接入。
**产品名称:**按要求自己起一个,接下来以微型气象站为例。
**所属城市:**自行填写。
**节点类型:**选择直连设备。
**接入协议:**选择MQTT。
**数据协议:**选择OneJson。
**联网方式:**选择WI-FI。
**开发方案:**如果你选择了标准方案,他会给你提前配置好物模型(数据模板)。当然也可以选择自定义方案,需要自己配模版。
1.3 创建设备

**所属产品:**选择刚才创建的产品名称
**设备名称:**按要求随意起名即可,接下来以System为例命名
1.4 配置物模型
如果没有特殊的需要,ONENET直接产生的物模型就可以直接使用了。
如果有特殊的需要,请根据要上传的数据的格式进行自定义创建功能点。

**功能类型:**一般选择属性类型
**功能名称:**即这个数据的中文名称,后续显示数据的时候与其他功能的数据得以区分开即可。
**标识符:**即这个数据的英文名称,在接收和下发数据的时候多被用到。
**数据类型:**根据数据的类型选择bool型还是其他类型。
**取值范围:**根据这个数据的阙值填写即可。
**读写类型:**只用接收的数据直接定义为只读,既可接收也可云平台控制的定义为读写。
下图以一个可读可写的LED开关为例,对于常见的一些环境的传感器如DHT11的数据直接定义为可读作为接收即可。
注意自定义功能点新增之后一定要点击保存,不然就白勾选了。
1.5 云平台的几个重要参数


二、ESP8266连接ONENET云平台
2.1 AT指令控制 ESP8266 模组
使用 AT 功能之前,模块内必须有 AT 的固件,每个模块的生产厂商都会对乐鑫官方的 AT 固件做一些修改和删减,但是其最核心的 AT 指令功能都是相同的。我们买的ESP8826模块一般都有刷好的固件,所以不用自己刷固件。常见的AT指令如下示,
ESP8266 WIFI模块常用AT指令汇总
ESP8266的AT指令集详解
2.2 ESP8266烧录MQTT固件
由于ONENET定义的模型的通信方式选择的示MQTT,所以ESP8266需要重新烧录MQTT透传固件,详见下文
ESP8266 烧录 MQTT固件
2.3 通过AT指令连接云平台
2.3.1 确保ESP8266工作状态是否正常
| AT指令 | 成功的返回值 | 功能 |
|---|---|---|
| AT | OK | 测试模块是否正常连接 |
| AT+CWMODE=1 | OK | 设置模块的工作模式为STA |
在ESP8266连接云平台之前一定要先检查AT指令的返回值确保正常连接,并且设置好正确的工作模式。
2.3.2 确保ESP8266成功连接WIFI
| AT指令 | 成功的返回值 | 功能 |
|---|---|---|
| AT+CWJAP=“WiFi名字”,“密码” | WIFI CONNECTED 或 WIFI GOT IP | 连接对应名称和密码的WiFi |
eg:AT+CWJAP=“dong”,"1234567890"就是连接一个名称为dong,密码为1234567890的WIFI
【注意】:连接的WIFI对象的频段一定要是2.4GHz,ESP8266只允许连接这个频段的WIFI网络。
2.3.3 MQTT通信的发布和订阅简单的理解
通俗易懂地讲,MQTT就像是一个邮局,而主题(Topic)好比是邮局里的个人邮箱。
发布(Publish):
想象你有一些信息(如:今天天气怎样)想要告诉别人,你就把这个信息放进邮局的一个特定的邮箱(主题)里。
订阅(Subscribe):
如果有人想知道这个特定的信息,他们就可以告诉邮局,他们对这个邮箱(主题)感兴趣。这样,每当有新信息放入这个邮箱时,邮局就会把它送给那些订阅了这个邮箱的人。
举个例子:
如果你有一个智能天气站,它可以定期将天气更新(发布)放在“weather/today”这个邮箱(主题)里。
然后,任何对今天天气感兴趣的人们(如智能手机APP)都可以向邮局(MQTT服务器)表明他们对这个“weather/today”邮箱(主题)感兴趣(订阅)。
一旦智能天气站更新了今天的天气信息,所有订阅了这个邮箱的人都会收到这个消息。
这样的系统特别好的地方是,发送消息的人不需要知道谁在听,而听消息的人也不用知道谁在说。这就是MQTT在物联网中非常受欢迎的原因,它可以连接很多设备,让它们互相发送接收消息。
烧录了MQTT透传固件后的ESP8266可以直接通过AT指令进行简易的MQTT连接,
| AT指令 | 成功的返回值 | 功能 |
|---|---|---|
| AT+MQTTUSERCFG=0,1,“设备名称”,“产品ID”,“Token”,0,0,“” | OK | 设置客户端的认证信息和其他MQTT连接选项 |
这个指令用于配置MQTT客户端的用户参数。第一个参数0指的是客户端ID,1为MQTT版本,设备名称和产品ID分别是要连接的ONENET设备的设备名称和产品ID,Token是相对应Onenet平台的鉴权信息,最后的两个0表示是否清理会话和是否启用遗嘱消息。
Token的生成方式详见下文:Onenet平台数据获取与token工具的使用
| AT指令 | 成功的返回值 | 功能 |
|---|---|---|
| AT+MQTTCONN=0,“mqtts.heclouds.com”,1883,1 | OK | 将设备与ONENET建立MQTT连接 |
此指令用于发起到MQTT服务器的连接。参数0是客户端ID,"mqtts.heclouds.com"是ONENET的MQTT服务器地址,1883是服务器端口号,最后的1表示启用清理会话。
| AT指令 | 成功的返回值 | 功能 |
|---|---|---|
| AT+MQTTSUB=0,“$sys/产品id/设备名称/thing/property/post/reply”,0 | OK | 订阅主题,使模块能够将数据上传到云平台 |
| AT+MQTTSUB=0,“$sys/产品id/设备名称/thing/property/set”,0 | OK | 订阅主题,使模块能够接收到云平台发送到这个主题的消息 |
| AT+MQTTPUB=0,“$sys/产品id/设备名称/thing/property/post”,“{“id”:“123”,“params”:{“属性名”:{“value”:数值},“属性名”:{“value”:数值}}}”,0,0 | OK | 将数据通过JSON格式上传到对应的设备的功能点属性中 |
| AT+MQTTPUB=0,“$sys/产品id/设备名称/thing/property/set_reply”,“{“id”:“ID号”,“code”:200,“msg”:“success”}”,0,0 | OK | 数据下发后的正确回复格式,使云平台知道命令正确下发 |
此处可参考AT指令连接OneNET MQTT篇上报和下发数据,正确按照顺序发送AT指令后,对应的ONENET就可以接收到相对应的数据和,而单片机也能接收到ONENET下发的命令。
这样就做到了通过串口调试助手,确定了ESP8266能够正确连接到ONENET平台,单片机连接ESP8266本质就是通过串口发送信息,将数据内容通过固定的JSON格式并通过上述AT指令上传即可。
如果没有ESP8266模块或者CH340模块,也可以暂时通过MQTTx进行调试验证,可参考MQTTx连接ONENET的相关部分。
更多推荐

所有评论(0)