|
12 | 12 |
|
13 | 13 |
|
14 | 14 | EVSE_MIN_FIRMWARE = 7 |
| 15 | +MAX_ATTEMPTS = 3 |
| 16 | +RETRY_DELAY_SECONDS = 0.3 |
15 | 17 |
|
16 | 18 | OPEN_TICKET = (" Bitte nehme bei anhaltenden Problemen über die Support-Funktion in den Einstellungen Kontakt mit " + |
17 | 19 | "uns auf.") |
@@ -84,19 +86,21 @@ def request_and_check_hardware(self: ClientHandlerProtocol, |
84 | 86 | evse_check_passed = False |
85 | 87 | evse_state: EvseState |
86 | 88 | # 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) |
100 | 104 | meter_check_passed, meter_error_msg, counter_state = self.check_meter() |
101 | 105 | if meter_check_passed is False and evse_check_passed is False: |
102 | 106 | if isinstance(self.client, ModbusTcpClient_): |
|
0 commit comments