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 MqttTask* tMqtt;
|
||||||
|
extern SensorsTask* tSensors;
|
||||||
|
|
||||||
class MainTask : public CustomTask {
|
class MainTask : public Task {
|
||||||
public:
|
public:
|
||||||
MainTask(bool enabled = false, unsigned long interval = 0) : CustomTask(enabled, interval) {}
|
MainTask(bool _enabled = false, unsigned long _interval = 0) : Task(_enabled, _interval) {}
|
||||||
|
|
||||||
protected:
|
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() {
|
void loop() {
|
||||||
static unsigned long lastHeapInfo = 0;
|
static unsigned long lastHeapInfo = 0;
|
||||||
@@ -46,12 +34,6 @@ protected:
|
|||||||
tSensors->disable();
|
tSensors->disable();
|
||||||
}
|
}
|
||||||
|
|
||||||
//tHttpServer->loopWrapper();
|
|
||||||
//yield();
|
|
||||||
tSensors->loopWrapper();
|
|
||||||
yield();
|
|
||||||
tRegulator->loopWrapper();
|
|
||||||
|
|
||||||
#ifdef USE_TELNET
|
#ifdef USE_TELNET
|
||||||
yield();
|
yield();
|
||||||
|
|
||||||
@@ -76,8 +58,4 @@ protected:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*char[] getUptime() {
|
|
||||||
uint64_t = esp_timer_get_time();
|
|
||||||
}*/
|
|
||||||
};
|
};
|
||||||
@@ -8,9 +8,9 @@ PubSubClient client(espClient);
|
|||||||
HomeAssistantHelper haHelper;
|
HomeAssistantHelper haHelper;
|
||||||
|
|
||||||
|
|
||||||
class MqttTask : public CustomTask {
|
class MqttTask : public Task {
|
||||||
public:
|
public:
|
||||||
MqttTask(bool enabled = false, unsigned long interval = 0) : CustomTask(enabled, interval) {}
|
MqttTask(bool _enabled = false, unsigned long _interval = 0) : Task(_enabled, _interval) {}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
unsigned long lastReconnectAttempt = 0;
|
unsigned long lastReconnectAttempt = 0;
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
CustomOpenTherm ot(OPENTHERM_IN_PIN, OPENTHERM_OUT_PIN);
|
CustomOpenTherm ot(OPENTHERM_IN_PIN, OPENTHERM_OUT_PIN);
|
||||||
|
|
||||||
class OpenThermTask : public CustomTask {
|
class OpenThermTask : public Task {
|
||||||
public:
|
public:
|
||||||
OpenThermTask(bool enabled = false, unsigned long interval = 0) : CustomTask(enabled, interval) {}
|
OpenThermTask(bool _enabled = false, unsigned long _interval = 0) : Task(_enabled, _interval) {}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void setup() {
|
void setup() {
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ Equitherm etRegulator;
|
|||||||
GyverPID pidRegulator(0, 0, 0, 10000);
|
GyverPID pidRegulator(0, 0, 0, 10000);
|
||||||
PIDtuner pidTuner;
|
PIDtuner pidTuner;
|
||||||
|
|
||||||
class RegulatorTask : public MiniTask {
|
class RegulatorTask : public LeanTask {
|
||||||
public:
|
public:
|
||||||
RegulatorTask(bool enabled = false, unsigned long interval = 0) : MiniTask(enabled, interval) {}
|
RegulatorTask(bool _enabled = false, unsigned long _interval = 0) : LeanTask(_enabled, _interval) {}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool tunerInit = false;
|
bool tunerInit = false;
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
MicroDS18B20<DS18B20_PIN> outdoorSensor;
|
MicroDS18B20<DS18B20_PIN> outdoorSensor;
|
||||||
|
|
||||||
class SensorsTask : public MiniTask {
|
class SensorsTask : public LeanTask {
|
||||||
public:
|
public:
|
||||||
SensorsTask(bool enabled = false, unsigned long interval = 0) : MiniTask(enabled, interval) {}
|
SensorsTask(bool _enabled = false, unsigned long _interval = 0) : LeanTask(_enabled, _interval) {}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void setup() {}
|
void setup() {}
|
||||||
|
|||||||
@@ -13,9 +13,9 @@ WiFiManagerParameter *wmMqttUser;
|
|||||||
WiFiManagerParameter *wmMqttPassword;
|
WiFiManagerParameter *wmMqttPassword;
|
||||||
WiFiManagerParameter *wmMqttPrefix;
|
WiFiManagerParameter *wmMqttPrefix;
|
||||||
|
|
||||||
class WifiManagerTask : public CustomTask {
|
class WifiManagerTask : public Task {
|
||||||
public:
|
public:
|
||||||
WifiManagerTask(bool enabled = false, unsigned long interval = 0) : CustomTask(enabled, interval) {}
|
WifiManagerTask(bool _enabled = false, unsigned long _interval = 0) : Task(_enabled, _interval) {}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void setup() {
|
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 AP_SSID "OpenTherm Gateway"
|
||||||
//#define USE_TELNET
|
#define USE_TELNET
|
||||||
|
|
||||||
#define EMERGENCY_TRESHOLD 10
|
#define EMERGENCY_TRESHOLD 10
|
||||||
#define MQTT_RECONNECT_INTERVAL 5000
|
#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 <TelnetStream.h>
|
||||||
#include <EEManager.h>
|
#include <EEManager.h>
|
||||||
#include <Scheduler.h>
|
#include <Scheduler.h>
|
||||||
|
#include <Task.h>
|
||||||
|
#include <LeanTask.h>
|
||||||
#include "Settings.h"
|
#include "Settings.h"
|
||||||
|
|
||||||
EEManager eeSettings(settings, 30000);
|
EEManager eeSettings(settings, 30000);
|
||||||
|
|
||||||
#include "lib/CustomTask.h"
|
|
||||||
#include "WifiManagerTask.h"
|
#include "WifiManagerTask.h"
|
||||||
#include "MqttTask.h"
|
#include "MqttTask.h"
|
||||||
#include "OpenThermTask.h"
|
#include "OpenThermTask.h"
|
||||||
|
#include "SensorsTask.h"
|
||||||
|
#include "RegulatorTask.h"
|
||||||
#include "MainTask.h"
|
#include "MainTask.h"
|
||||||
|
|
||||||
// Tasks
|
// Tasks
|
||||||
WifiManagerTask* tWm;
|
WifiManagerTask* tWm;
|
||||||
MqttTask* tMqtt;
|
MqttTask* tMqtt;
|
||||||
OpenThermTask* tOt;
|
OpenThermTask* tOt;
|
||||||
|
SensorsTask* tSensors;
|
||||||
|
RegulatorTask* tRegulator;
|
||||||
MainTask* tMain;
|
MainTask* tMain;
|
||||||
|
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
#ifdef USE_TELNET
|
#ifdef USE_TELNET
|
||||||
TelnetStream.begin();
|
TelnetStream.begin();
|
||||||
@@ -49,6 +55,12 @@ void setup() {
|
|||||||
tOt = new OpenThermTask(true);
|
tOt = new OpenThermTask(true);
|
||||||
Scheduler.start(tOt);
|
Scheduler.start(tOt);
|
||||||
|
|
||||||
|
tSensors = new SensorsTask(false, DS18B20_INTERVAL);
|
||||||
|
Scheduler.start(tSensors);
|
||||||
|
|
||||||
|
tRegulator = new RegulatorTask(true, 10000);
|
||||||
|
Scheduler.start(tRegulator);
|
||||||
|
|
||||||
tMain = new MainTask(true);
|
tMain = new MainTask(true);
|
||||||
Scheduler.start(tMain);
|
Scheduler.start(tMain);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user