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

@slaplacian/tsups

v0.1.2

Published

Cross-platform CLI monitor for TS Shara UPS units (Megatec/Q1 serial protocol)

Readme

tsups

Cross-platform (macOS / Linux / Windows) command-line monitor for TS Shara UPS units that speak the Megatec Q1 serial protocol over USB.

The UPS speaks the Megatec Q1 protocol over a USB-serial port at 2400 baud:

| Command | Meaning | |---------|------------------------------------------| | I | Identify (reply must contain TS) | | F | Rating info | | Q1 | Status (polled every 2 s) | | T / TL / Tnn | 10 s test / test until low / nn-minute test | | Q | Toggle beeper | | Sn | Turn output off after n minutes | | C, CT | Cancel shutdown / cancel test |

Hardware quirks (TS Shara USB interface, STM32 0483:5740)

Measured on a real unit; handled in src/serial.js:

  • A reply is held until the host writes again. tsups sends a bare \r every 300 ms after a command to release it.
  • A command sent right after a reply is silently dropped. tsups waits 500 ms after the last reply before sending the next command.
  • F reports the input voltage as Univ. (universal / bivolt).

Install

npm install -g @slaplacian/tsups

On Linux, add yourself to the dialout group (or uucp on Arch) to access /dev/ttyUSB*.

Usage

tsups detect                 # find the UPS
tsups status                 # one reading
tsups status --json
tsups monitor                # continuous; Ctrl+C to stop
tsups monitor --events-only --log ups.jsonl \
  --on-event 'osascript -e "display notification \"$UPS_MESSAGE\" with title \"UPS\""'
tsups test quick | low | 5
tsups beep
tsups shutdown 3 --yes       # UPS output OFF in 3 minutes
tsups cancel-shutdown
tsups raw Q1                 # send anything, print reply

Events: UTILITY_FAIL, UTILITY_RESTORED, LOW_BATTERY, OK_BATTERY, BYPASS_ENABLED/DISABLED, UPS_FAULT, BATTERY_TEST_STARTED/FINISHED, SHUTDOWN_PENDING/CANCELLED, BEEP_ENABLED/DISABLED, COMM_OK, COMM_FAIL.

To shut down the computer on power loss, use --on-event with a script that checks $UPS_EVENT (e.g. LOW_BATTERY) and runs shutdown -h +1.

Notes

  • Status bit 6 is reported per the Megatec spec (1 = shutdown pending).
  • Q1 replies with a malformed status field are rejected instead of parsed.
  • tsups monitor --json output can be sent to InfluxDB with upsflux.

Development

npm install
npm test        # parsing, battery %, event detection, command formatting
npm link        # puts your working copy of `tsups` on your PATH

Disclaimer

Independent project, not affiliated with or endorsed by TS Shara. Product names are trademarks of their respective owners. Sending S/T commands switches the UPS output or runs battery tests; use at your own risk.

License

MIT