七、STM32F4通过机智云进行数据采集并上报报警状态

利用机智云 Demo APP 同时控制开发板的 2个LED灯,那么我们首先就要创建一个有多路数据节点的设备,这里我们可以直接创建,也可以在原来的设备基础上加几个数据节点,方法都一样,这里选择重新建立新设备,怎么创建就不再赘述,创建成功的设备如下图所示:

七、STM32F4通过机智云进行数据采集并上报报警状态_第1张图片

注意数据节点的数据类型:

七、STM32F4通过机智云进行数据采集并上报报警状态_第2张图片

把复制工程的机智云协议替换掉,然后在按照移植过程添加部分代码,工程移植完成后,添加我们DHT11的代码:

七、STM32F4通过机智云进行数据采集并上报报警状态_第3张图片

在刚移植好的工程中,我们点击gizwits_protocol.h 文件下设备状态结构体 currentDataPoint,结构体定义如下图:

七、STM32F4通过机智云进行数据采集并上报报警状态_第4张图片

DHT11 温湿度数据的上传,我们可以利用 wifi 的状态事件去触发采集,同样我们像获取NTP时间一样,定义一个wifi_sta标志位变量,在WIFI连接成功时wifi_sta变量标记为 1,如下图:

七、STM32F4通过机智云进行数据采集并上报报警状态_第5张图片

然后在我们的userHandle函数中实现上行(数据采集)处理,代码如下:

void userHandle(void)
{
	static u8 t=0;
	u32 temp= 0, hum = 0 ;//温湿度数据
	static uint32_t temp_num=0;
	static uint32_t humi_num=0;
	
	if(wifi_sta)
	{
		if(t==10)//每2S读取一次
		{
			t=0;
			get_temp_humi(&temp,&hum);//读取温湿度
			printf("temp = %d/hum = %d\r\n",temp,hum);
			currentDataPoint.valueHT_11_T = temp ;//温度数据
			currentDataPoint.valueHT_11_H = hum;//湿度数据
			if(temp>=Temp_alarm)//温度>阈值
			{
					temp_num=0;
					currentDataPoint.valueTemp_alarm=1;//温度上限报警
					printf("temp warning\r\n");
			}
			else
			{
				currentDataPoint.valueTemp_alarm=0;
				printf("temp ok\r\n");
			}
			
			if(hum>=Humi_alarm)//湿度>阈值
			{
					currentDataPoint.valueHumi_alarm=1;//湿度上限报警
					printf("humi warning\r\n");
			}
			else
			{
				currentDataPoint.valueHumi_alarm=0;
				printf("humi ok\r\n");
			}
		}
		if(t%2) LED0=!LED0;
		t++;
	}
	else
	{
		if(temp_num!=0||humi_num!=0)
		{
			temp_num=0;humi_num=0;
		}
	}
}

最后进行功能验证,请观看我的功能演示视频:

机智云温湿度数据采集及报警功能演示视频

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(ESP8266接入机智云)