rpi-433-v2

Simple NodeJS module to send and receive decimal codes through 433Mhz device on RaspberryPI 2

Usage no npm install needed!

<script type="module">
  import rpi433V2 from 'https://cdn.skypack.dev/rpi-433-v2';
</script>

README

rpi-433-v2

npm version

NPM

Credits

For my projects I needed to set the protocol. This was not possible in the original version, https://nodei.co/npm/rpi-433/ So all credits go to eroak.

Modifications to the original

  • Protocol can be set
  • Updated the scripts (codesend and RFSniffer) to the latest

Simple NodeJS module to send and receive decimal codes through 433Mhz device on RaspberryPI 2

Dependencies

Building WiringPi

pi@raspberrypi ~ $ git clone git://git.drogon.net/wiringPi
...
pi@raspberrypi ~ $ cd wiringPi/wiringPi
pi@raspberrypi ~/wiringPi/wiringPi $ sudo su
...
root@raspberrypi:/home/pi/wiringPi/wiringPi# ./build

Installation

npm install rpi-433-v2

Usage

Firstly, make sure you are running your application as root or with sudo, else the Raspberry Pi will not let you output/input to the GPIO and you'll get an error.

sudo node myscript.js

Please note that there are different and confusing ways to reference a channel. This module supports wPi schema. Once wiringPi is installed, in your CLI you can run gpio readall and check the wPi column or consult https://projects.drogon.net/raspberry-pi/wiringpi/pins/

gpio readall

Example

var rpi433 = require("rpi-433-v2"),
  rfSniffer = rpi433.sniffer({
    pin: 2, //Snif on GPIO 2 (or Physical PIN 13)
    debounceDelay: 500 //Wait 500ms before reading another code
  }),
  rfEmitter = rpi433.emitter({
    pin: 0, //Send through GPIO 0 (or Physical PIN 11)
    pulseLength: 350, //Send the code with a 350 pulse length
    protocol: 4 //Set the protocol.
  });

// Receive (data is like {code: xxx, pulseLength: xxx})
rfSniffer.on("data", function(data) {
  console.log(
    "Code received: " + data.code + " pulse length : " + data.pulseLength
  );
});

// Send
rfEmitter.sendCode(1234, function(error, stdout) {
  //Send 1234
  if (!error) console.log(stdout); //Should display 1234
});

/* Or :

rfEmitter.sendCode(code);
rfEmitter.sendCode(code, {  //You can overwrite defaults options previously set (only for this sent)
  pin: 2,
  pulseLength: 350
});
rfEmitter.sendCode(code, callback);
rfEmitter.sendCode(code, {
  pin: 2,
  pulseLength: 350
}, callback);
*/

//rpi-433 uses the kriskowal's implementation of Promises so,
//if you prefer Promises, you can also use this syntax :
rfEmitter.sendCode(1234, { pin: 0 }).then(
  function(stdout) {
    console.log("Code sent: ", stdout);
  },
  function(error) {
    console.log("Code was not sent, reason: ", error);
  }
);