Miałem dwa rozwiązania, z których korzystałem. (Pyton)
Rozwiązanie 1
Pierwszym było zbieranie znanych numerów IP, które chcę śledzić. Zrobiłem to w trzech krokach. 1 # użyj „-c1”, aby wysłać tylko jeden ping. Jeśli urządzenie jest aktywne, odpowie i. Funkcja zakończy działanie z sukcesem 2 # użyj „-c3”, teraz daje więcej czasu na odpowiedź na jedną z trzech. Zazwyczaj wystarcza to, gdy jest słaby sygnał Wi-Fi. 3 # użyj „-c10”, może to być potrzebne, gdy jest to naprawdę zły sygnał Wi-Fi. (Zauważyłem, że stary iPad potrzebuje około 10 prób odpowiedzi) Aby przyspieszyć rzeczy, stworzyłem osobne procesy dla każdego numeru ip, który chcę śledzić.
Zmieniłem również interwały pingowania w zależności od tego, czy to sukces, czy nie. Jeśli znajdzie urządzenie, będzie czekać dłużej, aż sprawdzi ponownie. W przypadku niepowodzenia spróbuje ponownie za 60 sekund. (Chcę zapalić światło, kiedy wchodzę do domu), więc lata 60. wystarczą, by znaleźć mnie na ulicy
To działało idealnie! Kiedy wróciłem do domu, wyczułem mnie, zgasiłem światło i zgasłem, kiedy wyszedłem.
Rozwiązanie 2
Arping może nie być ciężki w sieci, ale zmieniłem rozwiązanie, aby pominąć wszystkie pingi i utworzyłem własny serwer DHCP na moim Raspberry Pi.
Następnie dodałem „przy zatwierdzeniu”, który uruchamia skrypt, gdy tylko urządzenie otrzyma numer ip. Ten skrypt używa „curl http API API”, aby powiadomić mój serwer www (Flask), gdy tylko urządzenie otrzyma lub odnowi swój numer ip.
Na moim Androidzie zmieniłem ustawienia, aby nigdy nie wyłączać Wi-Fi, gdy ekran jest wyłączony. Nie jestem pewien, czy jest to możliwe na iPhonie. Bez dużej różnicy na baterii (OnePlus 5)
Pierwsze rozwiązanie obejmowało również skanowanie Bluetooth dla konkretnego komputera Mac. Więc nawet jeśli moje Wi-Fi jest wyłączone w moim telefonie, nadal wykrywa Bluetooth. Używanie adresu Mac nie wymaga parowania ani udostępniania go wszystkim.