我剛剛在這個問題上花了一個星期的時間,所以當她在工作時,我可以避免發送短信給家裏的鬧鐘。
Ping不起作用,因爲iPhone睡覺時不會響應ICMP。讀取ARP緩存將不起作用,因爲睡眠的iPhone會來來去去(每隔30秒檢查一次)。
我發現'可靠'確定我的兩個iPhone在我的本地(家庭)網絡上的唯一方法是使用PCAP網點庫查找任何來自任一電話的MAC地址的數據包。例如,如果您使用捕獲過濾器運行Wireshark
ether src <iphone-mac-address>
您將看到令人驚訝的來自手機的網絡發現/通告流量。它仍然處於靜止狀態,但到目前爲止,我所見到的捕獲數據包之間的最長時間間隔大約爲10分鐘。在聲明不在家之前,您需要等一段時間(我用15分鐘)才能聽到電話。
使用此技術,假設您的電話配置爲DHCP,您將在重新加入家庭網絡時快速找到電話。我還在我的主要以太網交換機上使用端口鏡像,以包含來自我的無線接入點的流量。
我沒有Raspberry Pi解決方案,因爲我的linux專業知識非常有限,但其他人可能能夠幫助您沿着這些路線。我有一個使用PCAP庫的Windows服務,迄今爲止它的工作可靠,限制等待15分鐘,然後決定iPhone離開網絡。
*更新2018年2月3日*
我有這樣的檢測算法下降到約5分鐘,使用每分鐘針對每個電話,約一次平/ ARP消息的組合。似乎很好。
我已經放棄了這個,現在我正在使用藍牙來定期檢查我的iPhone是否在範圍內。 – PiEnthusiast
如果有人遇到這種情況,並想知道我在做什麼來檢測使用藍牙的存在: 我嘗試解析我的(已知)設備地址的名稱('sudo hcitool名稱xx:xx:xx:xx:xx: xx')。如果我得到有效的回覆,手機在BT範圍內。 – PiEnthusiast