Closed paulish closed 7 years ago
Sorry, my fault: wiringPiSetupSys can be called as non-root.
Please close this issue.
I was having some trouble getting it working in non-root mode as well. Based on the docs. I eventually realized I had overlooked ensuring that "the GPIO pins have been exported before-hand using gpio program."
Here's code for non-root
/*
Pins:
black wire = header 6 = ground
orange wire = header 11 = wpi 0 = BCM 17
yellow = header 13 = wpi 2
red = header 15 = wpi 3
*/
// Setup GPIO pins...
var exec = require('child_process').exec;
var cmd = 'gpio export 0 in && gpio export 2 in && gpio export 3 in';
exec(cmd, function(error, stdout, stderr) {
// command output is in stdout
//console.log(error);
console.log(stdout);
console.log(stderr);
});
var wpi = require('wiring-pi');
wpi.setup('sys');
var pin = 17; // header 11 or wpi 0 as entered to gpio utility
wpi.pinMode(pin, wpi.INPUT);
wpi.pullUpDnControl(pin, wpi.PUD_UP)
var value = wpi.digitalRead(pin);
console.log("The pin state was: " + value);
edit: err... well the wpi code should actually be placed within that system call function to ensure it occurs sequentially, but the above provides the gist without having to store the export pins as a separate configuration in your system orchestration software.
The documentation states that
wiringPiISR method can be called as non root
At the same time a call to this method fails until setup() which in its turn requires root privileges. wiringPiSetup and friends have this in the documentation and my own tests shows that this is true.
So how to be if running the node as root is not an option? And what is the benefit in allowing to call wiringPiISR as non root if it requires initialization as root?