@ya-modbus/cli 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/cjs/bin/ya-modbus.d.ts.map +1 -0
- package/dist/cjs/bin/ya-modbus.js +12 -0
- package/dist/cjs/bin/ya-modbus.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/src/commands/discover.d.ts.map +1 -0
- package/dist/cjs/src/commands/discover.js +196 -0
- package/dist/cjs/src/commands/discover.js.map +1 -0
- package/dist/cjs/src/commands/list-devices.d.ts.map +1 -0
- package/dist/cjs/src/commands/list-devices.js +79 -0
- package/dist/cjs/src/commands/list-devices.js.map +1 -0
- package/dist/cjs/src/commands/read.d.ts.map +1 -0
- package/dist/cjs/src/commands/read.js +79 -0
- package/dist/cjs/src/commands/read.js.map +1 -0
- package/dist/cjs/src/commands/show-defaults.d.ts.map +1 -0
- package/dist/cjs/src/commands/show-defaults.js +51 -0
- package/dist/cjs/src/commands/show-defaults.js.map +1 -0
- package/dist/cjs/src/commands/write.d.ts.map +1 -0
- package/dist/cjs/src/commands/write.js +65 -0
- package/dist/cjs/src/commands/write.js.map +1 -0
- package/dist/cjs/src/discovery/constants.d.ts.map +1 -0
- package/dist/cjs/src/discovery/constants.js +48 -0
- package/dist/cjs/src/discovery/constants.js.map +1 -0
- package/dist/cjs/src/discovery/device-identifier.d.ts.map +1 -0
- package/dist/cjs/src/discovery/device-identifier.js +196 -0
- package/dist/cjs/src/discovery/device-identifier.js.map +1 -0
- package/dist/cjs/src/discovery/parameter-generator-utils.d.ts.map +1 -0
- package/dist/cjs/src/discovery/parameter-generator-utils.js +63 -0
- package/dist/cjs/src/discovery/parameter-generator-utils.js.map +1 -0
- package/dist/cjs/src/discovery/parameter-generator.d.ts.map +1 -0
- package/dist/cjs/src/discovery/parameter-generator.js +188 -0
- package/dist/cjs/src/discovery/parameter-generator.js.map +1 -0
- package/dist/cjs/src/discovery/progress.d.ts.map +1 -0
- package/dist/cjs/src/discovery/progress.js +59 -0
- package/dist/cjs/src/discovery/progress.js.map +1 -0
- package/dist/cjs/src/discovery/scanner.d.ts.map +1 -0
- package/dist/cjs/src/discovery/scanner.js +147 -0
- package/dist/cjs/src/discovery/scanner.js.map +1 -0
- package/dist/cjs/src/formatters/discovery-results.d.ts.map +1 -0
- package/dist/cjs/src/formatters/discovery-results.js +62 -0
- package/dist/cjs/src/formatters/discovery-results.js.map +1 -0
- package/dist/cjs/src/formatters/json.d.ts.map +1 -0
- package/dist/cjs/src/formatters/json.js +36 -0
- package/dist/cjs/src/formatters/json.js.map +1 -0
- package/dist/cjs/src/formatters/performance.d.ts.map +1 -0
- package/dist/cjs/src/formatters/performance.js +28 -0
- package/dist/cjs/src/formatters/performance.js.map +1 -0
- package/dist/cjs/src/formatters/table.d.ts.map +1 -0
- package/dist/cjs/src/formatters/table.js +95 -0
- package/dist/cjs/src/formatters/table.js.map +1 -0
- package/dist/cjs/src/index.d.ts.map +1 -0
- package/dist/cjs/src/index.js +157 -0
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/cjs/src/utils/commands.d.ts.map +1 -0
- package/dist/cjs/src/utils/commands.js +421 -0
- package/dist/cjs/src/utils/commands.js.map +1 -0
- package/dist/cjs/src/utils/object-utils.d.ts.map +1 -0
- package/dist/cjs/src/utils/object-utils.js +31 -0
- package/dist/cjs/src/utils/object-utils.js.map +1 -0
- package/dist/cjs/src/utils/validation.d.ts.map +1 -0
- package/dist/cjs/src/utils/validation.js +165 -0
- package/dist/cjs/src/utils/validation.js.map +1 -0
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/esm/bin/ya-modbus.d.ts +9 -0
- package/dist/esm/bin/ya-modbus.d.ts.map +1 -0
- package/dist/esm/bin/ya-modbus.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/src/commands/discover.d.ts +25 -0
- package/dist/esm/src/commands/discover.d.ts.map +1 -0
- package/dist/esm/src/commands/discover.js.map +1 -0
- package/dist/esm/src/commands/list-devices.d.ts +21 -0
- package/dist/esm/src/commands/list-devices.d.ts.map +1 -0
- package/dist/esm/src/commands/list-devices.js.map +1 -0
- package/dist/esm/src/commands/read.d.ts +25 -0
- package/dist/esm/src/commands/read.d.ts.map +1 -0
- package/dist/esm/src/commands/read.js.map +1 -0
- package/dist/esm/src/commands/show-defaults.d.ts +21 -0
- package/dist/esm/src/commands/show-defaults.d.ts.map +1 -0
- package/dist/esm/src/commands/show-defaults.js.map +1 -0
- package/dist/esm/src/commands/write.d.ts +26 -0
- package/dist/esm/src/commands/write.d.ts.map +1 -0
- package/dist/esm/src/commands/write.js.map +1 -0
- package/dist/esm/src/discovery/constants.d.ts +37 -0
- package/dist/esm/src/discovery/constants.d.ts.map +1 -0
- package/dist/esm/src/discovery/constants.js.map +1 -0
- package/dist/esm/src/discovery/device-identifier.d.ts +52 -0
- package/dist/esm/src/discovery/device-identifier.d.ts.map +1 -0
- package/dist/esm/src/discovery/device-identifier.js.map +1 -0
- package/dist/esm/src/discovery/parameter-generator-utils.d.ts +29 -0
- package/dist/esm/src/discovery/parameter-generator-utils.d.ts.map +1 -0
- package/dist/esm/src/discovery/parameter-generator-utils.js.map +1 -0
- package/dist/esm/src/discovery/parameter-generator.d.ts +97 -0
- package/dist/esm/src/discovery/parameter-generator.d.ts.map +1 -0
- package/dist/esm/src/discovery/parameter-generator.js.map +1 -0
- package/dist/esm/src/discovery/progress.d.ts +24 -0
- package/dist/esm/src/discovery/progress.d.ts.map +1 -0
- package/dist/{src → esm/src}/discovery/progress.js +2 -4
- package/dist/esm/src/discovery/progress.js.map +1 -0
- package/dist/esm/src/discovery/scanner.d.ts +46 -0
- package/dist/esm/src/discovery/scanner.d.ts.map +1 -0
- package/dist/esm/src/discovery/scanner.js.map +1 -0
- package/dist/esm/src/formatters/discovery-results.d.ts +10 -0
- package/dist/esm/src/formatters/discovery-results.d.ts.map +1 -0
- package/dist/esm/src/formatters/discovery-results.js.map +1 -0
- package/dist/esm/src/formatters/json.d.ts +30 -0
- package/dist/esm/src/formatters/json.d.ts.map +1 -0
- package/dist/esm/src/formatters/json.js.map +1 -0
- package/dist/esm/src/formatters/performance.d.ts +19 -0
- package/dist/esm/src/formatters/performance.d.ts.map +1 -0
- package/dist/esm/src/formatters/performance.js.map +1 -0
- package/dist/esm/src/formatters/table.d.ts +10 -0
- package/dist/esm/src/formatters/table.d.ts.map +1 -0
- package/dist/esm/src/formatters/table.js.map +1 -0
- package/dist/esm/src/index.d.ts +5 -0
- package/dist/esm/src/index.d.ts.map +1 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/src/utils/commands.d.ts +191 -0
- package/dist/esm/src/utils/commands.d.ts.map +1 -0
- package/dist/esm/src/utils/commands.js.map +1 -0
- package/dist/esm/src/utils/object-utils.d.ts +20 -0
- package/dist/esm/src/utils/object-utils.d.ts.map +1 -0
- package/dist/esm/src/utils/object-utils.js.map +1 -0
- package/dist/esm/src/utils/validation.d.ts +70 -0
- package/dist/esm/src/utils/validation.d.ts.map +1 -0
- package/dist/{src → esm/src}/utils/validation.js +0 -3
- package/dist/esm/src/utils/validation.js.map +1 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
- package/package.json +26 -9
- package/dist/bin/ya-modbus.d.ts.map +0 -1
- package/dist/bin/ya-modbus.js.map +0 -1
- package/dist/src/commands/discover.d.ts.map +0 -1
- package/dist/src/commands/discover.js.map +0 -1
- package/dist/src/commands/list-devices.d.ts.map +0 -1
- package/dist/src/commands/list-devices.js.map +0 -1
- package/dist/src/commands/read.d.ts.map +0 -1
- package/dist/src/commands/read.js.map +0 -1
- package/dist/src/commands/show-defaults.d.ts.map +0 -1
- package/dist/src/commands/show-defaults.js.map +0 -1
- package/dist/src/commands/write.d.ts.map +0 -1
- package/dist/src/commands/write.js.map +0 -1
- package/dist/src/discovery/constants.d.ts.map +0 -1
- package/dist/src/discovery/constants.js.map +0 -1
- package/dist/src/discovery/device-identifier.d.ts.map +0 -1
- package/dist/src/discovery/device-identifier.js.map +0 -1
- package/dist/src/discovery/parameter-generator-utils.d.ts.map +0 -1
- package/dist/src/discovery/parameter-generator-utils.js.map +0 -1
- package/dist/src/discovery/parameter-generator.d.ts.map +0 -1
- package/dist/src/discovery/parameter-generator.js.map +0 -1
- package/dist/src/discovery/progress.d.ts.map +0 -1
- package/dist/src/discovery/progress.js.map +0 -1
- package/dist/src/discovery/scanner.d.ts.map +0 -1
- package/dist/src/discovery/scanner.js.map +0 -1
- package/dist/src/formatters/discovery-results.d.ts.map +0 -1
- package/dist/src/formatters/discovery-results.js.map +0 -1
- package/dist/src/formatters/json.d.ts.map +0 -1
- package/dist/src/formatters/json.js.map +0 -1
- package/dist/src/formatters/performance.d.ts.map +0 -1
- package/dist/src/formatters/performance.js.map +0 -1
- package/dist/src/formatters/table.d.ts.map +0 -1
- package/dist/src/formatters/table.js.map +0 -1
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js.map +0 -1
- package/dist/src/utils/commands.d.ts.map +0 -1
- package/dist/src/utils/commands.js.map +0 -1
- package/dist/src/utils/object-utils.d.ts.map +0 -1
- package/dist/src/utils/object-utils.js.map +0 -1
- package/dist/src/utils/validation.d.ts.map +0 -1
- package/dist/src/utils/validation.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- /package/dist/{bin → cjs/bin}/ya-modbus.d.ts +0 -0
- /package/dist/{src → cjs/src}/commands/discover.d.ts +0 -0
- /package/dist/{src → cjs/src}/commands/list-devices.d.ts +0 -0
- /package/dist/{src → cjs/src}/commands/read.d.ts +0 -0
- /package/dist/{src → cjs/src}/commands/show-defaults.d.ts +0 -0
- /package/dist/{src → cjs/src}/commands/write.d.ts +0 -0
- /package/dist/{src → cjs/src}/discovery/constants.d.ts +0 -0
- /package/dist/{src → cjs/src}/discovery/device-identifier.d.ts +0 -0
- /package/dist/{src → cjs/src}/discovery/parameter-generator-utils.d.ts +0 -0
- /package/dist/{src → cjs/src}/discovery/parameter-generator.d.ts +0 -0
- /package/dist/{src → cjs/src}/discovery/progress.d.ts +0 -0
- /package/dist/{src → cjs/src}/discovery/scanner.d.ts +0 -0
- /package/dist/{src → cjs/src}/formatters/discovery-results.d.ts +0 -0
- /package/dist/{src → cjs/src}/formatters/json.d.ts +0 -0
- /package/dist/{src → cjs/src}/formatters/performance.d.ts +0 -0
- /package/dist/{src → cjs/src}/formatters/table.d.ts +0 -0
- /package/dist/{src → cjs/src}/index.d.ts +0 -0
- /package/dist/{src → cjs/src}/utils/commands.d.ts +0 -0
- /package/dist/{src → cjs/src}/utils/object-utils.d.ts +0 -0
- /package/dist/{src → cjs/src}/utils/validation.d.ts +0 -0
- /package/dist/{bin → esm/bin}/ya-modbus.js +0 -0
- /package/dist/{src → esm/src}/commands/discover.js +0 -0
- /package/dist/{src → esm/src}/commands/list-devices.js +0 -0
- /package/dist/{src → esm/src}/commands/read.js +0 -0
- /package/dist/{src → esm/src}/commands/show-defaults.js +0 -0
- /package/dist/{src → esm/src}/commands/write.js +0 -0
- /package/dist/{src → esm/src}/discovery/constants.js +0 -0
- /package/dist/{src → esm/src}/discovery/device-identifier.js +0 -0
- /package/dist/{src → esm/src}/discovery/parameter-generator-utils.js +0 -0
- /package/dist/{src → esm/src}/discovery/parameter-generator.js +0 -0
- /package/dist/{src → esm/src}/discovery/scanner.js +0 -0
- /package/dist/{src → esm/src}/formatters/discovery-results.js +0 -0
- /package/dist/{src → esm/src}/formatters/json.js +0 -0
- /package/dist/{src → esm/src}/formatters/performance.js +0 -0
- /package/dist/{src → esm/src}/formatters/table.js +0 -0
- /package/dist/{src → esm/src}/index.js +0 -0
- /package/dist/{src → esm/src}/utils/commands.js +0 -0
- /package/dist/{src → esm/src}/utils/object-utils.js +0 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.scanForDevices = scanForDevices;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const modbus_serial_1 = tslib_1.__importDefault(require("modbus-serial"));
|
|
6
|
+
const device_identifier_js_1 = require("./device-identifier.js");
|
|
7
|
+
const parameter_generator_utils_js_1 = require("./parameter-generator-utils.js");
|
|
8
|
+
const parameter_generator_js_1 = require("./parameter-generator.js");
|
|
9
|
+
/**
|
|
10
|
+
* Apply inter-test delay to prevent bus contention
|
|
11
|
+
*
|
|
12
|
+
* When a device is found, waits full delayMs for bus recovery.
|
|
13
|
+
* When no device found or error, waits remainder (delayMs - timeout) since
|
|
14
|
+
* timeout already consumed time waiting for response.
|
|
15
|
+
*
|
|
16
|
+
* @param delayMs - Configured delay between tests
|
|
17
|
+
* @param timeout - Request timeout in milliseconds
|
|
18
|
+
* @param deviceFound - Whether a device was found (true) or not found/error (false)
|
|
19
|
+
* @param shouldContinue - Whether scanning will continue after this delay
|
|
20
|
+
*/
|
|
21
|
+
async function applyInterTestDelay(delayMs, timeout, deviceFound, shouldContinue) {
|
|
22
|
+
// Skip delay if not continuing (reached maxDevices)
|
|
23
|
+
if (!shouldContinue) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (deviceFound) {
|
|
27
|
+
// Device found - wait full delay for bus recovery
|
|
28
|
+
if (delayMs > 0) {
|
|
29
|
+
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
// No device or error - timeout already consumed time, wait remainder
|
|
34
|
+
if (delayMs > timeout) {
|
|
35
|
+
await new Promise((resolve) => setTimeout(resolve, delayMs - timeout));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Scan for Modbus devices using given parameter combinations
|
|
41
|
+
*
|
|
42
|
+
* **Performance Optimization**: Uses grouped generator to avoid materializing
|
|
43
|
+
* all combinations. Groups by serial parameters to reuse connections,
|
|
44
|
+
* reducing overhead from ~600ms to ~100ms per test.
|
|
45
|
+
*
|
|
46
|
+
* **Memory Efficiency**: Only materializes one group (~247 combinations) at a time
|
|
47
|
+
* instead of all ~1500+ combinations.
|
|
48
|
+
*
|
|
49
|
+
* @param generatorOptions - Options for parameter combination generation
|
|
50
|
+
* @param scanOptions - Scanning options
|
|
51
|
+
* @returns Array of discovered devices
|
|
52
|
+
*/
|
|
53
|
+
async function scanForDevices(generatorOptions, scanOptions) {
|
|
54
|
+
const { port, timeout, delayMs, maxDevices = 1, verbose = false, onProgress, onDeviceFound, onTestAttempt, } = scanOptions;
|
|
55
|
+
// Calculate total combinations efficiently (no materialization)
|
|
56
|
+
const total = (0, parameter_generator_utils_js_1.countParameterCombinations)(generatorOptions);
|
|
57
|
+
const discovered = [];
|
|
58
|
+
let currentIndex = 0;
|
|
59
|
+
// Test each serial parameter group
|
|
60
|
+
// Generator yields groups without materializing all combinations
|
|
61
|
+
for (const group of (0, parameter_generator_js_1.generateParameterGroups)(generatorOptions)) {
|
|
62
|
+
const { serialParams, combinations: groupCombinations } = group;
|
|
63
|
+
// Stop if we've found enough devices
|
|
64
|
+
if (maxDevices > 0 && discovered.length >= maxDevices) {
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
// Get serial params from group
|
|
68
|
+
const { baudRate, parity, dataBits, stopBits } = serialParams;
|
|
69
|
+
try {
|
|
70
|
+
// Create and connect once for this serial parameter set
|
|
71
|
+
const client = new modbus_serial_1.default();
|
|
72
|
+
await client.connectRTUBuffered(port, {
|
|
73
|
+
baudRate,
|
|
74
|
+
parity,
|
|
75
|
+
dataBits,
|
|
76
|
+
stopBits,
|
|
77
|
+
});
|
|
78
|
+
// Set timeout once for this connection
|
|
79
|
+
client.setTimeout(timeout);
|
|
80
|
+
try {
|
|
81
|
+
// Test all slave IDs with this serial configuration
|
|
82
|
+
for (const combination of groupCombinations) {
|
|
83
|
+
// Stop if we've found enough devices
|
|
84
|
+
if (maxDevices > 0 && discovered.length >= maxDevices) {
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
const { slaveId } = combination;
|
|
88
|
+
try {
|
|
89
|
+
// Notify verbose progress
|
|
90
|
+
onTestAttempt?.(combination, 'testing');
|
|
91
|
+
// Set slave ID (reusing same connection)
|
|
92
|
+
client.setID(slaveId);
|
|
93
|
+
// Try to identify device
|
|
94
|
+
const identification = await (0, device_identifier_js_1.identifyDevice)(client);
|
|
95
|
+
// If device found, add to results
|
|
96
|
+
if (identification.present) {
|
|
97
|
+
const device = {
|
|
98
|
+
...combination,
|
|
99
|
+
identification,
|
|
100
|
+
};
|
|
101
|
+
discovered.push(device);
|
|
102
|
+
onTestAttempt?.(combination, 'found');
|
|
103
|
+
onDeviceFound?.(device);
|
|
104
|
+
// Apply delay for bus recovery before next test
|
|
105
|
+
const reachedLimit = maxDevices > 0 && discovered.length >= maxDevices;
|
|
106
|
+
await applyInterTestDelay(delayMs, timeout, true, !reachedLimit);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
onTestAttempt?.(combination, 'not-found');
|
|
110
|
+
// Apply delay before next test (timeout already consumed time)
|
|
111
|
+
await applyInterTestDelay(delayMs, timeout, false, true);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// Device identification error - skip this slave ID
|
|
116
|
+
onTestAttempt?.(combination, 'not-found');
|
|
117
|
+
// Apply delay before next test (error/timeout already consumed time)
|
|
118
|
+
await applyInterTestDelay(delayMs, timeout, false, true);
|
|
119
|
+
}
|
|
120
|
+
// Update progress
|
|
121
|
+
currentIndex++;
|
|
122
|
+
onProgress?.(currentIndex, total, discovered.length);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
finally {
|
|
126
|
+
// Close connection after testing all slave IDs
|
|
127
|
+
// Client is always defined here since we only reach this point after successful connection
|
|
128
|
+
const clientToClose = client;
|
|
129
|
+
await new Promise((resolve) => clientToClose.close(resolve));
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
// Connection error for this serial parameter set - skip entire group
|
|
134
|
+
// This can happen if port is busy, doesn't exist, or serial params are invalid
|
|
135
|
+
// Log connection error in verbose mode to help debug hardware issues
|
|
136
|
+
if (verbose) {
|
|
137
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
138
|
+
console.warn(`Connection failed on ${port} for ${baudRate}/${parity}/${dataBits}/${stopBits}: ${errorMessage}`);
|
|
139
|
+
}
|
|
140
|
+
// Still update progress for skipped combinations
|
|
141
|
+
currentIndex += groupCombinations.length;
|
|
142
|
+
onProgress?.(currentIndex, total, discovered.length);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return discovered;
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=scanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../../../src/discovery/scanner.ts"],"names":[],"mappings":";;AAiGA,wCAyHC;;AA1ND,0EAAqC;AAErC,iEAAwF;AACxF,iFAA2E;AAC3E,qEAIiC;AAuCjC;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,mBAAmB,CAChC,OAAe,EACf,OAAe,EACf,WAAoB,EACpB,cAAuB;IAEvB,oDAAoD;IACpD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAM;IACR,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,kDAAkD;QAClD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;QAC9D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,qEAAqE;QACrE,IAAI,OAAO,GAAG,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAA;QACxE,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,cAAc,CAClC,gBAAkC,EAClC,WAAwB;IAExB,MAAM,EACJ,IAAI,EACJ,OAAO,EACP,OAAO,EACP,UAAU,GAAG,CAAC,EACd,OAAO,GAAG,KAAK,EACf,UAAU,EACV,aAAa,EACb,aAAa,GACd,GAAG,WAAW,CAAA;IAEf,gEAAgE;IAChE,MAAM,KAAK,GAAG,IAAA,yDAA0B,EAAC,gBAAgB,CAAC,CAAA;IAE1D,MAAM,UAAU,GAAuB,EAAE,CAAA;IACzC,IAAI,YAAY,GAAG,CAAC,CAAA;IAEpB,mCAAmC;IACnC,iEAAiE;IACjE,KAAK,MAAM,KAAK,IAAI,IAAA,gDAAuB,EAAC,gBAAgB,CAAC,EAAE,CAAC;QAC9D,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,GAAG,KAAK,CAAA;QAC/D,qCAAqC;QACrC,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;YACtD,MAAK;QACP,CAAC;QAED,+BAA+B;QAC/B,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAA;QAE7D,IAAI,CAAC;YACH,wDAAwD;YACxD,MAAM,MAAM,GAAG,IAAI,uBAAS,EAAE,CAAA;YAC9B,MAAM,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE;gBACpC,QAAQ;gBACR,MAAM;gBACN,QAAQ;gBACR,QAAQ;aACT,CAAC,CAAA;YAEF,uCAAuC;YACvC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;YAE1B,IAAI,CAAC;gBACH,oDAAoD;gBACpD,KAAK,MAAM,WAAW,IAAI,iBAAiB,EAAE,CAAC;oBAC5C,qCAAqC;oBACrC,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;wBACtD,MAAK;oBACP,CAAC;oBAED,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAA;oBAE/B,IAAI,CAAC;wBACH,0BAA0B;wBAC1B,aAAa,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;wBAEvC,yCAAyC;wBACzC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;wBAErB,yBAAyB;wBACzB,MAAM,cAAc,GAAG,MAAM,IAAA,qCAAc,EAAC,MAAM,CAAC,CAAA;wBAEnD,kCAAkC;wBAClC,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;4BAC3B,MAAM,MAAM,GAAqB;gCAC/B,GAAG,WAAW;gCACd,cAAc;6BACf,CAAA;4BAED,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;4BACvB,aAAa,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;4BACrC,aAAa,EAAE,CAAC,MAAM,CAAC,CAAA;4BAEvB,gDAAgD;4BAChD,MAAM,YAAY,GAAG,UAAU,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,IAAI,UAAU,CAAA;4BACtE,MAAM,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,CAAA;wBAClE,CAAC;6BAAM,CAAC;4BACN,aAAa,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;4BACzC,+DAA+D;4BAC/D,MAAM,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;wBAC1D,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC;wBACP,mDAAmD;wBACnD,aAAa,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;wBACzC,qEAAqE;wBACrE,MAAM,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;oBAC1D,CAAC;oBAED,kBAAkB;oBAClB,YAAY,EAAE,CAAA;oBACd,UAAU,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;gBACtD,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,+CAA+C;gBAC/C,2FAA2F;gBAC3F,MAAM,aAAa,GAAG,MAAM,CAAA;gBAC5B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;YACpE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qEAAqE;YACrE,+EAA+E;YAE/E,qEAAqE;YACrE,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBAC3E,OAAO,CAAC,IAAI,CACV,wBAAwB,IAAI,QAAQ,QAAQ,IAAI,MAAM,IAAI,QAAQ,IAAI,QAAQ,KAAK,YAAY,EAAE,CAClG,CAAA;YACH,CAAC;YAED,iDAAiD;YACjD,YAAY,IAAI,iBAAiB,CAAC,MAAM,CAAA;YACxC,UAAU,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;QACtD,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery-results.d.ts","sourceRoot":"","sources":["../../../../src/formatters/discovery-results.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE/D;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAqCxE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAkBvE"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatDiscoveryTable = formatDiscoveryTable;
|
|
4
|
+
exports.formatDiscoveryJSON = formatDiscoveryJSON;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const cli_table3_1 = tslib_1.__importDefault(require("cli-table3"));
|
|
7
|
+
/**
|
|
8
|
+
* Format discovered devices as a table
|
|
9
|
+
*/
|
|
10
|
+
function formatDiscoveryTable(devices) {
|
|
11
|
+
if (devices.length === 0) {
|
|
12
|
+
return 'No devices found.';
|
|
13
|
+
}
|
|
14
|
+
const table = new cli_table3_1.default({
|
|
15
|
+
head: ['Slave ID', 'Baud Rate', 'Parity', 'Data/Stop', 'Response', 'Vendor', 'Model'],
|
|
16
|
+
style: {
|
|
17
|
+
head: ['cyan'],
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
// Sort by slave ID
|
|
21
|
+
const sorted = [...devices].sort((a, b) => a.slaveId - b.slaveId);
|
|
22
|
+
for (const device of sorted) {
|
|
23
|
+
const { slaveId, baudRate, parity, dataBits, stopBits, identification } = device;
|
|
24
|
+
const parityChar = parity === 'none' ? 'N' : parity === 'even' ? 'E' : 'O';
|
|
25
|
+
const dataStop = `${dataBits}${parityChar}${stopBits}`;
|
|
26
|
+
const vendor = identification.vendorName ?? '-';
|
|
27
|
+
const model = identification.modelName ?? identification.productCode ?? '-';
|
|
28
|
+
const responseTime = `${Math.round(identification.responseTimeMs)}ms`;
|
|
29
|
+
table.push([
|
|
30
|
+
slaveId.toString(),
|
|
31
|
+
baudRate.toString(),
|
|
32
|
+
parityChar,
|
|
33
|
+
dataStop,
|
|
34
|
+
responseTime,
|
|
35
|
+
vendor,
|
|
36
|
+
model,
|
|
37
|
+
]);
|
|
38
|
+
}
|
|
39
|
+
return table.toString();
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Format discovered devices as JSON
|
|
43
|
+
*/
|
|
44
|
+
function formatDiscoveryJSON(devices) {
|
|
45
|
+
const formatted = devices.map((device) => ({
|
|
46
|
+
slaveId: device.slaveId,
|
|
47
|
+
baudRate: device.baudRate,
|
|
48
|
+
parity: device.parity,
|
|
49
|
+
dataBits: device.dataBits,
|
|
50
|
+
stopBits: device.stopBits,
|
|
51
|
+
responseTimeMs: device.identification.responseTimeMs,
|
|
52
|
+
identification: {
|
|
53
|
+
vendorName: device.identification.vendorName,
|
|
54
|
+
productCode: device.identification.productCode,
|
|
55
|
+
modelName: device.identification.modelName,
|
|
56
|
+
revision: device.identification.revision,
|
|
57
|
+
supportsFC43: device.identification.supportsFC43,
|
|
58
|
+
},
|
|
59
|
+
}));
|
|
60
|
+
return JSON.stringify(formatted, null, 2);
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=discovery-results.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery-results.js","sourceRoot":"","sources":["../../../../src/formatters/discovery-results.ts"],"names":[],"mappings":";;AAOA,oDAqCC;AAKD,kDAkBC;;AAnED,oEAA8B;AAI9B;;GAEG;AACH,SAAgB,oBAAoB,CAAC,OAA2B;IAC9D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,mBAAmB,CAAA;IAC5B,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,oBAAK,CAAC;QACtB,IAAI,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC;QACrF,KAAK,EAAE;YACL,IAAI,EAAE,CAAC,MAAM,CAAC;SACf;KACF,CAAC,CAAA;IAEF,mBAAmB;IACnB,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAA;IAEjE,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,MAAM,CAAA;QAEhF,MAAM,UAAU,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;QAC1E,MAAM,QAAQ,GAAG,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,EAAE,CAAA;QAEtD,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,IAAI,GAAG,CAAA;QAC/C,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,IAAI,cAAc,CAAC,WAAW,IAAI,GAAG,CAAA;QAC3E,MAAM,YAAY,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAA;QAErE,KAAK,CAAC,IAAI,CAAC;YACT,OAAO,CAAC,QAAQ,EAAE;YAClB,QAAQ,CAAC,QAAQ,EAAE;YACnB,UAAU;YACV,QAAQ;YACR,YAAY;YACZ,MAAM;YACN,KAAK;SACN,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,OAA2B;IAC7D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACzC,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,cAAc;QACpD,cAAc,EAAE;YACd,UAAU,EAAE,MAAM,CAAC,cAAc,CAAC,UAAU;YAC5C,WAAW,EAAE,MAAM,CAAC,cAAc,CAAC,WAAW;YAC9C,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,SAAS;YAC1C,QAAQ,EAAE,MAAM,CAAC,cAAc,CAAC,QAAQ;YACxC,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC,YAAY;SACjD;KACF,CAAC,CAAC,CAAA;IAEH,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AAC3C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../../src/formatters/json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0BAA0B;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,yBAAyB;IACzB,UAAU,CAAC,EACP;QACE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACzB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACzB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC7B,GACD,SAAS,CAAA;IACb,0BAA0B;IAC1B,WAAW,CAAC,EACR;QACE,cAAc,EAAE,MAAM,CAAA;QACtB,UAAU,EAAE,MAAM,CAAA;QAClB,MAAM,EAAE,MAAM,CAAA;KACf,GACD,SAAS,CAAA;CACd;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,EACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,QAAQ,EAAE,YAAY,GACrB,MAAM,CAyBR"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatJSON = formatJSON;
|
|
4
|
+
/**
|
|
5
|
+
* Format data point results as JSON
|
|
6
|
+
*
|
|
7
|
+
* @param dataPoints - Data point definitions
|
|
8
|
+
* @param values - Data point values (keyed by ID)
|
|
9
|
+
* @param metadata - Additional metadata to include
|
|
10
|
+
* @returns Formatted JSON string with 2-space indentation
|
|
11
|
+
*/
|
|
12
|
+
function formatJSON(dataPoints, values, metadata) {
|
|
13
|
+
// Build data points array with values
|
|
14
|
+
const dataPointsWithValues = dataPoints
|
|
15
|
+
.filter((dp) => dp.id in values)
|
|
16
|
+
.map((dp) => ({
|
|
17
|
+
id: dp.id,
|
|
18
|
+
name: dp.name,
|
|
19
|
+
value: values[dp.id],
|
|
20
|
+
type: dp.type,
|
|
21
|
+
unit: dp.unit,
|
|
22
|
+
access: dp.access,
|
|
23
|
+
pollType: dp.pollType,
|
|
24
|
+
}));
|
|
25
|
+
// Build output object
|
|
26
|
+
const output = {
|
|
27
|
+
timestamp: new Date().toISOString(),
|
|
28
|
+
...(metadata.driver && { driver: metadata.driver }),
|
|
29
|
+
...(metadata.connection && { connection: metadata.connection }),
|
|
30
|
+
dataPoints: dataPointsWithValues,
|
|
31
|
+
...(metadata.performance && { performance: metadata.performance }),
|
|
32
|
+
};
|
|
33
|
+
// Return pretty-printed JSON with 2-space indentation
|
|
34
|
+
return JSON.stringify(output, null, 2);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../../../src/formatters/json.ts"],"names":[],"mappings":";;AAkCA,gCA6BC;AArCD;;;;;;;GAOG;AACH,SAAgB,UAAU,CACxB,UAAoC,EACpC,MAA+B,EAC/B,QAAsB;IAEtB,sCAAsC;IACtC,MAAM,oBAAoB,GAAG,UAAU;SACpC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,MAAM,CAAC;SAC/B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACZ,EAAE,EAAE,EAAE,CAAC,EAAE;QACT,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;QACpB,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,QAAQ,EAAE,EAAE,CAAC,QAAQ;KACtB,CAAC,CAAC,CAAA;IAEL,sBAAsB;IACtB,MAAM,MAAM,GAAG;QACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;QACnD,GAAG,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC/D,UAAU,EAAE,oBAAoB;QAChC,GAAG,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC;KACnE,CAAA;IAED,sDAAsD;IACtD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AACxC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance.d.ts","sourceRoot":"","sources":["../../../../src/formatters/performance.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,cAAc,EAAE,MAAM,CAAA;IACtB,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAA;IAClB,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAiBrE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatPerformance = formatPerformance;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
6
|
+
/**
|
|
7
|
+
* Format performance metrics for display
|
|
8
|
+
*
|
|
9
|
+
* @param metrics - Performance metrics
|
|
10
|
+
* @returns Formatted string with performance info
|
|
11
|
+
*/
|
|
12
|
+
function formatPerformance(metrics) {
|
|
13
|
+
const { responseTimeMs, operations, errors } = metrics;
|
|
14
|
+
const lines = [
|
|
15
|
+
chalk_1.default.bold('\nPerformance:'),
|
|
16
|
+
` Response time: ${responseTimeMs.toFixed(1)}ms`,
|
|
17
|
+
` Operations: ${operations}`,
|
|
18
|
+
];
|
|
19
|
+
// Highlight errors if present
|
|
20
|
+
if (errors > 0) {
|
|
21
|
+
lines.push(chalk_1.default.red(` Errors: ${errors}`));
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
lines.push(chalk_1.default.green(` Errors: ${errors}`));
|
|
25
|
+
}
|
|
26
|
+
return lines.join('\n');
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=performance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance.js","sourceRoot":"","sources":["../../../../src/formatters/performance.ts"],"names":[],"mappings":";;AAoBA,8CAiBC;;AArCD,0DAAyB;AAczB;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,OAA2B;IAC3D,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAEtD,MAAM,KAAK,GAAG;QACZ,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC5B,oBAAoB,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;QACjD,iBAAiB,UAAU,EAAE;KAC9B,CAAA;IAED,8BAA8B;IAC9B,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC,CAAA;IAC9C,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,eAAK,CAAC,KAAK,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC,CAAA;IAChD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../src/formatters/table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AA0ExD;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,EACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAuBR"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatTable = formatTable;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
6
|
+
const cli_table3_1 = tslib_1.__importDefault(require("cli-table3"));
|
|
7
|
+
/**
|
|
8
|
+
* Convert unknown value to string representation
|
|
9
|
+
*
|
|
10
|
+
* @param value - Value to stringify
|
|
11
|
+
* @returns String representation
|
|
12
|
+
*/
|
|
13
|
+
function stringifyValue(value) {
|
|
14
|
+
if (typeof value === 'string') {
|
|
15
|
+
return value;
|
|
16
|
+
}
|
|
17
|
+
if (typeof value === 'number' || typeof value === 'boolean') {
|
|
18
|
+
return String(value);
|
|
19
|
+
}
|
|
20
|
+
if (value instanceof Date) {
|
|
21
|
+
return value.toISOString();
|
|
22
|
+
}
|
|
23
|
+
// For objects/arrays, use JSON to avoid '[object Object]'
|
|
24
|
+
return JSON.stringify(value);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Format a value based on data point metadata
|
|
28
|
+
*
|
|
29
|
+
* @param value - Raw value
|
|
30
|
+
* @param dataPoint - Data point definition
|
|
31
|
+
* @returns Formatted string
|
|
32
|
+
*/
|
|
33
|
+
function formatValue(value, dataPoint) {
|
|
34
|
+
// Handle null/undefined
|
|
35
|
+
if (value === null || value === undefined) {
|
|
36
|
+
return chalk_1.default.gray('N/A');
|
|
37
|
+
}
|
|
38
|
+
// Format based on type
|
|
39
|
+
switch (dataPoint.type) {
|
|
40
|
+
case 'float': {
|
|
41
|
+
const num = value;
|
|
42
|
+
const decimals = dataPoint.decimals ?? 2;
|
|
43
|
+
return num.toFixed(decimals);
|
|
44
|
+
}
|
|
45
|
+
case 'integer':
|
|
46
|
+
return stringifyValue(value);
|
|
47
|
+
case 'boolean':
|
|
48
|
+
return value ? chalk_1.default.green('true') : chalk_1.default.red('false');
|
|
49
|
+
case 'enum': {
|
|
50
|
+
if (dataPoint.enumValues) {
|
|
51
|
+
const enumKey = stringifyValue(value);
|
|
52
|
+
return dataPoint.enumValues[enumKey] ?? stringifyValue(value);
|
|
53
|
+
}
|
|
54
|
+
return stringifyValue(value);
|
|
55
|
+
}
|
|
56
|
+
case 'timestamp': {
|
|
57
|
+
if (value instanceof Date) {
|
|
58
|
+
return value.toISOString();
|
|
59
|
+
}
|
|
60
|
+
return stringifyValue(value);
|
|
61
|
+
}
|
|
62
|
+
case 'string':
|
|
63
|
+
return stringifyValue(value);
|
|
64
|
+
default:
|
|
65
|
+
return stringifyValue(value);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Format data point results as a table
|
|
70
|
+
*
|
|
71
|
+
* @param dataPoints - Data point definitions
|
|
72
|
+
* @param values - Data point values (keyed by ID)
|
|
73
|
+
* @returns Formatted table string
|
|
74
|
+
*/
|
|
75
|
+
function formatTable(dataPoints, values) {
|
|
76
|
+
// Create table with headers
|
|
77
|
+
const table = new cli_table3_1.default({
|
|
78
|
+
head: [chalk_1.default.bold('Data Point'), chalk_1.default.bold('Value'), chalk_1.default.bold('Unit')],
|
|
79
|
+
style: {
|
|
80
|
+
head: ['cyan'],
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
// Add rows for each data point that has a value
|
|
84
|
+
for (const dp of dataPoints) {
|
|
85
|
+
if (!(dp.id in values)) {
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
const displayName = dp.name ?? dp.id;
|
|
89
|
+
const formattedValue = formatValue(values[dp.id], dp);
|
|
90
|
+
const unit = dp.unit ?? '';
|
|
91
|
+
table.push([displayName, formattedValue, unit]);
|
|
92
|
+
}
|
|
93
|
+
return table.toString();
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../../../src/formatters/table.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAmEnC,QAAA,MAAM,OAAO,SAAgB,CAAA;AAqI7B,OAAO,EAAE,OAAO,EAAE,CAAA"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.program = void 0;
|
|
5
|
+
const commander_1 = require("commander");
|
|
6
|
+
const discover_js_1 = require("./commands/discover.js");
|
|
7
|
+
const list_devices_js_1 = require("./commands/list-devices.js");
|
|
8
|
+
const read_js_1 = require("./commands/read.js");
|
|
9
|
+
const show_defaults_js_1 = require("./commands/show-defaults.js");
|
|
10
|
+
const write_js_1 = require("./commands/write.js");
|
|
11
|
+
/**
|
|
12
|
+
* Add common connection and driver options to a command
|
|
13
|
+
*
|
|
14
|
+
* @param command - Commander.js command instance
|
|
15
|
+
* @returns The command with connection options added
|
|
16
|
+
*/
|
|
17
|
+
function addConnectionOptions(command) {
|
|
18
|
+
return (command
|
|
19
|
+
// Driver Options
|
|
20
|
+
.optionsGroup('Driver Options:')
|
|
21
|
+
.option('-d, --driver <package>', 'Driver package name (e.g., ya-modbus-driver-xymd1). Use "show-defaults" to see driver config')
|
|
22
|
+
.option('--device <key>', 'Device key for multi-device drivers. Use "list-devices" to see available devices')
|
|
23
|
+
// Connection Options
|
|
24
|
+
.optionsGroup('Connection Options:')
|
|
25
|
+
.requiredOption('-s, --slave-id <id>', 'Modbus slave ID (1-247). May use driver default if available', parseInt)
|
|
26
|
+
.option('--timeout <ms>', 'Response timeout in milliseconds (default: 1000)', parseInt)
|
|
27
|
+
// RTU Connection
|
|
28
|
+
.optionsGroup('RTU Connection (choose this OR TCP):')
|
|
29
|
+
.option('-p, --port <path>', 'Serial port for RTU (e.g., /dev/ttyUSB0, COM3)')
|
|
30
|
+
.option('-b, --baud-rate <rate>', 'Baud rate (RTU only). Uses driver default if not specified', parseInt)
|
|
31
|
+
.option('--parity <type>', 'Parity: none, even, odd (RTU only). Uses driver default if not specified')
|
|
32
|
+
.option('--data-bits <bits>', 'Data bits: 7 or 8 (RTU only). Uses driver default if not specified', parseInt)
|
|
33
|
+
.option('--stop-bits <bits>', 'Stop bits: 1 or 2 (RTU only). Uses driver default if not specified', parseInt)
|
|
34
|
+
// TCP Connection
|
|
35
|
+
.optionsGroup('TCP Connection (choose this OR RTU):')
|
|
36
|
+
.option('-h, --host <host>', 'TCP host for Modbus TCP (e.g., 192.168.1.100)')
|
|
37
|
+
.option('--tcp-port <port>', 'TCP port (default: 502)', parseInt));
|
|
38
|
+
}
|
|
39
|
+
const program = new commander_1.Command();
|
|
40
|
+
exports.program = program;
|
|
41
|
+
program
|
|
42
|
+
.name('ya-modbus')
|
|
43
|
+
.description('CLI tool for testing and developing Modbus device drivers')
|
|
44
|
+
.version('0.0.0')
|
|
45
|
+
.addHelpText('after', `
|
|
46
|
+
Examples:
|
|
47
|
+
$ ya-modbus read --port /dev/ttyUSB0 --slave-id 1 --driver ya-modbus-driver-xymd1 --all
|
|
48
|
+
$ ya-modbus write --host 192.168.1.100 --slave-id 1 --data-point voltage --value 220
|
|
49
|
+
$ ya-modbus discover --port /dev/ttyUSB0 --strategy quick
|
|
50
|
+
$ ya-modbus show-defaults --driver ya-modbus-driver-xymd1
|
|
51
|
+
`);
|
|
52
|
+
// Device Operations
|
|
53
|
+
program.commandsGroup('Device Operations:');
|
|
54
|
+
// Read command
|
|
55
|
+
addConnectionOptions(program.command('read').description('Read data points from device'))
|
|
56
|
+
.optionsGroup('Data Selection:')
|
|
57
|
+
.option('--data-point <id...>', 'Data point ID(s) to read')
|
|
58
|
+
.option('--all', 'Read all readable data points')
|
|
59
|
+
.optionsGroup('Output Options:')
|
|
60
|
+
.option('-f, --format <type>', 'Output format: table or json (default: table)', 'table')
|
|
61
|
+
.action(async (options) => {
|
|
62
|
+
try {
|
|
63
|
+
// tcpPort is parsed by Commander but not used by readCommand (transport layer handles it).
|
|
64
|
+
// Destructure it out to avoid passing undefined (exactOptionalPropertyTypes requirement).
|
|
65
|
+
const { tcpPort: _tcpPort, ...commandOptions } = options;
|
|
66
|
+
await (0, read_js_1.readCommand)(commandOptions);
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
console.error(`Error: ${error.message}`);
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
// Write command
|
|
74
|
+
addConnectionOptions(program.command('write').description('Write data point to device'))
|
|
75
|
+
.optionsGroup('Data Options:')
|
|
76
|
+
.requiredOption('--data-point <id>', 'Data point ID to write')
|
|
77
|
+
.requiredOption('--value <value>', 'Value to write')
|
|
78
|
+
.optionsGroup('Write Options:')
|
|
79
|
+
.option('-y, --yes', 'Skip confirmation prompt')
|
|
80
|
+
.option('--verify', 'Read back and verify written value')
|
|
81
|
+
.action(async (options) => {
|
|
82
|
+
try {
|
|
83
|
+
// tcpPort is parsed by Commander but not used by writeCommand (transport layer handles it).
|
|
84
|
+
// Destructure it out to avoid passing undefined (exactOptionalPropertyTypes requirement).
|
|
85
|
+
const { tcpPort: _tcpPort, ...commandOptions } = options;
|
|
86
|
+
await (0, write_js_1.writeCommand)(commandOptions);
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
console.error(`Error: ${error.message}`);
|
|
90
|
+
process.exit(1);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
// Device Discovery
|
|
94
|
+
program.commandsGroup('Device Discovery:');
|
|
95
|
+
// Discover command
|
|
96
|
+
program
|
|
97
|
+
.command('discover')
|
|
98
|
+
.description('Discover Modbus devices on serial port by scanning slave IDs and parameters')
|
|
99
|
+
.optionsGroup('Connection:')
|
|
100
|
+
.requiredOption('-p, --port <path>', 'Serial port for RTU (e.g., /dev/ttyUSB0, COM3)')
|
|
101
|
+
.optionsGroup('Driver Options:')
|
|
102
|
+
.option('-d, --driver <package>', 'Driver package (auto-detects from cwd if not specified)')
|
|
103
|
+
.optionsGroup('Discovery Options:')
|
|
104
|
+
.option('--strategy <type>', 'Discovery strategy: quick (driver params) or thorough (all params)', 'quick')
|
|
105
|
+
.option('--timeout <ms>', 'Response timeout in milliseconds (default: 1000)', parseInt)
|
|
106
|
+
.option('--delay <ms>', 'Delay between attempts in milliseconds (default: 100)', parseInt)
|
|
107
|
+
.option('--max-devices <count>', 'Maximum number of devices to find (default: 1, use 0 for unlimited)', parseInt)
|
|
108
|
+
.optionsGroup('Output Options:')
|
|
109
|
+
.option('--verbose', 'Show detailed progress with current parameters being tested')
|
|
110
|
+
.option('--silent', 'Suppress all output except final result (useful for scripts)')
|
|
111
|
+
.option('-f, --format <type>', 'Output format: table or json (default: table)', 'table')
|
|
112
|
+
.action(async (options) => {
|
|
113
|
+
try {
|
|
114
|
+
await (0, discover_js_1.discoverCommand)(options);
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
console.error(`Error: ${error.message}`);
|
|
118
|
+
process.exit(1);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
// Driver Utilities
|
|
122
|
+
program.commandsGroup('Driver Utilities:');
|
|
123
|
+
// List devices command
|
|
124
|
+
program
|
|
125
|
+
.command('list-devices')
|
|
126
|
+
.description('List supported devices from driver DEVICES registry')
|
|
127
|
+
.optionsGroup('Driver Options:')
|
|
128
|
+
.option('-d, --driver <package>', 'Driver package (auto-detects from cwd if not specified)')
|
|
129
|
+
.optionsGroup('Output Options:')
|
|
130
|
+
.option('-f, --format <type>', 'Output format: table or json (default: table)', 'table')
|
|
131
|
+
.action(async (options) => {
|
|
132
|
+
try {
|
|
133
|
+
await (0, list_devices_js_1.listDevicesCommand)(options);
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
console.error(`Error: ${error.message}`);
|
|
137
|
+
process.exit(1);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
// Show defaults command
|
|
141
|
+
program
|
|
142
|
+
.command('show-defaults')
|
|
143
|
+
.description('Show driver DEFAULT_CONFIG and SUPPORTED_CONFIG')
|
|
144
|
+
.optionsGroup('Driver Options:')
|
|
145
|
+
.option('-d, --driver <package>', 'Driver package (auto-detects from cwd if not specified)')
|
|
146
|
+
.optionsGroup('Output Options:')
|
|
147
|
+
.option('-f, --format <type>', 'Output format: table or json (default: table)', 'table')
|
|
148
|
+
.action(async (options) => {
|
|
149
|
+
try {
|
|
150
|
+
await (0, show_defaults_js_1.showDefaultsCommand)(options);
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
console.error(`Error: ${error.message}`);
|
|
154
|
+
process.exit(1);
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../../src/utils/commands.ts"],"names":[],"mappings":"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"}
|