Automação Residencial com Raspberry Pi: Alarme 8

Recentemente publicamos como fazer um streaming com o Raspberry Pi utilizando a Câmera Raspberry Pi e o programa RPi Cam Web Interface. No post de hoje montaremos um projeto de Automação Residencial com Raspberry Pi que irá disparar um alarme a cada movimento detectado pelo RPi Cam Web Interface!

Automação Residencial com Raspberry Pi: Alarme

O RPi Cam Web Interface oferece um recurso de detecção de movimento que permite executar uma ação no momento que é detectado o movimento. No nosso exemplo de hoje iremos demonstrar como enviar uma notificação através do Pushbullet. O Pushbullet é um aplicativo gratuito que permite trocar notificações, links, arquivos e pequenos textos entre diversas plataformas.

Instale o Pushbullet em seu Smartphone ou computador. Após instalar acesse Sua conta e clique em Create Access Token para gerar uma chave de acesso a API do Pushbullet.

Automação Residencial com Raspberry PI: Detecção de movimento

Para configurar a detecção de movimento acesse a página de controle do RPi Cam no seu browser:

RPi CAM - Camera Settings

Clicando-se em Camera Settings é possível escolher entre dois modos de detecção de movimento (Motion detect mode): Internal e External. No nosso teste iremos utilizar o modo External, pois ele permite configurar um comando a ser executado quando detectar alguma alteração na cena.

Após, inicie o serviço de detecção de movimento clicando em motion detection start. Feito isto, clique em Edit motion settings para configurar o comando que será executado ao detectar alguma alteração na cena, bem como os parâmetros de configuração do motion.

Camera Settings

Nesta tela, nem todas as configurações são relevantes, você pode utilizar o valor padrão na maioria delas, porém em algumas campos devemos nos atentar, como é o caso das configurações abaixo:

Motion Settings

No campo on_motion_detected vamos configurar a linha de comando que irá enviar uma notificação para o Pushbullet, mas antes disto, precisamos criar o programa que será executado. Para isto, crie um novo arquivo no seu editor de texto preferido (no meu caso usarei o VIM) o seguinte arquivo:

sudo vim /usr/local/bin/motionalert

E cole o seguinte script:

TTL=120 # em segundos
IS_RUNNING=$(ps aux | grep 'motionalert' | grep -v grep | grep -v $$ | wc -l)

function notify {
    if [[ ${IS_RUNNING} -gt 1 ]]; then
        echo "Alerta já enviado, aguarde!"
    else
        curl -s -o /dev/null -u $1: -X POST https://api.pushbullet.com/v2/pushes --header 'Content-Type: application/json' --data-binary '{"type": "note", "title": "RPi Cam", "body": "Movimento Detectado"}'

        echo "Alerta enviado. Aguarde $TTL segundos para enviar outro."
        sleep ${TTL}s
    fi
}

notify $1 &

Salve este script e transforme-o em executável com o seguinte comando:

sudo chmod 777 /usr/local/bin/motionalert

Agora, voltando ao campo on_motion_detected, iremos inserir a seguinte linha de comando:

motionalert "SUA_CHAVE_DE_ACESSO"

Clique em Save Settings.

Testando a detecção de movimento

Agora, quando um movimento for detectado uma mensagem de alerta será envia ao seu Pushbullet e você será notificado no Smartphone ou computador, dependendo de onde você instalou o aplicativo:

Pushbullet Celular

O modo de detecção de movimento do motion compara as imagens e verifica se elas mudaram. Este tipo de comparação sofre muita interferência do ambiente, com isso uma simples mudança de luminosidade fará com que você receba uma mensagem. Fazendo pequenas mudanças nas configurações padrão pode vir a diminuir tal problema.

O script que criamos é para diminuir as chances de enviar várias mensagens consecutivas caso detecte algum movimento. Se uma notificação de movimento for enviada, o script ira aguardar 2 minutos para enviar a próxima. Sem isto, você pode receber várias mensagens em um curto espaço de tempo.

 Gostou? Deixe seu comentário logo abaixo.

Faça seu comentário

Acesse sua conta e participe

8 Comentários

  1. Muito bom

  2. Olá, parabéns pelo ótimo post!!! Gostaria de saber se tem como com essa câmera do Raspberry ou mesmo com uma câmera IP eu inserir as imagens em uma pagina web própria ou mesmo em um aplicativo que eu criasse? Ou só consigo ver as imagens a partir dessa pagina de controle? Por exemplo estou pensando em criar um porteiro eletrônico com uma interface com um botão “Falar”, um botão “Abrir Portão” e a imagem e o som da câmera (ou mesmo de um microfone separado) e que quando a pessoa chamar no interfone eu receba uma notificação e quando eu abrir a minha “central de controle” eu consiga ver e ouvir a pessoa e quando eu clicar em falar o som saia no alto falante externo, e ao apertar o botão “abrir portão” ele acione a trava elétrica. Nesse caso eu pensei em utilizar o interfone que já está montado aqui juntamente com um Raspberry e talvez tb um Arduíno para fazer isso. Você sabe se é possível?

    1. Sim Rodrigo, é possível obter apenas a imagem capturada. Elas ficam armazenadas no RPi e também através de um link.

  3. Hahahaha, TOP Alexandre!

Trackbacks and Pingbacks

  1. […] o tutorial Raspberry Pi para automação residencial. Não lembra? Dá uma olhada AQUI, AQUI ou AQUI.  Mas vamos dividir com vocês um projeto do Deepsyx – membro do […]