diff --git a/templates/sound_level_meters.html b/templates/sound_level_meters.html
index 697f6e7..3055db9 100644
--- a/templates/sound_level_meters.html
+++ b/templates/sound_level_meters.html
@@ -280,7 +280,7 @@ function startDashboardStream() {
}
const wsProtocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
- const wsUrl = `${wsProtocol}//${window.location.host}/api/slmm/${window.selectedUnitId}/live`;
+ const wsUrl = `${wsProtocol}//${window.location.host}/api/slmm/${window.selectedUnitId}/monitor`;
window.dashboardWebSocket = new WebSocket(wsUrl);
@@ -293,6 +293,10 @@ function startDashboardStream() {
window.dashboardWebSocket.onmessage = function(event) {
try {
const data = JSON.parse(event.data);
+ // /monitor sends keepalive 'heartbeat' frames (no metrics) and a per-frame
+ // 'feed_status'; skip heartbeats and offline frames so they don't blank the
+ // metrics or spike the chart with zeros.
+ if (data.heartbeat || data.feed_status === 'unreachable') return;
updateDashboardMetrics(data);
updateDashboardChart(data);
} catch (error) {