From 60bde31a7bf8f741c7d4a930374e37ce49a8c786 Mon Sep 17 00:00:00 2001 From: Nikita Biziaev Date: Fri, 3 Jul 2026 12:13:54 +0500 Subject: [PATCH] cdab validate numbers --- app/src/handlers/edge5cdab-modbus.ts | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/app/src/handlers/edge5cdab-modbus.ts b/app/src/handlers/edge5cdab-modbus.ts index fd94d2c..358c95d 100644 --- a/app/src/handlers/edge5cdab-modbus.ts +++ b/app/src/handlers/edge5cdab-modbus.ts @@ -35,11 +35,21 @@ function toMetrics(values: number[], timestamp: string): Edge5iiModbusMetric[] { const metrics: Edge5iiModbusMetric[] = [] for (let i = 0; i < values.length; i += 2) { + const tag = `register-${String(i).padStart(3, '0')}` + const value = toFloatCDAB(values[i], values[i + 1]) + if (isNaN(value)) { + log( + `${EDGE}.modbus: не удалось собрать число для ${tag}, ` + + `исходные values[${i}]=${values[i]}, values[${i + 1}]=${values[i + 1]}, пропуск`, + ) + continue + }; + metrics.push({ edge: EDGE, timestamp, - tag: `register-${String(i).padStart(3, '0')}`, - value: toFloatCDAB(values[i], values[i + 1]), + tag, + value, }) } @@ -60,10 +70,11 @@ async function postMetrics(metrics: Edge5iiModbusMetric[]): Promise { } export const handle: TopicHandler = async (topic, payload) => { + const timestamp = new Date().toISOString() log(`${EDGE}.modbus.received ${topic} ${payload.length} bytes`) const values = parseValues(payload) - const metrics = toMetrics(values, new Date().toISOString()) + const metrics = toMetrics(values, timestamp); log(`${EDGE}.modbus.prepared ${JSON.stringify(metrics)}`) await postMetrics(metrics) }