diff --git a/lightscontrol-client.ino b/lightscontrol-client.ino index a2f64b9..ba8ac99 100644 --- a/lightscontrol-client.ino +++ b/lightscontrol-client.ino @@ -1,38 +1,32 @@ -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include #include const char* host = "ursaminor.local"; String serviceUri = "/service.php"; const int httpPort = 8088; -const int relaisPin = D3; +const int relaisPin = D2; bool lightState = false; unsigned int lightTime = 0; bool updated = false; -void setup() { - Serial.begin(115200); - delay(100); - - Serial.println(""); +void wifiConnect(void) { Serial.println("Connecting to WiFi"); - WiFi.begin("WLAN-Bey-IoT","IoT-Fra80"); + WiFi.mode(WIFI_STA); + WiFi.begin("WLAN-Bey-IoT", "IoT-Fra80"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } - Serial.println(" connected"); - Serial.print("IP address: "); + Serial.print(" ok, IP: "); Serial.println(WiFi.localIP()); - Serial.println(""); +} + +void setup() { + Serial.begin(115200); + delay(100); + + wifiConnect(); pinMode(0, OUTPUT); pinMode(relaisPin, OUTPUT); @@ -49,9 +43,9 @@ void loop() { Serial.println("ERROR connection failed"); return; } - + // This will send the request to the server - String httpRequest = "GET " + serviceUri + " HTTP/1.1\r\n" + + String httpRequest = "GET " + serviceUri + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"; client.print(httpRequest); @@ -61,7 +55,7 @@ void loop() { // Read the lines of the reply from server // first expect a HTTP 200 status code - while(client.available()) { + while (client.available()) { String line = client.readStringUntil('\n'); if (line.indexOf("HTTP") != -1) { if (line.indexOf("200") == -1) { @@ -72,17 +66,17 @@ void loop() { ; } } - + // then read until the payload is found - while(client.available()) { + while (client.available()) { String line = client.readStringUntil('\n'); int start = line.indexOf("s="); if (start != -1) { // parse state information String buf; - - buf = line.substring(start+2, start+3); + + buf = line.substring(start + 2, start + 3); if (buf.equals("0")) { lightState = 0; } else { @@ -90,7 +84,7 @@ void loop() { } start = line.indexOf("t="); - buf = line.substring(start+2); + buf = line.substring(start + 2); lightTime = buf.toInt(); updated = true; @@ -112,7 +106,6 @@ void loop() { Serial.print("\tTime: "); Serial.println(lightTime); - // TODO: SWITCH SOME PIN digitalWrite(relaisPin, lightState); // sleep some time according to the recommendation in the answer @@ -122,21 +115,23 @@ void loop() { // only deep sleep, if the time is more than 5 minutes if (lightTime >= 5 && lightState == false) { - Serial.println("going for a deep sleep"); + Serial.println("sleeping with WiFi off"); Serial.println(""); Serial.flush(); - Serial.end(); - ESP.deepSleep(lightTime * 60 * 1000000); - // connect GPIO16 (D0) to RST!!! + + WiFi.mode(WIFI_OFF); + delay(lightTime * 60 * 1000); + wifiConnect(); } else { Serial.println("taking a normal sleep"); - if (lightTime < 1) { + if (lightTime <= 1) { delay(10 * 1000); } else { delay(lightTime * 60 * 1000); } } - + Serial.println(""); updated = false; } +