mirror of
https://github.com/Laxilef/OTGateway.git
synced 2025-12-11 02:34:29 +05:00
new version ESP8266Scheduler
This commit is contained in:
BIN
bin/src.ino.bin
BIN
bin/src.ino.bin
Binary file not shown.
@@ -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();
|
||||
}*/
|
||||
};
|
||||
@@ -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;
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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() {}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
};
|
||||
@@ -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;
|
||||
};
|
||||
14
src/src.ino
14
src/src.ino
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user