[CODE] add first draft
This commit is contained in:
parent
1559eb39c5
commit
0098c7aaaf
142
lightscontrol-client.ino
Normal file
142
lightscontrol-client.ino
Normal file
|
@ -0,0 +1,142 @@
|
|||
//#include <ESP8266WiFiGeneric.h>
|
||||
//#include <WiFiClient.h>
|
||||
//#include <WiFiClientSecure.h>
|
||||
//#include <WiFiUdp.h>
|
||||
//#include <ESP8266WiFiMulti.h>
|
||||
//#include <ESP8266WiFiAP.h>
|
||||
//#include <ESP8266WiFiSTA.h>
|
||||
//#include <WiFiServer.h>
|
||||
#include <ESP8266WiFi.h>
|
||||
|
||||
const char* host = "ursaminor.local";
|
||||
String serviceUri = "/service.php";
|
||||
const int httpPort = 8088;
|
||||
|
||||
const int relaisPin = 3;
|
||||
|
||||
bool lightState = false;
|
||||
unsigned int lightTime = 0;
|
||||
bool updated = false;
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
delay(100);
|
||||
|
||||
Serial.println("");
|
||||
Serial.println("Connecting to WiFi");
|
||||
WiFi.begin("WLAN-Bey-IoT","IoT-Fra80");
|
||||
while (WiFi.status() != WL_CONNECTED) {
|
||||
delay(500);
|
||||
Serial.print(".");
|
||||
}
|
||||
Serial.println(" connected");
|
||||
Serial.print("IP address: ");
|
||||
Serial.println(WiFi.localIP());
|
||||
Serial.println("");
|
||||
|
||||
pinMode(0, OUTPUT);
|
||||
pinMode(relaisPin, OUTPUT);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
Serial.print("connecting to ");
|
||||
Serial.println(host);
|
||||
|
||||
// Use WiFiClient class to create TCP connections
|
||||
WiFiClient client;
|
||||
|
||||
if (!client.connect(host, httpPort)) {
|
||||
Serial.println("ERROR connection failed");
|
||||
return;
|
||||
}
|
||||
|
||||
// This will send the request to the server
|
||||
String httpRequest = "GET " + serviceUri + " HTTP/1.1\r\n" +
|
||||
"Host: " + host + "\r\n" +
|
||||
"Connection: close\r\n\r\n";
|
||||
client.print(httpRequest);
|
||||
delay(100);
|
||||
|
||||
|
||||
// Read the lines of the reply from server
|
||||
|
||||
// first expect a HTTP 200 status code
|
||||
while(client.available()) {
|
||||
String line = client.readStringUntil('\n');
|
||||
if (line.indexOf("HTTP") != -1) {
|
||||
if (line.indexOf("200") == -1) {
|
||||
Serial.println("ERROR: invalid http status code");
|
||||
}
|
||||
break;
|
||||
} else {
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
// then read until the payload is found
|
||||
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);
|
||||
if (buf.equals("0")) {
|
||||
lightState = 0;
|
||||
} else {
|
||||
lightState = 1;
|
||||
}
|
||||
|
||||
start = line.indexOf("t=");
|
||||
buf = line.substring(start+2);
|
||||
lightTime = buf.toInt();
|
||||
|
||||
updated = true;
|
||||
Serial.println("response parsed");
|
||||
} else {
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
// failsafe
|
||||
if (!updated) {
|
||||
lightState = true;
|
||||
lightTime = 1;
|
||||
Serial.println("WARN failsafe");
|
||||
}
|
||||
|
||||
Serial.print("Lights: ");
|
||||
Serial.print(lightState);
|
||||
Serial.print("\tTime: ");
|
||||
Serial.println(lightTime);
|
||||
|
||||
// TODO: SWITCH SOME PIN
|
||||
digitalWrite(relaisPin, lightState);
|
||||
|
||||
// sleep some time according to the recommendation in the answer
|
||||
if (lightTime > 15) { // not more than 15 minutes
|
||||
lightTime = 15;
|
||||
}
|
||||
|
||||
// only deep sleep, if the time is more than 5 minutes
|
||||
if (lightTime >= 5) {
|
||||
Serial.println("going for a deep sleep");
|
||||
Serial.println("");
|
||||
Serial.flush();
|
||||
Serial.end();
|
||||
ESP.deepSleep(lightTime * 60 * 1000000);
|
||||
// connect GPIO16 (D0) to RST!!!
|
||||
} else {
|
||||
Serial.println("taking a normal sleep");
|
||||
if (lightTime < 1) {
|
||||
delay(10 * 1000);
|
||||
} else {
|
||||
delay(lightTime * 60 * 1000);
|
||||
}
|
||||
}
|
||||
|
||||
Serial.println("");
|
||||
updated = false;
|
||||
}
|
Reference in a new issue