使用esp8266连接onenet云平台

(1)onenet云平台部分配置

先创建产品,再在该产品下创建设备

记录好如下数据

设备名称/ID:wenshidu
设备密钥:TDQ3eHZZVUt0RW5FMVczZmtuRndLNW1HWjlUcW5yOUY=
产品ID:W2x09ce7sA
服务地址URL:mqtts.heclouds.com
端口号:1883

(2)对于esp8266端配置

1、AT  //测试指令
2、AT+RST  //复位指令
3、AT+CWMODE=1  //设置为station模式
4、AT+CWDHCP=1,1  //启动DHCP
5、AT+CWJAP="填写自己的wifi账号","wifi密码"
6、AT+MQTTUSERCFG=0,1,"wenshidu","W2x09ce7sA","version=2018-10-31&res=products%2FF1AVyfXw7I%2Fdevices%2Ftest&et=2810313321&method=md5&sign=EfJtPPxHwMX6iWWf3YksbA%3D%3D",0,0,""

第六步为获取token,设备访问onenet网站需要有token,否则无法访问。token的获取方式在onenet的开发者文档中下载对应软件,可以在软件中填写自己产品和设备的信息,软件会自动进行计算

其中

res是        products/产品id/devices/设备名称

et为时间戳,可以使用任意网站的时间戳转换工具转换一个较远的时间,或者直接copy下方图片中的et,1958243260

key为设备密钥,在产品详情中获取


7、AT+MQTTCONN=0,"mqtts.heclouds.com",1883,1            //进入onenet网站,这个不需要改
8、AT+MQTTSUB=0,"$sys/W2x09ce7sA/wenshidu/thing/property/set",0        //订阅信息

 

最后

AT+MQTTPUB=0,"$sys/W2x09ce7sA/wenshidu/thing/property/post{\"id\":\"123\"\,\"params\":{\"temp\":{\"value\":25\}}}",0,0                   //发布信息

特别地:使用at指令需要提前烧录好at固件,我是使用1471的那个固件,at固件全部都可以在乐鑫官网找到

### ESP8266连接OneNet云平台的方法及示例代码 #### 配置教程 为了实现ESP8266OneNet云平台连接,需完成以下准备工作: 1. **硬件准备** 使用支持AT指令集的ESP8266模块(如ESP8266-01S),并确保其已正确焊接天线和其他必要组件。 2. **固件烧录** 确认所使用ESP8266模块已经烧录了支持MQTT协议的固件[^1]。如果尚未烧录,请查阅官方文档或第三方资料了解具体方法。 3. **OneNet平台设置** 登录OneNet官网注册账号,并按照指引创建一个新的设备产品。在该产品的详情页面获取API Key、Product ID以及Device ID等重要参数[^1]。这些参数将在后续的配置过程中被调用。 4. **网络环境搭建** 确保Wi-Fi路由器处于正常工作状态,且信号覆盖良好以便于ESP8266能够稳定接入互联网。 #### 示例代码 以下是基于Arduino IDE编写的用于ESP8266通过串口发送AT指令向OneNet上传数据的一个简单例子: ```cpp #include <SoftwareSerial.h> // 定义软串口号针脚位置 #define RXD 9 // 接收引脚定义为数字管脚9 #define TXD 8 // 发送引脚定义为数字管脚8 String ssid = "your_wifi_ssid"; // 替换为您自己的WiFi名称 String password = "your_wifi_password"; // 替换为您自己的WiFi密码 int port = 6002; // 默认端口号 String host = "mqtt.heclouds.com"; // MQTT服务器地址 String clientId = "Your_Device_ID"; // 设备ID, 来自OneNET平台 String username = ""; // 用户名留空即可 String pwd = "Your_API_Key"; // API密钥来自OneNET平台 void setup() { Serial.begin(115200); // 初始化USB调试串口波特率 SoftwareSerial esp8266(RXD,TXD); esp8266.begin(9600); // 设置ESP8266通讯速率 delay(1000); sendCommand("AT", "OK"); // 测试模组响应 sendCommand("AT+CWMODE=1","OK"); // 设置为Station模式 String cmd="AT+CWJAP=\""+ssid+"\",\""+password+"\""; sendCommand(cmd,"WIFI CONNECTED"); } void loop(){ String dataCmd="AT+CIPSTART=\"TCP\",\""+host+"\","+port; sendCommand(dataCmd,"CONNECT OK"); String mqttConnect="AT+CMQCONNPUB="+clientId+",\""+username+"\",\""+pwd+"\",1"; sendCommand(mqttConnect,"CONNACK"); String publishData="AT+CMQPUB=1,\"topic_name\",1,0,data_value"; sendCommand(publishData,"PUBLISH OK"); delay(5000); // 延迟五秒再次尝试发布新消息 } void sendCommand(String command,String expectedResponse){ while(true){ esp8266.println(command); if(Serial.available()){ String response=esp8266.readStringUntil('\n'); if(response.indexOf(expectedResponse)!=-1){ break; } } } } ``` 此段程序实现了基本的功能需求——即利用ESP8266作为客户端经由Wi-Fi联网后,借助标准MQTT协议把指定主题下的数值型数据推送到远程托管服务提供商处存储起来供进一步分析处理之用[^2]。 ### 注意事项 - 上述代码中的`data_value`应替换实际采集得到的具体传感量度值。 - `topic_name`则代表订阅频道的名字,在云端接收方那里也需要相应设定一致才能成功匹配解析收到的信息流。 - 如果遇到任何异常情况比如无法建立持久化会话或者频繁掉线等问题,则可能是因为超时时间太短或者其他高级选项未合理调整所致;此时建议参照官方手册深入研究更多可选参数及其作用机制后再做适当修改优化性能表现。
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值