From c890a385871c2aba3a256ad618311f6306c68619 Mon Sep 17 00:00:00 2001 From: Rodrigo Bertoldo de Sousa Martins Date: Wed, 1 Apr 2026 07:20:34 -0300 Subject: [PATCH] diagnostico: fix ethernet e Rx Power Signed-off-by: Rodrigo Bertoldo de Sousa Martins --- src/bot/handler.js | 6 ++---- src/fiberhome/manager.js | 35 +++++++++++++++++------------------ 2 files changed, 19 insertions(+), 22 deletions(-) diff --git a/src/bot/handler.js b/src/bot/handler.js index 2388718..cb597e3 100644 --- a/src/bot/handler.js +++ b/src/bot/handler.js @@ -1105,9 +1105,7 @@ Digite /help para ver todos os comandos disponíveis! msg += ` 📍 Slot/PON: ${onuResult.slot || '?'}/${onuResult.pon || '?'}\n`; } msg += ` 🔌 Estado: ${onuResult.online ? '🟢 Online' : '🔴 Offline'}\n`; - msg += ` ${rxEmoji} Rx Power: *${rxLabel}*`; - if (onuResult.type === 'fiberhome') msg += ` _(compensado)_`; - msg += '\n'; + msg += ` ${rxEmoji} Rx Power: *${rxLabel}*\n`; if (onuResult.portaEthernet) { const ethOk = /forward|up|active|1gbit|100mbit/i.test(onuResult.portaEthernet); @@ -2250,7 +2248,7 @@ Digite /help para ver todos os comandos disponíveis! message += `🔌 *Status:* ${resultado.online ? '🟢 Online' : '🔴 Offline'}\n\n`; message += `📊 *Informações do Sinal:*\n`; - message += `📡 *RX Power:* ${resultado.rxPower} _(uplink)_\n`; + message += `📡 *RX Power:* ${resultado.rxPower}\n`; message += `📤 *TX Power:* ${resultado.txPower}\n`; message += `📏 *Distância:* ${resultado.distance}\n\n`; diff --git a/src/fiberhome/manager.js b/src/fiberhome/manager.js index 13062f1..04f2a11 100644 --- a/src/fiberhome/manager.js +++ b/src/fiberhome/manager.js @@ -716,23 +716,21 @@ class FiberhomeManager { const txIdx = colIdx('TxPower'); console.log(`[TL1-DIAG] OMDDM rxIdx=${rxIdx} txIdx=${txIdx}`); - // Nota: no TL1 FiberHome, RxPower = sinal que a OLT recebe (= TX da ONU) - // TxPower = sinal que a OLT envia (= RX da ONU) + // LST-OMDDM — perspectiva da ONU: + // RxPower = sinal que a ONU RECEBE da OLT (downlink) + // TxPower = sinal que a ONU TRANSMITE para a OLT (uplink) // Posições fixas de fallback: ONUID=0, RxPower=1, TxPower=3 - const oltRxRaw = (rxIdx >= 0 ? valores[rxIdx] : valores[1])?.replace(',', '.'); - const oltTxRaw = (txIdx >= 0 ? valores[txIdx] : valores[3])?.replace(',', '.'); - console.log(`[TL1-DIAG] OMDDM oltRxRaw=${oltRxRaw} oltTxRaw=${oltTxRaw}`); + const rxRaw = (rxIdx >= 0 ? valores[rxIdx] : valores[1])?.replace(',', '.'); + const txRaw = (txIdx >= 0 ? valores[txIdx] : valores[3])?.replace(',', '.'); + console.log(`[TL1-DIAG] OMDDM rxRaw=${rxRaw} txRaw=${txRaw}`); - const COMP_RX = 2.7; - const COMP_TX = -2.7; - - if (oltRxRaw && oltRxRaw !== '--' && !isNaN(parseFloat(oltRxRaw))) { - resultado.txPower = `${(parseFloat(oltRxRaw) + COMP_RX).toFixed(2)} dBm`; - console.log(`[TL1-DIAG] ✅ TxPower ONU ← OLT RxPower ${oltRxRaw} → ${resultado.txPower}`); + if (rxRaw && rxRaw !== '--' && !isNaN(parseFloat(rxRaw))) { + resultado.rxPower = `${parseFloat(rxRaw).toFixed(2)} dBm`; + console.log(`[TL1-DIAG] ✅ RxPower ONU: ${resultado.rxPower}`); } - if (oltTxRaw && oltTxRaw !== '--' && !isNaN(parseFloat(oltTxRaw))) { - resultado.rxPower = `${(parseFloat(oltTxRaw) + COMP_TX).toFixed(2)} dBm`; - console.log(`[TL1-DIAG] ✅ RxPower ONU ← OLT TxPower ${oltTxRaw} → ${resultado.rxPower}`); + if (txRaw && txRaw !== '--' && !isNaN(parseFloat(txRaw))) { + resultado.txPower = `${parseFloat(txRaw).toFixed(2)} dBm`; + console.log(`[TL1-DIAG] ✅ TxPower ONU: ${resultado.txPower}`); } } else { console.log('[TL1-DIAG] ⚠️ OMDDM: header encontrado mas nenhuma linha com número decimal após ele'); @@ -743,11 +741,12 @@ class FiberhomeManager { } else { // Header não encontrado — regex direto no buffer como último recurso console.log('[TL1-DIAG] ⚠️ OMDDM: header ONUID+RxPower não encontrado, tentando regex'); - const rxDireto = dados.match(/(-\d+\.\d+)/); + const rxDireto = dados.match(/(-\d+[.,]\d+)/); if (rxDireto) { - const v = parseFloat(rxDireto[1]) + 2.7; - resultado.txPower = `${v.toFixed(2)} dBm`; - console.log(`[TL1-DIAG] TxPower ONU via regex último recurso → ${resultado.txPower}`); + // Primeiro número negativo = RxPower da ONU (downlink) + const v = parseFloat(rxDireto[1].replace(',', '.')); + resultado.rxPower = `${v.toFixed(2)} dBm`; + console.log(`[TL1-DIAG] RxPower ONU via regex → ${resultado.rxPower}`); } else { console.log('[TL1-DIAG] ⚠️ OMDDM: regex também falhou, rxPower permanece N/A'); }