diff --git a/exam3-2.ino b/exam3-2.ino new file mode 100644 index 0000000..ebdcb1c --- /dev/null +++ b/exam3-2.ino @@ -0,0 +1,124 @@ +#include +#include +#include + + +#ifndef STASSID + #define STASSID "1" + #define STAPSK "16888qwe" +#endif + +const char* ssid = STASSID; +const char* password = STAPSK; + +const char* host = "www.bigiot.net"; +const int tcpPort = 8181; + +String line = ""; +String cmd=""; + +WiFiClient client; + +const int LedPin = D2;//在本demo中是控制的ESP8266的D4 口,可根据自己需求更改。 +const String DevConnectStr = "{\"M\":\"checkin\",\"ID\":\"31051\",\"K\":\"5f0c618aa\"}\n"; +//软件调试 +void setup() +{ + + Serial.begin(115200); + + pinMode(LedPin, OUTPUT); + + for(int i=0;i<2;i++) //端口测试 + { + digitalWrite(LedPin, HIGH); + Serial.println("Turn Off"); + delay(2000); + digitalWrite(LedPin, LOW); + Serial.println("Turn Off"); + delay(2000); + + } + + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + int i = 0; + while (WiFi.status() != WL_CONNECTED) + { + delay(500); + Serial.println("connecting AP..."); + i++; + } + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); + + while (!client.connected())//若未连接到服务端,则客户端进行连接。 + { + if (!client.connect(host, tcpPort))//实际上这一步就在连接服务端,如果连接上,该函数返回true + { + Serial.println("connecting...."); + delay(500); + } + } + client.print(DevConnectStr);//发送http连接Json数据包 +} +int connSecond=0; +unsigned long lastTimeMs=0; +unsigned long nowTimeMs=0; +void loop() +{ + + nowTimeMs=millis(); + if(nowTimeMs-lastTimeMs>10000)//发送心跳周期:10秒 + { + lastTimeMs= nowTimeMs; + if(client.connected()) //已经连接到云服务器 + { + client.print(DevConnectStr); + //Serial.print("send heartbeat."); + } + } + + if (client.connected()) //接收处理 + { + line = client.readStringUntil('\n'); + if(line.length()>0) + { + JSONVar myObject = JSON.parse(line); + //Serial.print(line); + if (myObject.hasOwnProperty("C")) + { + cmd = (const char*) myObject["C"]; + //Serial.println(cmd); + if(cmd.indexOf("play")!=-1) + { + //增加指令处理函数 + //digitalWrite(LedPin, HIGH); // (第一阶段) + //增加串口输出,控制zigbee节点的LED (第二阶段) + Serial.println("A:0"); + } + else if(cmd.indexOf("stop")!=-1) + { + //增加指令处理函数 + + //digitalWrite(LedPin, LOW); // (第一阶段) + //增加串口输出,控制zigbee节点的LED (第二阶段) + Serial.println("A:1"); + } + } + } + + } + else //已经断开连接 + { + while (!client.connected())//若未连接到服务端,则客户端进行连接。 + { + if (!client.connect(host, tcpPort))//实际上这一步就在连接服务端,如果连接上,该函数返回true + { + Serial.println("connection...."); + delay(500); + } + } + } +} +