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 <noreply@anthropic.com>
This commit is contained in:
PaulVua
2026-02-10 10:17:33 +01:00
parent fcfbe4f2d4
commit d3d72410c1

View File

@@ -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 = `