optimisation: run task once to disable wifi

This commit is contained in:
Nicu Hodos 2021-12-11 12:30:34 +01:00
parent 84f97d9da4
commit fd3f32ca70
4 changed files with 10 additions and 16 deletions

View File

@ -22,7 +22,7 @@ namespace Bmp {
void setup() { void setup() {
Serial.begin(9600); Serial.begin(9600);
Serial.println(F("BMP280 test")); Serial.println(F("BMP280 setup"));
if (!bmp.begin(0x76)) { if (!bmp.begin(0x76)) {
Serial.println(F("Could not find a valid BMP280 sensor, check wiring!")); Serial.println(F("Could not find a valid BMP280 sensor, check wiring!"));

View File

@ -39,7 +39,7 @@ namespace Ir {
void command(const char c[]) { void command(const char c[]) {
avrOn = true; avrOn = true;
tCheckWifi.disable(); tCheckWifi.cancel();
Wifi::reconnect(); Wifi::reconnect();
Display::displayText(c); Display::displayText(c);
} }
@ -50,7 +50,7 @@ namespace Ir {
{ {
case 0x9F: case 0x9F:
avrOn = false; avrOn = false;
tCheckWifi.enableDelayed(); tCheckWifi.restartDelayed();
Display::displayText("Off"); Display::displayText("Off");
break; break;
case 0x12: case 0x12:

View File

@ -8,7 +8,6 @@ namespace Ntp {
WiFiUDP ntpUDP; WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "europe.pool.ntp.org"); NTPClient timeClient(ntpUDP, "europe.pool.ntp.org");
time_t lastConnectedTime;
// Central European Time (Frankfurt, Paris) // Central European Time (Frankfurt, Paris)
TimeChangeRule CEST = { "CEST", Last, Sun, Mar, 2, 120 }; // Central European Summer Time TimeChangeRule CEST = { "CEST", Last, Sun, Mar, 2, 120 }; // Central European Summer Time

View File

@ -5,10 +5,9 @@ void onWifiConnected();
void onButtonPressed(); void onButtonPressed();
void onButtonCallback(); void onButtonCallback();
// #define _TASK_STATUS_REQUEST
#include <TaskScheduler.h> #include <TaskScheduler.h>
Scheduler ts; Scheduler ts;
Task tCheckWifi(5 * TASK_SECOND, TASK_FOREVER, checkWifiCallback, &ts); Task tCheckWifi(5 * TASK_MINUTE, TASK_ONCE, checkWifiCallback, &ts);
Task tWifiConnected(TASK_IMMEDIATE, TASK_ONCE, onWifiConnected, &ts); Task tWifiConnected(TASK_IMMEDIATE, TASK_ONCE, onWifiConnected, &ts);
Task tButton(TASK_IMMEDIATE, TASK_ONCE, onButtonCallback, &ts); Task tButton(TASK_IMMEDIATE, TASK_ONCE, onButtonCallback, &ts);
@ -20,9 +19,9 @@ Task tButton(TASK_IMMEDIATE, TASK_ONCE, onButtonCallback, &ts);
#include "ota.h" #include "ota.h"
#include "ir.h" #include "ir.h"
#define STAY_CONNECTED_AFTER_BOOT 5*60
#define BUTTON D3 #define BUTTON D3
void setup() { void setup() {
Serial.begin(9600); Serial.begin(9600);
@ -48,22 +47,18 @@ void onWifiConnected() {
Serial.println("Wifi connected event"); Serial.println("Wifi connected event");
Wifi::printStatus(); Wifi::printStatus();
Ota::tLoop.enable(); Ota::tLoop.enable();
if (!Ir::avrOn) tCheckWifi.enableDelayed(); if (!Ir::avrOn) tCheckWifi.restartDelayed();
Mqtt::client.connect(); Mqtt::client.connect();
if (time_t newTime = Ntp::updateTime()) { if (time_t newTime = Ntp::updateTime()) {
Serial.println(asctime(localtime(&newTime))); Serial.println(asctime(localtime(&newTime)));
Ntp::lastConnectedTime = newTime;
} }
} }
void checkWifiCallback() { void checkWifiCallback() {
if (difftime(now(), Ntp::lastConnectedTime) > STAY_CONNECTED_AFTER_BOOT) { Serial.println("Wifi connection timed out");
Serial.println("Wifi connection timed out"); Mqtt::client.disconnect();
Mqtt::client.disconnect(); Ota::tLoop.disable();
Ota::tLoop.disable(); Wifi::disconnect();
tCheckWifi.disable();
Wifi::disconnect();
}
} }
ICACHE_RAM_ATTR void onButtonPressed() { ICACHE_RAM_ATTR void onButtonPressed() {