Weighty is a Rust library for reading from HID scales.
We expose two APIs, one that depends on uom
and one that does not. uom
is nice
in that it gives better static guarantees that you're not crashing a climate orbiter,
but it carries a huge penalty to your compilation time. I find the trade worth it,
but you may not, either way I've got you covered. To build with uom
support,
use the units
feature.
In addition to the library, weighty also includes the weigh
executable that polls
each attached HID scale and prints their readings to standard out.
- Dymo M10
- Others? (try it and let me know)
Testing! I only own a Dymo M10, so it's all I can test against. If you have access to another HID scale please help by testing this code against it and submitting either a PR that updates the above list of supported hardware, or a bug report.
Additionally, weigh
is pretty bare bones right now, it reads what it can and
prints it. Feature requests welcome!
There might be a more elegant way to do the udev rules. Right now I'm granting 0666 to all USB devices with Dymo's vendor ID, but a wizard may be able to express a rule that applies to all devices that support usage page 0x8D. OTOH, the wizard may also be frustrated by vendors that don't correctly report their usage page (needless to say, this is my suspicion in this case).
cargo install weighty --features="units"
Note: in order for this to work your user needs access to the scale device. In Linux this is typically done via udev. Example udev rules files can be found in the udev directory.