From 4a74f949a01609698345f2152489c82d36a72f68 Mon Sep 17 00:00:00 2001 From: PaulVua Date: Thu, 28 May 2026 10:27:35 +0200 Subject: [PATCH] v1.9.12: SARA loop - 2e test de comm avant hardware reboot Quand AT+CSQ ne repond pas (hoquet serie temporaire), retente le AT+CSQ jusqu'a 3x (0.5s d'intervalle) avant d'escalader. Si le modem repond, le flux normal reprend sans reboot -> evite les coupures d'alim GPIO et l'usure du modem pour une absence de reponse ponctuelle. Co-Authored-By: Claude Opus 4.7 (1M context) --- VERSION | 2 +- changelog.json | 13 +++++++++++++ loop/SARA_send_data_v2.py | 16 +++++++++++++++- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/VERSION b/VERSION index 5e9287b..1fe2d37 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.9.11 +1.9.12 diff --git a/changelog.json b/changelog.json index 0b40388..eff8ce2 100644 --- a/changelog.json +++ b/changelog.json @@ -1,5 +1,18 @@ { "versions": [ + { + "version": "1.9.12", + "date": "2026-05-28", + "changes": { + "features": [], + "improvements": [ + "SARA loop: 2e test de comm avant hardware reboot. Quand AT+CSQ ne répond pas (hoquet série temporaire), le script retente le AT+CSQ jusqu'à 3 fois (0.5s d'intervalle) avant d'escalader. Si le modem répond, le flux normal reprend sans reboot — évite les coupures d'alim GPIO et l'usure du modem pour une simple absence de réponse ponctuelle." + ], + "fixes": [], + "compatibility": [] + }, + "notes": "Ne touche pas aux autres causes de reboot (erreur Treck, etc.) ni au cas signal=99. Cible uniquement le 'No answer from SARA module' qui déclenchait un hardware reboot dès le premier AT+CSQ muet." + }, { "version": "1.9.11", "date": "2026-05-28", diff --git a/loop/SARA_send_data_v2.py b/loop/SARA_send_data_v2.py index 6e80388..2fa562c 100755 --- a/loop/SARA_send_data_v2.py +++ b/loop/SARA_send_data_v2.py @@ -1083,7 +1083,21 @@ try: command = f'AT+CSQ\r' ser_sara.write((command + '\r').encode('utf-8')) response2 = read_complete_response(ser_sara, wait_for_lines=["OK", "ERROR", "+CME ERROR","Socket:bind"]) - + + # Re-test comm avant d'escalader : un AT+CSQ sans reponse est le plus souvent + # un hoquet serie temporaire, pas un modem plante. On retente quelques fois ; + # ce n'est que si le modem reste muet qu'on tombe dans le hardware reboot plus + # bas (coupure d'alim GPIO + usure du modem). + if response2 is None or response2 == "": + for attempt in range(3): + print(f"⏳ Pas de reponse au CSQ, 2e test de comm {attempt + 1}/3...") + time.sleep(0.5) + ser_sara.write((command + '\r').encode('utf-8')) + response2 = read_complete_response(ser_sara, wait_for_lines=["OK", "ERROR", "+CME ERROR", "Socket:bind"]) + if response2: + print(f"✅ SARA a repondu (essai {attempt + 1}) — hoquet serie temporaire, pas de hardware reboot") + break + print('

', end="") print(response2) print("

", end="")