A set of node-red nodes for using Johnny-Five and IO plugins

Usage no npm install needed!

<script type="module">
  import nodeRedContribGpio from '';



A set of input and output nodes for controlling General Purpose Input and Outputs (GPIOs) though the use of Johnny-Five I/O Plugins as well as running Johnny-Five scripts!

  • Support for NodeJS 12 and serialport 8.
  • Johnny-Five 1.3

Install via Node-RED Palette Manager

Search for node-red-contrib-gpio

Install via NPM

From inside your node-red directory:

npm install node-red-contrib-gpio

Control I/O for Analog, Digital, PWM and Servos

input output

Read and Write I2C devices


Full Johnny-Five script support!


Supported Hardware

node-red-contrib-gpio supports several Johnny-Five I/O classes:

Device IO Plugin
Arduino/Firmata firmata
Raspberry Pi raspi-io
BeagleBone Black, Green, Pocket beaglebone-io
C.H.I.P. chip-io
Galileo/Edison galileo-io
Blend Micro blend-micro-io
LightBlue Bean bean-io
ble-io(esp32, curie) ble-io
Circuit Playground(classic) playground-io
Electirc Imp imp-io
Particle(Spark) Core particle-io
Odroid C2 odroid-io

Arduino is supported out of the box, but for other devices, you'll need to install their IO plugin.

For example to install the Raspberry Pi plugin:

npm install raspi-io

How to use

Please see the embedded examples.


Remote Arduino Support

If you're using Arduino/Firmata, you can connect to a remote device via a raw tcp socket, or an MQTT connection.

For example, if you wanted to connect using tcp, in node-red you could specify an ip and port. On another machine with an Arduino plugged in you could run a server that relays a tcp socket to a serial port such as: tcpSerialRelay.js

If you wanted to connect an Arduino to an MQTT server you can use a script such as: bindSerialToMQTT.js. In node-red you can connect to the same MQTT server and subscribe to the topic the arduino is publishing on, while publishing to the topic that the arduino is subscribed to.