@meterbus/wired-datalink-node
v0.0.3
Published
Native wired M-Bus data-link frame codecs for Node.js
Maintainers
Readme
Meterbus Wired Data-Link for Node.js
Native wired M-Bus data-link frames and codecs for Node.js.
This package provides typed, validated frame construction plus exact and
streaming decoders for the wired M-Bus link layer defined by
EN 13757-2:2018+A1:2023. It uses a
native Node-API addon generated from the
meterbus-wired-datalink
Rust crate.
Highlights
- ACK, NACK, short, control, and long frame formats
- Exact decoding for complete frames
- Incremental decoding across arbitrary byte chunks
- Strict and noise-resynchronizing stream recovery
- Typed
Frame,StreamDecoder, and recovery results Uint8Arrayinput and output- Native Node-API implementation
- ESM-only package with generated TypeScript declarations
- TypeScript
examples
Installation
Add the package with pnpm:
pnpm add @meterbus/wired-datalink-nodeNode.js 24 or newer is required.
Usage
Construct, encode, and decode a REQ-UD2 short frame:
import { Frame } from "@meterbus/wired-datalink-node";
const request = Frame.short(0x5b, 1);
const encoded = request.encode();
const decoded = Frame.decode(encoded);
console.log(decoded.kind); // "short"Decode frames incrementally:
import { StreamDecoder } from "@meterbus/wired-datalink-node";
const decoder = new StreamDecoder();
decoder.push(Uint8Array.of(0x10, 0x5b));
const result = decoder.push(Uint8Array.of(0x01, 0x5c, 0x16));
console.log(result.frames[0].kind); // "short"Errors
Every data-link failure has a concrete error type with fields describing the
invalid input. All concrete errors extend DatalinkError.
import { Frame, UnknownStartByteError } from "@meterbus/wired-datalink-node";
try {
Frame.decode(Uint8Array.of(0xff));
} catch (error) {
if (error instanceof UnknownStartByteError) {
console.log(error.actual); // 255
}
}License
Copyright © 2026 Nicolas HEDGER.
Licensed under either of:
at your option.
