diff --git a/internal/api/ui/iot-console.html b/internal/api/ui/iot-console.html index e7cd9eb..add9bb1 100644 --- a/internal/api/ui/iot-console.html +++ b/internal/api/ui/iot-console.html @@ -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); } // =============================================================