#include #include #include #include #define ONBOARD_LED 2 #define uS_TO_mS_FACTOR 1000 #define BUTTON_PIN_BITMASK 0x200000000 // 2^33 in hex RTC_RODATA_ATTR int bootCount=0; // Wifi network credentials const char* ssid = "JoNelsDarlings"; const char* password = "Paris2016"; esp_sleep_wakeup_cause_t wakeup_reason; void print_wakeup_reason(){ wakeup_reason = esp_sleep_get_wakeup_cause(); switch(wakeup_reason){ case ESP_SLEEP_WAKEUP_EXT0 : Serial.println("Wakeup caused by external signal using RTC_IO"); break; case ESP_SLEEP_WAKEUP_EXT1 : Serial.println("Wakeup caused by external signal using RTC_CNTL"); break; case ESP_SLEEP_WAKEUP_TIMER : Serial.println("Wakeup caused by timer"); break; case ESP_SLEEP_WAKEUP_TOUCHPAD : Serial.println("Wakeup caused by touchpad"); break; case ESP_SLEEP_WAKEUP_ULP : Serial.println("Wakeup caused by ULP program"); break; default : Serial.printf("Wakeup was not caused by deep sleep: %d\n",wakeup_reason); break; } } void connect_wifi(){ WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); digitalWrite(ONBOARD_LED,HIGH); delay(100); digitalWrite(ONBOARD_LED,LOW); delay(400); } Serial.println(""); Serial.println("WiFi connected"); digitalWrite(ONBOARD_LED,HIGH); Serial.print("IP address: "); Serial.println(WiFi.localIP()); } void send_notification(){ Serial.println("Sending Notification."); WiFiClientSecure client; client.setInsecure(); // NOT RECOMMENDED const char* host="deadswitch.kawomi.com"; const int port=443; if (!client.connect(host,port)) { Serial.println("connection failed"); //blink the led to indicate the failed connection..... for (int i=0;i<=5;i++) { Serial.print("!"); digitalWrite(ONBOARD_LED,HIGH); delay(1000*i); digitalWrite(ONBOARD_LED,LOW); delay(100); } return; } String url = "/api/v1?topic=mailbox.livorno.address&secs=0&email=joerg.tretter@gmail.com"; Serial.print("Requesting URL: "); Serial.println(url); client.print(String("POST ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Content-Type: application/x-www-form-urlencoded\r\n" + "Content-Length: 14\r\n\r\n" + "platform=esp32\r\n"); } void setup() { bootCount++; Serial.begin(9600); pinMode(ONBOARD_LED,OUTPUT); delay(2000); // just a bit of time to start logging.. Serial.printf("Boot #: %d\n",bootCount); print_wakeup_reason(); /* if (bootCount % 2 == 0){ digitalWrite(ONBOARD_LED,HIGH); delay(100); } else { digitalWrite(ONBOARD_LED,LOW); } */ wakeup_reason = esp_sleep_get_wakeup_cause(); if(wakeup_reason==ESP_SLEEP_WAKEUP_EXT0){ connect_wifi(); send_notification(); } else { Serial.println("Regular boot, going into deep sleep."); } //esp_sleep_enable_timer_wakeup(30000*uS_TO_mS_FACTOR); esp_sleep_enable_ext0_wakeup(GPIO_NUM_33,1); //1 = High, 0 = Low Serial.println("Going to sleep now"); delay(1000); esp_deep_sleep_start(); } void loop() { /* When dealing with deep sleep, it looks like the esp will go back into setup... */ /* delay(1000); digitalWrite(ONBOARD_LED,HIGH); delay(100); digitalWrite(ONBOARD_LED,LOW); */ }