NEWS
IoBroker und Homematic CCU2
-
Hallo zusammen
Habe mir eben den ioBroker auf eine RasPi3 installiert und die CCU2 und Philips Hue eingebunden. Soweit wirklich super.
Nun stehe ich an, möchte per ping auf iPhone die Anwesenheit prüfen.
Was ich gesehen habe ist, dass per udp/ping auf port 5353 das iPhone geweckt werden kann. (Dies wenn die Haustüre geöffnet wird, Homematic Sensor)
Wie kann ich das script erstellen, dass da klappt, habe da den Einstieg noch nicht
var exec = require('child_process').exec;
function puts(error, stdout, stderr) { sys.puts(stdout) }
exec("hping3 -2 -c 10 -p 5353 -i u1 192.168.xxx.xx4 -q", puts);
Irgendwie läuft das script an, wird jedoch nicht fertig.
Output ist :
17:20:34.413 [info] javascript.0 Start javascript script.js.TEST.Skript1
17:20:34.413 [info] javascript.0 script.js.TEST.Skript1: registered 0 subscriptions and 0 schedules
-
Hallo zusammen
Habe mir eben den ioBroker auf eine RasPi3 installiert und die CCU2 und Philips Hue eingebunden. Soweit wirklich super.
Nun stehe ich an, möchte per ping auf iPhone die Anwesenheit prüfen.
Was ich gesehen habe ist, dass per udp/ping auf port 5353 das iPhone geweckt werden kann. (Dies wenn die Haustüre geöffnet wird, Homematic Sensor)
Wie kann ich das script erstellen, dass da klappt, habe da den Einstieg noch nicht
var exec = require('child_process').exec;
function puts(error, stdout, stderr) { sys.puts(stdout) }
exec("hping3 -2 -c 10 -p 5353 -i u1 192.168.1.144 -q", puts);
Irgendwie läuft das script an, wird jedoch nicht fertig.
Output ist :
17:20:34.413 [info] javascript.0 Start javascript script.js.TEST.Skript1
17:20:34.413 [info] javascript.0 script.js.TEST.Skript1: registered 0 subscriptions and 0 schedules `
Probier mal bitte:
// sudo apt-get update // sudo apt-get install hping3 function wakeIphone() { exec("hping3 -2 -c 10 -p 5353 -i u1 192.168.1.144 -q", function(err, stdout, stderr) { if (err) { log(err); return; } log(stdout) ; }); } wakeIphone();
-
Ich habe das noch mal für mehrere iPhone erweitert:
! ```
// hping3 muss installiert sein. Unter Debian/Unbuntu: ! // sudo apt-get update // sudo apt-get install hping3 ! var listIphones = [ { "name": "Michael", "ip":"172.16.130.114" }, { "name": "Lana", "ip":"172.16.130.171" }, { "name": "Oma", "ip":"172.16.130.180" } ]; ! function wakeIphone(ip) { exec("hping3 -2 -c 10 -p 5353 -i u1 " + ip + " -q", function(err, stdout, stderr) { if (err) { log(err); return; } log(stdout) ; }); } ! function wakeIphones() { for (var i = 0; i < listIphones.length; i++) { wakeIphone(listIphones[i].ip); } } ! // main ! wakeIphones();
! Das Dumme ist nur, das das iPhone darauf nicht anspricht: :mrgreen:
!~~[code]~~hping3 -2 -c 10 -p 5353 -i u1 172.16.130.114 -q HPING 172.16.130.114 (ens160 172.16.130.114): udp mode set, 28 headers + 0 data bytes ! --- 172.16.130.114 hping statistic --- 10 packets transmitted, 0 packets received, 100% packet loss round-trip min/avg/max = 0.0/0.0/0.0 ms[/code]
! Soll der hping/hping3 so funktionieren?
! Wenn das funktioniert erweitere ich das gerne noch um Datenpunkte.[/i] -
Hey besten Dank
Habe das script mal eingefügt und wollte testen. Erhalte jedoch folgende Errors:
07:31:23.161 [info] javascript.0 script.js.TEST.Skript1: Error: Command failed: /bin/sh -c /usr/sbin/hping3 -2 -c 10 -p 5353 -i u1 192.168.xxx.xx3 -q –- 192.168.xxx.xx3 hping statistic --- 10 packets transmitted, 0 packets received, 100% packet loss round-trip min/avg/max = 0.0/0.0/0.0 ms
07:31:23.167 [info] javascript.0 script.js.TEST.Skript1: Error: Command failed: /bin/sh -c /usr/sbin/hping3 -2 -c 10 -p 5353 -i u1 192.168.xxx.xx7 -q –- 192.168.xxx.xx7 hping statistic --- 10 packets transmitted, 0 packets received, 100% packet loss round-trip min/avg/max = 0.0/0.0/0.0 ms
07:31:23.191 [info] javascript.0 script.js.TEST.Skript1: Error: Command failed: /bin/sh -c /usr/sbin/hping3 -2 -c 10 -p 5353 -i u1 192.168.xxx.x4 -q –- 192.168.xxx.xx4 hping statistic --- 10 packets transmitted, 0 packets received, 100% packet loss round-trip min/avg/max = 0.0/0.0/0.0 ms
hping3 ist unter /usr/sbin.
pi@raspberrypi01:~$ sudo hping3 -2 -c 10 -p 5353 -i u1 192.168.xxx.xx4 -q
HPING 192.168.xxx.xx4 (eth0 192.168.xxx.xx4): udp mode set, 28 headers + 0 data bytes
--- 192.168.xxx.xx4 hping statistic ---
10 packets transmitted, 0 packets received, 100% packet loss
round-trip min/avg/max = 0.0/0.0/0.0 MS
function wakeIphone(ip) {
exec("sudo hping3 -2 -c 10 -p 5353 -i u1 " + ip + " -q", function(err, stdout, stderr) {
if (err) {
log(err);
return;
}
log(stdout) ;
});
}
----> Port 62078 wäre noch als Alternative möglich.
-
Hallo zusammen
ich bin gerade am testen und muss sagen das das iphone aufgeweckt wird, also das WLAN. Jedes Mal wenn es in Standby geht ping ich es mir hping an und erhalte ein REPLAY
mein Komando lautet:
hping3 -2 -c 10 -p 5353 -i u1 IPiPhone -q
Sehr interessant.
Den Port 62078 habe ich auch schon getestet, aber da hats nur einmal funktioniet, danach hat das keine Funktion gehabt
-
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();________