diff --git a/decoders/connector/khomp/its-312-iot/connector.jsonc b/decoders/connector/khomp/its-312-iot/connector.jsonc index e1ba2414..53b7a1f7 100644 --- a/decoders/connector/khomp/its-312-iot/connector.jsonc +++ b/decoders/connector/khomp/its-312-iot/connector.jsonc @@ -6,7 +6,7 @@ }, "versions": { "v1.0.0": { - "src": "./v1.0.0/payload.js", + "src": "./v1.0.0/payload.ts", "manifest": "./v1.0.0/payload-config.jsonc" } } diff --git a/decoders/connector/khomp/its-312-iot/v1.0.0/payload-config.jsonc b/decoders/connector/khomp/its-312-iot/v1.0.0/payload-config.jsonc index 0631300f..d6886034 100644 --- a/decoders/connector/khomp/its-312-iot/v1.0.0/payload-config.jsonc +++ b/decoders/connector/khomp/its-312-iot/v1.0.0/payload-config.jsonc @@ -8,4 +8,4 @@ "networks": [ "../../../../network/mqtt/v1.0.0/payload.js" ] -} \ No newline at end of file +} diff --git a/decoders/connector/khomp/its-312-iot/v1.0.0/payload.test.ts b/decoders/connector/khomp/its-312-iot/v1.0.0/payload.test.ts new file mode 100644 index 00000000..0a3b2952 --- /dev/null +++ b/decoders/connector/khomp/its-312-iot/v1.0.0/payload.test.ts @@ -0,0 +1,104 @@ +/* eslint-disable unicorn/numeric-separators-style */ +import { describe, expect, test } from "vitest"; + +import { decoderRun } from "../../../../../src/functions/decoder-run"; + +const file_path = "/decoders/connector/khomp/its-312-iot/v1.0.0/payload.ts" as const; + +describe("The data below should not be parsed", () => { + let payload = [ + { bn: "142143", bt: 1733859162, metadata: { mqtt_topic: "uns/euclides/pipa" } }, + { n: "battery", u: "%EL", v: 100, metadata: { mqtt_topic: "uns/euclides/pipa" } }, + { n: "rssi", u: "dBW", v: -109, metadata: { mqtt_topic: "uns/euclides/pipa" } }, + { n: "ext_pwr", vb: true, metadata: { mqtt_topic: "uns/euclides/pipa" } }, + { n: "update", vb: true, metadata: { mqtt_topic: "uns/euclides/pipa" } }, + { n: "c1_count", u: "count", v: 640, metadata: { mqtt_topic: "uns/euclides/pipa" } }, + { n: "c2_status", vb: false, metadata: { mqtt_topic: "uns/euclides/pipa" } }, + { n: "relay", vs: "NC", metadata: { mqtt_topic: "uns/euclides/pipa" } }, + { n: "env_temp", u: "Cel", v: 32.4, metadata: { mqtt_topic: "uns/euclides/pipa" } }, + { n: "env_hum", u: "%RH", v: 32.4, metadata: { mqtt_topic: "uns/euclides/pipa" } }, + ]; + + payload = decoderRun(file_path, { payload }); + + console.log(payload); + + test("Output Result", () => { + expect(Array.isArray(payload)).toBe(true); + }); + + test("Expected values", () => { + expect(payload).toEqual( + expect.arrayContaining([ + expect.objectContaining({ variable: "device_number", value: "142143" }), + expect.objectContaining({ + variable: "battery", + value: 100, + metadata: undefined, + unit: "%EL", + location: undefined, + }), + expect.objectContaining({ + variable: "rssi", + value: -109, + metadata: undefined, + unit: "dBW", + location: undefined, + }), + expect.objectContaining({ + variable: "ext_pwr", + value: true, + metadata: undefined, + unit: undefined, + location: undefined, + }), + expect.objectContaining({ + variable: "update", + value: true, + metadata: undefined, + unit: undefined, + location: undefined, + }), + expect.objectContaining({ + variable: "c_count", + value: 640, + metadata: undefined, + unit: "count", + location: undefined, + }), + expect.objectContaining({ + variable: "c_status", + value: undefined, + metadata: undefined, + unit: undefined, + location: undefined, + }), + expect.objectContaining({ + variable: "relay", + value: "NC", + metadata: undefined, + unit: undefined, + location: undefined, + }), + expect.objectContaining({ + variable: "env_temp", + value: 32.4, + metadata: undefined, + unit: "Cel", + location: undefined, + }), + expect.objectContaining({ + variable: "env_hum", + value: 32.4, + metadata: undefined, + unit: "%RH", + location: undefined, + }), + expect.objectContaining({ + variable: "payload", + value: expect.any(String), + }), + ]) + ); + }); +}); diff --git a/decoders/connector/khomp/its-312-iot/v1.0.0/payload.js b/decoders/connector/khomp/its-312-iot/v1.0.0/payload.ts similarity index 86% rename from decoders/connector/khomp/its-312-iot/v1.0.0/payload.js rename to decoders/connector/khomp/its-312-iot/v1.0.0/payload.ts index 357e25a0..ccac789a 100644 --- a/decoders/connector/khomp/its-312-iot/v1.0.0/payload.js +++ b/decoders/connector/khomp/its-312-iot/v1.0.0/payload.ts @@ -1,3 +1,4 @@ +//@ts-nocheck /* eslint-disable eqeqeq */ /* eslint-disable max-len */ /* eslint-disable no-plusplus */ @@ -21,12 +22,12 @@ const ignore_vars = []; // Function to convert an object to TagoIO data format. -function ToTagoFormat(object_item, serie, prefix = '') { +function ToTagoFormat(object_item, serie, prefix = "") { const result = []; for (const key in object_item) { if (ignore_vars.includes(key)) continue; // ignore chosen vars - if (typeof object_item[key] === 'object') { + if (typeof object_item[key] === "object") { result.push({ variable: object_item[key].MessageType || `${prefix}${key}`, value: object_item[key].value || object_item[key].Value, @@ -65,21 +66,19 @@ function Decoder(payload) { if (data.n) { if (data.v || data.vb || data.vs) decodedData.value = data.v || data.vb || data.vs; if (data.u) decodedData.unit = data.u; - insertData(decoded, data.n.replace(/[?*!<>.-=$]/, ''), decodedData); + insertData(decoded, data.n.replace(/[?*!<>.-=$]/, ""), decodedData); } else if (data.bn) { - insertData(decoded, 'device_number', data.bn); + insertData(decoded, "device_number", data.bn); } }); return decoded; } const aux = payload; -payload = eval(payload); -console.log(typeof(payload)); const serie = Date.now(); const decodedPayload = Decoder(payload); // Parse the payload_raw to JSON format (it comes in a String format) payload = ToTagoFormat(decodedPayload, serie); -payload.push({ variable: 'payload', value: aux }); +payload.push({ variable: "payload", value: JSON.stringify(aux) }); // Added stringify since this was causing issues when