diff --git a/ESP32-json-control/ESP32-json-control.ino b/ESP32-json-control/ESP32-json-control.ino new file mode 100644 index 0000000..4bb1ba9 --- /dev/null +++ b/ESP32-json-control/ESP32-json-control.ino @@ -0,0 +1,114 @@ + +// librarys +#include +#include + +// network credentials +const char* ssid = ""; +const char* password = ""; + +// server port +WiFiServer server(80); + +// HTTP request +String header; + +// define pins +int pinsout[] = {26, 27}; +int pinsout_length = 2; +boolean pinsout_stat[2]; + +int pinsin[] = {32, 33}; +int pinsin_length = 2; +int pinsin_stat[2]; + +// define timeout +unsigned long currentTime = millis(); +unsigned long previousTime = 0; +const long timeoutTime = 2000; + +void setup() { + Serial.begin(115200); + + for (int i=0; i < pinsout_length; i++){ + pinMode(pinsout[i], OUTPUT); + digitalWrite(pinsout[i], LOW); + } + + // connect to Wi-Fi + Serial.print("Connecting to "); + Serial.println(ssid); + WiFi.begin(ssid, password); + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + + Serial.println(""); + Serial.println("WiFi connected."); + Serial.println("IP address: "); + Serial.println(WiFi.localIP()); + server.begin(); +} + +void loop(){ + WiFiClient client = server.available(); + + if (client) { + currentTime = millis(); + previousTime = currentTime; + Serial.println("New Client."); + String currentLine = ""; + while (client.connected() && currentTime - previousTime <= timeoutTime) { + currentTime = millis(); + if (client.available()) { + char c = client.read(); + Serial.write(c); + header += c; + if (c == '\n') { + if (currentLine.length() == 0) { + client.println("HTTP/1.1 200 OK"); + client.println("Content-type:application/json"); + client.println("Connection: close"); + client.println(); + + for (int i=0; i= 0){ + digitalWrite(pinsout[i], HIGH); + pinsout_stat[i] = true; + break; + }else if (header.indexOf("GET /"+String(i)+"/off") >= 0){ + digitalWrite(pinsout[i], LOW); + pinsout_stat[i] = false; + break; + } + } + + client.print("{\"pinsout\":["); + for (int i=0; i