Decidi construir um pequeno script que verifica quemestá em casa e quem não está baseado nos telemóveis cá de casa. Juntando isto ao Raspberry Pi a falar ou ao Pebble pode ser que dê alguma coisa engraçada.
A ideia de saber quem está em casa veio-me da publicidade sobre a integração do OnHub da Google com o IFTTT. O OnHub é um router wireless com antenas circulares e ligado a uma App da Google que permite configurar e controlar o equipamento. Onde será que já vi isto…
O OnHub também integra agora com o IFTTT, o site com receitas de automatização de tarefas de que já falámos aqui por causa do Pebble.
Quem me conhece e ao A.Sousa, sabe de como criticamos o modo como funcionam os produtos hoje em dia, e que temos muitas reservas à quantidade de informação pessoal nossa que os equipamentos partilham com as empresas após nos serem vendidos.
Mas quem sabe construir os seus próprios equipamentos, pode adaptá-los às funcionalidades que quer ter mesmo à medida sem ter de se preocupar com a sua privacidade. Para isso basta algum tempo e paciência para aprender o que a Internet nos quiser ensinar.
O script que vai acrescentar esta facilidade ao meu Raspberry Pi é muito simples e depende do crond, o agendador de comandos presente em muitas distribuições Gnu/Linux. O script vai ter de:
- Saber quais os equipamentos a controlar;
- Procurar esses equipamentos na rede;
- Manter lista de pessoas dentro e fora de casa;
- Notificar quando o estado muda.
Para o proof of concept vai ficar tudo hardcoded, sem interface gráfico de utilizador e com notificações básicas. Vai ser apenas um script que corre de tempos a tempos e que se encontrar um dos endereços emite a notificação.
Para encontrar os equipamentos pelo seu endereço MAC a internet disse-me para usar o utilitário arp. O utilitário já vem no OSMC, a distribuição que uso no meu Raspberry Pi. O resultado é uma lista de equipamentos (por nome ou endereço ip) com o respetivo endereço MAC. Isto resolveria o primeiro e segundo passo, mas o arp só me indica os equipamentos com que já estive ligado.
Usar o arp para detetar equipamentos tem um senão. Como nem todos os equipamentos estão ligados através do mesmo router por causa do repetidor, tive aumentar a parada. A minha primeira escolha para coisas de rede é o nmap. Aqui o site Stackexchange tem um thread a discutir o tema de como detetar todas as máquinas na rede e que vale a pena ler com atenção. O problema é que o nmap para mostrar endereços MAC necessita de previlégios elevados:
sudo nmap -sP -n 192.168.1.0/24
Outro problema é que o método que o nmap usa é muito mais demorado. O arp é quase imediato, mas só para equipamentos que já se ligaram, enquanto o nmap demora cerca de 10 segundos.
Para as notificações, para já serão enviadas por email. Bem sei que não é o formato ideal de notificação, mas para já tem de servir. Para enviar emails pelo Gmail a partir do Raspberry Pi com o OSMC, vamos ter de instalar software. O link que tinha as instruções que escolhi para enviar emails pelo Gmail para aconselha a utilização do mutt.