我是靠谱客的博主 精明芝麻,最近开发中收集的这篇文章主要介绍基于树莓派+STM32+OneNET云平台打造智能家居系统(四)OneNET云平台篇,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

4.1设备的注册

  在进行OneNET平台开发者账号注册之后,进入开发者中心,进行项目应用以及设备的新建、添加数据流等操作。
这里写图片描述

4.2应用的编辑

  使用OneNET云平台所配备的应用编辑器功能,可以自定义的生成开发者所需要的应用。
这里写图片描述

4.3触发器的使用

  触发器功能同时也是该平台所赋予的功能,实现当数据超过阈值时,发出邮件提醒用户。
这里写图片描述

4.4 与OneNET云平台交互控制程序(部分)

//==========================================================
//	函数名称:	ESP8266_GetIPD
//
//	函数功能:	获取平台返回的数据
//
//	入口参数:	等待的时间(乘以10ms)
//
//	返回参数:	平台返回的原始数据
//
//	说明:		不同网络设备返回的格式不同,需要去调试
//				如ESP8266的返回格式为	"+IPD,x:yyy"	x代表数据长度,yyy是数据内容
//==========================================================
unsigned char *ESP8266_GetIPD(unsigned short timeOut)
{
	char *ptrIPD = NULL;
	do
	{
		if(ESP8266_WaitRecive() == REV_OK)								//如果接收完成
		{
			ptrIPD = strstr((char *)esp8266_buf, "IPD,");				//搜索“IPD”头
			if(ptrIPD == NULL)											//如果没找到,可能是IPD头的延迟,还是需要等待一会,但不会超过设定的时间
			{
				//UsartPrintf(USART_DEBUG, ""IPD" not foundrn");
			}
			else
			{
				ptrIPD = strchr(ptrIPD, ':');							//找到':'
				if(ptrIPD != NULL)
				{
					ptrIPD++;
					return (unsigned char *)(ptrIPD);
				}
				else
					return NULL;	
			}
		}
		DelayXms(5);													//延时等待
	} while(timeOut--);
	return NULL;														//超时还未找到,返回空指针
}
//==========================================================
//	函数名称:	OneNet_RevPro
//
//	函数功能:	平台返回数据检测
//
//	入口参数:	dataPtr:平台返回的数据
//
//	返回参数:	无
//
//	说明:		
//==========================================================
void OneNet_RevPro(unsigned char *cmd)
{
	EDP_PACKET_STRUCTURE edpPacket = {NULL, 0, 0, 0};	//协议包
	char *cmdid_devid = NULL;
	unsigned short cmdid_len = 0;
	char *req = NULL;
	unsigned int req_len = 0;
	unsigned char type = 0;
	short result = 0;
	char *dataPtr = NULL;
	char numBuf[10];
	int num = 0;
	type = EDP_UnPacketRecv(cmd);
	switch(type)							//判断是pushdata还是命令下发
	{
		case CMDREQ:									//解命令包
	    result = EDP_UnPacketCmd(cmd, &cmdid_devid, &cmdid_len, &req, &req_len);
			if(result == 0)					//解包成功,则进行命令回复的组包
			{
				EDP_PacketCmdResp(cmdid_devid, cmdid_len, req, req_len, &edpPacket);
				UsartPrintf(USART_DEBUG, "cmdid: %s, req: %s, req_len: %drn", cmdid_devid, req, req_len);
			}
			
		break;	
		case SAVEACK:
		if(cmd[3] == MSG_ID_HIGH && cmd[4] == MSG_ID_LOW)
		{
UsartPrintf(USART_DEBUG, "Tips:	Send %srn", cmd[5] ? "Err" : "Ok");
		}
			else
	UsartPrintf(USART_DEBUG, "Tips:	Message ID Errrn");
	break;
			
    default:
		result = -1;
		break;
	}
	
	ESP8266_Clear();									//清空缓存
	if(result == -1)
		return;
	dataPtr = strchr(req, ':');							//搜索':'
	if(dataPtr != NULL)									//如果找到了
	{
	dataPtr++;
	while(*dataPtr >= '0' && *dataPtr <= '9')//判断是否是下发的命令控制数据
		{
			numBuf[num++] = *dataPtr++;
		}
		num = atoi((const char *)numBuf);				//转为数值形式
		if(strstr((char *)req, "button"))				//搜索"button"
		{
			if(num == 1)						//控制数据如果为1,代表开
			{
				relay_on();
			}
			else if(num == 0)					//控制数据如果为0,代表关
			{
				relay_off();
			}
		}

	}
	
	if(type == CMDREQ && result == 0)			//如果是命令包 且 解包成功
	{
		EDP_FreeBuffer(cmdid_devid);						//释放内存
		EDP_FreeBuffer(req);
															//回复命令
		ESP8266_SendData(edpPacket._data, edpPacket._len);	//上传平台
		EDP_DeleteBuffer(&edpPacket);						//删包
	}

}

  在此感谢OneNET云平台所给与的强大的开发平台。

2020-10-18更新
PS:源码已share在github。

https://github.com/tancolin/SmartHome_proto.git

最后

以上就是精明芝麻为你收集整理的基于树莓派+STM32+OneNET云平台打造智能家居系统(四)OneNET云平台篇的全部内容,希望文章能够帮你解决基于树莓派+STM32+OneNET云平台打造智能家居系统(四)OneNET云平台篇所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(72)

评论列表共有 0 条评论

立即
投稿
返回
顶部