/* * ESP8266 Wi-Fi Button that actually works * Marius Taciuc 20 Jul 2020 */ #include // Replace with your SSID and Password const char* ssid = "insert your wifi network name here"; const char* password = "put your wifi pasword here"; // Replace with your unique IFTTT URL resource const char* resource = "/trigger/You_got_rat/with/key/c63H----------------DF1Ry"; // How your resource variable should look like, but with your own API KEY (that API KEY below is just an example): // const char* resource = "/trigger/You_got_rat/with/key/c63H---------------DF1Ry"; // Maker Webhooks IFTTT const char* server = "maker.ifttt.com"; void setup() { Serial.begin(115200); initWifi(); makeIFTTTRequest(); // Sleep mode until RESET is triggered ESP.deepSleep(0); } void loop() { // sleeping - will not reach this line } // Establish a Wi-Fi connection with your router void initWifi() { Serial.print("Connecting to: "); Serial.print(ssid); WiFi.begin(ssid, password); int timeout = 10 * 4; // 10 seconds while(WiFi.status() != WL_CONNECTED && (timeout-- > 0)) { delay(250); Serial.print("."); } Serial.println(""); if(WiFi.status() != WL_CONNECTED) { Serial.println("Failed to connect, going back to sleep"); } Serial.print("WiFi connected in: "); Serial.print(millis()); Serial.print(", IP address: "); Serial.println(WiFi.localIP()); } // Make an HTTP request to the IFTTT web service void makeIFTTTRequest() { Serial.print("Connecting to "); Serial.print(server); WiFiClient client; int retries = 5; while(!!!client.connect(server, 80) && (retries-- > 0)) { Serial.print("."); } Serial.println(); if(!!!client.connected()) { Serial.println("Failed to connect, going back to sleep"); } Serial.print("Request resource: "); Serial.println(resource); client.print(String("GET ") + resource + " HTTP/1.1\r\n" + "Host: " + server + "\r\n" + "Connection: close\r\n\r\n"); int timeout = 5 * 10; // 5 seconds while(!!!client.available() && (timeout-- > 0)){ delay(100); } if(!!!client.available()) { Serial.println("No response, going back to sleep"); } while(client.available()){ Serial.write(client.read()); } Serial.println("\nclosing connection"); client.stop(); }