OTA updates working
This commit is contained in:
parent
bb665628a7
commit
a0bfd2bcca
@ -10,6 +10,8 @@
|
||||
|
||||
[platformio]
|
||||
lib_dir = lib
|
||||
lib_deps = hieromon/AutoConnect@^1.4.2
|
||||
board_build.partitions = min_spiffs.csv
|
||||
|
||||
[env:tinypico-color]
|
||||
platform = espressif32
|
||||
|
@ -1,47 +1,82 @@
|
||||
#include <SPI.h>
|
||||
#include <WiFi.h>
|
||||
#include <HTTPClient.h>
|
||||
#include <WebServer.h>
|
||||
#include <AutoConnect.h>
|
||||
|
||||
#include "eink.h"
|
||||
#include "network.h"
|
||||
|
||||
void fetchAndDrawImage(const char *url);
|
||||
void hibernate_and_restart();
|
||||
void hibernateAndRestart();
|
||||
|
||||
const char *ssid = WIFI_SSID;
|
||||
const char *password = WIFI_PASSWORD;
|
||||
WebServer Server;
|
||||
AutoConnect Portal(Server);
|
||||
AutoConnectConfig Config;
|
||||
|
||||
#define START_UP_DELAY 3 // Time to wait before connecting to WiFi and beginning
|
||||
|
||||
#define HIBERNATE_TIME_SEC 5 // hibernate time in seconds
|
||||
// #define HIBERNATE_TIME_SEC 120 // hibernate time in seconds
|
||||
|
||||
// Pin for waking the CPU and preventing default loop (get image, draw image, and hibernate)
|
||||
// Must be an RTC GPIO Pin
|
||||
#define SLEEP_WAKE_PIN 25
|
||||
#define SLEEP_WAKE_PIN_RTC GPIO_NUM_25
|
||||
|
||||
const char *clearImage = "http://192.168.3.192:8080/clearImage";
|
||||
const char *fetchImage = "http://192.168.3.192:8080/fetchImage";
|
||||
const char *calibrationImage = "http://192.168.3.192:8080/calibrationImage";
|
||||
|
||||
bool sleepWakeButtonPressed()
|
||||
{
|
||||
return !digitalRead(SLEEP_WAKE_PIN);
|
||||
}
|
||||
|
||||
void rootPage()
|
||||
{
|
||||
Server.sendHeader("Location", String("http://") + WiFi.localIP().toString() + String("/_ac"));
|
||||
Server.send(302, "text/plain", "");
|
||||
Server.client().flush();
|
||||
Server.client().stop();
|
||||
}
|
||||
|
||||
void setup()
|
||||
{
|
||||
// configure as a pullup because it made wiring a tad bit simplier
|
||||
pinMode(SLEEP_WAKE_PIN, INPUT_PULLUP);
|
||||
|
||||
Serial.begin(9600);
|
||||
|
||||
delay(3000);
|
||||
delay(START_UP_DELAY * 1000);
|
||||
|
||||
initDisplay();
|
||||
bool supressDrawAndSleep = sleepWakeButtonPressed();
|
||||
|
||||
WiFi.begin(ssid, password);
|
||||
Serial.println("Connecting");
|
||||
while (WiFi.status() != WL_CONNECTED)
|
||||
Config.ota = AC_OTA_BUILTIN;
|
||||
Portal.config(Config);
|
||||
|
||||
Server.on("/", rootPage);
|
||||
|
||||
Serial.println("Connecting to wireless...");
|
||||
if (Portal.begin())
|
||||
{
|
||||
delay(1000);
|
||||
Serial.print(".");
|
||||
}
|
||||
Serial.println("");
|
||||
Serial.print("Connected! IP Address: ");
|
||||
Serial.println(WiFi.localIP());
|
||||
Serial.println("WiFi connected: " + WiFi.localIP().toString());
|
||||
|
||||
// fetchAndDrawImage(clearImage);
|
||||
// fetchAndDrawImage(calibrationImage);
|
||||
if (!supressDrawAndSleep)
|
||||
{
|
||||
Serial.println("Fetching and drawing image.");
|
||||
fetchAndDrawImage(fetchImage);
|
||||
|
||||
hibernate_and_restart();
|
||||
hibernateAndRestart();
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.println("Default fetch, draw, sleep loop is supressed due to user pressing button.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO: should we still hibernate after a while in this case?
|
||||
Serial.println("Cannot fetch image because network isn't connected / configured.");
|
||||
}
|
||||
}
|
||||
|
||||
void fetchAndDrawImage(const char *url)
|
||||
@ -76,18 +111,21 @@ void fetchAndDrawImage(const char *url)
|
||||
http.end();
|
||||
}
|
||||
|
||||
void hibernate_and_restart()
|
||||
void hibernateAndRestart()
|
||||
{
|
||||
// Go to sleep and wake up later
|
||||
Serial.print("Begining hibernation. Waking up in ");
|
||||
Serial.print("Beginning hibernation. Waking up in ");
|
||||
Serial.print(HIBERNATE_TIME_SEC);
|
||||
Serial.println(" seconds");
|
||||
|
||||
// Configure wake up source as timer
|
||||
esp_sleep_enable_timer_wakeup(HIBERNATE_TIME_SEC * 1000000);
|
||||
|
||||
// Allow being woken up by pin
|
||||
esp_sleep_enable_ext0_wakeup(SLEEP_WAKE_PIN_RTC, 0);
|
||||
|
||||
// Enter hibernation mode
|
||||
esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);
|
||||
// esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);
|
||||
esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_SLOW_MEM, ESP_PD_OPTION_OFF);
|
||||
esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_FAST_MEM, ESP_PD_OPTION_OFF);
|
||||
esp_deep_sleep_start();
|
||||
@ -95,4 +133,5 @@ void hibernate_and_restart()
|
||||
|
||||
void loop()
|
||||
{
|
||||
Portal.handleClient();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user