node.js - 如何使用Raspberry PI和Nodejs控制继电器?

标签 node.js raspberry-pi

我正在使用 onoff 模块中的 watch 方法来监视输入的状态,如果输入发生任何变化(从 0 到 1 或从 1 到 0),都会调用回调函数,这就是我想要的。

问题是,当我第一次运行应用程序时,如果 main 打开(inputMain 为 1 )或 main 关闭(inputMain 为 0 ),则不会执行回调函数,因为输入的值没有变化。 因此,如果 main 打开,我无法调用 main() 函数,直到它关闭然后打开,这个问题仅在我第一次运行应用程序时发生。

我该如何解决这个问题?有没有更好的方法来处理继电器?

var GPIO = require('onoff').Gpio,
 inputMain = new GPIO(17,'in','both'),
 inputGen1 = new GPIO(4,'in','both'),
 inputGen2 = new GPIO(27,'in','both'),
 inputGen3 = new GPIO(22,'in','both'),
 outMain = new GPIO(11,'high'),
 outGen1 = new GPIO(15,'high'),
 outGen2P = new GPIO(18,'high'), // Generator 2 power
 outGen2SM = new GPIO(23,'high'), //Generator 2 starting motor
 outGen2 = new GPIO(24,'high'), // Generator 2 contactor
 outGen3P = new GPIO(25,'high'),
 outGen3SM = new GPIO(8,'high'),
 outGen3 = new GPIO(7,'high'),
 objects =[outMain,outGen1,outGen2P,outGen2SM,outGen2,outGen3P,outGen3SM,outGen3];

//检查是否有主电源,这是所有其他电源的引用

 inputMain.watch(function(err,state){
   if (state)
      main(1);
  });

//切换到主接触器

function main (arg) {
 console.log('test');
 if (arg == 1) {
 value = [0,1,1,1,1,1,1,1];}
 else {
 value = [0,0,0,0,0,0,0,0];
 }
 out(value);

}

//根据数组的值打开所有继电器...

function out(value) {

  for ( var i = 0; i< value.length; i++) {

    if (value[i] == 0 )  {
        var a = objects[i];
    } else {

         objects[i].writeSync(value[i]);
    }
 }
    setTimeout(function() {
    a.writeSync(0);
    },5000);
}

最佳答案

恐怕您需要为此调用 read 或 readSync。

...
outGen3SM = new GPIO(8,'high'),
outGen3 = new GPIO(7,'high'),
objects =[outMain,outGen1,outGen2P,outGen2SM,outGen2,outGen3P,outGen3SM,outGen3];
//Forces the first output update
main(inputMain.readSync());

关于node.js - 如何使用Raspberry PI和Nodejs控制继电器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31395820/

相关文章:

Raspberry Pi 上的 C++ 计时库

python - 需要一个解决方案 urllib2

node.js - Mongoose 选择与填充不起作用

node.js - Node.js 和 Kakashi 中的日语音译

javascript - 实时显示所有当前访客光标

raspberry-pi - 无法禁用 systemd serial-getty 服务

java - 为什么我的预编译二进制文件在 yocto 中发生变化?

javascript - Node JS 多个并发请求到后端 API

node.js - 更新数组mongodb中的多个元素

linux - 为 Raspberry Pi 定制内核