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 signalPower = parseInt(csqMatch[1]);
const qual = parseInt(csqMatch[2]); const qual = parseInt(csqMatch[2]);
// Determine signal quality and color // Determine signal quality and color (matching Python thresholds)
let signalDesc, signalColor, signalIcon, alertClass; let signalDesc, signalColor, signalIcon, alertClass;
if (signalPower === 99) { if (signalPower === 99) {
@@ -831,22 +831,17 @@ function getSignalInfo(port, timeout) {
signalColor = '#dc3545'; signalColor = '#dc3545';
signalIcon = '🔴'; signalIcon = '🔴';
alertClass = 'alert-danger'; alertClass = 'alert-danger';
} else if (signalPower <= 9) { } else if (signalPower <= 24) {
signalDesc = 'Poor'; signalDesc = 'Poor';
signalColor = '#fd7e14'; signalColor = '#fd7e14';
signalIcon = '🟠'; signalIcon = '🟠';
alertClass = 'alert-warning'; alertClass = 'alert-warning';
} else if (signalPower <= 14) { } else if (signalPower <= 26) {
signalDesc = 'Fair'; signalDesc = 'Good';
signalColor = '#ffc107'; signalColor = '#ffc107';
signalIcon = '🟡'; signalIcon = '🟡';
alertClass = 'alert-warning'; alertClass = 'alert-warning';
} else if (signalPower <= 19) { } else if (signalPower <= 28) {
signalDesc = 'Good';
signalColor = '#20c997';
signalIcon = '🟢';
alertClass = 'alert-success';
} else if (signalPower <= 25) {
signalDesc = 'Very good'; signalDesc = 'Very good';
signalColor = '#198754'; signalColor = '#198754';
signalIcon = '🟢'; signalIcon = '🟢';
@@ -866,14 +861,14 @@ function getSignalInfo(port, timeout) {
// Calculate approximate dBm (for RSSI: -113 + 2*signalPower) // Calculate approximate dBm (for RSSI: -113 + 2*signalPower)
let rssiDbm = signalPower !== 99 ? (-113 + 2 * signalPower) + ' dBm' : 'N/A'; 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; let bars = 0;
if (signalPower !== 99) { if (signalPower !== 99) {
if (signalPower >= 25) bars = 5; if (signalPower >= 29) bars = 5; // Excellent / Very Strong
else if (signalPower >= 19) bars = 4; else if (signalPower >= 27) bars = 4; // Very good
else if (signalPower >= 14) bars = 3; else if (signalPower >= 25) bars = 3; // Good
else if (signalPower >= 9) bars = 2; else if (signalPower >= 10) bars = 2; // Poor (mid)
else if (signalPower >= 1) bars = 1; else if (signalPower >= 1) bars = 1; // Poor (low)
} }
const barsHtml = ` const barsHtml = `