当前位置:   article > 正文

基于树莓派+STM32+OneNET云平台打造智能家居系统(四)OneNET云平台篇_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 found\r\n");
			}
			else
			{
				ptrIPD = strchr(ptrIPD, ':');							//找到':'
				if(ptrIPD != NULL)
				{
					ptrIPD++;
					return (unsigned char *)(ptrIPD);
				}
				else
					return NULL;	
			}
		}
		DelayXms(5);													//延时等待
	} while(timeOut--);
	return NULL;														//超时还未找到,返回空指针
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
//==========================================================
//	函数名称:	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: %d\r\n", cmdid_devid, req, req_len);
			}
			
		break;	
		case SAVEACK:
		if(cmd[3] == MSG_ID_HIGH && cmd[4] == MSG_ID_LOW)
		{
UsartPrintf(USART_DEBUG, "Tips:	Send %s\r\n", cmd[5] ? "Err" : "Ok");
		}
			else
	UsartPrintf(USART_DEBUG, "Tips:	Message ID Err\r\n");
	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);						//删包
	}

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85

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

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

https://github.com/tancolin/SmartHome_proto.git
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/432282
推荐阅读
相关标签
  

闽ICP备14008679号