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

mcp9808-temperature-sensor

v1.1.1

Published

MCP9808 I2C temperature sensor

Downloads

26

Readme

Build Status npm Version Downloads Per Month

mcp9808-temperature-sensor

MCP9808 I2C temperature sensor module for Node.js on Linux boards like the Raspberry Pi or BeagleBone.

Supports Node.js versions 10, 12, 14, 15 and 16.

Contents

Features

  • Simple temperature sensing
  • Alert detection
  • Real hardware interrupts used to detect alerts, no polling needed
  • Promise based asynchronous API

Installation

npm install mcp9808-temperature-sensor

Usage

Circuit

Note that neither the 10kΩ pull-up resistor nor the wire connecting Alert on the MCP9808 breakout board to GPIO27 on the Raspberry Pi are needed for the "Report the Temperature" example. They are needed for the "Alerts" example.

Report the Temperature

Log the temperature in degrees Celsius to the console.

const mcp9808 = require('mcp9808-temperature-sensor');

mcp9808.open().then(sensor =>
  sensor.temperature().
  then(temp => console.log(temp.celsius + '°C')).
  then(_ => sensor.close())
).catch(console.log);

Alerts

Fire alert events if the temperature drops below 25°C, goes above 35°C or becomes critical at 45°C.

A hair dryer or blow dryer can be used to blow hot air over the MCP9808 temperature sensor and increase its temperature.

const mcp9808 = require('mcp9808-temperature-sensor');

mcp9808.open({
  i2cBusNumber: 1, // optional, default 1
  i2cAddress: 0x18, // optional, default 0x18
  alertGpioNumber: 27,
  lowerAlertTemperature: 25,
  upperAlertTemperature: 35,
  criticalTemperature: 45
}).then(sensor => {
  setInterval(_ => {
    sensor.temperature().then(temp => console.log(temp.celsius + '°C'));
  }, 1000);

  sensor.on('alert', temp => {
    console.log('  alert ' + temp.celsius + '°C');
    if (temp.critical) {
      console.log('    critical');
    }
    if (temp.aboveUpperLimit) {
      console.log('    above upper limit');
    }
    if (temp.belowLowerLimit) {
      console.log('    below lower limit');
    }
  });

  return sensor.enableAlerts();
}).catch(console.log);

API

Functions

Class Mcp9808

Events

Constants

open([options])

Returns a promise for an Mcp9808 object.

The following options are supported:

  • i2cBusNumber - integer, I2C bus number, optional, default 1
  • i2cAddress - integer, MCP9808 I2C address, optional, default 0x18
  • alertGpioNumber - integer, GPIO number of the GPIO used for alert interrupt detection, see onoff, optional, no default, none used if none specified
  • lowerAlertTemperature - number, alert lower temperature boundary, optional, default 0°C
  • upperAlertTemperature - number, alert upper temperature boundary, optional, default 0°C
  • criticalTemperature - number, alert critical temperature boundary, optional, default 0°C
  • resolution - integer, sensor resolution, see resolution constants, optional, default 0.0625°C
  • hysteresis - hysteresis for lower, upper and critical temperatures, see hysteresis constants, optional, default 0°C

close()

Returns a promise which will resolve when all resources used by the Mcp9808 object have been freed.

temperature()

Returns a promise for an object containing temperature data.

enableAlerts()

Returns a promise which will resolve when alerts have been enabled for the Mcp9808.

Event: 'alert'

Fired when an alert is detected.

Event: 'error'

  • err - Error object

Fired when an error occurs during alert detection.

RESOLUTION_1_2

0.5°C resolution.

RESOLUTION_1_4

0.25°C resolution.

RESOLUTION_1_8

0.125°C resolution.

RESOLUTION_1_16

0.0625°C resolution.

HYSTERESIS_0

0°C hysteresis.

HYSTERESIS_1_5

1.5°C hysteresis.

HYSTERESIS_3

3°C hysteresis.

HYSTERESIS_6

6°C hysteresis.

Temperature Data

  • celsius - number, temperature in degrees Celsius
  • belowLowerLimit - boolean, true if temperature less than lower limit, else false
  • aboveUpperLimit - boolean, true if temperature greater than upper limit, else false
  • critical - boolean, true if temperature greater than or equal to critical temperature, else false

Related Packages

  • onoff - GPIO access and interrupt detection
  • i2c-bus - I2C serial bus access