设置:
注意:每个ESP8266单片机都处理一个MCP9808温度传感器。
的跟进最初,我们认为问题是缺乏管理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);
});
});
});
}