¿Cómo puedo hacer que mi Raspberry Pi busque continuamente una dirección MAC en mi red y luego realice una tarea cuando detecta una dirección MAC específica?
Yo uso mi Pi para ejecutar varias tareas de automatización del hogar. Me gustaría que realizara una tarea cuando detecte que mi teléfono se conecta al Wi-Fi, (lo que significa que acabo de llegar a casa). ¿Cuál es la mejor manera de hacer que el Pi escanee continuamente la dirección MAC de mi teléfono? Sé que puedo usar arp-scan
para escanear direcciones MAC, pero necesito que esto esté escaneando continuamente. Estoy seguro de que hay un mejor método que arp-scan
ejecutarlo en un bucle o usar cron para que se ejecute cada minuto.
wifi
home-automation
gsears
fuente
fuente
Respuestas:
Teléfono de casa
Mi teléfono actúa de manera diferente, ya que todos los teléfonos tienen alguna diferencia. Una respuesta de ping solo ocurre si el teléfono está despierto. Si se reinicia el Pi y el teléfono está en modo de suspensión, múltiples pings colocarán sus direcciones IP y Mac en la tabla arp, con una pérdida de paquetes del 100%. Acabo de enterarme de que el
arp
comando está obsoleto,ip neighbor
se usa ahora.Después de la prueba, mi solución sería tener dos bucles dentro de un bucle para siempre. el primer bucle interno sería hacer un ping en un rango de direcciones IP, varias veces, que sería posible para mi teléfono. Mi enrutador ha reservado la primera dirección IP 19 y es posible que tenga aproximadamente media docena de direcciones que DHCP asignará, incluido mi teléfono, a partir de la dirección 192.168.0.20. Haré ping una docena de direcciones IP una vez, en modo de fondo, esperaré un segundo para recibir una respuesta y arrojaré los resultados como basura. Esperaré ocho segundos en la tabla arp, y ejecutaré el
ip neighbor
comando, grep la dirección mac para la dirección ip. El enrutador y el teléfono mantendrán esta misma dirección IP a menos que ocurra algo inusual. La tabla ARP permanecerá en el Pi, pero va a cambiar los estados deREACHABLE
,STALE
yFAILED
desde hace ping y el tiempo.El segundo bucle interno hará ping y verificará la tabla arp cada cinco minutos para determinar si el teléfono está en casa. Con tres ping 'FALLIDOS' seguidos, el teléfono no está en casa. Un 'REACHABLE', cuando el teléfono no está en casa, hará que el teléfono regrese a casa (haga algo). Hay verificaciones para validar la dirección IP y volver al primer bucle interno si se requieren correcciones.
fuente
¿Por qué no agregar una reserva a la dirección IP de su teléfono / s y simplemente hacer un ping a través de un trabajo cron cada pocos minutos?
Lo logro en mi rpi usando fhem , tiene un módulo de detección de presencia incorporado que me permite establecer estados residentes que se pueden consultar para influir en las tareas de automatización del hogar.
fuente