Skip to content

Commit 594cd7e

Browse files
authored
retry evse readout in case of error: review (#3192)
* retry evse readout in case of error: review * pytest
1 parent b880fe9 commit 594cd7e

1 file changed

Lines changed: 17 additions & 13 deletions

File tree

packages/modules/common/hardware_check.py

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212

1313

1414
EVSE_MIN_FIRMWARE = 7
15+
MAX_ATTEMPTS = 3
16+
RETRY_DELAY_SECONDS = 0.3
1517

1618
OPEN_TICKET = (" Bitte nehme bei anhaltenden Problemen über die Support-Funktion in den Einstellungen Kontakt mit " +
1719
"uns auf.")
@@ -84,19 +86,21 @@ def request_and_check_hardware(self: ClientHandlerProtocol,
8486
evse_check_passed = False
8587
evse_state: EvseState
8688
# 2x Retry bei EVSE-Auslesen vor dem Absetzen einer Fehlermeldung
87-
for attempt in (1, 2, 3):
88-
try:
89-
with self.client:
90-
evse_state = self.evse_client.get_evse_state()
91-
evse_check_passed = True
92-
break
93-
except Exception as e:
94-
evse_check_passed = self.handle_exception(e)
95-
# Wenn nicht "handled" -> maximal zwei Wiederholungen
96-
if attempt < 3 and evse_check_passed is False:
97-
time.sleep(0.3)
98-
continue
99-
break
89+
try:
90+
with self.client:
91+
for attempt in range(MAX_ATTEMPTS):
92+
try:
93+
evse_state = self.evse_client.get_evse_state()
94+
evse_check_passed = True
95+
break
96+
except (pymodbus.exceptions.ModbusIOException,
97+
pymodbus.exceptions.ConnectionException) as e:
98+
evse_check_passed = self.handle_exception(e)
99+
# nur warten, wenn danach noch ein Versuch folgt
100+
if attempt < MAX_ATTEMPTS - 2 and evse_check_passed is False:
101+
time.sleep(RETRY_DELAY_SECONDS)
102+
except Exception as e:
103+
evse_check_passed = self.handle_exception(e)
100104
meter_check_passed, meter_error_msg, counter_state = self.check_meter()
101105
if meter_check_passed is False and evse_check_passed is False:
102106
if isinstance(self.client, ModbusTcpClient_):

0 commit comments

Comments
 (0)