Убрал копирование public папки из dockerfile. Вернул валидацию на количество тегов, присылаемых с node-red. Вернул чтение .env переменной при локальном запуске.
This commit is contained in:
@@ -7,7 +7,6 @@ COPY package.json package-lock.json ./
|
|||||||
RUN npm ci
|
RUN npm ci
|
||||||
|
|
||||||
COPY tsconfig.json ./
|
COPY tsconfig.json ./
|
||||||
COPY public ./public
|
|
||||||
COPY src ./src
|
COPY src ./src
|
||||||
|
|
||||||
RUN npm run build && npm prune --omit=dev
|
RUN npm run build && npm prune --omit=dev
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "tsx watch src/index.ts",
|
"dev": "tsx watch --env-file=.env src/index.ts",
|
||||||
"build": "tsc",
|
"build": "tsc",
|
||||||
"start": "node dist/index.js"
|
"start": "node --env-file=.env dist/index.js"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"mqtt": "^5.15.1",
|
"mqtt": "^5.15.1",
|
||||||
|
|||||||
@@ -4,12 +4,21 @@ import type { TopicHandler } from '../types.js'
|
|||||||
|
|
||||||
export const TOPIC = 'data/edge5/modbus/v2'
|
export const TOPIC = 'data/edge5/modbus/v2'
|
||||||
|
|
||||||
|
const REGISTER_COUNT = 125
|
||||||
const mapper = createMetricMapper({
|
const mapper = createMetricMapper({
|
||||||
filePath: process.env.EDGE5_MODBUS_V2_MAPPING_FILE as string,
|
filePath: process.env.EDGE5_MODBUS_V2_MAPPING_FILE as string,
|
||||||
})
|
})
|
||||||
|
|
||||||
function parseValues(payload: Buffer): number[] {
|
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> {
|
async function postMetrics(metrics: MappedMetric[]): Promise<void> {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import type { TopicHandler } from '../types.js'
|
|||||||
export const TOPIC = 'data/edge5/modbus/v1'
|
export const TOPIC = 'data/edge5/modbus/v1'
|
||||||
|
|
||||||
const EDGE = 'edge5'
|
const EDGE = 'edge5'
|
||||||
|
const REGISTER_COUNT = 125
|
||||||
|
|
||||||
type Edge5ModbusMetric = {
|
type Edge5ModbusMetric = {
|
||||||
edge: string
|
edge: string
|
||||||
@@ -13,7 +14,15 @@ type Edge5ModbusMetric = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function parseValues(payload: Buffer): number[] {
|
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[] {
|
function toMetrics(values: number[], timestamp: number): Edge5ModbusMetric[] {
|
||||||
|
|||||||
Reference in New Issue
Block a user