Bluetooth Ponto

Aqui no INdT a gente tem um sistema de ponto que usa uma etiqueta RFID que fica em nossos crachás para marcar a hora que a gente chega e sai do trabalho. O problema é que esse sistema não é muito confiável e eu também vivo esquecendo de passar o meu crachá na tal maquininha e isso fez com que eu tenha o maior banco de horas negativas aqui da empresa.

Cansado dessa história eu tentei vários métodos diferentes para marcar a minha chegada e saída aqui da empresa. Usei planilha, adaptei um sisteminha feito por um colega de trabalho, anotei em um caderno… e nada. As anotações estavam sempre inconsistentes e impediam que eu fizesse a conferência do meu relatório de horas e corrigir eventuais problemas.

Mas isso mudou quando li um artigo que falava sobre um programinha que executa tarefas quando um dispositivo Bluetooth específico se aproximava do computador. Eu pensei: “Eu tenho um celular com Bluetooth e tenho como colocar um dongle Bluetooth na minha estação de trabalho da empresa. Eu posso registrar a minha chegada/saída na empresa baseado na presença do meu celular, afinal ele me acompanha quando chego ou saio do trabalho…”

Mas o programinha do artigo não funciona com Linux e minha estação de trabalho é Linux então tive que desenvolver o meu próprio script Bluetooth Ponto.

O funcionamento dele é simples: Quando executado sem nenhum parâmetro ele faz discovery dos dispositivos Bluetooth nas redondezas e registra as entradas e saídas desses dispositivos desde o último discovery. Então é só colocar ele no seu crontab ($ crontab -e) para ser executado de 5 em 5 minutos:

$ crontab -l
# m h  dom mon dow   command
*/5 * * * * /path/completo/btponto.py

Esse comando irá gerar um arquivo de log para cada mês do ano dentro do diretório ~/.btponto e a partir desse arquivo a gente poderá gerar os relatórios.

Para gerar os relatórios é só criar um arquivinho de configuração com o MAC address do celular e o nome do dono:

$ cat .btponto/indt.cfg
[osantana]
bt = 00:0F:ED:ED:01:02
name = Osvaldo Santana Neto
occupation = Researcher

e roda o btponto.py da seguinte forma:

$ btponto.py -f .btponto/indt.cfg .btponto/bluetooth-200703.log
---------------------------------------------------------------
Username: osantana
Fullname: Osvaldo Santana Neto
BT Mac:   00:0F:ED:ED:01:02

Date        In        Out
2007-03-20  14:14:00  19:10:12
2007-03-21  09:35:12  19:20:11
2007-03-22  08:55:11

Esse programinha depende do Python BlueZ. No meu Ubuntu Edgy bastou executar: sudo apt-get install python-bluez para instalá-lo.

Para você descobrir qual o MAC address do teu celular tente:

$ hcitool scan
Scanning ...
        00:0F:ED:ED:01:02       meu_celular

Ou, se o seu celular for um S60 da Nokia digite: *#2820# no teclado numérico.