Yo y algunos amigos míos he estado desarrollando un escáner bluetooth-proximidad a abrir la cerradura de la puerta principal de nuestra hackerspace .
Hemos emparejado todos los dispositivos permitidos y esencialmente los hemos utilizado hcitool
para probar si uno de los dispositivos emparejados está cerca. Como ejemplo, si el dispositivo emparejado tiene la dirección "00: 00: 00: 00: 00: 00", lo haría en la consola de línea de comandos:
hcitool cc 00:00:00:00:00:00 && hcitool auth 00:00:00:00:00:00 && hcitool dc 00:00:00:00:00:00;
Si esto devuelve cero, el dispositivo está cerca.
Una desventaja es que esto tomará ~ 5 segundos para el tiempo de espera si el dispositivo no está cerca.
Hemos publicado el código fuente en Github bajo la licencia de código abierto de apache.
hcitool ...
. Sin embargo, debe encadenar los comandos como en el ejemplo anterior. La conexión solo está activa durante un período de tiempo muy corto. Puede agregar proximidad a la mezcla haciendohcitool rssi ...
.He visto algunas configuraciones que usan bluetooth para casos de uso similares, pero probablemente implicará algún pirateo. Los teléfonos que desea detectar generalmente no están en modo reconocible.
Si los teléfonos usan wifi, probablemente pueda detectar cierta proximidad, pero esto probablemente también significará que tendrá que buscarlos en una capa bastante baja, ya que no accederán a su antena wifi y probablemente se conectarán encriptados. Eche un vistazo a kismet para obtener una bonanza inalámbrica de bajo nivel.
Sin embargo, supongo que la forma más fácil de detectar si alguien está en una habitación o no es utilizar el módulo de la cámara y un espejo panorámico.
fuente
Si tiene una red WiFi a la que se conectan cuando están en la oficina, puede hacer que el PI busque direcciones MAC cada x períodos de tiempo y actualice una página web (dropbox, lo que sea) con el estado actual. Probablemente la ruta más confiable.
Es posible que pueda hacer algo con bluetooth y un adaptador USB Bluetooth, pero no tengo experiencia con eso.
Sin ellos conectados a la pi, o la red en la que está conectada la pi, no creo que tenga mucho éxito.
fuente
Leer las respuestas anteriores también me llevó a pensar en la siguiente posibilidad:
use airmon-ng para escanear continuamente la red en busca de dispositivos cliente en wifi. La salida se puede escribir en un archivo, por lo que si el archivo cambia, un cliente ha ingresado o ha salido del rango de pi. Tener una lista de direcciones mac conocidas le permite identificar al usuario y, debido al cambio de archivo, podría desencadenar algunas acciones ...
¡Es una idea bastante interesante! ¡Gracias!
Arjen
fuente
Mientras todos los dispositivos estén en la misma red, puede usar fácilmente una Raspberry Pi para hacer esto. Aquí hay un proyecto completo con todo el código que necesita ...
http://www.element14.com/community/people/mcollinge/blog/2014/09/12/raspberry-pi-network-spy--part-1
fuente
Así que he estado trabajando en el mismo tema durante aproximadamente un año. Lo hice funcionar en mi Mac con bastante rapidez, pero tuve muchos problemas para que funcione correctamente en mi PC. He intentado muchos enfoques diferentes. Tengo un sistema de automatización del hogar que enciende la calefacción y el agua caliente (a través de un módulo arduino y RF) cuando yo o mi compañero estamos en casa (es decir, nuestros iPhones son detectables en el WiFi de la casa). Al final, utilicé 'nslookup' para encontrar la dirección IP de los iPhone (en caso de que la dirección IP haya cambiado ya que son dinámicos (pero en realidad nunca lo hacen en mi enrutador)) y 'nmap' para detectar si el iPhone está encendido la red Si el iPhone está en reposo profundo, 'nmap' no siempre encuentra el teléfono, por lo que lo he comprobado 10 veces antes de que diga que el teléfono no está en casa. A continuación se muestra parte de mi código de automatización del hogar en Python. He usado hilos. Cualquier pregunta con el siguiente código, hágamelo saber.
y
y el código principal
Es posible que el código no funcione si lo copia directamente en su propio script, ya que faltan algunas partes que no he copiado para tratar de mantener las cosas simples y fáciles de leer, pero espero que el código anterior les dé a todos una idea de cómo lo hice cosas.
fuente