From d3d72410c16ae5be600562614b9733ea3df326ff Mon Sep 17 00:00:00 2001 From: PaulVua Date: Tue, 10 Feb 2026 10:17:33 +0100 Subject: [PATCH] fix(ui): align signal thresholds with Python implementation Use correct thresholds: 0=Very poor, 1-24=Poor, 25-26=Good, 27-28=Very good, 29-30=Excellent, 31=Very Strong, 99=No signal. Co-Authored-By: Claude Opus 4.5 --- html/saraR4.html | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/html/saraR4.html b/html/saraR4.html index 5954459..b241061 100755 --- a/html/saraR4.html +++ b/html/saraR4.html @@ -818,7 +818,7 @@ function getSignalInfo(port, timeout) { const signalPower = parseInt(csqMatch[1]); const qual = parseInt(csqMatch[2]); - // Determine signal quality and color + // Determine signal quality and color (matching Python thresholds) let signalDesc, signalColor, signalIcon, alertClass; if (signalPower === 99) { @@ -831,22 +831,17 @@ function getSignalInfo(port, timeout) { signalColor = '#dc3545'; signalIcon = '🔴'; alertClass = 'alert-danger'; - } else if (signalPower <= 9) { + } else if (signalPower <= 24) { signalDesc = 'Poor'; signalColor = '#fd7e14'; signalIcon = '🟠'; alertClass = 'alert-warning'; - } else if (signalPower <= 14) { - signalDesc = 'Fair'; + } else if (signalPower <= 26) { + signalDesc = 'Good'; signalColor = '#ffc107'; signalIcon = '🟡'; alertClass = 'alert-warning'; - } else if (signalPower <= 19) { - signalDesc = 'Good'; - signalColor = '#20c997'; - signalIcon = '🟢'; - alertClass = 'alert-success'; - } else if (signalPower <= 25) { + } else if (signalPower <= 28) { signalDesc = 'Very good'; signalColor = '#198754'; signalIcon = '🟢'; @@ -866,14 +861,14 @@ function getSignalInfo(port, timeout) { // Calculate approximate dBm (for RSSI: -113 + 2*signalPower) let rssiDbm = signalPower !== 99 ? (-113 + 2 * signalPower) + ' dBm' : 'N/A'; - // Signal bars visualization (1-5 bars based on signal power) + // Signal bars visualization (1-5 bars based on signal power, matching thresholds) let bars = 0; if (signalPower !== 99) { - if (signalPower >= 25) bars = 5; - else if (signalPower >= 19) bars = 4; - else if (signalPower >= 14) bars = 3; - else if (signalPower >= 9) bars = 2; - else if (signalPower >= 1) bars = 1; + if (signalPower >= 29) bars = 5; // Excellent / Very Strong + else if (signalPower >= 27) bars = 4; // Very good + else if (signalPower >= 25) bars = 3; // Good + else if (signalPower >= 10) bars = 2; // Poor (mid) + else if (signalPower >= 1) bars = 1; // Poor (low) } const barsHtml = `