new version ESP8266Scheduler

This commit is contained in:
Yurii
2022-06-27 06:31:13 +03:00
parent 72d454cf57
commit a952b8f771
11 changed files with 28 additions and 147 deletions

Binary file not shown.

View File

@@ -1,23 +1,11 @@
#include "lib/MiniTask.h"
#include "SensorsTask.h"
#include "RegulatorTask.h"
extern MqttTask* tMqtt;
extern SensorsTask* tSensors;
class MainTask : public CustomTask {
class MainTask : public Task {
public:
MainTask(bool enabled = false, unsigned long interval = 0) : CustomTask(enabled, interval) {}
MainTask(bool _enabled = false, unsigned long _interval = 0) : Task(_enabled, _interval) {}
protected:
//HttpServerTask* tHttpServer;
SensorsTask* tSensors;
RegulatorTask* tRegulator;
void setup() {
//tHttpServer = new HttpServerTask(false);
tSensors = new SensorsTask(false, DS18B20_INTERVAL);
tRegulator = new RegulatorTask(true, 10000);
}
void loop() {
static unsigned long lastHeapInfo = 0;
@@ -46,12 +34,6 @@ protected:
tSensors->disable();
}
//tHttpServer->loopWrapper();
//yield();
tSensors->loopWrapper();
yield();
tRegulator->loopWrapper();
#ifdef USE_TELNET
yield();
@@ -76,8 +58,4 @@ protected:
}
}
}
/*char[] getUptime() {
uint64_t = esp_timer_get_time();
}*/
};

View File

@@ -8,9 +8,9 @@ PubSubClient client(espClient);
HomeAssistantHelper haHelper;
class MqttTask : public CustomTask {
class MqttTask : public Task {
public:
MqttTask(bool enabled = false, unsigned long interval = 0) : CustomTask(enabled, interval) {}
MqttTask(bool _enabled = false, unsigned long _interval = 0) : Task(_enabled, _interval) {}
protected:
unsigned long lastReconnectAttempt = 0;

View File

@@ -2,9 +2,9 @@
CustomOpenTherm ot(OPENTHERM_IN_PIN, OPENTHERM_OUT_PIN);
class OpenThermTask : public CustomTask {
class OpenThermTask : public Task {
public:
OpenThermTask(bool enabled = false, unsigned long interval = 0) : CustomTask(enabled, interval) {}
OpenThermTask(bool _enabled = false, unsigned long _interval = 0) : Task(_enabled, _interval) {}
protected:
void setup() {

View File

@@ -6,9 +6,9 @@ Equitherm etRegulator;
GyverPID pidRegulator(0, 0, 0, 10000);
PIDtuner pidTuner;
class RegulatorTask : public MiniTask {
class RegulatorTask : public LeanTask {
public:
RegulatorTask(bool enabled = false, unsigned long interval = 0) : MiniTask(enabled, interval) {}
RegulatorTask(bool _enabled = false, unsigned long _interval = 0) : LeanTask(_enabled, _interval) {}
protected:
bool tunerInit = false;

View File

@@ -2,9 +2,9 @@
MicroDS18B20<DS18B20_PIN> outdoorSensor;
class SensorsTask : public MiniTask {
class SensorsTask : public LeanTask {
public:
SensorsTask(bool enabled = false, unsigned long interval = 0) : MiniTask(enabled, interval) {}
SensorsTask(bool _enabled = false, unsigned long _interval = 0) : LeanTask(_enabled, _interval) {}
protected:
void setup() {}

View File

@@ -13,9 +13,9 @@ WiFiManagerParameter *wmMqttUser;
WiFiManagerParameter *wmMqttPassword;
WiFiManagerParameter *wmMqttPrefix;
class WifiManagerTask : public CustomTask {
class WifiManagerTask : public Task {
public:
WifiManagerTask(bool enabled = false, unsigned long interval = 0) : CustomTask(enabled, interval) {}
WifiManagerTask(bool _enabled = false, unsigned long _interval = 0) : Task(_enabled, _interval) {}
protected:
void setup() {

View File

@@ -1,6 +1,6 @@
#define OT_GATEWAY_VERSION "1.0.4"
#define OT_GATEWAY_VERSION "1.0.5"
#define AP_SSID "OpenTherm Gateway"
//#define USE_TELNET
#define USE_TELNET
#define EMERGENCY_TRESHOLD 10
#define MQTT_RECONNECT_INTERVAL 5000

View File

@@ -1,45 +0,0 @@
class CustomTask : public Task {
public:
CustomTask(bool enabled = false, unsigned long interval = 0) {
_enabled = enabled;
_interval = interval;
}
bool isEnabled() {
return _enabled;
}
void enable() {
_enabled = true;
}
void disable() {
_enabled = false;
}
void setInterval(unsigned long val) {
_interval = val;
}
unsigned long getInterval() {
return _interval;
}
protected:
bool _enabled = true;
unsigned long _lastRun = 0;
unsigned long _interval = 0;
bool shouldRun() {
if (!_enabled || !Task::shouldRun()) {
return false;
}
if (_interval > 0 && millis() - _lastRun < _interval) {
return false;
}
_lastRun = millis();
return true;
}
};

View File

@@ -1,64 +0,0 @@
class MiniTask {
public:
MiniTask(bool enabled = false, unsigned long interval = 0) {
_enabled = enabled;
_interval = interval;
}
bool isEnabled() {
return _enabled;
}
void enable() {
_enabled = true;
}
void disable() {
_enabled = false;
}
void setInterval(unsigned long val) {
_interval = val;
}
unsigned long getInterval() {
return _interval;
}
void loopWrapper() {
if (!shouldRun()) {
return;
}
if (!_setupDone) {
setup();
_setupDone = true;
}
loop();
yield();
}
protected:
virtual void setup() {}
virtual void loop() {}
virtual bool shouldRun() {
if (!_enabled) {
return false;
}
if (_interval > 0 && millis() - _lastRun < _interval) {
return false;
}
_lastRun = millis();
return true;
}
private:
bool _enabled = false;
unsigned long _interval = 0;
unsigned long _lastRun = 0;
bool _setupDone = false;
};

View File

@@ -3,22 +3,28 @@
#include <TelnetStream.h>
#include <EEManager.h>
#include <Scheduler.h>
#include <Task.h>
#include <LeanTask.h>
#include "Settings.h"
EEManager eeSettings(settings, 30000);
#include "lib/CustomTask.h"
#include "WifiManagerTask.h"
#include "MqttTask.h"
#include "OpenThermTask.h"
#include "SensorsTask.h"
#include "RegulatorTask.h"
#include "MainTask.h"
// Tasks
WifiManagerTask* tWm;
MqttTask* tMqtt;
OpenThermTask* tOt;
SensorsTask* tSensors;
RegulatorTask* tRegulator;
MainTask* tMain;
void setup() {
#ifdef USE_TELNET
TelnetStream.begin();
@@ -49,6 +55,12 @@ void setup() {
tOt = new OpenThermTask(true);
Scheduler.start(tOt);
tSensors = new SensorsTask(false, DS18B20_INTERVAL);
Scheduler.start(tSensors);
tRegulator = new RegulatorTask(true, 10000);
Scheduler.start(tRegulator);
tMain = new MainTask(true);
Scheduler.start(tMain);