Skip to content

Commit 8d63837

Browse files
authored
feat(driver): add ORNO OR-WE-516 3-phase energy meter driver (#162)
Adds comprehensive driver support for ORNO OR-WE-516 3-phase energy meter with RS-485 Modbus RTU communication. Package Features: - 56 data points covering device info, real-time measurements, and energy counters - IEEE 754 float read/write utilities in driver-sdk - Dual ESM/CJS package exports with proper package.json configuration - 97%+ test coverage with 116 passing unit tests - Verified against official MODBUS Registers List PDF and real device data Implementation: - Serial number correctly read as 32-bit value - Combined code register (0x0042) for bidirectional energy calculation mode - All floats are IEEE 754 single-precision big-endian - README examples use correct transport imports and factory functions - Added to all consumer examples for package compatibility testing
1 parent 51ca421 commit 8d63837

25 files changed

Lines changed: 2061 additions & 6 deletions

File tree

examples/cjs-consumer/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
"@ya-modbus/device-profiler": "file:../../packages/device-profiler",
1313
"@ya-modbus/driver-ex9em": "file:../../packages/driver-ex9em",
1414
"@ya-modbus/driver-loader": "file:../../packages/driver-loader",
15+
"@ya-modbus/driver-or-we-516": "file:../../packages/driver-or-we-516",
1516
"@ya-modbus/driver-sdk": "file:../../packages/driver-sdk",
1617
"@ya-modbus/driver-types": "file:../../packages/driver-types",
1718
"@ya-modbus/driver-xymd1": "file:../../packages/driver-xymd1",

examples/cjs-consumer/test.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ async function main() {
1616
deviceProfiler: require('@ya-modbus/device-profiler'),
1717
driverEx9em: require('@ya-modbus/driver-ex9em'),
1818
driverLoader: require('@ya-modbus/driver-loader'),
19+
driverOrWe516: require('@ya-modbus/driver-or-we-516'),
1920
driverSdk: require('@ya-modbus/driver-sdk'),
2021
driverXymd1: require('@ya-modbus/driver-xymd1'),
2122
emulator: require('@ya-modbus/emulator'),
@@ -132,7 +133,7 @@ async function main() {
132133

133134
console.log('\n✅ All CommonJS imports successful!')
134135
console.log('✅ No .default workaround required!')
135-
console.log('✅ All 10 packages loaded and verified!')
136+
console.log('✅ All 11 packages loaded and verified!')
136137
}
137138

138139
main().catch((error) => {

examples/esm-consumer/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
"@ya-modbus/device-profiler": "file:../../packages/device-profiler",
1313
"@ya-modbus/driver-ex9em": "file:../../packages/driver-ex9em",
1414
"@ya-modbus/driver-loader": "file:../../packages/driver-loader",
15+
"@ya-modbus/driver-or-we-516": "file:../../packages/driver-or-we-516",
1516
"@ya-modbus/driver-sdk": "file:../../packages/driver-sdk",
1617
"@ya-modbus/driver-types": "file:../../packages/driver-types",
1718
"@ya-modbus/driver-xymd1": "file:../../packages/driver-xymd1",

examples/esm-consumer/test.mjs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
DEFAULT_CONFIG as EX9EM_CONFIG,
1515
} from '@ya-modbus/driver-ex9em'
1616
import { loadDriver } from '@ya-modbus/driver-loader'
17+
import { createDriver as createOrWe516Driver } from '@ya-modbus/driver-or-we-516'
1718
import { readScaledUInt16BE, createEnumValidator } from '@ya-modbus/driver-sdk'
1819
import { createDriver as createXYMD1Driver, DEFAULT_CONFIG } from '@ya-modbus/driver-xymd1'
1920
import { ModbusEmulator } from '@ya-modbus/emulator'
@@ -29,6 +30,7 @@ async function main() {
2930
scanRegisters,
3031
createEx9emDriver,
3132
loadDriver,
33+
createOrWe516Driver,
3234
readScaledUInt16BE,
3335
createXYMD1Driver,
3436
ModbusEmulator,
@@ -142,7 +144,7 @@ async function main() {
142144
console.log(' Created driver.name:', driver.name)
143145

144146
console.log('\n✅ All ES Module imports successful!')
145-
console.log('✅ All 10 packages loaded and verified!')
147+
console.log('✅ All 11 packages loaded and verified!')
146148
}
147149

148150
main().catch((error) => {

examples/typescript-cjs-consumer/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"@ya-modbus/device-profiler": "file:../../packages/device-profiler",
1414
"@ya-modbus/driver-ex9em": "file:../../packages/driver-ex9em",
1515
"@ya-modbus/driver-loader": "file:../../packages/driver-loader",
16+
"@ya-modbus/driver-or-we-516": "file:../../packages/driver-or-we-516",
1617
"@ya-modbus/driver-sdk": "file:../../packages/driver-sdk",
1718
"@ya-modbus/driver-types": "file:../../packages/driver-types",
1819
"@ya-modbus/driver-xymd1": "file:../../packages/driver-xymd1",

examples/typescript-cjs-consumer/src/test.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
DEFAULT_CONFIG as EX9EM_CONFIG,
1515
} from '@ya-modbus/driver-ex9em'
1616
import { loadDriver } from '@ya-modbus/driver-loader'
17+
import { createDriver as createOrWe516Driver } from '@ya-modbus/driver-or-we-516'
1718
import { readScaledUInt16BE, createEnumValidator } from '@ya-modbus/driver-sdk'
1819
import type { DataType, DeviceDriver } from '@ya-modbus/driver-types'
1920
import { createDriver as createXYMD1Driver, DEFAULT_CONFIG } from '@ya-modbus/driver-xymd1'
@@ -30,6 +31,7 @@ async function main() {
3031
scanRegisters,
3132
createEx9emDriver,
3233
loadDriver,
34+
createOrWe516Driver,
3335
readScaledUInt16BE,
3436
createXYMD1Driver,
3537
ModbusEmulator,
@@ -151,7 +153,7 @@ async function main() {
151153

152154
console.log('\n✅ All TypeScript CommonJS imports successful with full type safety!')
153155
console.log('✅ No .default workaround required!')
154-
console.log('✅ All 10 packages loaded and verified!')
156+
console.log('✅ All 11 packages loaded and verified!')
155157
}
156158

157159
main().catch((error: Error) => {

examples/typescript-esm-consumer/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"@ya-modbus/device-profiler": "file:../../packages/device-profiler",
1414
"@ya-modbus/driver-ex9em": "file:../../packages/driver-ex9em",
1515
"@ya-modbus/driver-loader": "file:../../packages/driver-loader",
16+
"@ya-modbus/driver-or-we-516": "file:../../packages/driver-or-we-516",
1617
"@ya-modbus/driver-sdk": "file:../../packages/driver-sdk",
1718
"@ya-modbus/driver-types": "file:../../packages/driver-types",
1819
"@ya-modbus/driver-xymd1": "file:../../packages/driver-xymd1",

examples/typescript-esm-consumer/src/test.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
DEFAULT_CONFIG as EX9EM_CONFIG,
1515
} from '@ya-modbus/driver-ex9em'
1616
import { loadDriver } from '@ya-modbus/driver-loader'
17+
import { createDriver as createOrWe516Driver } from '@ya-modbus/driver-or-we-516'
1718
import { readScaledUInt16BE, createEnumValidator } from '@ya-modbus/driver-sdk'
1819
import type { DataType, DeviceDriver } from '@ya-modbus/driver-types'
1920
import { createDriver as createXYMD1Driver, DEFAULT_CONFIG } from '@ya-modbus/driver-xymd1'
@@ -30,6 +31,7 @@ async function main() {
3031
scanRegisters,
3132
createEx9emDriver,
3233
loadDriver,
34+
createOrWe516Driver,
3335
readScaledUInt16BE,
3436
createXYMD1Driver,
3537
ModbusEmulator,
@@ -150,7 +152,7 @@ async function main() {
150152
console.log(' dataType value:', dataType)
151153

152154
console.log('\n✅ All TypeScript ESM imports successful with full type safety!')
153-
console.log('✅ All 10 packages loaded and verified!')
155+
console.log('✅ All 11 packages loaded and verified!')
154156
}
155157

156158
main().catch((error: Error) => {

jest.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ module.exports = {
1010
'<rootDir>/packages/transport',
1111
'<rootDir>/packages/driver-ex9em',
1212
'<rootDir>/packages/driver-xymd1',
13+
'<rootDir>/packages/driver-or-we-516',
1314
],
1415
coverageReporters: ['text', 'lcov', 'html'],
1516
coverageThreshold: {

package-lock.json

Lines changed: 19 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)