|
本帖最后由 peter58 于 2017-10-30 00:27 编辑
自已当时也遇到SOC方案温湿度不显示问题,一直没找到原因,看了几次文档,最后终于理解到了怎样在新版SOC宠物屋里添加温湿度及红外代码,
现在分享出来,给还没有找到解决的小朋友一些帮助;温湿度新版代码必须添加到gizwits_product.c文件下的userHandle里不然是不会上报到服务器上的,另外延时定时这些也必须添加在2个文件里,分别是:user_main.c和gizwits_product.c里
define USER_TIME_MS 100 ///< Timing time in milliseconds
LOCAL os_timer_t userTimer; ///< User timer structure
#define TH_TIMEOUT (1000 / USER_TIME_MS) ///< 新添加代码: 温湿度
//采集间隔为1S(1000ms)
#define INF_TIMEOUT (500 / USER_TIME_MS) ///< 新添加代码: 红外采
//-------------------------------------------------------------------------------
下面是gizwits_product.c里的温湿度红外完整程序,我也是个小白,希望这经验能够帮助到你。
void ICACHE_FLASH_ATTR userHandle(void)
{
/*
currentDataPoint.valueInfrared =curIr ;//Add Sensor Data Collection
currentDataPoint.valueTemperature =curTemperature; //Add Sensor Data Collection
currentDataPoint.valueHumidity =curHumidity ;//Add Sensor Data Collection
*/
uint8_t ret = 0;
uint8_t curTemperature = 0;
uint8_t curHumidity = 0;
uint8_t curIr = 0;
static uint8_t thCtime = 0;
static uint8_t irCtime = 0;
thCtime++;
irCtime++;
///< 新添加代码: 红外传感器数据获取
if(INF_TIMEOUT < irCtime)
{
irCtime = 0;
curIr = irUpdateStatus();
currentDataPoint.valueInfrared = curIr;
}
///< 新添加代码: 温湿度传感器数据获取
if(TH_TIMEOUT < thCtime)
{
thCtime = 0;
ret = dh11Read(&curTemperature, &curHumidity);
if(0 == ret)
{
currentDataPoint.valueTemperature = curTemperature;
currentDataPoint.valueHumidity = curHumidity;
}
else
{
os_printf("@@@@ dh11Read error ! \n");
}
}
system_os_post(USER_TASK_PRIO_2, SIG_UPGRADE_DATA, 0);
}
|
|