我正在开发我的第一个Node-App,我想连接两个Raspberrys然后控制它们。像打开和关闭运动检测器或启动网络摄像头一样。
我环顾四周,看到人们提到将Raspberry制作成Web服务器,然后连接它。
但我真的不明白它是如何工作的。
所以任何人都可以告诉我我如何找到设备(pi是连接到WLAN并具有静态IP)通过Node-App ,例如有搜索功能的左右?
并且我可以使用一个应用程序控制多个Raspberry 并且同时在两个设备上进行设置吗?
答案 0 :(得分:0)
要获得你的IP,你可以使用这样的东西
'use strict';
var os = require('os');
var ifaces = os.networkInterfaces();
Object.keys(ifaces)
.forEach(function (ifname) {
var alias = 0;
ifaces[ifname].forEach(function (iface) {
if ('IPv4' !== iface.family || iface.internal !== false) {
// skip over internal (i.e. 127.0.0.1) and non-ipv4 addresses
return;
}
if (alias >= 1) {
// this single interface has multiple ipv4 addresses
console.log(ifname + ':' + alias, iface.address);
} else {
// this interface has only one ipv4 adress
console.log(ifname, iface.address);
}
++alias;
});
});
在我的案例中输出以下内容
VirtualBox Host-Only Network 192.168.56.1
Ethernet 192.168.0.101
以太网就是你想要的简单地提取字符串的ip部分
现在你需要这部分ip 192.168.0.
var ping = require ("net-ping");
var ipString = '192.168.0.';
var i = 1;
var session = ping.createSession();
doPing()
function doPing() {
if (i > 254) return;
var ip = ipString + i;
i++;
session.pingHost (ipString + i, function (error, target) {
if (error){
if (error instanceof ping.RequestTimedOutError){
console.log (target + ": Not alive");
doPing();
}
else{
console.log (target + ": " + error.toString ());
doPing();
}
} else {
console.log (target + ": Alive");
doPing();
}
});
}
现在您知道所有响应ping的设备,因此您可以使用request
模块尝试连接到Web服务器,如果设备上有任何正在运行的话。
每次ping需要一两秒钟,所以请耐心等待。
这远非完美,但应该有效。 我希望它有所帮助