Bin einen Schritt weiter, lösche den arp Eintrag mit arp -d IP, wecke dann das iPhone und pinge 20x. Danach den arp cache auslesen und die mac Adresse ist wieder drin, wenn iPhone Antwort gegeben hat.
Wie kann ich nun den arp cache prüfen, ob die aus dem Array drin ist ? –> function checkArpEntry(), dann eine CCU2 Systemvariable setzen und das script noch ausführen, wenn ein Homematic Fensterkontakt an der Türe anspricht.
🙂
var listIphones = [
{
"name": "user1",
"ip":"192.168.xxx.xx4",
"mac":"c0:1a:xx:xx:xx:xx"
},
{
"name": "user2",
"ip":"192.168.xxx.xx3",
"mac":"f0:dc:xx:xx:xx:xx"
},
{
"name": "user3",
"ip":"192.168.xxx.xx0",
"mac":"d8:bb:xx:xx:xx:xx"
}
];
function wakeIphone(ip) {
exec("sudo hping3 -2 -c 15 -p 5353 " + ip + " -q", function(err, stdout, stderr) {
if (err) {
log(err);
return;
}
//log(stdout) ;
});
}
function pingIphone(ip) {
exec("sudo ping " + ip + " -c 20 -i 0.5", function(err, stdout, stderr) {
if (err) {
log(err);
return;
}
log(stdout) ;
});
}
function deleteArpEntry(ip) {
exec("sudo arp -d " + ip, function(err, stdout, stderr) {
if (err) {
log(err);
return;
}
//log(stdout) ;
});
}
function checkArpEntry(ip) {
exec("sudo arp -a", function(err, stdout, stderr) {
if (err) {
log(err);
return;
}
log(stdout) ;
// mac in arp table ??
});
}
function checkPresence() {
for (var i = 0; i < listIphones.length; i++) {
deleteArpEntry(listIphones__.ip); //arp table, delete mac from iphone
wakeIphone(listIphones__.ip);
pingIphone(listIphones__.ip);
checkArpEntry(__.ip); //arp table, check mac from iphone
}
}
// main
checkPresence();________