es51922

Streaming Cyrustek ES51922 DMM data protocol implementation over serial

Usage no npm install needed!

<script type="module">
  import es51922 from 'https://cdn.skypack.dev/es51922';
</script>

README

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