НАСТРОЙКА:
- 2 ESP8266 Микроконтроллеры
- 2 MCP9808 Температурные датчики
- 1 Машина, управляющая обоими ESP с помощью Johnny-Five.
Примечание. Каждый микроконтроллер ESP8266 работает с одним датчиком температуры MCP9808.
Это продолжение Этот вопрос
Первоначально мы думали, что проблема заключается в отсутствии управления адресацией I2C. Но, как мудро указывает Джон Ромки , у нас есть только один датчик на контроллер, предполагая, что адресация I2C здесь не проблема.
ПРОБЛЕМА:
В приведенном ниже коде мы можем создать несколько плат, без проблем, каждая плата с соответствующим датчиком.
И мы можем создать два независимых объекта J5 ThisThermometer
.
Но оба объекта ThisThermometer
возвращают показания контроллера / датчика "A", игнорируя контроллер / датчик "B"
ВОПРОС:
Есть ли что-то, что мы можем добавить к опциям в new five.Thermometer()
(т.е. ThermOps
), который скажет J5 связать ThisThermometer
объекты с их соответствующими досками?
Большой вопрос: как обрабатывать 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);
});
});
});
}