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

raspi-1wire-temp

v2.0.0

Published

Provides a high-level interface to a "1-wire" compatible temperature device or file on a Raspberry Pi.

Downloads

83

Readme

Raspberry Pi 1-Wire High-Level Interface

pipeline Build status codecov npm version npm

Provides a high-level interface to a "1-wire" compatible device or file on a Raspberry Pi.

This code was really only tested with a DS18B20 on a Raspberry Pi 3. I would very much appreciate testers with different hardware to test and use this module.

Installation

npm install raspi-1wire-temp

Usage

Finding Devices

The idea with this approach is for R1WT to automatically determine what type of temperature controller to create. Currently this project only supports the output from a DS18B20 device. However if/when more temperature sensors are tested they could be integrated into R1WT relatively easy.

const r1wt = require('raspi-1wire-temp');
const devices = r1wt.findDevices();

By default, R1WT looks for devices that can be globbed with /sys/bus/w1/devices/28-*/w1_slave. However, findDevices() method has an optional hint glob string that can help R1WT find the device files.

const r1wt = require('raspi-1wire-temp');
const devices = r1wt.findDevices('/dev/my/temp/sensor*.dev');

The findDevices() method will return a non-null array of filenames to devices.

Creating A Device Controller

Once you obtain the filename of a device, either through findDevices() or from a known location, the fromDevice() method is used to create the temperature controller.

const r1wt = require('raspi-1wire-temp');
const devices = r1wt.findDevices();
assert(devices.length > 0);

const controller = r1wt.fromDevice(devices[0]);
console.log(controller.current.celsius)
console.log(controller.current.fahrenheit)

For every call to controller.current the controller will re-read the device for the current temperature. If reading from the device is an expensive call it might be wise to cache the current temperature object for some time.

Create an Emulated Controller

For some contexts, like testing, you might need a stubbed or emulated device controller. The fromStream() method can be used to provide this functionality. This may be particularly useful when developing software on non-RPI hardware. Effectively allowing a temperature sensor to be emulated with a known stream of data.

const r1wt = require('raspi-1wire-temp');
const controller = r1wt.fromStream(false, 1000, 2000, 3000)

assert(controller.current.celsius == 1000);
assert(controller.current.celsius == 2000);
assert(controller.current.celsius == 3000);

The first argument to fromStream() is a flag indicating if the stream should repeat. When set to false the stream will raise an error when the data has been exhausted. To repeat the stream, set the flag to true.

const r1wt = require('raspi-1wire-temp');
const controller = r1wt.fromStream(true, 1000, 2000, 3000)

assert(controller.current.celsius == 1000);
assert(controller.current.celsius == 2000);
assert(controller.current.celsius == 3000);

assert(controller.current.celsius == 1000);
assert(controller.current.celsius == 2000);
assert(controller.current.celsius == 3000);

// etcetera . . .

Tests

npm run test
npm run cover