22 octubre 2009

Mi jefe no llega a las 8:30

El horario, típico problema de oficina, que normalmente suele ser argumento fácil para criticar a alguien y mas en estos tiempos de nerviosismo y malas caras por culpa de la crisis.

El caso es que mucha gente sigue tratando de aplicar parámetros propios de cadenas de montaje a entornos donde se debería primar los objetivos y el trabajo orientado a resultados, aunque implique picos hacia arriba o hacia abajo.

En cualquier caso, una de las figuras típicas de la oficina es el clásico 'pues yo estoy aquí desde las 8:30 de la mañana' (la hora puede variar, llegando incluso a las 7). Al hilo de todo esto, y como ejercicio mayormente inofensivo se me ocurrió que sería un divertido experimento sociológico hacerme una idea del ritmo de vida que lleva la gente que me rodea, horas de entrada, tiempo de comida, hora de salida ... Y dándole una pensada di con un método fácil de implementar.

La mayoría de móviles relativamente nuevos tienen capacidades de bluetooth y gracias al auge de los manos libres, conexiones 3G y cosas por el estilo, es increíble la enorme cantidad de gente que lleva su bluetooth activado y visible a todo el mundo. Así que después de juguetear un poco con el API bluetooth de Python el resultado ha sido Girlfriend.

Girlfriend permite hacer dos cosas:

Por un lado actúa a modo de 'sonar' barriendo a intervalos cortos la zona de alcance del dispositivo bluetooth y 'logeando' los dispositivos bluetooth que ve y deja de ver (in / out).

La segunda funcionalidad es la que da el nombre al programa, Girlfriend permite asociar la dirección física de un dispositivo bluetooth y, en el momento que ese dispositivo deja de ser visible, bloquea el equipo, permitiendo que el PC quede debidamente bloqueado si salimos a la carrera y no lo hemos bloqueado. (Lorenzo nos dio una clase magistral sobre des-autenticación)

El programa se puede descargar desde aquí y aprovecho para presentar el portal devel de SbD que hemos creado en Code Google donde tenemos la intención de centralizar todas las herramientas desarrolladas y tratar de que aquel que quiera involucrarse, lo pueda hacer de una forma mas cómoda.

Configuración y uso de Girlfriend

Punto uno, hay que identificar la dirección física de nuestro móvil para que actúe a modo de 'master'. Para ello podemos usar la herramienta (incluida en el .rar) inquiry.exe.

Abrimos un cmd.exe y ejecutamos:

D:\Girlfriend>inquiry.exe
performing inquiry...
found 5 devices
00:03:7A:AA:D4:0C - NALVA
00:1C:9A:F8:6C:69 - Risc
00:1C:CC:05:D8:FB - BlackBerry 8310
00:1C:D6:88:B9:07 - Richy
00:1D:FD:74:6A:1C - N82 DAVID

De ellas, una vez localizamos nuestro dispositivo, nos quedamos con la parte de la izquierda, por ejemplo, si mi móvil fuera Risc, el dato que necesito es 00:1C:9A:F8:6C:69

Esa dirección la apuntamos en un fichero con el nombre config.txt que deberá estar en el mismo directorio que Girlfriend.exe

Nota: Es importante que config.txt solo contenga la dirección física del dispositivo, ningun otro caracter (nada de \n o espacios al final)

D:\Girlfriend>type config.txt
00:1C:9A:F8:6C:69

Una vez hecho eso, pasamos a ejecutar Girlfriend.exe (desde un cmd.exe) y podemos probar a apagar el bluetooth de nuestro móvil para comprobar que el equipo queda bloqueado al no encontrarse visible.

Los logs de la actividad que se ha ido detectando se guarda en el fichero bluelog.txt en un formato pseudo-syslog como este:

Wed Oct 21 18:16:52 2009 Nueva Device encontrada 00:1C:CC:05:D8:FB BlackBerry 83
10
Wed Oct 21 18:17:03 2009 Device 00:03:7A:B1:5A:ED fuera de alcance
Wed Oct 21 18:17:12 2009 Nueva Device encontrada 00:03:7A:B1:5A:ED
Wed Oct 21 18:17:14 2009 Nueva Device encontrada 00:1C:CC:9C:D3:12 Magda
Wed Oct 21 18:17:23 2009 Device 00:03:7A:B1:5A:ED fuera de alcance

Yo, ya se quien madruga y quién no, ¿y tu?

11 comments :

primolarry dijo...

Me gusta la idea. Si queréis colaboradores, cuando tenga algo más de tiempo libre (mes y pico) puedo portarlo a linux, por ejemplo.

Saludos

inedit00 dijo...

Python. Me apunto. A mi me pueden poner también a la lista de posibles colaboradores desde ahora ( tengo tiempo libre por las mañanas ). Es un ejercicio excelente para practicar con compañeros de trabajo :)
Estoy con @primolarry de portarlo a linux.

Yago Jesus dijo...

Muchas gracias por ofreceros, hasta donde yo lo valoré, la única parte que no funciona en Linux es el bloqueo de sesión. Para que funcione directamente en Linux habría que cambiar solo esa funcion. En code google, está el src en la parte de downloads

situ dijo...

Muy buen trabajo te paso algunos links asi te pueden ayudar con el tema de la migracion a linux.
Perdon pero no se programar por eso colaboro con los links.

http://www.cesarius.net/blueproximity-bloquea-y-desbloquea-la-pantalla-con-detector-de-presencia-en-ubuntu/

http://javierperez.eu/bloqueo-y-desbloqueo-de-pantalla-por-detector-de-presencia-en-ubuntu-con-bluetooth-aimtooth/

SAludos.

GD dijo...

hey, yo tambien pongo mi granito de arena :

www.linux-magazine.es/issue/31/054-057_PythonLM31.crop.pdf

Anónimo dijo...

Bueno esto esta bien, para bloquear y desbloquear el equipo, pero para saber quien sale de la oficina no le veo muy util. Es muy bacil dejar el dispositivo en la mesa desviar las llamadas a otro terminal y marcharse tranquilamente a desayunar .... je je je.

Un saludo

Anónimo dijo...

Muy interesante pero implicaria dejar el equipo encendido todo el tiempo, cosa que por ejemplo yo no hago. Seria interesante si se implementara en una especie de servidor de entradas y salidas, asociar la mac del telefono con la mac o ip del ordenador del usuario y a ser posible que al perder el contacto, el servidor comprobara mediante mac si el equipo esta encendido y suspenderlo. Es solo una idea...

ruben dijo...

Me ha gustado, muy buena idea!

vierito5 dijo...

En KDE se dispone de KBlueLock para bloquear/desbloquear por presencia.

situ dijo...

Muy buen trabajo te paso algunos links asi te pueden ayudar con el tema de la migracion a linux.
Perdon pero no se programar por eso colaboro con los links.

http://www.cesarius.net/blueproximity-bloquea-y-desbloquea-la-pantalla-con-detector-de-presencia-en-ubuntu/

http://javierperez.eu/bloqueo-y-desbloqueo-de-pantalla-por-detector-de-presencia-en-ubuntu-con-bluetooth-aimtooth/

SAludos.

vierito5 dijo...

En KDE se dispone de KBlueLock para bloquear/desbloquear por presencia.