如何获取Johnny-Five的“温度计” API来处理2个温度传感器

时间:2019-05-16 02:35:13

标签: node.js iot esp8266 i2c johnny-five

设置:

  • 2个ESP8266微处理器
  • 2个MCP9808温度传感器
  • 1使用Johnny-Five控制两个ESP的机器。

注意:每个ESP8266单片机都处理一个MCP9808温度传感器。

这是对This question

的跟进

最初,我们认为问题是缺乏管理I2C寻址的问题。但正如John Romkey明智地指出的那样,每个控制器只有一个传感器,这表明I2C寻址不是问题。

问题:

在下面的代码中,我们可以毫无问题地创建多个板,每个板及其关联的传感器。 我们可以创建两个独立的J5 ThisThermometer对象。 但是,两个ThisThermometer对象都返回了控制器/传感器“ A”的读数,而忽略了控制器/传感器“ B”

问题:

new five.Thermometer()(即ThermOps)下的选项中是否可以添加一些内容,这些内容将告诉J5将ThisThermometer对象与各自的Board关联起来?

更大的问题:如何在一个脚本下处理2个微控制器/温度计配对?

代码:

var five = require("johnny-five");
var {EtherPortClient}=require("etherport-client");
var Setups=[
    {id:"A", Ip:"192.168.1.101"},
    {id:"B", Ip:"192.168.1.102"}
];
InitSetups();

function InitSetups(){
    var Envs;
    Envs=[];
    Setups.forEach(function(ThisSetup, ThermometerCount){
        Envs.push({
            id:ThisSetup.Id,
            port: new EtherPortClient({
                host: ThisSetup.Ip,
                port: 3030
            }),
            repl: false
        });
    });
    new five.Boards(Envs).on("ready", function(){
        this.each(function(ThisBoard){
            var ThisThermometer, ThermOps;
            ThermOps={id:ThisBoard.id, controller:"MCP9808"};
            ThisThermometer=new five.Thermometer(ThermOps);
            //****2 Thermometer instances, but no way to associate with their respective boards.
            ThisThermometer.on("change", function(){
                console.log(this.id, this.fahrenheit);
            });
        });
    });
}

0 个答案:

没有答案