Fixed race conditions in current time determination

This commit is contained in:
ftc
2025-12-24 12:21:47 +03:00
parent 30504aedec
commit 71b4ab6fc1
+7 -2
View File
@@ -30,10 +30,11 @@ int cur_hum = 0;
unsigned long last_poll = 0; unsigned long last_poll = 0;
unsigned long current = 0;
Modbus::ResultCode OnModbusRequest(Modbus::FunctionCode fc, const Modbus::RequestData data) Modbus::ResultCode OnModbusRequest(Modbus::FunctionCode fc, const Modbus::RequestData data)
{ {
last_poll = millis(); last_poll = current;
return Modbus::EX_SUCCESS; return Modbus::EX_SUCCESS;
} }
@@ -70,6 +71,8 @@ void setup()
mb.server(15000); mb.server(15000);
mb.addHreg(REGISTER_CURRENT_TEMP, cur_t); mb.addHreg(REGISTER_CURRENT_TEMP, cur_t);
mb.addHreg(REGISTER_CURRENT_HUM, cur_hum); mb.addHreg(REGISTER_CURRENT_HUM, cur_hum);
last_poll = millis();
} }
void UpdateDHTData() void UpdateDHTData()
@@ -86,7 +89,7 @@ unsigned long last_log = 0;
void loop() void loop()
{ {
unsigned long current = millis(); current = millis();
if (current < last_read || current - last_read >= READ_INTERVAL) if (current < last_read || current - last_read >= READ_INTERVAL)
{ {
UpdateDHTData(); UpdateDHTData();
@@ -110,6 +113,8 @@ void loop()
} }
if (current < last_poll || current - last_poll > NON_CONNECTED_REBOOT_TIMEOUT) if (current < last_poll || current - last_poll > NON_CONNECTED_REBOOT_TIMEOUT)
{ {
Serial.println(current);
Serial.println(last_poll);
Serial.println("Detected absense of polls, consider it as connection failure"); Serial.println("Detected absense of polls, consider it as connection failure");
ESP.restart(); ESP.restart();
} }