From 0e7cdb3df651701f97e6abd3e5abbfb4821a5f94 Mon Sep 17 00:00:00 2001 From: Gunnar Skjold Date: Wed, 8 Apr 2026 14:03:00 +0200 Subject: [PATCH] Prevent boot loop if voltage is outside operating range --- lib/HwTools/src/HwTools.cpp | 3 ++- src/AmsToMqttBridge.cpp | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/HwTools/src/HwTools.cpp b/lib/HwTools/src/HwTools.cpp index 3f3693c8..67207cba 100644 --- a/lib/HwTools/src/HwTools.cpp +++ b/lib/HwTools/src/HwTools.cpp @@ -664,7 +664,8 @@ bool HwTools::isVoltageOptimal(float range) { lastVccRead = now; } if(vcc > 3.4 || vcc < 2.8) { - maxVcc = 0; // Voltage is outside the operating range, we have to assume voltage is OK + maxVcc = 0; + return true // Voltage is outside the operating range, we have to assume voltage is OK } else if(vcc > maxVcc) { maxVcc = vcc; } else { diff --git a/src/AmsToMqttBridge.cpp b/src/AmsToMqttBridge.cpp index c0d09647..bd22c03c 100644 --- a/src/AmsToMqttBridge.cpp +++ b/src/AmsToMqttBridge.cpp @@ -482,6 +482,7 @@ void setup() { debugW_P(PSTR("Voltage is outside optimal range (%.2fV)"), allowedDrift); if(gpioConfig.apPin != 0xFF && digitalRead(gpioConfig.apPin) == LOW) { debugW_P(PSTR("AP button is pressed, skipping voltage wait")); + break; } else if(bootCycles < MAX_BOOT_CYCLES) { int secs = MAX_BOOT_CYCLES - bootCycles; if(deepSleep) {