fix: auto-send continues when switching to Telemetry tab, uses random payload

This commit is contained in:
Naeel
2026-04-05 09:17:54 +03:00
parent 233e28579d
commit 911f2bdafe
+12 -7
View File
@@ -267,6 +267,7 @@ const S = {
mqttConnecting: false,
mqttLog: [],
autoTimer: null,
autoTopic: '', // топик сохраняется при старте авто — не зависит от DOM
// Телеметрия
telemetryRows: [], // загруженные строки [{id, device_id, ts, payload}]
@@ -841,12 +842,12 @@ function deviceLayout(d) {
// switchTab — переключить вкладку без перезагрузки данных устройства
function switchTab(tab) {
if (tab !== 'emulator') {
// Останавливаем авто-отправку при уходе с вкладки эмулятора
// Останавливаем авто-отправку только когда УХОДИМ с вкладки эмулятора
if (S.activeTab === 'emulator' && tab !== 'emulator') {
mqttStopAuto();
}
if (tab !== 'telemetry') {
// Останавливаем авто-рефреш при уходе с вкладки телеметрии
// Останавливаем авто-рефреш только когда УХОДИМ с вкладки телеметрии
if (S.activeTab === 'telemetry' && tab !== 'telemetry') {
clearInterval(S.telemetryRefreshTimer);
S.telemetryRefreshTimer = null;
S.telemetryAutoRefresh = false;
@@ -1064,10 +1065,14 @@ function toggleAuto() {
if (btn) btn.textContent = 'Запустить';
return;
}
const sec = parseInt((document.getElementById('auto-sec') || {}).value) || 5;
const topic = (document.getElementById('emu-topic') || {}).value || '';
const sec = parseInt((document.getElementById('auto-sec') || {}).value) || 5;
// Топик читаем из DOM один раз при старте и сохраняем в S.autoTopic —
// чтобы авто-отправка продолжалась при переходе на вкладку Телеметрии
S.autoTopic = (document.getElementById('emu-topic') || {}).value || '';
if (!S.autoTopic) return;
if (btn) btn.textContent = 'Стоп';
mqttStartAuto(topic, () => (document.getElementById('emu-payload') || {value:'{}'}).value.trim(), sec);
// getPayload генерирует случайные данные каждый тик — не зависит от DOM
mqttStartAuto(S.autoTopic, generateSensorPayload, sec);
}
// =============================================================