Убрал копирование public папки из dockerfile. Вернул валидацию на количество тегов, присылаемых с node-red. Вернул чтение .env переменной при локальном запуске.

This commit is contained in:
Первов Артем
2026-06-19 11:10:51 +03:00
parent 9b53f602ce
commit d00f79f4d3
4 changed files with 22 additions and 5 deletions

View File

@@ -7,7 +7,6 @@ COPY package.json package-lock.json ./
RUN npm ci
COPY tsconfig.json ./
COPY public ./public
COPY src ./src
RUN npm run build && npm prune --omit=dev

View File

@@ -3,9 +3,9 @@
"private": true,
"type": "module",
"scripts": {
"dev": "tsx watch src/index.ts",
"dev": "tsx watch --env-file=.env src/index.ts",
"build": "tsc",
"start": "node dist/index.js"
"start": "node --env-file=.env dist/index.js"
},
"dependencies": {
"mqtt": "^5.15.1",

View File

@@ -4,12 +4,21 @@ import type { TopicHandler } from '../types.js'
export const TOPIC = 'data/edge5/modbus/v2'
const REGISTER_COUNT = 125
const mapper = createMetricMapper({
filePath: process.env.EDGE5_MODBUS_V2_MAPPING_FILE as string,
})
function parseValues(payload: Buffer): number[] {
return JSON.parse(payload.toString('utf8')) as number[]
const values = JSON.parse(payload.toString('utf8')) as number[]
assertRegisterCount(values)
return values
}
function assertRegisterCount(values: number[]): void {
if (values.length !== REGISTER_COUNT) {
throw new Error(`Expected ${REGISTER_COUNT} modbus values, got ${values.length}`)
}
}
async function postMetrics(metrics: MappedMetric[]): Promise<void> {

View File

@@ -4,6 +4,7 @@ import type { TopicHandler } from '../types.js'
export const TOPIC = 'data/edge5/modbus/v1'
const EDGE = 'edge5'
const REGISTER_COUNT = 125
type Edge5ModbusMetric = {
edge: string
@@ -13,7 +14,15 @@ type Edge5ModbusMetric = {
}
function parseValues(payload: Buffer): number[] {
return JSON.parse(payload.toString('utf8')) as number[]
const values = JSON.parse(payload.toString('utf8')) as number[]
assertRegisterCount(values)
return values
}
function assertRegisterCount(values: number[]): void {
if (values.length !== REGISTER_COUNT) {
throw new Error(`Expected ${REGISTER_COUNT} modbus values, got ${values.length}`)
}
}
function toMetrics(values: number[], timestamp: number): Edge5ModbusMetric[] {