NEWS
Управление GPIO
-
пример рабочего скрипта
var gpio = require("gpio");
var gpioSensDoor = 87;
var gpioRelLamp1 = 88;
var gpioSensMotion = 89;
var gpioRelLamp2 = 94;
createState('SensDoor','',{type:'boolean',role:'indicator.state',read:true});
createState('RelLamp1','',{type:'boolean',role:'indicator.state',read:true});
createState('RelLamp2','',{type:'boolean',role:'indicator.state',read:true});
createState('SensMotionVestibul','',{type:'boolean',role:'indicator.state',read:true});
// Calling export with a pin number will export that header and return a gpio header instance
var gpio87 = gpio.export(gpioSensDoor, {
// When you export a pin, the default direction is out. This allows you to set
// the pin value to either LOW or HIGH (3.3V) from your program.
direction: 'in',
// set the time interval (ms) between each read when watching for value changes
// note: this is default to 100, setting value too low will cause high CPU usage
interval: 100,
// Due to the asynchronous nature of exporting a header, you may not be able to
// read or write to the header right away. Place your logic in this ready
// function to guarantee everything will get fired properly
ready: function() {
}
});
var gpio88 = gpio.export(gpioRelLamp1, {
direction: 'out',
ready: function() {
}
});
var gpio89 = gpio.export(gpioSensMotion, {
direction: 'in',
ready: function() {
}
});
var gpio94 = gpio.export(gpioRelLamp2, {
direction: 'out',
ready: function() {
}
});
// bind to the "change" event
gpio87.on("change", function(val) {
// value will report either 1 or 0 (number) when the value changes
if ( val == 1 ) {
setState('SensDoor', true, true);
} else {
setState('SensDoor', false, true);
}
});
gpio89.on("change", function(val) {
// value will report either 1 or 0 (number) when the value changes
if ( val == 1 ) {
setState('SensMotionVestibul', true, true);
} else {
setState('SensMotionVestibul', false, true);
}
});
on("RelLamp1", function (obj) {
if ( obj.newState.val == 1 ) {
gpio88.set();
} else {
gpio88.set(0);
}
});
on("RelLamp2", function (obj) {
if ( obj.newState.val == 1 ) {
gpio94.set();
} else {
gpio94.set(0);
}
});
-
Управление gpio это хорошо, но может плату укажите какой управляете?
-
Угу, а еще желательно от какого пользователя работает IOBroker, и если не от root, то как организовали доступ пользователю к параметрам GPIO.
-
сечас работает на ODROID X2 и C1+, раньше запускал на Raspberry PI2, Cubieboard. работает от user(не root).
нужно добавить user в группу gpio