|
@@ -16,19 +16,15 @@
|
|
|
// BUSY -> GPIO4, RST -> GPIO2, DC -> GPIO0, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
|
|
|
|
|
/*
|
|
|
- Power Settings
|
|
|
-
|
|
|
- If your device is designed to be plugged in
|
|
|
- set LOW_POWER_MODE to false
|
|
|
-
|
|
|
- If your device is powered with battery and
|
|
|
- GPIO16 / D0 is connected to RST with a resistor
|
|
|
- (resistor value depends on development board)
|
|
|
- set LOW_POWER_MODE to true
|
|
|
-
|
|
|
- If yout are not sure, set it to false
|
|
|
+ Deep Sleep Mode
|
|
|
+
|
|
|
+ Some ESP8266 can do deep sleep but most don't
|
|
|
+ deal to the use of CH340. Set it to true
|
|
|
+ if you are using the bare ESP8266 module and you
|
|
|
+ sure your module support deep sleep.
|
|
|
+ Otherwise, leave it as false
|
|
|
*/
|
|
|
-#define LOW_POWER_MODE true
|
|
|
+#define USE_DEEP_SLEEP false
|
|
|
|
|
|
/*
|
|
|
Display refresh interval
|
|
@@ -36,8 +32,8 @@
|
|
|
Too frequent interval in low power mode might results getting ban by weather API / NTP servers
|
|
|
If you are not using low power mode, edit the high pwr mode interval instead
|
|
|
*/
|
|
|
-#define REFRESH_INTERVAL 900e6 //900 seconds, aka 15 minutes
|
|
|
-#define REFRESH_INTERVAL_HIGH_PWR_MODE 900000 //900 ms, aka 15 minutes
|
|
|
+#define REFRESH_INTERVAL 900e6 //900 seconds, aka 15 minutes, only work on some ESP8266
|
|
|
+#define REFRESH_INTERVAL_HIGH_PWR_MODE 900000 //900 s, aka 15 minutes, work on all ESP8266
|
|
|
|
|
|
#define SHOW_PREVIOUS_NEXT_MONTH_DAYS true //Show previous & next months days as well
|
|
|
|
|
@@ -65,14 +61,10 @@
|
|
|
#include <ESP8266WiFi.h>
|
|
|
#include <WiFiManager.h>
|
|
|
#include <ESP8266TrueRandom.h>
|
|
|
+#include <WiFiUdp.h>
|
|
|
#include <NTPClient.h>
|
|
|
#include <ESP8266HTTPClient.h>
|
|
|
-#include <WiFiUdp.h>
|
|
|
#include <ArduinoJson.h>
|
|
|
-#include <TaskScheduler.h>
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
|
|
|
/* WiFi and Connections */
|
|
|
WiFiManager wifiManager;
|
|
@@ -123,11 +115,6 @@ float maxTemp = 0.0;
|
|
|
float minTemp = 0.0;
|
|
|
int batRemain = 0; //In percentage
|
|
|
|
|
|
-/* Schedulers */
|
|
|
-void datetimeUpdateCallback();
|
|
|
-Task t_dt(REFRESH_INTERVAL_HIGH_PWR_MODE, TASK_FOREVER, &datetimeUpdateCallback); //Frame update
|
|
|
-Scheduler runner;
|
|
|
-
|
|
|
void setup() {
|
|
|
//Start debug serial
|
|
|
Serial.begin(115200);
|
|
@@ -136,14 +123,16 @@ void setup() {
|
|
|
display.init(115200);
|
|
|
|
|
|
//Set D0 to wakeup pin
|
|
|
- pinMode(D0,WAKEUP_PULLUP);
|
|
|
+ //pinMode(D0,WAKEUP_PULLUP);
|
|
|
|
|
|
//Draw starting frame
|
|
|
display.setRotation(3);
|
|
|
- if (!LOW_POWER_MODE) {
|
|
|
+ /*
|
|
|
+ if (!USE_DEEP_SLEEP) {
|
|
|
display.drawPaged(drawStartingFrame);
|
|
|
delay(100);
|
|
|
}
|
|
|
+ */
|
|
|
|
|
|
// Connect to Wi-Fi
|
|
|
/*
|
|
@@ -158,7 +147,6 @@ void setup() {
|
|
|
Serial.print("IP address:\t");
|
|
|
Serial.println(WiFi.localIP());
|
|
|
*/
|
|
|
-
|
|
|
wifiManager.setAPCallback(configModeCallback);
|
|
|
wifiManager.autoConnect("InkyDash");
|
|
|
|
|
@@ -173,6 +161,7 @@ void setup() {
|
|
|
delay(1000);
|
|
|
|
|
|
//Randomly get one of the NTP server from the list and request time
|
|
|
+ Serial.println("Resolving NTP server");
|
|
|
const char* randomNtpServer = getRandomNtpServer(ntpServers);
|
|
|
Serial.println("Using NTP Server: " + String(randomNtpServer));
|
|
|
NTPClient timeClient(UDPconn, randomNtpServer);
|
|
@@ -180,7 +169,7 @@ void setup() {
|
|
|
ntpClient.setTimeOffset(28800);
|
|
|
|
|
|
//Draw home page
|
|
|
- if (LOW_POWER_MODE) {
|
|
|
+ if (USE_DEEP_SLEEP) {
|
|
|
//Get weather information from API
|
|
|
updateCurrentWeatherInfo();
|
|
|
//Render the calender page
|
|
@@ -189,14 +178,15 @@ void setup() {
|
|
|
ESP.deepSleep(REFRESH_INTERVAL);
|
|
|
delay(100);
|
|
|
//After deep sleep mode, device will reset and not entering the loop() session
|
|
|
- } else {
|
|
|
- runner.init();
|
|
|
- Serial.println("Initialized scheduler");
|
|
|
- runner.addTask(t_dt); //Date-time update task
|
|
|
- t_dt.enable();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
void loop() {
|
|
|
- runner.execute();
|
|
|
+ datetimeUpdateCallback();
|
|
|
+ Serial.println("Entering sleep mode");
|
|
|
+ int cc = REFRESH_INTERVAL_HIGH_PWR_MODE/1000;
|
|
|
+ for (int i = 0; i < cc; i++){
|
|
|
+ //Prevent delay overflow
|
|
|
+ delay(1000);
|
|
|
+ }
|
|
|
}
|