es51922

0.1.1 • Public • Published

es51922

Streaming Cyrustek ES51922 DMM data protocol implementation over serial

The Cyrustek ES51922 is an IC found in several multimeters with "data-out" capability, including the UNI-T UT61E and Wintex TD2200 (source: sigrok.org).

The es51922 module provides both Observable (RxJS) and object-mode Readable Stream APIs.

Install

$ npm install es51922

Usage

Observable API

import {fromES51922} from 'es51922';
 
fromES51922('/dev/ttyUSB0').subscribe(data => {
  console.log(`${data.value} ${data.range.unit}`);
});

Example output:

3.269 V
3.209 V
3.268 V
3.268 V
3.267 V

Node.js Stream API

This is equivalent to the above:

import {readES51922Stream} from 'es51922';
 
readES51922Stream('/dev/ttyUSB0').on('data', data => {
  console.log(`${data.value} ${data.range.unit}`);
});

Data Format

TODO (describe shape of object)

Environment

Define the ES51922_PORT environment variable to avoid needing to pass it directly to the API. This module also accepts an .env file (for dotenv).

Development

src/es51922.ksy.yml contains a Kaitai Struct format description of the data protocol. The Kaitai Struct compiler generates the parser, which lives in vendor/es51922.js.

The reference Kaitai Struct compiler is implemented in Scala, so it would be a hassle to compile as part of a build step. The Kaitai Struct team publishes a pure-JS implementation to npm, but it has not kept pace with the Scala implementation; it fails to parse our format description file.

Until the JS implementation ready for use, you can install the Kaitai Struct compiler from kaitai.io, and execute npm run compile-posix (Windows users may need to tweak the run script). This (should) update vendor/es51922.js.

Notes

  • Temperature and ADP modes are unimplemented (and will likely remain so).
  • The Python ut61e package helped immensely w/ understanding the protocol.
  • This module won't work with Hoitek HE2325U or WCH CH9325 USB/HID adapter cables.
  • I'm using a FTDI FT232R-based RS232-to-USB converter. YMMV.
  • AFAIK there's no graphical viewer which supports this format available on macOS.
  • My ultimate goal is to use this module in a nice graphical interface with real-time interactive charts and shit.

See Also

Contributing

PR's welcome! Please use the Conventional Commits specification.

License

Copyright © 2019 Christopher Hiller. Licensed Apache-2.0

Package Sidebar

Install

npm i es51922

Weekly Downloads

4

Version

0.1.1

License

Apache-2.0

Unpacked Size

203 kB

Total Files

9

Last publish

Collaborators

  • boneskull