Tôi vừa trải qua một tuần đánh bại vấn đề này vì vậy tôi có thể không gửi tin nhắn SMS đến nhà của tôi khi cô ấy ở nơi làm việc.
Ping sẽ không hoạt động vì iPhone sẽ không phản hồi ICMP khi ngủ. Đọc bộ nhớ cache ARP sẽ không hoạt động vì iPhone đang ngủ sẽ đến và đi (kiểm tra mỗi 30 giây trong vài phút). Cách duy nhất tôi tìm thấy là 'đáng tin cậy' xác định khi nào hai chiếc iPhone của tôi trên mạng cục bộ của tôi là sử dụng thư viện PCAP dotnet để tìm bất kỳ gói nào có nguồn gốc từ một trong hai địa chỉ MAC của điện thoại. Ví dụ: nếu bạn chạy Wireshark bằng bộ lọc chụp
ether src <iphone-mac-address>
bạn sẽ thấy một lượng đáng ngạc nhiên lưu lượng truy cập/phát hiện mạng từ điện thoại. Nó vẫn còn trạng thái yên tĩnh, nhưng cho đến nay khoảng thời gian dài nhất tôi đã thấy giữa các gói bị bắt là khoảng 10 phút. Bạn sẽ phải đợi cho đến khi bạn không nghe thấy từ điện thoại trong một khoảng thời gian nào đó (tôi sử dụng 15 phút) trước khi tuyên bố nó không có ở nhà.
Với kỹ thuật này, bạn sẽ tìm thấy điện thoại một cách nhanh chóng khi nó gia nhập lại mạng gia đình, giả định rằng điện thoại của bạn được cấu hình cho DHCP. Tôi cũng sử dụng tính năng phản chiếu cổng trên công tắc Ethernet chính của mình để bao gồm lưu lượng truy cập từ các điểm truy cập không dây của tôi.
Tôi không có giải pháp Raspberry Pi cho điều này, bởi vì chuyên môn về Linux của tôi rất hạn chế, nhưng một người khác có thể giúp bạn theo những dòng đó. Tôi có một dịch vụ Windows sử dụng thư viện PCAP và cho đến nay nó hoạt động đáng tin cậy, với giới hạn chờ đợi 15 phút trước khi quyết định một chiếc iPhone đã rời khỏi mạng.
* cập nhật 2-3-2018 *
Tôi có thuật toán phát hiện này xuống còn khoảng 5 phút, sử dụng kết hợp các thông điệp ping/arp hướng đến mỗi điện thoại, khoảng một lần mỗi phút. Dường như làm việc tuyệt vời.
Tôi đã từ bỏ việc này và hiện đang sử dụng bluetooth để kiểm tra thường xuyên nếu iPhone của tôi nằm trong phạm vi phủ sóng. – PiEnthusiast
Trong trường hợp ai đó bắt gặp điều này và tự hỏi tôi làm gì để phát hiện sự hiện diện bằng cách sử dụng bluetooth: Tôi cố gắng giải quyết tên của địa chỉ thiết bị (đã biết) của tôi ('sudo hcitool name xx: xx: xx: xx: xx: xx'). Nếu tôi nhận được phản hồi hợp lệ, điện thoại nằm trong phạm vi BT. – PiEnthusiast