From 2ff47dc877bc3332bed022d3e3ac6e552961a532 Mon Sep 17 00:00:00 2001 From: PaulVua Date: Tue, 17 Mar 2026 19:55:49 +0100 Subject: [PATCH] Self-test: comparer RTC vs heure navigateur au lieu de system time Coherent avec le changement fait sur la page Admin Clock. Le self-test affiche l'ecart en minutes/secondes si desync. Co-Authored-By: Claude Opus 4.6 (1M context) --- html/assets/js/selftest.js | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/html/assets/js/selftest.js b/html/assets/js/selftest.js index 2454a5c..1080104 100644 --- a/html/assets/js/selftest.js +++ b/html/assets/js/selftest.js @@ -246,7 +246,7 @@ async function selfTestSequence() { addSelfTestLog(`Device ID: ${selfTestReport.deviceId}`); addSelfTestLog(`Device Name: ${selfTestReport.deviceName}`); addSelfTestLog(`Modem Version: ${selfTestReport.modemVersion}`); - addSelfTestLog(`System Time (RTC): ${selfTestReport.systemTime}`); + addSelfTestLog(`RTC Time: ${selfTestReport.systemTime}`); addSelfTestLog(`Browser Time: ${new Date().toLocaleString()}`); addSelfTestLog(`GPS: ${selfTestReport.latitude}, ${selfTestReport.longitude}`); addSelfTestLog('────────────────────────────────────────────────────────'); @@ -449,16 +449,19 @@ async function selfTestSequence() { updateTestStatus(sensor.id, 'Failed', 'RTC module not connected', 'bg-danger'); testsFailed++; } else if (rtcResult.rtc_module_time) { - const timeDiff = rtcResult.time_difference_seconds; - if (typeof timeDiff === 'number' && Math.abs(timeDiff) <= 60) { - updateTestStatus(sensor.id, 'Passed', `${rtcResult.rtc_module_time} (sync OK, diff: ${timeDiff}s)`, 'bg-success'); + // Compare RTC with browser time (more reliable than system time) + const rtcDate = new Date(rtcResult.rtc_module_time + ' UTC'); + const browserDate = new Date(); + const timeDiff = Math.abs(Math.round((browserDate - rtcDate) / 1000)); + + if (timeDiff <= 60) { + updateTestStatus(sensor.id, 'Passed', `${rtcResult.rtc_module_time} (sync OK vs navigateur, ecart: ${timeDiff}s)`, 'bg-success'); testsPassed++; - } else if (typeof timeDiff === 'number') { - updateTestStatus(sensor.id, 'Warning', `${rtcResult.rtc_module_time} (out of sync: ${timeDiff}s)`, 'bg-warning'); - testsFailed++; } else { - updateTestStatus(sensor.id, 'Passed', `${rtcResult.rtc_module_time}`, 'bg-success'); - testsPassed++; + const minutes = Math.floor(timeDiff / 60); + const label = minutes > 0 ? `${minutes}min ${timeDiff % 60}s` : `${timeDiff}s`; + updateTestStatus(sensor.id, 'Warning', `${rtcResult.rtc_module_time} (desync vs navigateur: ${label})`, 'bg-warning'); + testsFailed++; } } else { updateTestStatus(sensor.id, 'Warning', 'Unexpected response', 'bg-warning');