|
|
@ -276,11 +276,11 @@ void app::updateNtp(void) { |
|
|
|
if (mMqttReconnect) { // @TODO: mMqttReconnect is variable which scope has changed
|
|
|
|
if (mConfig->inst.rstValsNotAvail) |
|
|
|
everyMin(std::bind(&app::tickMinute, this), "tMin"); |
|
|
|
if (mConfig->inst.rstYieldMidNight) { |
|
|
|
uint32_t localTime = gTimezone.toLocal(mTimestamp); |
|
|
|
uint32_t midTrig = gTimezone.toUTC(localTime - (localTime % 86400) + 86400); // next midnight local time
|
|
|
|
onceAt(std::bind(&app::tickMidnight, this), midTrig, "midNi"); |
|
|
|
} |
|
|
|
|
|
|
|
uint32_t localTime = gTimezone.toLocal(mTimestamp); |
|
|
|
uint32_t midTrig = gTimezone.toUTC(localTime - (localTime % 86400) + 86400); // next midnight local time
|
|
|
|
onceAt(std::bind(&app::tickMidnight, this), midTrig, "midNi"); |
|
|
|
|
|
|
|
if (mConfig->sys.schedReboot) { |
|
|
|
uint32_t localTime = gTimezone.toLocal(mTimestamp); |
|
|
|
uint32_t rebootTrig = gTimezone.toUTC(localTime - (localTime % 86400) + 86410); // reboot 10 secs after midnght
|
|
|
@ -392,15 +392,37 @@ void app::tickMinute(void) { |
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
void app::tickMidnight(void) { |
|
|
|
// only triggered if 'reset values at midnight is enabled'
|
|
|
|
uint32_t localTime = gTimezone.toLocal(mTimestamp); |
|
|
|
uint32_t nxtTrig = gTimezone.toUTC(localTime - (localTime % 86400) + 86400); // next midnight local time
|
|
|
|
onceAt(std::bind(&app::tickMidnight, this), nxtTrig, "mid2"); |
|
|
|
|
|
|
|
zeroIvValues(!CHECK_AVAIL, !SKIP_YIELD_DAY); |
|
|
|
Inverter<> *iv; |
|
|
|
for (uint8_t id = 0; id < mSys.getNumInverters(); id++) { |
|
|
|
iv = mSys.getInverterByPos(id); |
|
|
|
if (NULL == iv) |
|
|
|
continue; // skip to next inverter
|
|
|
|
|
|
|
|
// reset alarms
|
|
|
|
if(InverterStatus::OFF == iv->status) |
|
|
|
iv->resetAlarms(); |
|
|
|
|
|
|
|
if (mMqttEnabled) |
|
|
|
mMqtt.tickerMidnight(); |
|
|
|
// clear max values
|
|
|
|
if(mConfig->inst.rstMaxValsMidNight) { |
|
|
|
uint8_t pos; |
|
|
|
record_t<> *rec = iv->getRecordStruct(RealTimeRunData_Debug); |
|
|
|
for(uint8_t i = 0; i <= iv->channels; i++) { |
|
|
|
pos = iv->getPosByChFld(i, FLD_MP, rec); |
|
|
|
iv->setValue(pos, rec, 0.0f); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (mConfig->inst.rstYieldMidNight) { |
|
|
|
zeroIvValues(!CHECK_AVAIL, !SKIP_YIELD_DAY); |
|
|
|
|
|
|
|
if (mMqttEnabled) |
|
|
|
mMqtt.tickerMidnight(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|