En la oficina soy la comidilla de todos los días gracias a mi script para bloquear y desbloquear la pantalla, cuando me alejo o me acerco a mi puesto, respectivamente. Me tildan de friki, los muy microsofteros ;) Ha tenido tanto éxito, que he decidido compartirlo con mis lectores.
La idea es la siguiente: el PC busca cada n segundos mi terminal móvil con bluetooth, si lo encuentra mide la distancia desde el PC a mi móvil (en realidad detecta la calidad del enlace, lo que podemos transformar en distancia) , y si mi móvil está dentro de la distancia estipulada, se considera como presencia, y si no, como no presencia. Si la pantalla está activada y detecta no presencia, entonces bloquea la pantalla, y si detecta presencia y la pantalla está bloqueada, la desbloquea.
Pensaba que la batería de mi móvil se resentiría demasiado por tener todo el día activado el bluetooth, pero lo cierto es que apenas aprecio diferencia alguna (Sonyericsson W800i).
aimtooth
El script lo hice en bash, y es bastante rudimentario, aunque ya estoy preparando un script mejor logrado en Python (FUD gratuito: odio Perl, viva Python) usando la PyBluez.
La configuración es bien sencilla, primero buscamos el id y el nombre de nuestro móvil con hcitool:
$ hcitool scan 00:00:00:00:00:00 Tux Movil
Si ves un listado enorme, mira en tu móvil qué nombre tienes puesto para bluetooth.
El id (00:00:00:00:00:00) hay que ponerlo en la variable ID, y el nombre (Tux Movil) en la variable NAME, dentro del script:
ID="00:00:00:00:00:00" NAME="Tux Movil"
Lo siguiente será establecer las variables ON_CONNECT y ON_DISCONNECT, donde pondremos la sentencia a ejecutar cuando el script detecte presencia (después de haber detectado no presencia), y cuando detecte no presencia, respectivamente:
ON_CONNECT="sudo -u tux gnome-screensaver-command --deactivate" ON_DISCONNECT="sudo -u tux gnome-screensaver-command --lock"
Eso es para desbloquear y bloquear el salvapantallas de Gnome con el usuario tux. Usamos sudo ya que el script se debe ejecutar como root. Desconozco los comandos para bloquear y desbloquear la pantalla en KDE, pero no será muy distinto.
Por último, sólo nos queda ejecutar el script:
$ sudo ./aimtooth
Y si lo queremos en modo demonio:
$ sudo ./aimtooth >/dev/null &
Podéis hacer también que suene algún tema musical al salir o entrar (en mi oficina suena Carmina Burana cada vez que entro), que os diga “bienvenido señor Martínez” (con festival), o qué se yo… dejad volar la imaginación ;)
El código original se perdió en una migración de servidor, pero he conseguido recuperar esta versión, algo más reducida, desde la web de Ubuntu en Español:
#!/bin/bash
export INTERFACE="6H:A8:84:4B:54:F6"
while true; do
hcitool cc ${INTERFACE}
sleep 1
Signal="`hcitool lq ${INTERFACE}`"
echo $Signal
if [ "${Signal##*: }" -lt 240 ]; then
echo "Baja señal"
sudo -u scorpyo gnome-screensaver-command --lock
else
if [ "${Signal##*: }" -gt 240 ]; then
echo "Conectado"
sudo -u scorpyo gnome-screensaver-command --deactivate
else
echo "Desconectado"
sudo -u scorpyo gnome-screensaver-command --lock
fi
fi
hcitool dc ${INTERFACE}
done

Javier Pérez 
Muy bueno, gracias por el script. Lo voy a probar en mi flamante escritorio Ubuntu.
Después de tres años usando Fedora Core, cambié de portátil y como venía con el inefable Windows me quedé con el por pura pereza, al principio unos días al final casi un año hasta que hace unos días decidí volver a Linux y probar Ubuntu.
Creo que no podría haber tomado mejor decisión, y encima lo complementamos con cositas como esta ;-)
Hola,
Una idea fantástica, me encanta tu script. Lo voy a usar ahora mismo. Cuanto tengas el nuevo avisa!!!. Te doy ideas para el nuevo que vas a hacer: se le podría añadir algo similar a esa alarma antirrobo de Apple, si se la da a una opción determinada se bloquea el portátil y suena la alarma cuando se aleja del móvil… Es sólo una idea. Muchas gracias por el script
Fantástico.
Jejeje, muy bueno el script.
Ahora a probarlo a ver que tal funciona, pero la idea es buena ;)
GRACIAS!
Aco*onante!, funciona de perlas, de perlas de perlas de perlas. He tenido que modificar la señal porque el bluetooth que tengo tiene bastante fuerza (100m) y para que bajara de 205 (creo que estaba así) tenía que cambiarme de país, pero juas, he quedao como el mas Humphrey del vecindario. ¡Eres un artista!.
hmmm, interesante, se podria hacer un detector de novia usando el movil ;)
Genial idea para Linux.
Hola, la idea esta genial, pero a mi no me funciona; me devuelve esto: lcmg@ortigosano:~$ HCI read_link_quality request failed: Input/output error
HCI read_link_quality request failed: Input/output error
HCI read_link_quality request failed: Input/output error
HCI read_link_quality request failed: Input/output error
HCI read_link_quality request failed: Connection timed out
gracias
salu2
Es perfecto, muchas gracias por tu aporte, me ha encantado. Una pregunta, es posible que el script guarde un log o algo? lo digo para cuando lo lancemos como demonio poder comprobar el log.
Felicidades por el script.!!
Será mi móvil o no se pero a mi no me ha funcionado : El que si que me ha funcionado es uno hecho en python http://www.open-gnss.org/cgi-bin/hg
Curioso, lo intentaré probar. Saludos.
Tu pc tiene bluetooth incorporado? el mio no, pero no sé si funcione con un adaptador bluetooth usb… saludos.
Simplemente genial.
Muy buen trabajo, voy a probarlo. Gracias
Excelente! ahora mismo lo pruebo… y si lo escribes Python, muchísmo mejor!!!
Saludos
¿Alguien sabe los comandos correspondientes a KDE? No lo encuentro en google…
Excelente, lo probe y me funciono con el Sony Ericcson T610 con en Ubuntu Edgy Eft, y con un adaptador bluetooth usb, se pueden hacer cosas muy buenas, gracias Javier, alguien sabe algunas cosas interesantes para bluetooth similar a esta aplicación???
Pues yo tengo este problema y no me funciona:
AIMTOOTH: conectado al dispositivo
AIMTOOTH (16:05:37): CONNECT=1 / Q=255 / QLAST=255 / QM=255 / QCOUNTER=0
AIMTOOTH (16:05:40): CONNECT=1 / Q=255 / QLAST=255 / QM=255 / QCOUNTER=0
AIMTOOTH (16:05:43): CONNECT=1 / Q=255 / QLAST=255 / QM=255 / QCOUNTER=0
Not connected.
AIMTOOTH: problemas de conexion
AIMTOOTH (16:05:47): CONNECT=1 / Q=0 / QLAST=0 / QM=0 / QCOUNTER=4
AIMTOOTH: se detectó ausencia!
sudo: no passwd entry for tux!
Gracias por tu script.
Saludos.
Gil: Debes poner tu nombre de usuario (el que uses para acceder a Gnome) en la variable ON_CONNECT y ON_DISCONNECT, sustituyendo a "tux".
ON_CONNECT="sudo -u TUNOMBREDEUSUARIO gnome-screensaver-command –deactivate"
ON_DISCONNECT="sudo -u TUNOMBREDEUSUARIO gnome-screensaver-command –lock"
Gracias a todos por los elogios ;)
Ya está corregido, pero si bien ahora no hace mención a ninguna contraseña, el error es el mismo, me lo reconoce en un primer momento pero despues de 3 barridos donde aparece como conectado, al cuarto:
AIMTOOTH: conectado al dispositivo
AIMTOOTH (17:37:51): CONNECT=1 / Q=255 / QLAST=255 / QM=255 / QCOUNTER=0
AIMTOOTH (17:37:54): CONNECT=1 / Q=255 / QLAST=255 / QM=255 / QCOUNTER=0
AIMTOOTH (17:37:57): CONNECT=1 / Q=255 / QLAST=255 / QM=255 / QCOUNTER=0
Not connected.
AIMTOOTH: problemas de conexion
AIMTOOTH (17:38:02): CONNECT=1 / Q=0 / QLAST=0 / QM=0 / QCOUNTER=4
AIMTOOTH: se detectó ausencia!
Y ahora si que bloquea la pantalla, pero el movil está al lado.
Gracias.
me funciona de manera extraña, dice en la consola not connected, y ahorita me bloqueo la pantalla con el telefono al lado, me fui y regresé y no se desbloqueó, de todas maneras es muy buena idea, hay un programa que se llama bluemon que consegui y hace algo parecido a este
saludos
Hola, buenas, soy un newbbiee en el mundillo linux pero ya estoy conociendo mas este gremio. Encontre este post y probe a modificarlo, todo sin problemas, salvo que parece ser que mi dispositivo usb bluetooth no detecta a mi nokia 6630(obviamente con el bluetooth activado). Tengo contraseña en mi sesion de GNOME(Ahora pruebo con GNOME porque tengo los comandos, pero uso KDE), y pienso que pudiera ser que no tuviera el script bien configurado. GRACIAS Y ENHORABUENA.
Una consulta como puedo hacer que se bloquee la pantalla y al mismo tiempo que el festival diga algo como Bloqueando sistema Activando sistema? se que el comando seria
ON_CONNECT="festival –language spanish –tts /home/victor/Desktop/activando"
Pero lo que no se es como hacer para que al mismo tiempo bloquee la pantalla y viceversa
Jejejeje, esto tiene una pinta estupenda, ahora mismo me pongo a enredar para usarlo en MacOS X, ya os contaré si lo consigo…
Un saludo.
Felicidades, estas son las cosas que hacen grande un Blog y en consecuencia Internet, compartir de la manera que tu lo haces, prometo probarlo.
Un saludo.
tambien se puede hacer con el bluemon.
http://packages.debian.org/unstable/net/bluemon
saludos
ShADoW_LnX que te parece hacer esto:
ON_CONNECT="./tu_script"
Y en tu_script hacerte un script sencillito que ponga:
sudo -u tux gnome-screensaver-command –deactivate
festival –language spanish –tts /home/victor/Desktop/activando
Nose, yo lo haría asi, y si no, poniendo los dos comandos en la variable ON_CONNECT separados por ; y fiesta :D
Me pasa exactamente lo mismo que a Gil, y no se que mas tengo que tocar. Saludos de un malagueño
No me atraen los móviles y soy muy profano con ellos, pero podría interesarle a algún amigo. Gracias por compartirlo.
Genial, lo pruebo en mi linux en breve. Por cierto, para los que también seáis adictos al Mac, acabo de comprobar dicha funcionalidad en un soft que se llama BluePhone y también funciona (ojo que es de pago, pero muy asequible).
Gracias por el script y la idea !
Hola, tengo Ubuntu y un Nokia N73, al aprecer hay gente que también le pasa, y es que el programa funciona, pero al poco tiempo detecta que no está cuando sí que está, esto es porque al parecer, la conexion creada con el hcitool se cierra y claro, no detecta el dispositivo, así que habría que comprobar si la conexion se ha cerrado, a volver a abrirla y no solo una vez. A ver si tengo tiempo y lo reprogramo para que tenga en cuenta esto.
yo tengo este problema para no deformar el blog pongo aqui mi explicacion de lo que pasa en mi caso :(
http://pastebin.ca/418984
Ojala Javier Perez me puedas contestar a mi correo o aqui mismo en el blog para mi seria de mucha ayuda, sin mas que decir gracias y excelente blog!!!! :D
Me pasa lo mismo q a Gil a los 3 barridos no lo detecta y salta el bloqueo. en cuanto a enviar y recibir me va de lujo.
P.D.: Es un Nokia N70
Lo acabo de probar con un siemens S55 y me funciona perfecto, en el N70 al tercer barrido sigue perdiendo conexion debe ser cosa del movil…
Muy buen script!
Lo único es que debería verificar cada dos o tres ping, desconectándose en caso de error, para no apagar la pantalla si sólo fue un error de conexión momentáneo, lo que ocurre si el dispositivo bluetooth es barato, como el mío :P
a mi me pasa lo mismo que a gil, falta algo como para que no pierda la conexion con el movil, porque si del movil intento mandarle una foto a la pc se desactiva el protector de pantalla, pero luego de eso pierde la conexion y se vuelve a bloquear la pantalla.
Tengo en cuenta todos vuestros comentarios. Estoy trabajando en una aplicación en PyGTK, que solventará en la medida de los posible todos los problemas que comentáis.
Gracias por vuestros comentarios :)
Hola, Javier.
Si quieres, te envío el código de la mía basada en tu idea original o directamente trabajamos en una conjuntamente mezclando ambas.
Pablo
Pues lo que promete tu script suena excelente, sólo que por el momento no me interesa probarlo (hasta que compre mi portátil) y si me interesa esperar a que liberen el nuevo script ya con las nuevas funciones.
Si con su permiso, prometo darle publicidad a toda la comunidad ubuntu (claro que sin payasadas, el crédito es totalmente tuyo y bien merecido).
Ojalá al poner este mensaje el sistema me notifique de nuevas respuestas a esta entrada. Gracias por compartir.
¡Hola!
Buscando cosillas del bluetooth he llegado hasta aquí, no pretendo robar protagonismo ni mucho menos, simplemente que yo hice un script parecido hace 2 añitos o así.
http://www.eupla.org/index.php?dcha=foro/comentario.php&comentario=84622&f=15
Le he echado un ojo al tuyo y parece más completo pero es la misma idea.
Que conste que no te estoy acusando de nada,eh!? ;) es simplemente por si te apetece comprar tu script con el mío.
Un saludo
Buenas!
He probado el script en Ubuntu 7.04 con un adaptador bluetooth usb de 12eur, y lanzo el script pero al poco tiempo como al resto… me salta el salvapantallas a pesar de estar el teléfono al lado del receptor.
Sera cuestion del movil? (Nokia 5200)
Sera cuestion del bluetooth? (made in taiwan comprado en PCBox, semitransparente y con la luz roja toooodo el rato parpadeando una vez conectado al usb)
Si alguien tiene idea… que ayude a los que no nos tira.
Y cuando tengas la siguiente version, bienvenida sea!
hey, Yo tengo el mismo problema que gil. alguien tiene alguna idea qué puede producirlo?
gracias, un saludo, dz
Javier, echa un vistazo a este frontend de tu idea/app: http://www.cesarius.net/blueproximity-bloquea-y-desbloquea-la-pantalla-con-detector-de-presencia-en-ubuntu/
Se ha creado un paquete para hacer todo esto en ambiente gráfico. El tutorial aqui:
http://www.cesarius.net/blueproximity-bloquea-y-desbloquea-la-pantalla-con-detector-de-presencia-en-ubuntu/
Buenas, tras experimentar con el script de deteccion de bluetooth y entre los compañeros de la facultad, hemos elaborado un script más simple y sencillo para detectar la presencia de un determinado mobil dentro del rango de la piconet (red bluetooth), puesto que el original no fue posible hacerlo funcionar. Nos gustaría saber vuestra opinión al respecto, saludos!!
#!/bin/bash
export INTERFACE="00:00:00:00:00:00"
while true; do
hcitool cc ${INTERFACE}
sleep 1
Signal="`hcitool lq ${INTERFACE}`"
echo $Signal
if [ "${Signal##*: }" -lt 220 ]; then
echo "Baja señal"
sudo -u username gnome-screensaver-command –lock
else
if [ "${Signal##*: }" -gt 220 ]; then
echo "Conectado"
sudo -u username gnome-screensaver-command –deactivate
else
echo "Desconectado"
sudo -u username gnome-screensaver-command –lock
fi
fi
hcitool dc ${INTERFACE}
done
Me pare se muy bueno su Blog, y muchachos sigan adelante, realmente hacen cosas buenas.
que tal perarese exelente tu script, pero al intentar descargarlo no se puede me gustaria me envies una copia y probarlo de antemano gacias
Fue imposible descargar el script? no esta disponible?
Hola se me hace imposible descargar el scrip,me podrian pasar el link o algun lugar de donde bajarlo? gracias.
Hola, alguien puede decirme si existe un detector de presencia para conectar a un puerto USB de mi ordenador, de modo que cuando detecte presencia se active la pantalla.
El ordenador está siempre encendido y tiene que ser USB.
Gracias
hola, en linux esto se gestiona con udev.
busca en google “udev usb”
un saludo
daniel
dónde puedo encontrar el script? el link no funciona
Porfavor vuelve a subir el script!!!
muchas gracias por el aporte!!!
Por favor sube el script
Hola,
podrías volver a subir el script para poderlo probar.
Muchas gracias
Hola, quisiera saber, si de algun modo se puede calcular la distancia a la que se encuentra el dispositivo movil USB.
Muchas gracias!
Hola, quisiera saber, si de algun modo se puede calcular la distancia a la que se encuentra el dispositivo movil BLUETOOTH Perdon!
Muchas gracias!
¡Me encanta! ¡Es muy ingenioso! Y se me están ocurriendo muchas más utilidades para esto :)
Gracias. ¿Qué es FUD?
Para que nunca se pueda bloquear la pantalla (p.e. con Ctrl+Alt+L, la opción del menú, tras cambio de usuario o tras suspensión del ordenador) ejecutamos gconf-editor y marcamos la casilla de /desktop/gnome/lockdown/disable_lock_screen.
Así, no podremos poner en el panel el applet o botón de bloqueo de pantalla (lock screen button), y si estaba puesto, quedará inactivo o desactivado (no funcionará).
Y en el salvapantallas no estará disponible la opción “Bloquear pantalla cuando el salvapantallas esté activo”, y si estaba activada, además, se desactivará.
Esto es en GNOME clásico. Con MATE creo que hay que ejecutar mateconf-editor e ir a /desktop/mate/lockdown/disable_lock_screen.