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

@stheine/pigpiod

v2.0.3

Published

node.js interface for pigpiod

Downloads

10

Readme

pigpiod

Node.js interface for pigpiod on the Raspberry Pi Zero, 1, 2, or 3.

Contents

Features

Installation

Step 1

This step can be skipped on Raspbian Jessie 2016-05-10 or newer as it includes the pigpio C library and pigpiod.

The pigpio package is based on the pigpio C library so the C library needs to be installed first. Version V41 or higher of the pigpio C library is required. It can be installed with the following commands:

wget abyz.co.uk/rpi/pigpio/pigpio.zip
unzip pigpio.zip
cd PIGPIO
make
sudo make install

Step 2

npm install pigpio

I have developed and tested on Node.js 6.2.0, so it should be working ok here. It might very well work on the earlier versions of Node.js.

Usage

const pigpiod = require('pigpiod');

let pi  = pigpiod.pigpio_start();
let spi = pigpiod.spi_open(pi, 0); // SPI channel 0

// read A-D converter value on MCP3204 on SPI channel 0, MCP channel 0
const a2dValue = pigpiod.mcp3204(pi, spi, 0);
console.log(`a2dValue = ${a2dValue}`);

// DHT22 (this is a C-based implementation reading the sensor data)
dhtResult = pigpiod.dht22(pi, 18); // read DHT22 sensor on port 18
console.log(dhtResult);

pigpiod.spi_close(pi, spi);
pigpiod.pigpio_stop(pi);

Standard pigpiod API

Following APIs are already implemented. See for details: http://abyz.co.uk/rpi/pigpio/pdif2.html

Where not explicitly stated, the parameters are the same.

The error handling is different, though: Instead of returning an error code, an exception is thrown.

| | ESSENTIAL | | | --- | --- | --- | | [x] | pigpio_start | Connects to a pigpio daemon | | [x] | pigpio_stop | Disconnects from a pigpio daemon |

| | BEGINNER | | | --- | --- | --- | | [x] | set_mode | Set a GPIO mode | | [x] | get_mode | Get a GPIO mode | | [x] | set_pull_up_down | Set/clear GPIO pull up/down resistor | | [x] | gpio_read | Read a GPIO | | [x] | gpio_write | Write a GPIO | | [ ] | set_PWM_dutycycle | Start/stop PWM pulses on a GPIO | | [ ] | get_PWM_dutycycle | Get the PWM dutycycle in use on a GPIO | | [ ] | set_servo_pulsewidth | Start/stop servo pulses on a GPIO | | [ ] | get_servo_pulsewidth | Get the servo pulsewidth in use on a GPIO | | [x] | callback | Create GPIO level change callback | | [ ] | callback_ex | Create GPIO level change callback | | [x] | callback_cancel | Cancel a callback | | [ ] | wait_for_edge | Wait for GPIO level change |

| | INTERMEDIATE | | | --- | --- | --- | | [ ] | gpio_trigger | Send a trigger pulse to a GPIO. | | [x] | set_watchdog | Set a watchdog on a GPIO. | | [ ] | set_PWM_range | Configure PWM range for a GPIO | | [ ] | get_PWM_range | Get configured PWM range for a GPIO | | [ ] | set_PWM_frequency | Configure PWM frequency for a GPIO | | [ ] | get_PWM_frequency | Get configured PWM frequency for a GPIO | | [ ] | read_bank_1 | Read all GPIO in bank 1 | | [ ] | read_bank_2 | Read all GPIO in bank 2 | | [ ] | clear_bank_1 | Clear selected GPIO in bank 1 | | [ ] | clear_bank_2 | Clear selected GPIO in bank 2 | | [ ] | set_bank_1 | Set selected GPIO in bank 1 | | [ ] | set_bank_2 | Set selected GPIO in bank 2 | | [ ] | start_thread | Start a new thread | | [ ] | stop_thread | Stop a previously started thread |

| | ADVANCED | | | --- | --- | --- | | [ ] | get_PWM_real_range | Get underlying PWM range for a GPIO | | [ ] | notify_open | Request a notification handle | | [ ] | notify_begin | Start notifications for selected GPIO | | [ ] | notify_pause | Pause notifications | | [ ] | notify_close | Close a notification | | [ ] | bb_serial_read_open | Opens a GPIO for bit bang serial reads | | [ ] | bb_serial_read | Reads bit bang serial data from a GPIO | | [ ] | bb_serial_read_close | Closes a GPIO for bit bang serial reads | | [ ] | bb_serial_invert | Invert serial logic (1 invert, 0 normal) | | [ ] | hardware_clock | Start hardware clock on supported GPIO | | [ ] | hardware_PWM | Start hardware PWM on supported GPIO | | [x] | set_glitch_filter | Set a glitch filter on a GPIO | | [x] | set_noise_filter | Set a noise filter on a GPIO |

| | SCRIPTS | | | --- | --- | --- | | [ ] | store_script | Store a script | | [ ] | run_script | Run a stored script | | [ ] | script_status | Get script status and parameters | | [ ] | stop_script | Stop a running script | | [ ] | delete_script | Delete a stored script |

| | WAVES | | | --- | --- | --- | | [ ] | wave_clear | Deletes all waveforms | | [ ] | wave_add_new | Starts a new waveform | | [ ] | wave_add_generic | Adds a series of pulses to the waveform | | [ ] | wave_add_serial | Adds serial data to the waveform | | [ ] | wave_create | Creates a waveform from added data | | [ ] | wave_delete | Deletes one or more waveforms | | [ ] | wave_send_once | Transmits a waveform once | | [ ] | wave_send_repeat | Transmits a waveform repeatedly | | [ ] | wave_send_using_mode | Transmits a waveform in the chosen mode | | [ ] | wave_chain | Transmits a chain of waveforms | | [ ] | wave_tx_at | Returns the current transmitting waveform | | [ ] | wave_tx_busy | Checks to see if the waveform has ended | | [ ] | wave_tx_stop | Aborts the current waveform | | [ ] | wave_get_micros | Length in microseconds of the current waveform | | [ ] | wave_get_high_micros | Length of longest waveform so far | | [ ] | wave_get_max_micros | Absolute maximum allowed micros | | [ ] | wave_get_pulses | Length in pulses of the current waveform | | [ ] | wave_get_high_pulses | Length of longest waveform so far | | [ ] | wave_get_max_pulses | Absolute maximum allowed pulses | | [ ] | wave_get_cbs | Length in cbs of the current waveform | | [ ] | wave_get_high_cbs | Length of longest waveform so far | | [ ] | wave_get_max_cbs | Absolute maximum allowed cbs |

| | I2C | | | --- | --- | --- | | [ ] | i2c_open | Opens an I2C device | | [ ] | i2c_close | Closes an I2C device | | [ ] | i2c_write_quick | smbus write quick | | [ ] | i2c_write_byte | smbus write byte | | [ ] | i2c_read_byte | smbus read byte | | [ ] | i2c_write_byte_data | smbus write byte data | | [ ] | i2c_write_word_data | smbus write word data | | [ ] | i2c_read_byte_data | smbus read byte data | | [ ] | i2c_read_word_data | smbus read word data | | [ ] | i2c_process_call | smbus process call | | [ ] | i2c_write_block_data | smbus write block data | | [ ] | i2c_read_block_data | smbus read block data | | [ ] | i2c_block_process_call | smbus block process call | | [ ] | i2c_write_i2c_block_data | smbus write I2C block data | | [ ] | i2c_read_i2c_block_data | smbus read I2C block data | | [ ] | i2c_read_device | Reads the raw I2C device | | [ ] | i2c_write_device | Writes the raw I2C device | | [ ] | i2c_zip | Performs multiple I2C transactions | | [ ] | bb_i2c_open | Opens GPIO for bit banging I2C | | [ ] | bb_i2c_close | Closes GPIO for bit banging I2C | | [ ] | bb_i2c_zip | Performs multiple bit banged I2C transactions |

| | SPI | | | --- | --- | --- | | [x] | spi_open | Opens a SPI device | | [x] | spi_close | Closes a SPI device | | [ ] | spi_read | Reads bytes from a SPI device | | [ ] | spi_write | Writes bytes to a SPI device | | [x] | spi_xfer | Transfers bytes with a SPI device |

| | SERIAL | | --- | --- | --- | | [x] | serial_open | Opens a serial device (/dev/tty*) | | [x] | serial_close | Closes a serial device | | [x] | serial_write_byte | Writes a byte to a serial device | | [x] | serial_read_byte | Reads a byte from a serial device | | [x] | serial_write | Writes bytes to a serial device | | [x] | serial_read | Reads bytes from a serial device | | [x] | serial_data_available | Returns number of bytes ready to be read |

| | CUSTOM | | | --- | --- | --- | | [ ] | custom_1 | User custom function 1 | | [ ] | custom_2 | User custom function 2 |

| | UTILITIES | | | --- | --- | --- | | [x] | get_current_tick | Get current tick (microseconds) | | [x] | get_hardware_revision | Get hardware revision | | [x] | get_pigpio_version | Get the pigpio version | | [ ] | pigpiod_if_version | Get the pigpiod_if2 version | | [ ] | pigpio_error | Get a text description of an error code. | | [1] | time_sleep | Sleeps for a float number of seconds | | [2] | time_time | Float number of seconds since the epoch |

1: use js setTimeout() instead.

2: use moment() or Date() instead.

API documentation

Thanks

pigpio library and pigpiod Thanks to joan2937 for the development and documentation of the pigpio C library.

pigpio Thanks for fivdi for his work on the pigpio module for Node.js. I used this as the base for my development and got additional development help.

Breaking change

1.0.0

The dht22 call has been switched to an asynchronous implementation, returning a promise.

2.0.0

I have to revert the changes released in 1.0.0, as the async dht22 API works fine in a standalone example, but causes intermittent process hangs in a project using additional API calls.