Relay code clean
This commit is contained in:
parent
b8d79dbc67
commit
a3076b9b2f
@ -70,8 +70,8 @@ public:
|
||||
}
|
||||
|
||||
virtual void set(const bool state) {
|
||||
_write(state);
|
||||
onCount = 0;
|
||||
_write(state);
|
||||
}
|
||||
|
||||
void toggle() {
|
||||
|
||||
38
src/Relay.h
38
src/Relay.h
@ -27,7 +27,7 @@ class Relay final : public Output {
|
||||
|
||||
long gridPowerDeltaOffDelay = 0;
|
||||
|
||||
unsigned long gridPowerDeltaLast = 0;
|
||||
unsigned long gridPowerDeltaAlarmSince = 0;
|
||||
|
||||
public:
|
||||
|
||||
@ -125,6 +125,8 @@ public:
|
||||
|
||||
json["topic"] = topic;
|
||||
|
||||
json["gridPowerDeltaAlarmSince"] = gridPowerDeltaAlarmSince;
|
||||
|
||||
json["gridPowerDeltaOffEnabled"] = gridPowerDeltaOffEnabled;
|
||||
json["gridPowerDeltaOnThreshold"] = gridPowerDeltaOnThreshold;
|
||||
json["gridPowerDeltaOnDelay"] = gridPowerDeltaOnDelay;
|
||||
@ -138,8 +140,8 @@ public:
|
||||
}
|
||||
|
||||
void set(const bool state) override {
|
||||
gridPowerDeltaAlarmSince = 0;
|
||||
Output::set(state);
|
||||
gridPowerDeltaLast = 0;
|
||||
}
|
||||
|
||||
protected:
|
||||
@ -174,20 +176,19 @@ private:
|
||||
if (!gridPowerDeltaOffEnabled) {
|
||||
return;
|
||||
}
|
||||
const auto invalid = isnan(gridPowerDeltaValue) || millis() - gridPowerDeltaMillis > 10000 || gridPowerDeltaConfigInvalid();
|
||||
const auto now = max(1UL, millis());
|
||||
const auto invalid = isnan(gridPowerDeltaValue) || now - gridPowerDeltaMillis > 10000 || gridPowerDeltaConfigInvalid();
|
||||
if (gridPowerDeltaValue > gridPowerDeltaOffThreshold || invalid) {
|
||||
if (gridPowerDeltaLast == 0 && gridPowerDeltaOffDelay > 0) {
|
||||
Serial.printf("[RELAY] \"%s\": CONSUMING TOO MUCH: Preparing to power OFF...\n", name.c_str());
|
||||
gridPowerDeltaLast = max(1UL, millis());
|
||||
} else {
|
||||
if (millis() - gridPowerDeltaLast > gridPowerDeltaOffDelay) {
|
||||
if (gridPowerDeltaAlarmSince == 0 && gridPowerDeltaOffDelay > 0) {
|
||||
Serial.printf("[RELAY] \"%s\": CONSUMING TOO MUCH: Powering OFF in %ld ms...\n", name.c_str(), gridPowerDeltaOffDelay);
|
||||
gridPowerDeltaAlarmSince = now;
|
||||
}
|
||||
if (now - gridPowerDeltaAlarmSince >= gridPowerDeltaOffDelay) {
|
||||
Serial.printf("[RELAY] \"%s\": CONSUMING TOO MUCH: Powering OFF!\n", name.c_str());
|
||||
set(false);
|
||||
}
|
||||
}
|
||||
} else if (gridPowerDeltaLast > 0) {
|
||||
} else if (gridPowerDeltaAlarmSince > 0) {
|
||||
Serial.printf("[RELAY] \"%s\": Powering off CANCELED!\n", name.c_str());
|
||||
gridPowerDeltaLast = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -195,19 +196,18 @@ private:
|
||||
if (!gridPowerDeltaOnEnabled) {
|
||||
return;
|
||||
}
|
||||
const auto now = max(1UL, millis());
|
||||
if (gridPowerDeltaValue < gridPowerDeltaOnThreshold && !gridPowerDeltaConfigInvalid()) {
|
||||
if (gridPowerDeltaLast == 0 && gridPowerDeltaOnDelay > 0) {
|
||||
Serial.printf("[RELAY] \"%s\": PRODUCING TOO MUCH: Preparing to power ON...\n", name.c_str());
|
||||
gridPowerDeltaLast = max(1UL, millis());
|
||||
} else {
|
||||
if (millis() - gridPowerDeltaLast > gridPowerDeltaOnDelay) {
|
||||
if (gridPowerDeltaAlarmSince == 0 && gridPowerDeltaOnDelay > 0) {
|
||||
Serial.printf("[RELAY] \"%s\": PRODUCING TOO MUCH: Powering ON in %ld ms...\n", name.c_str(), gridPowerDeltaOnDelay);
|
||||
gridPowerDeltaAlarmSince = now;
|
||||
}
|
||||
if (now - gridPowerDeltaAlarmSince >= gridPowerDeltaOnDelay) {
|
||||
Serial.printf("[RELAY] \"%s\": PRODUCING TOO MUCH: Powering ON!\n", name.c_str());
|
||||
set(true);
|
||||
}
|
||||
}
|
||||
} else if (gridPowerDeltaLast > 0) {
|
||||
} else if (gridPowerDeltaAlarmSince > 0) {
|
||||
Serial.printf("[RELAY] \"%s\": Powering on CANCELED!\n", name.c_str());
|
||||
gridPowerDeltaLast = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user