Receber uma mensagem quando alguém conhecido entra ou sai da sua casa – Parte 1

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:

  1. Saber quais os equipamentos a controlar;
  2. Procurar esses equipamentos na rede;
  3. Manter lista de pessoas dentro e fora de casa;
  4. 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.

{ 3 comments to read ... please submit one more! }

  1. Bem pensado! Podemos fazer varias tarefas automatizadas com esta função de while arp esta na rede.

    Estou ansioso para os testes futuros! Vou pensando em algo aqui para fazer também.

    Abraço

  2. vejam o home-assistant

{ 0 Pingbacks/Trackbacks }