@stheine/pigpiod
v2.0.3
Published
node.js interface for pigpiod
Downloads
2
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.