Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 17 additions & 13 deletions packages/modules/common/hardware_check.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@


EVSE_MIN_FIRMWARE = 7
MAX_ATTEMPTS = 3
RETRY_DELAY_SECONDS = 0.3

OPEN_TICKET = (" Bitte nehme bei anhaltenden Problemen über die Support-Funktion in den Einstellungen Kontakt mit " +
"uns auf.")
Expand Down Expand Up @@ -84,19 +86,21 @@ def request_and_check_hardware(self: ClientHandlerProtocol,
evse_check_passed = False
evse_state: EvseState
# 2x Retry bei EVSE-Auslesen vor dem Absetzen einer Fehlermeldung
for attempt in (1, 2, 3):
try:
with self.client:
evse_state = self.evse_client.get_evse_state()
evse_check_passed = True
break
except Exception as e:
evse_check_passed = self.handle_exception(e)
# Wenn nicht "handled" -> maximal zwei Wiederholungen
if attempt < 3 and evse_check_passed is False:
time.sleep(0.3)
continue
break
try:
with self.client:
for attempt in range(MAX_ATTEMPTS):
try:
evse_state = self.evse_client.get_evse_state()
evse_check_passed = True
break
except (pymodbus.exceptions.ModbusIOException,
pymodbus.exceptions.ConnectionException) as e:
evse_check_passed = self.handle_exception(e)
# nur warten, wenn danach noch ein Versuch folgt
if attempt < MAX_ATTEMPTS - 2 and evse_check_passed is False:
time.sleep(RETRY_DELAY_SECONDS)
except Exception as e:
evse_check_passed = self.handle_exception(e)
meter_check_passed, meter_error_msg, counter_state = self.check_meter()
if meter_check_passed is False and evse_check_passed is False:
if isinstance(self.client, ModbusTcpClient_):
Expand Down