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 🙏

© 2024 – Pkg Stats / Ryan Hefner

qdevice

v2.1.0

Published

Use Qcom-based hardware in your NodeJS application.

Downloads

71

Readme

Qdevice

Allow your NodeJS project to interact with the real world through Qcom-based hardware devices. This package uses the Qcom driver. Qcom is designed for easily connecting low-level hardware (e.g. a LED on a breadboard, wired to your Arduino) to high-level software (e.g. NodeJS).

:warning: Linux-based systems only! (e.g. your Raspberry Pi, or your Ubuntu workstation)

Installation

Install Qdevice with NPM.

npm install --save qdevice

For a TypeScript project, install the types

npm install --save-dev @types/qdevice

How it works

Qcom is a communication layer on top of a serial port interface (ttyUSB/ttyACM/...), designed for easily identifying each device, and easily exchanging information between a serial device and a host system. A Qcom packet looks like this (e.g. coming from/send to your Arduino over serial):

{signal:argument}

| |Explanation | |---|----------------------------------------------------| | { | Start character (packet start) | |signal| Some characters to identify what the data is (e.g. temperature) | | : | Divider character (to seperate signal from argument)| |argument | The data (e.g. 21.5) | | } | Stop character (packet end) |

The Qcom userspace driver (installed when installing this npm package) is started whenever a new tty* device connects to your host. The Qcom userspace driver creates for each Qcom-based device a named pipe with the device name and the device address. For example, a device named "MySensor" given address 4 will appear in the folder /Qdev as:

MySensor_4

This named pipe can be used to interact with your serial device using any language. But you are here, so you're probably using NodeJS with JavaScript or TypeScript. Great, I already wrote the interface!

Usage

Create a new Qcom device

const mySensor = new Qdevice("MySensor_4");

Add event listeners for the device connection status

mySensor.on('connected', ()=>{ console.log("Sensor 4 is connected!")});
mySensor.on('disconnected', ()=>{ console.log("Sensor 4 is disconnected!});

Listen for incoming data

mySensor.on('data', (data)=>{
   if(data.signal === 'temperature'){
      console.log('The temperature is '+data.argument+' °C');
   }
});

Send some data to the device

mySensor.send('heater','on');

That's about it!

Qcom-based hardware

License

This is a project I worked really hard on, but you can use it however you like.