代码如下:
#include <EspSaveCrash.h> #include <ESP8266WiFi.h> //QQ群:51798659 个人使用!开门检测2.0———— 2017-5-18Tlink_平台可用 速度快可微信控制 const char *ssid = "modou-2002";//这里是连接你需要的wifi名字 //const char *ssid = "WiFi"; const char *password = "23456789";//你要连接的wifi密码 #define gdm 4//关大门 #define tdm 14//停止大门 #define kdm 12//开大门 #define km 13//开门 #define xuliehao "WM287VK10DI1FR8X" #define gdm_id "200045818" #define tdm_id "200045819" #define kdm_id "200045817" #define men_id "200059836" boolean gdm_b=false; boolean tdm_b=false; boolean kdm_b=false; boolean men_b=false; char server[] = "tcp.tlink.io"; // 连接 的服务器地址 String jsVal = "";//全局变量 接收值 String pd_id; int i=0; int t_d=0;//网络出错时间 int d_c=0;//出错错误次数相加 int d_f1; WiFiClient client;//初始化 //void(* resetFunc) (void) = 0; //制造重启命令// void setup() { pinMode(tdm, OUTPUT); pinMode(gdm, OUTPUT); pinMode(kdm, OUTPUT); pinMode(km, OUTPUT); Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED)//WiFi.status() ,这个函数是wifi连接状态,返回wifi链接状态 { delay(500); Serial.print("."); }//如果没有连通向串口发送.... Serial.println(""); Serial.println("IP address: "); Serial.println(WiFi.localIP());//WiFi.localIP()返回8266获得的ip地址 lianjie(); } void loop() { while (client.available()) { char c = client.read(); //Serial.print(c); jsVal += c; } if (jsVal.length() !=0) { Serial.println(jsVal);//打印出接收的数据 //pd=jsVal.charAt(50);//取第几位字符 //Serial.println(jsVal.charAt(40));//取第几位字符 Serial.println(jsVal);//串口方便好看 if(jsVal.charAt(18)=='s') if(jsVal.charAt(26)=='d') { for(int i=29;i<38;i++) { pd_id= pd_id+jsVal.charAt(i); } char idv=jsVal.charAt(50); Serial.println(pd_id); Serial.println(idv); if(!pd_id.compareTo(men_id)) { if('1'==idv && men_b==false) { men_b==true; digitalWrite(km,HIGH); delay(800); digitalWrite(km,LOW); } else if('0'==idv && men_b==true) men_b=false; } if(!pd_id.compareTo(kdm_id)) { if('1'==idv && kdm_b==false) { kdm_b==true; digitalWrite(kdm,HIGH); delay(800); digitalWrite(kdm,LOW); } else if('0'==idv && kdm_b==true) kdm_b=false; } if(!pd_id.compareTo(gdm_id)) { if('1'==idv && gdm_b==false) { gdm_b==true; digitalWrite(gdm,HIGH); delay(800); digitalWrite(gdm,LOW); } else if('0'==idv && gdm_b==true) gdm_b=false; } if(!pd_id.compareTo(tdm_id)) { if('1'==idv && tdm_b==false) { tdm_b==true; digitalWrite(tdm,HIGH); delay(800); digitalWrite(tdm,LOW); } else if('0'==idv && tdm_b==true) tdm_b=false; } pd_id=""; } jsVal = ""; } //如果网络连接失败 if (!client.connected()) { Serial.println(d_c++); if(d_c>=200) { ESP.reset(); //重启程序开始 } if(t_d!=millis()/1000){ Serial.println("disconnecting."); t_d=millis()/1000; client.stop();} } if(d_f1!=millis()/60000){ // lianjie(); Serial.println(i++); client.print(i); d_f1=millis()/60000; if(i>=300) ESP.reset(); //重启程序开始 } }// 此方法对服务器进行HTTP连接并获取数据 void lianjie(void) { if (client.connect(server, 8647))//连接服务器 { client.println(xuliehao); Serial.println(xuliehao); } else { // 如果你不能建立连接: Serial.println("lianjie shibai"); Serial.println(); Serial.println(server); client.stop(); } }