У мене було два рішення, якими я користувався. (Пітон)
Рішення 1
Спочатку було скласти відомі ipnumbers, які я хочу відстежити. Я зробив це в три кроки. 1 # використовуйте "-c1", щоб надіслати лише один ping. Якщо пристрій активний, він відповість і. Функція завершиться з успіхом. 2 # використання "-c3" тепер надасть їй більше часу для відповіді на один із трьох. Зазвичай цього достатньо, коли це поганий сигнал Wi-Fi. 3 # використання "-c10" це може знадобитися, коли це дійсно поганий сигнал Wi-Fi. (Помітив, що старий iPad потребує приблизно 10 спроб відповісти) Для прискорення речей я створив окремі процеси для кожного ip-номера, який я хочу відстежувати.
Я також змінив інтервали пінгвінгу залежно від успіху чи ні. Якщо він знайде пристрій, він буде чекати довше, поки він ще раз перевірить. Якщо це невдача, вона спробує знову через 60 секунд. (Я хочу, щоб світло ввімкнуло, коли я заходжу додому), тому 60-х вистачає, щоб знайти мене на вулиці
Це спрацювало чудово! Коли я повернувся додому, він відчув мене і вимкнув світло, і вимкнув, коли я пішов.
Рішення 2
Арпінг може бути не надто важким у мережі, але я змінив рішення, щоб пропустити всі пінг-файли і створив власний сервер DHCP на своєму малиновому пі.
Потім я додав "на фіксацію", який запускає сценарій, як тільки пристрій отримує ipnumber. Цей скрипт використовує "завиток http виклику API", щоб сповістити мій www-сервер (колбу), як тільки пристрій отримає або оновить його ipnumber.
На своєму Android я змінив налаштування, щоб ніколи не вимикати Wi-Fi, коли екран вимкнено. Не впевнений, чи можливо це на iPhone. Немає великої різниці в акумуляторі (OnePlus 5)
Перше рішення також включало сканування Bluetooth для конкретного Mac. Тож навіть якщо мій WiFi вимкнено на моєму телефоні, він все одно відчує Bluetooth. Використовуючи Mac-адресу, не потрібно її з'єднувати або мати доступну для всіх.