Убрал копирование public папки из dockerfile. Вернул валидацию на количество тегов, присылаемых с node-red. Вернул чтение .env переменной при локальном запуске.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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[] {
|
||||
|
||||
Reference in New Issue
Block a user