// // DING-A-LING WEB SERVER // Turn relay ON for a short time when ring request is received // #include /////////////////////////////////////////////////////////////////////////////////// // NOTE: customize the 'ssid' and 'password' values below for your network! const char* ssid = "my_network_ssid"; // wi-fi network ssid const char* password = "my_network_password"; // wi-fi network password const int port = 41114; // TCP port for requests const int pin = 13; // relay gpio pin const int duration = 750; // how long to keep relay ON /////////////////////////////////////////////////////////////////////////////////// WiFiServer server(port); /////////////////////////////////////////////////////////////////////////////////// void setup() { // init serial port Serial.begin(115200); while (!Serial) delay(1); // init relay pin pinMode(pin, OUTPUT); digitalWrite(pin, 0); // connect to wi-fi network Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.print(ssid); Serial.print(" "); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("Wi-Fi connected"); // start server server.begin(); Serial.print("Server started on "); Serial.println(WiFi.localIP()); } /////////////////////////////////////////////////////////////////////////////////// void loop() { // get next client connection WiFiClient client = server.available(); if (!client) return; Serial.println("New connection"); // wait until client sends data while (!client.available()) delay(1); // read first line of request String req = client.readStringUntil('\r'); Serial.println(req); // check request if (req.indexOf("/dingaling?") == -1) { Serial.println("Invalid request"); client.stop(); return; } Serial.println("Valid request"); // send response String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n\r\n\r\n\n"; client.flush(); client.print(s); // turn ON relay for specified period digitalWrite(pin, 1); delay(duration); digitalWrite(pin, 0); // disconnect client client.stop(); Serial.println("Disconnected"); }