Control your wireless power outlet sockets with RCSwitch for the Raspberry Pi
npm install rcswitch-gpiomem3node-rcswitch3
==============

Node bindings for the rcswitch.
This is an extended version of node-rcswitch project and the node-rcswitch2 project.
Comparing to original node-rcswitch it has:
* #9 - Replaced outdated rcswitch-pi dependency with the latest version of rc-switch project
* #11 - Added code receiving bindings
* #13 - Exporting of class instead of already created instance
* __Updated to work with nodejs v10.x.x__ fixing the build error that ocurred
Although the project is now using generic RcSwitch library, it's still intended to be used on Raspberry Pi only.
* Like the C++ version of rcswitch, WiringPi must be installed in order to compile.
* Both the data and the power Pins of the 315/433Mhz emitter must be connected to the RPi. Note the number of the WiringPi data Pin. (see http://wiringpi.com/pins/)
* The node command must be run with root access
``javascript
var RcSwitch = require('rcswitch'); // Might throw an error if wiring pi init failed, or exit process if no root (must work on that)
var rcswitch = new RcSwitch();
rcswitch.enableTransmit(0); // Use data Pin 0 (GPIO 17)
rcswitch.switchOn("10110", 1); // Switch on the first unit of 10110 (code 1x23x) group
rcswitch.switchOff("11000", 2); // Switch off the second unit of 11000 (code 12xxx) group
`
`javascript
var RcSwitch = require('rcswitch'); // Might throw an error if wiring pi init failed, or exit process if no root (must work on that)
var rcswitch = new RcSwitch();
rcswitch.enableReceive(2); // Use data Pin 2 (GPIO 27)
setInterval(function () {
if (rcswitch.available()) { // Check if there is a pending code
console.log(rcswitch.getReceivedValue()); // Read and print the code
rcswitch.resetAvailable(); // Reset available state`
}
}, 500); // Set code checking interval
#### Configuration
##### rcswitch.enableTransmit(pin)
Enable transmission on the given pin (make it an OUTPUT). Must be called before any other functions.
* pin - (Number) data Pin to use following the WiringPi schema
Return true if pin is an integer, false otherwise.
##### rcswitch.disableTransmit()
Disable transmission (set the pin to -1 which disable any following function call).
Return true.
#### Type A
##### rcswitch.switchOn(group, switch)
Switch a remote switch on (Type A with 10 pole DIP switches).
* group - (String) code of the switch group (refers to DIP switches 1, 2, 3, 4 and 5 where "1" = on and "0" = off - e.g. if all DIP switches are on it's "11111")switch
* - (Number) switch number (can be 1 (if DIP switch A is on), 2 (if DIP switch B is on) and so on until 4)
Return true.
##### rcswitch.switchOff(group, switch)
Switch a remote switch off (Type A with 10 pole DIP switches).
* group - (String) code of the switch group (refers to DIP switches 1, 2, 3, 4 and 5 where "1" = on and "0" = off - e.g. if all DIP switches are on it's "11111")switch
* - (Number) switch number (can be 1 (if DIP switch A is on), 2 (if DIP switch B is on) and so on until 4)
Return true.
#### Type B
##### rcswitch.switchOn(group, switch)
Switch a remote switch on (Type B with two rotary/sliding switches).
* group - (Number) group (can be 1, 2, 3, 4)switch
* - (Number) switch (can be 1, 2, 3, 4)
Return true.
##### rcswitch.switchOff(group, switch)
Switch a remote switch off (Type B with two rotary/sliding switches).
* group - (Number) group (can be 1, 2, 3, 4)switch
* - (Number) switch (can be 1, 2, 3, 4)
Return true.
#### Type C
##### rcswitch.switchOn(family, group, switch)
Switch a remote switch on (Type C Intertechno).
* family - (String) familycode (can be a, b, c, d, e, f)group
* - (Number) group (can be 1, 2, 3, 4)switch
* - (Number) switch (can be 1, 2, 3, 4)
Return true.
##### rcswitch.switchOff(family, group, switch)
Switch a remote switch off (Type C Intertechno).
* family - (String) familycode (can be a, b, c, d, e, f)group
* - (Number) group (can be 1, 2, 3, 4)switch
* - (Number) switch (can be 1, 2, 3, 4)
Return true.
#### Other
##### rcswitch.send(code)
Send raw binary string code.
* code - (String) code
Return true.
##### rcswitch.sendTriState(code)
Send tri-state code.
* code - (String) tri-state code
Return true.
This function is useful for eg. micro-electric AS 73 which is also sold as REV Telecontrol in Germany (Version with house code with 6 DIP switches).
This socket has 10 DIP-Switches.
The house code uses the first 6 switches, the receiver code is set by the next 4 switches. For the house code, the switch position OFF is represented by F and switch position ON by 0.
Receiver codes:
Channel Switches 7-10
* 0FFF Channel AF0FF
* Channel BFFF0
* Channel CFF0F
* Channel D
* FF or F0 Button on0F
* Button off
The input string for the function is [homecode][channel][on/off value]
e.g. F000000FFFFF for homecode 100000, Channel A and button on.
#### rcswitch.enableReceive(pin)
Enable receiving on the given pin (make it an INPUT). Must be called before any other functions.
* pin - (Number) data Pin to use following the WiringPi schema
Return true if pin is an integer, false otherwise.
#### rcswitch.disableReceive()
Disable receiving (set the pin to -1 which disable any following function call).
Return true.
#### rcswitch.available()
Check if the code was received.
Return true if there is a pending code, false otherwise.
#### rcswitch.resetAvailable()
Reset available` state to start recognizing of the next code.
Return true.
#### rcswitch.getReceivedValue()
Get the last received code.
Return integer representation of the code.
#### rcswitch.getReceivedBitlength()
Get bit length of the last received code.
Return integer length.
#### rcswitch.getReceivedDelay()
Get delay.
Return integer delay.
#### rcswitch.getReceivedProtocol()
Get protocol.
Return integer protocol.
#### rcswitch.getReceivedRawdata()
Get raw data.
Return array of raw data.