Initial Implementation Mailbox Monitor
This commit is contained in:
121
src/main.cpp
Normal file
121
src/main.cpp
Normal file
@@ -0,0 +1,121 @@
|
||||
#include <Arduino.h>
|
||||
#include <WiFi.h>
|
||||
#include <WiFiClientSecure.h>
|
||||
#include <ArduinoJson.h>
|
||||
|
||||
#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); */
|
||||
}
|
||||
Reference in New Issue
Block a user