// librarys #include #include // network credentials const char* ssid = ""; const char* password = ""; // URL for the HTTP requests const String baseurl = "http://10.10.10.10:1880"; // define pins const int pinsout[] = {23,22,19,18,5,4}; const int pinsout_length = 6; boolean pinsout_stat[6]; const int pinsin[] = {21,17,16,0,2}; const int pinsin_length = 5; boolean pinsin_stat[5]; // server port WiFiServer server(80); // HTTP request String header; // 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; }else if (header.indexOf(String(i)+"/off") >= 0){ digitalWrite(pinsout[i], LOW); pinsout_stat[i] = false; } } client.print(pinsToJson()); client.println(); break; } else { currentLine = ""; } } else if (c != '\r') { currentLine += c; } } } header = ""; client.stop(); Serial.println("Client disconnected."); Serial.println(""); } for (int i=0; i < pinsin_length; i++){ if (pinsin_stat[i] != digitalRead(pinsin[i])){ pinsin_stat[i] = digitalRead(pinsin[i]); HTTPClient http; http.begin(baseurl+"/"+i+"/"+pinsin_stat[i]); http.addHeader("Content-Type", "application/json"); while(!http.POST(pinsToJson())); http.end(); } } } String pinsToJson(){ String payload = "{\"pinsout\":["; for (int i=0; i