一、设备登录

1、在main中添加图片红框中的函数

//----------------------------------连接OneNET----------------------------------------------	
	while(OneNet_DevLink())			//接入OneNET
		DelayXms(500);
//----------------------------------连接OneNET----------------------------------------------	

在这里插入图片描述

2、修改下述值

修改为自己的产品ID、设备密钥、设备名称
在这里插入图片描述

产品ID、设备密钥、设备名称在下图中找到
开发者中心——设备接入管理——设备管理——详情
在这里插入图片描述

如果设备登录掉线太快可把下述值改长一点
在这里插入图片描述

记得修改报错:
在这里插入图片描述
在main.c中包含下述头文件:
在这里插入图片描述

3、问题及解决

问题:一直登录不上设备,Debug了很久,发现一直进不去图中的函数
在这里插入图片描述
解决:找到启动文件,将对应的栈改大(栈溢出)
在这里插入图片描述
经过上述操作,成功实现设备登录
在这里插入图片描述

二、上传数据到云平台

1、以上传温湿度数据为例子

1、读取温湿度数据,在main.c中添加下述红框中的代码

		if(++timeCount >= 10)									//发送间隔5s
		{
			DHT11_Read_Data(&temp,&humi);
			
			UsartPrintf(USART_DEBUG, "OneNet_SendData\r\n");
			OneNet_SendData();									//发送数据
			
			timeCount = 0;
			ESP8266_Clear();
		}

在这里插入图片描述
上传到云平台的数据的变量存储在下述函数中:
在这里插入图片描述
在main.c中声明所要传输的数据
在这里插入图片描述

在Onenet.c中引用,声明是全局变量:
在这里插入图片描述
将全局变量替换在红框处:
在这里插入图片描述
注意上传的最后一个内容不用逗号,否则传输数据会出现错误:
在这里插入图片描述
下述红框中的值(位于OneNet_FillBuf函数中)对应第二张图中云平台设备中的标识符
在这里插入图片描述
在这里插入图片描述

2、问题

发现移植后的程序中esp8266上传不了数据到云平台
怀疑是esp8266的USART2中的PA2被我原来的程序中的LED引脚占用了,导致数据传输不出去
在这里插入图片描述
将LED2改为其它引脚后问题解决,成功上报数据
在这里插入图片描述

三、调试器下发控制消息控制LED亮灭

1、Main.c中需要添加下述函数(注意其位置位于while上方)

在这里插入图片描述
在while中添加下述函数:

//-----------------------------接收云平台数据源码----------------------------------------
		dataPtr = ESP8266_GetIPD(100);
		if(dataPtr != NULL)
		{OneNet_RevPro(dataPtr);}
//		else{UsartPrintf(USART_DEBUG, "NUllllllllllllllllllllllll\r\n");}
//-----------------------------接收云平台数据源码----------------------------------------

在这里插入图片描述

2、问题及解决

问题1:移植后没有接收到云平台下达的指令(led不会亮灭)
解决1:
移植后DataPtr一直为NULL,原因:ESP8266_GetIPD的实参太小,改大即可:
此处改为100了
在这里插入图片描述
解决2:
看看自己的代码中有没有用timecount来确定发送数据间隔
在这里插入图片描述
如果没有用timecount来确定发送数据间隔,会导致即使esp8266接收到云平台的控制消息后单片机仍然控制不了led灯亮灭,因为esp8266接收到云平台消息变量type被设置为MQTT_PKT_PUBLISH后又很快被置为发送数据给云平台成功的标志,没有办法进入到状态机中MQTT_PKT_PUBLISH的状态并执行相应的操作。(需看源代码才能明白)

上述过程的源代码(NET文件夹)位于我主页的ESP8266WIFI模块——连接ONENET物联网云平台(一)中,有需要可自行前往下载。本博客适用于你温湿度数据能正常读取的前提下,移植代码将数据上传到ONENET云平台中。
本博客参考B站UP主——壹知半解的代码进行移植,如果连接有问题可在评论区留言,我会尽量帮大家解决问题,后续有需要会更新APP从云平台获取传感器数据、APP下发命令消息控制LED灯等问题解决,有需要关注、点赞、收藏哦!

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐