mirror of
https://github.com/Laxilef/OTGateway.git
synced 2025-12-11 02:34:29 +05:00
Update the code for the status led
This commit is contained in:
@@ -18,6 +18,7 @@ lib_deps =
|
|||||||
jandrassy/TelnetStream@^1.2.4
|
jandrassy/TelnetStream@^1.2.4
|
||||||
gyverlibs/EEManager@^2.0
|
gyverlibs/EEManager@^2.0
|
||||||
gyverlibs/GyverPID@^3.3
|
gyverlibs/GyverPID@^3.3
|
||||||
|
gyverlibs/GyverBlinker@^1.0
|
||||||
milesburton/DallasTemperature@^3.11.0
|
milesburton/DallasTemperature@^3.11.0
|
||||||
https://github.com/Laxilef/WiFiManager/archive/refs/heads/patch-1.zip
|
https://github.com/Laxilef/WiFiManager/archive/refs/heads/patch-1.zip
|
||||||
;https://github.com/tzapu/WiFiManager.git#v2.0.16-rc.2
|
;https://github.com/tzapu/WiFiManager.git#v2.0.16-rc.2
|
||||||
@@ -152,5 +153,5 @@ build_flags =
|
|||||||
-D OT_OUT_PIN_DEFAULT=22
|
-D OT_OUT_PIN_DEFAULT=22
|
||||||
-D SENSOR_OUTDOOR_PIN_DEFAULT=12
|
-D SENSOR_OUTDOOR_PIN_DEFAULT=12
|
||||||
-D SENSOR_INDOOR_PIN_DEFAULT=13
|
-D SENSOR_INDOOR_PIN_DEFAULT=13
|
||||||
-D LED_STATUS_PIN=18
|
-D LED_STATUS_PIN=2 ; 18
|
||||||
-D LED_OT_RX_PIN=19
|
-D LED_OT_RX_PIN=19
|
||||||
107
src/MainTask.h
107
src/MainTask.h
@@ -1,3 +1,5 @@
|
|||||||
|
#include <Blinker.h>
|
||||||
|
|
||||||
extern MqttTask* tMqtt;
|
extern MqttTask* tMqtt;
|
||||||
extern SensorsTask* tSensors;
|
extern SensorsTask* tSensors;
|
||||||
extern OpenThermTask* tOt;
|
extern OpenThermTask* tOt;
|
||||||
@@ -7,6 +9,7 @@ public:
|
|||||||
MainTask(bool _enabled = false, unsigned long _interval = 0) : Task(_enabled, _interval) {}
|
MainTask(bool _enabled = false, unsigned long _interval = 0) : Task(_enabled, _interval) {}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
Blinker* blinker = nullptr;
|
||||||
unsigned long lastHeapInfo = 0;
|
unsigned long lastHeapInfo = 0;
|
||||||
unsigned long firstFailConnect = 0;
|
unsigned long firstFailConnect = 0;
|
||||||
unsigned int heapSize = 0;
|
unsigned int heapSize = 0;
|
||||||
@@ -21,15 +24,18 @@ protected:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
|
#ifdef LED_STATUS_PIN
|
||||||
pinMode(LED_STATUS_PIN, OUTPUT);
|
pinMode(LED_STATUS_PIN, OUTPUT);
|
||||||
|
digitalWrite(LED_STATUS_PIN, false);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(ESP32)
|
#if defined(ESP32)
|
||||||
heapSize = ESP.getHeapSize();
|
heapSize = ESP.getHeapSize();
|
||||||
#elif defined(ESP8266)
|
#elif defined(ESP8266)
|
||||||
heapSize = 81920;
|
heapSize = 81920;
|
||||||
#elif
|
#elif
|
||||||
heapSize = 99999;
|
heapSize = 99999;
|
||||||
#endif
|
#endif
|
||||||
minFreeHeapSize = heapSize;
|
minFreeHeapSize = heapSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -37,10 +43,10 @@ protected:
|
|||||||
if (eeSettings.tick()) {
|
if (eeSettings.tick()) {
|
||||||
INFO("Settings updated (EEPROM)");
|
INFO("Settings updated (EEPROM)");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vars.parameters.restartAfterTime > 0 && millis() - vars.parameters.restartSignalTime > vars.parameters.restartAfterTime) {
|
if (vars.parameters.restartAfterTime > 0 && millis() - vars.parameters.restartSignalTime > vars.parameters.restartAfterTime) {
|
||||||
vars.parameters.restartAfterTime = 0;
|
vars.parameters.restartAfterTime = 0;
|
||||||
|
|
||||||
INFO("Received restart message...");
|
INFO("Received restart message...");
|
||||||
eeSettings.updateNow();
|
eeSettings.updateNow();
|
||||||
INFO("Restart...");
|
INFO("Restart...");
|
||||||
@@ -81,7 +87,9 @@ protected:
|
|||||||
tOt->enable();
|
tOt->enable();
|
||||||
}
|
}
|
||||||
|
|
||||||
ledStatus();
|
#ifdef LED_STATUS_PIN
|
||||||
|
ledStatus(LED_STATUS_PIN);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef USE_TELNET
|
#ifdef USE_TELNET
|
||||||
yield();
|
yield();
|
||||||
@@ -101,7 +109,7 @@ protected:
|
|||||||
minFreeHeapSizeDiff = minFreeHeapSize - freeHeapSize;
|
minFreeHeapSizeDiff = minFreeHeapSize - freeHeapSize;
|
||||||
minFreeHeapSize = freeHeapSize;
|
minFreeHeapSize = freeHeapSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (millis() - lastHeapInfo > 10000 || minFreeHeapSizeDiff > 0) {
|
if (millis() - lastHeapInfo > 10000 || minFreeHeapSizeDiff > 0) {
|
||||||
DEBUG_F("Free heap size: %u of %u bytes, min: %u bytes (diff: %u bytes)\n", freeHeapSize, heapSize, minFreeHeapSize, minFreeHeapSizeDiff);
|
DEBUG_F("Free heap size: %u of %u bytes, min: %u bytes (diff: %u bytes)\n", freeHeapSize, heapSize, minFreeHeapSize, minFreeHeapSizeDiff);
|
||||||
lastHeapInfo = millis();
|
lastHeapInfo = millis();
|
||||||
@@ -109,56 +117,65 @@ protected:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ledStatus() {
|
void ledStatus(uint8_t ledPin) {
|
||||||
static byte blinkLeft = 0;
|
uint8_t errors[4];
|
||||||
|
uint8_t errCount = 0;
|
||||||
|
static uint8_t errPos = 0;
|
||||||
|
static unsigned long endBlinkTime = 0;
|
||||||
static bool ledOn = false;
|
static bool ledOn = false;
|
||||||
static unsigned long changeTime = 0;
|
|
||||||
|
|
||||||
byte errNo = 0;
|
if (this->blinker == nullptr) {
|
||||||
if (!vars.states.otStatus) {
|
this->blinker = new Blinker(ledPin);
|
||||||
errNo = 1;
|
|
||||||
} else if (vars.states.fault) {
|
|
||||||
errNo = 2;
|
|
||||||
} else if (vars.states.emergency) {
|
|
||||||
errNo = 3;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (errNo == 0) {
|
if (WiFi.status() != WL_CONNECTED) {
|
||||||
if (!ledOn) {
|
errors[errCount++] = 2;
|
||||||
digitalWrite(LED_STATUS_PIN, true);
|
}
|
||||||
ledOn = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (blinkLeft > 0) {
|
if (0 && !vars.states.otStatus) {
|
||||||
blinkLeft = 0;
|
errors[errCount++] = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
if (vars.states.fault) {
|
||||||
if (blinkLeft == 0) {
|
errors[errCount++] = 4;
|
||||||
if (ledOn) {
|
}
|
||||||
digitalWrite(LED_STATUS_PIN, false);
|
|
||||||
ledOn = false;
|
|
||||||
changeTime = millis();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (millis() - changeTime >= 3000) {
|
if (vars.states.emergency) {
|
||||||
blinkLeft = errNo;
|
errors[errCount++] = 5;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (blinkLeft > 0 && millis() - changeTime >= 500) {
|
|
||||||
if (ledOn) {
|
|
||||||
digitalWrite(LED_STATUS_PIN, false);
|
|
||||||
ledOn = false;
|
|
||||||
blinkLeft--;
|
|
||||||
|
|
||||||
} else {
|
if (this->blinker->ready()) {
|
||||||
digitalWrite(LED_STATUS_PIN, true);
|
endBlinkTime = millis();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this->blinker->running() && millis() - endBlinkTime >= 5000) {
|
||||||
|
if (errCount == 0) {
|
||||||
|
if (!ledOn) {
|
||||||
|
digitalWrite(ledPin, true);
|
||||||
ledOn = true;
|
ledOn = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
changeTime = millis();
|
return;
|
||||||
|
|
||||||
|
} else if (ledOn) {
|
||||||
|
digitalWrite(ledPin, false);
|
||||||
|
ledOn = false;
|
||||||
|
endBlinkTime = millis();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (errPos >= errCount) {
|
||||||
|
errPos = 0;
|
||||||
|
|
||||||
|
// end of error list
|
||||||
|
this->blinker->blink(10, 50, 50);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
this->blinker->blink(errors[errPos++], 300, 300);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this->blinker->tick();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -33,14 +33,6 @@
|
|||||||
#define SENSOR_INDOOR_PIN_DEFAULT 0
|
#define SENSOR_INDOOR_PIN_DEFAULT 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef LED_STATUS_PIN
|
|
||||||
#define LED_STATUS_PIN 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef LED_OT_RX_PIN
|
|
||||||
#define LED_OT_RX_PIN 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef USE_TELNET
|
#ifdef USE_TELNET
|
||||||
#define INFO_STREAM TelnetStream
|
#define INFO_STREAM TelnetStream
|
||||||
#define WARN_STREAM TelnetStream
|
#define WARN_STREAM TelnetStream
|
||||||
|
|||||||
Reference in New Issue
Block a user