npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@ya-modbus/driver-dds519mr

v0.1.1

Published

Sinotimer DDS519MR single-phase energy meter driver for ya-modbus

Readme

@ya-modbus/driver-dds519mr

Sinotimer DDS519MR single-phase energy meter driver for ya-modbus.

Device Information

  • Manufacturer: Sinotimer
  • Model: DDS519MR
  • Type: single-phase energy meter, DIN rail, RS-485. A shop listing says 5(100) A, pulse output, not MID: https://domoticx.net/webshop/kwh-meter-100a-digitaal-lcd-display-puls-uitgang-modbus-rs485-rtu-din-rail-dds519mr (seen 2026-10-15)
  • Communication: Modbus RTU, input registers (function code 04), float32 big-endian (high word first), 2 registers per value
  • Default Settings:
    • Address: 1
    • Baud rate: 9600
    • Parity: Even
    • Stop bits: 1
    • Data bits: 8

No register document for the DDS519MR itself was found. The registers and the defaults come from the manual of the sibling model DDS661 and match real DDS519MR meters (9600 baud, 8 data bits, even parity, 1 stop bit). The manual does not state a default address; 1 is the value used in its examples.

Installation

npm install @ya-modbus/driver-dds519mr

Usage

import { createDriver, DEFAULT_CONFIG } from '@ya-modbus/driver-dds519mr'
import { createRTUTransport } from '@ya-modbus/transport'

const transport = await createRTUTransport({
  port: '/dev/ttyUSB0',
  baudRate: DEFAULT_CONFIG.baudRate,
  parity: DEFAULT_CONFIG.parity,
  dataBits: DEFAULT_CONFIG.dataBits,
  stopBits: DEFAULT_CONFIG.stopBits,
  slaveId: DEFAULT_CONFIG.defaultAddress,
})

const driver = await createDriver({ transport, slaveId: DEFAULT_CONFIG.defaultAddress })

const values = await driver.readDataPoints(['voltage', 'active_power', 'total_active_energy'])
console.log(values)

Data Points

All data points are read-only and are read on every poll.

| ID | Register | Unit | Resolution seen | | --------------------- | -------- | ---- | --------------- | | voltage | 0x00 | V | 0.1 | | current | 0x08 | A | 0.001 | | active_power | 0x12 | W | 0.1 | | power_factor | 0x2A | - | 0.001 | | frequency | 0x36 | Hz | - | | total_active_energy | 0x100 | kWh | 0.01 |

These are all 6 reading registers of the manual. They are checked on real meters.

A full poll makes 3 requests: 0x00 (20 registers), 0x2A (14 registers) and 0x100 (2 registers). A block is read only when one of its data points is requested. Registers 0x14 to 0x29 are never read, and wider reads are not tried on the meter.

The settings (holding registers 0x00 baud rate, 0x02 parity, 0x08 address, per the DDS661 manual) are not exposed. The driver does not write to the meter.

Notes

  • Power is in W, not kW. The DDS661 manual and the third-party table say kW. Checked on the real meters on 2026-10-13: 233.3 V x 10.207 A x power factor 1 = 2381.3, and register 0x12 returned 2381.6. Over a whole day the sum of the power in W matched the energy counter in kWh within 0.02 kWh on all 5 meters.
  • Frequency is always exactly 50. All readings of 5 meters on 2026-10-13 and 2026-10-14 were 50. The meter seems not to measure the frequency (a fixed value, or rounded to whole Hz). The data point is kept because the previous reader of these meters publishes it. Do not use it to watch the grid.
  • Low current. At very low current (up to about 0.1 A) the meter reports active power 0 and power factor 1 in most records. The current register can show 0 for about 0.02 A while the power is still 4 to 5 W.
  • Load changes. Current and power can be inconsistent for one reading when a load starts (for example current 0 and power above 400 W), because the meter seems to update them at different times.
  • Power factor 0 appears in about 0.35 % of the records, also under a large load. The cause is not known.

Sources

  • Manual of the sibling model DDS661 (same register map, serial settings, defaults, function codes): https://community.jeedom.com/uploads/short-url/iBIDCMlIpNYtquKEiAh4z2a6i9a.pdf
  • Third-party table for "Sinotimer (DDS519)" with the same offsets (no function codes, no byte order): https://www.aggsoft.com/modbus-data-logging/sinotimer.htm
  • A "DDS519MR User Manual" is linked on https://domoticx.net/download/dds519mr-user-manual/. It was not readable (HTTP 403 to scripts) and is not used.

License

GPL-3.0-or-later