|
|
在使用YEELINK网站提供的SDK库,编写的程序一直不能正确运行.把程序缩小到获得一条(也就是第一个程序)数据运行正常.请熟悉YEELINK的同学帮忙看一下.
void loop() //第一个
{
/*读本地传感器的值 */
tianran=analogRead(THERM_PIN);
huoyan=digitalRead(THERM2_PIN);
hongwai=analogRead(THERM1_PIN);
mengkaiguan=digitalRead(THERM3_PIN);
/***************
Serial.println("tianran zhi shi:");Serial.println(tianran);
Serial.println("huoyan zhi shi:");Serial.println(huoyan);
Serial.println("hongwai zhi shi:");Serial.println(hongwai);
Serial.println("mengkaiguan zhi shi:");Serial.println(mengkaiguan);
***************/
//本地分析有无报警内容?依据本地设置域值
if (tianran>500&&millis()>360000) //这个数值比较可行,经过了测试,需要热车6分钟后开始检测
{
tone(THERM5_PIN,2000,2000);
Serial.println("tian ran qi xielou!!!");Serial.println(tianran);
i=5;
}
if(huoyan==0)
{ tone(THERM5_PIN,3000,2000);
Serial.println("you huo qing!!");
i=6;
}
if(hongwai>500&&fangdao==1)
{
Serial.println("you ren zaijia!!!");
hongwaijl=hongwai; //记录这个值,免得下次变掉。
i=7;
}
if(mengkaiguan==0) //门开过,用menkaiguanjl记录,直到上传后归原
{
mengkaiguanjl=0;
if (meng==1) //夜间开门模式打开时
{
tone(THERM5_PIN,4000,2000);
}
Serial.println("mengkai!!");
i=8;
}
//以下是读厨房继电器状态
yl_value_data_point getdp;
if(therm4.single_get(messenger, getdp))
{
chufangkg=getdp.get_value();
Serial.println("chufangkg de zhi shi:");
Serial.println(chufangkg);
if (chufangkg==1)
{
digitalWrite(THERM4_PIN,HIGH);
}
else
{
digitalWrite(THERM4_PIN,LOW);
}
}
else
{
Serial.println("chufangkg get shibai!");
}
delay(11000);
}
void loop() //第二个
{
/*读本地传感器的值 */
tianran=analogRead(THERM_PIN);
huoyan=digitalRead(THERM2_PIN);
hongwai=analogRead(THERM1_PIN);
mengkaiguan=digitalRead(THERM3_PIN);
/***************
Serial.println("tianran zhi shi:");Serial.println(tianran);
Serial.println("huoyan zhi shi:");Serial.println(huoyan);
Serial.println("hongwai zhi shi:");Serial.println(hongwai);
Serial.println("mengkaiguan zhi shi:");Serial.println(mengkaiguan);
***************/
//本地分析有无报警内容?依据本地设置域值
if (tianran>500&&millis()>360000) //这个数值比较可行,经过了测试,需要热车6分钟后开始检测
{
tone(THERM5_PIN,2000,2000);
Serial.println("tian ran qi xielou!!!");Serial.println(tianran);
i=5;
}
if(huoyan==0)
{ tone(THERM5_PIN,3000,2000);
Serial.println("you huo qing!!");
i=6;
}
if(hongwai>500&&fangdao==1)
{
Serial.println("you ren zaijia!!!");
hongwaijl=hongwai; //记录这个值,免得下次变掉。
i=7;
}
if(mengkaiguan==0) //门开过,用menkaiguanjl记录,直到上传后归原
{
mengkaiguanjl=0;
if (meng==1) //夜间开门模式打开时
{
tone(THERM5_PIN,4000,2000);
}
Serial.println("mengkai!!");
i=8;
}
if (abs(millis()-lasttime)>timejiange*1000)
{
//和网站数传部分,目前设计是间隔20或40秒下传或上传一次。设高频切换开关。
switch (i)
{
//下传部分开始
case 1:
{
//以下是读厨房继电器状态
yl_value_data_point getdp;
if(therm4.single_get(messenger, getdp))
{
chufangkg=getdp.get_value();
Serial.println("chufangkg de zhi shi:");
Serial.println(chufangkg);
if (chufangkg==1)
{
digitalWrite(THERM4_PIN,HIGH);
}
else
{
digitalWrite(THERM4_PIN,LOW);
}
}
else
{
Serial.println("chufangkg get shibai!");
}
break;
}
case 2:
{
//以下是读频度开关
yl_value_data_point getdp2;
if(therm5.single_get(messenger, getdp2))
{
if (getdp2.get_value()==0)
{timejiange=40;}
else
{timejiange=20;}
Serial.println("timejiange get ok!zhi shi: (s)");
Serial.println(timejiange);
}
else
{
Serial.println("timejiange get shibai!");
}
break;
}
case 3:
{
//以下是读防盗开关
yl_value_data_point getdp3; //经验是这些数据 点对象不能重名
if(therm6.single_get(messenger, getdp3))
{
fangdao=getdp3.get_value();
Serial.println("fangdao get ok!zhishi:");
Serial.println(fangdao);
}
else
{
Serial.println("fangdao get shibai!");
}
break;
}
case 4:
{
//以下是夜间看门
yl_value_data_point getdp4;
if(therm7.single_get(messenger, getdp4))
{
meng=getdp4.get_value();
Serial.println("meng get ok!zhi shi:");
Serial.println(meng);
}
else
{
Serial.println("meng get shibai!!");
}
break;
}
//下面是上传部分
case 5:
{
//天然气值上传
yl_value_data_point dp(tianran); //生成一个数值型或开关型 的数据点dp,这个数据点是符合YEELINK网站要求的格式集
if(therm.single_post(messenger, dp)) // 调用single_post函数上传数据点dp
{
Serial.println("tianran qi post ok!zhi shi:");
Serial.println(tianran);
}
else
{
Serial.println("tianran post shibai!!");
}
break;
}
case 6: //火焰数值上传
{
yl_value_data_point dp2(huoyan); //生成一个数值型或开关型 的数据点dp,这个数据点是符合YEELINK网站要求的格式集
if(therm2.single_post(messenger, dp2))// 调用single_post函数上传数据点dp
{
Serial.println("huoyan post ok!zhi shi:");
Serial.println(huoyan);
}
else
{
Serial.println("huoyan post shibai!!");
}
break;
}
case 7:
{
//轮到红外值上传
yl_value_data_point dp3(hongwaijl); //生成一个数值型或开关型 的数据点dp,这个数据点是符合YEELINK网站要求的格式集
if(therm1.single_post(messenger, dp3)) // 调用single_post函数上传数据点dp
{
Serial.println("hongwai post ok!zhishi:");
Serial.println(hongwaijl);
hongwaijl=0;
}
else
{
Serial.println("hongwai post shibai!!");
}
break;
}
case 8:
{
//轮到门开关记录上传
yl_value_data_point dp4(mengkaiguanjl); //生成一个数值型或开关型 的数据点dp,这个数据点是符合YEELINK网站要求的格式集
if(therm3.single_post(messenger, dp4)) // 调用single_post函数上传数据点dp
{
Serial.println("meng kaiguan post ok!");
Serial.println(mengkaiguanjl);
mengkaiguanjl=1; //归原用于记录的数据
}
else
{
Serial.println("mengkaiguanjl post shibai!!");
}
break;
}
lasttime=millis();
//下面是一个轮换传输计数器
if(i==8)
i=1;
else
i++;
}
//传输部分结束
}
}
|
|