Índice:

R-PiAlerts: Crie um sistema de segurança baseado em WiFi com Raspberry Pis: 8 etapas (com imagens)
R-PiAlerts: Crie um sistema de segurança baseado em WiFi com Raspberry Pis: 8 etapas (com imagens)

Vídeo: R-PiAlerts: Crie um sistema de segurança baseado em WiFi com Raspberry Pis: 8 etapas (com imagens)

Vídeo: R-PiAlerts: Crie um sistema de segurança baseado em WiFi com Raspberry Pis: 8 etapas (com imagens)
Vídeo: Sisteminha de Segurança com Raspberry PI e Motion 2024, Novembro
Anonim
Image
Image
R-PiAlerts: Construa um sistema de segurança baseado em WiFi com Raspberry Pis
R-PiAlerts: Construa um sistema de segurança baseado em WiFi com Raspberry Pis
R-PiAlerts: Construa um sistema de segurança baseado em WiFi com Raspberry Pis
R-PiAlerts: Construa um sistema de segurança baseado em WiFi com Raspberry Pis

Enquanto trabalha em sua mesa, de repente você ouve um ruído distante. Alguém acabou de voltar para casa? Meu carro está estacionado na frente da minha casa, alguém arrombou meu carro? Você não gostaria de receber uma notificação em seu telefone ou em sua mesa para decidir se deve ou não investigar? Bem, não questione mais! R-PiAlerts está aqui!

O que é R-PiAlerts? R-PiAlerts é um sistema de segurança baseado em Raspberry Pi3 construído em torno da nuvem do Firebase. Se for detectado movimento, o sistema notificará o usuário de uma possível invasão com uma mensagem de texto e um display LED piscando (tipo de alarme visual silencioso). Depois que o usuário recebe uma notificação, ele pode investigar. Todos os movimentos detectados serão registrados no banco de dados Firebase. Além de visualizar o registro de movimento em um navegador da web, o usuário também pode acessar o registro de movimento através de um aplicativo iOS. Decidi construí-lo devido ao recente aumento de arrombamentos de veículos e residências em minha área.

Por que o Pi3? Eu precisava de algo pequeno que pudesse detectar movimento e funcionar sem bateria, se necessário. Então, posso esconder a unidade atrás de uma porta ou em um carro. Além disso, a unidade precisa ser capaz de me enviar notificações ou alertas. O Pi3 pode fazer todas essas coisas com o wi-fi embutido e sua capacidade de funcionar com uma bateria USB. Outras razões pelas quais escolhi o Pi3:

  • O Pi é relativamente barato
  • É fácil de implantar e aumentar
  • É configurável do ponto de vista do software
  • Capacidade de usar telas e sensores. Este projeto usará o SenseHat
  • Operar sem cabeça (sem monitor, teclado ou mouse)

Como funciona

  • O ideal é que o usuário precise de 2 Raspberry Pis conectados ao banco de dados Firebase, mas um único Pi também funcionará.
  • Utilizando o SenseHat, o primeiro Pi (Pi1) detectará o movimento com o acelerômetro, enquanto o segundo Pi (Pi2) exibirá notificações de movimento.
  • Quando o Pi1 detecta movimento, ele faz 3 coisas

    • movimento de registro para o banco de dados
    • crie uma entrada de notificação no banco de dados para Pi2 exibir
    • enviar ao usuário uma mensagem de texto notificando o usuário sobre o movimento.
  • Quando Pi2 detecta uma notificação a ser exibida no banco de dados, duas coisas acontecem

    • O display LED do Pi2 mostrará a notificação continuamente
    • O usuário pode limpar a notificação pressionando o botão Pi2 SenseHat. Isso também limpará a entrada de notificação no banco de dados.
  • Com o aplicativo iOS, o usuário pode

    • acessar o banco de dados; leia e apague o registro de movimento
    • o usuário pode enviar Pi1 para exibir uma mensagem no display LED de Pi1.

Aplicações práticas

  1. Se você estacionar na rua, dentro do alcance do wi-fi. Coloque uma bateria no Pi1 (veja a foto). Esconda Pi1 em seu carro. Coloque o Pi2 em um local facilmente visível, como próximo à sua mesa (veja a foto).
  2. Outra aplicação é colocar Pi1 em sua casa ao lado de uma porta. O Pi é tão pequeno que a maioria das pessoas não o notará, especialmente se estiver atrás do lado da dobradiça (ver foto). Em seguida, coloque o Pi2 em sua mesa de trabalho.
  3. Cachorro se metendo em um ponto da casa, não é? Coloque um Pi1 nessa área. Certifique-se de colocar o Pi em uma caixa resistente para que seu cão não o mastigue.

Enquanto o seu Pis estiver dentro do alcance do wi-fi, eles podem alertá-lo ou notificá-lo de movimento. Se você não tem um segundo Pi, você pode simplesmente usar Pi1 para detectar movimento e receber notificações por SMS através do seu telefone celular.

Lista de Materiais

  • Dois (2) Raspberry Pi 3s executando Raspbian (Raspberry Pi 2 também funcionará com um dongle wi-fi)
  • Dois (2) SenseHats
  • Dispositivo Mac e iOS

Necessário software

  • Biblioteca Pyrebase (conectando-se ao Firebase)
  • Biblioteca SenseHat (para acessar acelerômetro e display LED)
  • Biblioteca Twilio (para envio de SMS)
  • Python 3, integrado com o Raspbian mais recente
  • Raspbian com IDLE
  • Xcode8 e Cocoapods no seu Mac
  • Vontade de aprender e explorar

Observação lateral Esta não é a única solução de segurança baseada em Pi. Se você tiver alguma ideia, sugestão ou apenas quiser refatorar meu código, por favor, deixe um comentário abaixo! =)

Etapa 1: configurar contas Firebase e Twilio

Configurar contas Firebase e Twilio
Configurar contas Firebase e Twilio
Configurar contas Firebase e Twilio
Configurar contas Firebase e Twilio

Antes de começarmos a mexer com nosso Pis, precisamos configurar o Firebase e o Twilio. Firebase é o back-end como serviço do Google. O Firebase inclui recursos como banco de dados, mensagens em nuvem, autenticação, armazenamento, etc. Para este projeto, só precisaremos usar o banco de dados em tempo real e a autenticação do Firebase. A autenticação será necessária para ler e gravar no banco de dados do Firebase. Para configurar o Firebase:

  1. Registre-se para uma conta gratuita do Firebase
  2. Vá para o console. Crie um novo projeto e dê um nome a ele.
  3. No menu esquerdo, clique em "Visão geral"
  4. Clique em "Adicionar Firebase ao seu aplicativo da web", copie sua APIKey e projectid (não o url). O ID do projeto está localizado em diferentes URLs, como o banco de dados:
  5. No menu à esquerda, clique em "Autenticação". Vá para "Método de login" e ative "E-mail / senha"
  6. Em "Usuário", crie uma nova conta de usuário com e-mail / senha de sua escolha. Você usará essa credencial para fazer login no banco de dados.
  7. No menu esquerdo, vá para o "Banco de dados"
  8. Este é o seu banco de dados. Ele está vazio agora. Quando preenchido, estará no formato JSON. O URL deve ser o mesmo que você viu anteriormente.

Twilio permite que os desenvolvedores enviem mensagens a seus clientes. Vamos usá-lo para enviar SMS para o seu telefone quando o Pi detectar movimento. Twilio fornecerá a você um número de telefone para enviar SMS. Para configurar o Twilio:

  1. Inscreva-se para uma conta gratuita no site do Twilio
  2. Copie seu accountSID e authToken
  3. Clique em "Trial Restrictions" e selecione "get your first Twilio phone number"
  4. Copie seu novo número de telefone

Etapa 2: Configure seu Pis

Configure o seu Pis
Configure o seu Pis
Configure o seu Pis
Configure o seu Pis

Antes de começarmos a programar o Pis, precisamos fazer algumas configurações. Certifique-se de ter uma senha de login para o seu Pis. Primeiro, conectaremos fisicamente as placas SenseHat ao Pis. Em seguida, instalaremos as bibliotecas SenseHat, Twilio e Pyrebase necessárias. O banco de dados em tempo real do Firebase foi projetado para dispositivos móveis ou sites. No entanto, podemos ler e gravar o banco de dados em nuvem por meio da API Rest com uma biblioteca auxiliar como o Pyrebase.

Conecte o SenseHatCertifique-se de que os SenseHats estão conectados ao seu Pis. Se você tiver um caso incomum, pode ser necessário remover o Pi antes de conectar o SenseHat.

Instalando Bibliotecas Todas as instalações da biblioteca serão feitas no Terminal

  • Inicialize seu Pis, caso ainda não o tenha feito.
  • Após a inicialização, você obtém este colorido arco-íris de LED em seu SenseHat! (veja a foto)
  • Vá para o terminal e update / dist-upgrade, digite:

    • sudo apt-get update
    • sudo apt-get dist-upgrade
  • Depois que as atualizações forem feitas, digite o seguinte para instalar as bibliotecas SenseHat:

    sudo apt-get install sense-hat

  • Para instalar o Pyrebase, digite:

    sudo pip install pyrebase

  • Por último, instale o Twilio

    sudo pip install twilio

Etapa 3: Python Script para Pi1

Como mencionamos anteriormente, Pi1 será o Pi que será usado para detectar o movimento. Os valores do acelerômetro do SenseHat serão usados para determinar o movimento. Assim, o código para Pi1 será em torno de acessar os valores de força g do acelerômetro e registrar os movimentos detectados no banco de dados Firebase. Aqui está uma visão geral do fluxo do processo:

  • Se Pi1 detectar movimento, ele adicionará uma entrada ao filho "alertas" no Firebase DB.
  • Pi1 também atualizará a criança "notificarpi2" com uma mensagem de notificação sobre o movimento.
  • Pi2, em seguida, lê "notificarpi2" e exibir a notificação em seu display de matriz de LED.

Incluí o script Pi1 Python para você seguir. Os comentários no script explicam o que o código está fazendo.

Notas e ideias adicionais para o script Pi1

  • Para configuração do Firebase e Twilio. Preencha as chaves de API, IDs, senhas, etc. apropriadas que você copiou nas etapas anteriores.
  • Com relação à autenticação do Firebase, para segurança extra, você pode solicitar a entrada do usuário em vez de codificar essas credenciais. Cada vez que escrevermos ou lermos do banco de dados, precisaremos incluir

    usuário ['idtoken'] com Th

    get (), push (), set () métodos.

  • A temperatura da CPU é necessária para que possamos intervir no caso de o Pi superaquecer em um carro ou ambiente fechado.
  • Também consideramos o valor absoluto das forças G, uma vez que não precisamos saber os valores negativos. Precisamos apenas saber se existem forças G.
  • A instrução If irá verificar os valores do acelerômetro. Se as forças G forem maiores que 1 em qualquer direção, Pi1 registrará o tempo de movimento e exibirá um ponto de exclamação em seu próprio display LED. Ele também atualizará o filho "notipi2". Quando "notificarpi2" for atualizado, Pi2 o lerá e exibirá "!!!" em seu display de LED para notificar o usuário sobre um possível movimento / arrombamento. Pi1 também enviará ao usuário uma notificação de movimento por SMS.
  • Ao usar o método push (), o Firebase irá gerar automaticamente um filho com uma nova entrada. Isso é necessário para que os dados de movimento registrados sejam exclusivos. o método set (), por outro lado, sobrescreverá os dados anteriores.
  • É necessário um loop de 10 segundos para verificar o banco de dados para que seu Pi não solicite dados repetidamente do Firebase. Se você enviar spam continuamente ao Firebase, o Google o desconectará em cerca de 10 minutos.
  • O Firebase também expulsará o usuário a cada 60 minutos se o token não for atualizado. Eu tenho a atualização definida para 1800 segundos (30 minutos).

Etapa 4: Python Script para Pi2

Script Python para Pi2
Script Python para Pi2

Se você olhar para a foto, é de Pi2 exibindo uma notificação de possível movimento.

O script de Pi2 é exatamente o mesmo que Pi1, exceto que o script não detecta movimento. Pi2 apenas exibe ou redefine mensagens de notificação do filho "notifigpi2". Já que essa é a única diferença, vou explicar isso abaixo.

  • A cada 10 segundos, Pi2 verificará "notificarpi2" para exibir. Se houver uma mensagem de notificação a ser exibida, o Pi2 a exibirá continuamente para que o usuário a veja.
  • Somente a intervenção do usuário ao pressionar o botão do joystick irá limpar e redefinir a mensagem no lado do banco de dados.

Etapa 5: Teste o Pis

Image
Image
Teste o Pis
Teste o Pis

É hora de testar o Pis.

  • Execute os scripts para o Pis respectivamente.
  • Faça login no Firebase e vá para a seção do banco de dados de seus projetos.
  • Agite seu Pi1, você deve ver um ponto de exclamação vermelho no display de LED Pi1. Você também deve receber uma mensagem SMS.
  • Verifique o banco de dados, as entradas de alerta devem começar a aparecer. "notificationpi2" também deve ser atualizado.
  • Dê uma olhada em Pi2. Você também deve rolar "!!!" Para limpar esta mensagem de notificação, basta pressionar no joystick. "notipi2" deve ser redefinido. Verifique seu Firebase para confirmar.
  • Se você achar que Pi1 é muito sensível ao movimento, aumente o limite para mais de 1G no script Pi1.

Se tudo correr bem, seus scripts não irão travar. Agora, você tem um sistema de notificação funcionando. Assim que o Pi1 detectar movimentos ou vibrações, você receberá uma notificação por mensagem SMS e uma notificação visual de LED no Pi2.

Etapa 6: Construindo o aplicativo R-PiAlerts IOS

Construindo o aplicativo IOS R-PiAlerts
Construindo o aplicativo IOS R-PiAlerts

É hora de criar o aplicativo iOS! O aplicativo será bastante simples. Ele terá um LoginViewController e um ItemsTableViewController. ItemsTableViewController exibirá notificações de alerta do filho "alertas". Também é possível excluir entradas de banco de dados do aplicativo. Para evitar dores de cabeça, se você planeja ver os tutoriais online do Firebase, certifique-se de procurar os tutoriais com data posterior a março de 2016, pois houve grandes mudanças no ano passado nessa época. Qualquer coisa antes de março de 2016 será um legado. Se você estiver interessado nos arquivos swift, analise os comentários no código. Se você quiser um tutorial detalhado sobre como construir um aplicativo Firebase que leia o banco de dados, consulte o tutorial de Ray Wunderlich.

Visão geral da configuração do seu projeto iOS

  • Crie um projeto iOS de visualização única no Xcode.
  • Copie o identificador do pacote
  • Acesse seu projeto Firebase no site e crie um arquivo info.plist com o identificador do pacote.
  • Adicione o arquivo GoogleService-info.plist ao seu projeto. Este info.plist só funciona com o projeto específico do Firebase que você criou.
  • Feche o Xcode e instale o Firebase via Cocoapods. Certifique-se de instalar Auth e Database.
  • Reinicie o Xcode e configure seu AppDelegate.swift para Firebase. Leva apenas 2 linhas de código.

    Importar Firebase um

    FIRApp.configure (). Opcionalmente, o Firebase tem um recurso de persistência que ocupa apenas 1 linha de código

    FIRDatabase.database (). PersistenceEnabled = true

  • Os detalhes das etapas de instalação podem ser encontrados no site do Firebase

Como o aplicativo interage com o Firebase Database:

  • O aplicativo precisará autenticar o usuário.
  • Depois de autenticado, o aplicativo tira um instantâneo do banco de dados Firebase e o armazena como um objeto "Item".
  • O referido objeto irá preencher um array. A referida matriz será usada para preencher o tableview.
  • Um observador observará as alterações no banco de dados Firebase e criará um instantâneo.
  • Assim que as alterações forem detectadas, o array será anexado ao novo instantâneo.
  • O Tableview será então recarregado para mostrar as mudanças.

Esboço geral sobre como construir o aplicativo

  • Dê uma olhada na imagem de como o aplicativo é apresentado no construtor de interface do Xcode.
  • Crie um ViewController no construtor de interface e aponte a classe customizada para LoginViewController.swift.
  • Adicione campos de texto para e-mail e senha. Não se esqueça de ativar "Entrada de texto seguro" para o campo de senha. Adicione um botão de login.
  • Vincule os campos de texto e o botão ao LoginViewController.swift. LoginViewController.swift tratará da autenticação.
  • Inclua um Controlador de Navegação no construtor de interface. Crie uma segue do LoginViewController para o Controlador de navegação. Certifique-se de fornecer um identificador ao segue.
  • Defina a classe personalizada do novo tableview que veio com o controlador de navegação para apontar ItemsTableViewController.swift. Também tenho 2 botões no ItemsTableViewController: Logout e um botão Adicionar. Vincule os botões a ItemsTableViewController.swift.
  • Em relação ao código LoginViewController.swift. O usuário irá inserir as credenciais de login e o Firebase retornará um usuário. Se um usuário estiver presente, ele executará uma segue com o identificador. (veja o código em anexo)
  • Adicione a classe Item.swift (consulte o código em anexo)
  • Em relação ao código ItemsTableViewController, é um código tableview bastante padrão. Haverá um observador para monitorar as alterações em seu banco de dados salvas como um instantâneo como um objeto Item. Em seguida, o objeto Item irá anexar a matriz para preencher a tableview. O botão Adicionar define uma entrada no banco de dados Firebase para Pi1 ler e exibir. Para rir, eu também adicionei o código (veja o código em anexo)

Etapa 7: teste o aplicativo

Teste o aplicativo
Teste o aplicativo
Teste o aplicativo
Teste o aplicativo
Teste o aplicativo
Teste o aplicativo

Execute seu aplicativo

  • Faça login e agite seu Pi1. Você deve começar a ver novas notificações de alerta aparecerem.
  • Toque no botão Adicionar e observe o Pi1 exibir sua mensagem.
  • Deslize para a esquerda, consulte as entradas de "Alertas" removidas.
  • Recebendo muitas notificações em rápida sucessão? ajuste o limite do acelerômetro ou aumente o tempo de sono no script Pi1.

Etapa 8: Conclusão

Conclusão
Conclusão
Conclusão
Conclusão

Incrível! Agora temos Pis que podem detectar movimentos e enviar notificações de movimentos. Além disso, você pode gerenciar em seu log de mensagens de alerta com seu dispositivo iOS! É hora de implantar o Pis. Coloque Pi1 próximo à sua porta e Pi2 ao redor de sua área de trabalho. Da próxima vez que alguém entrar, você pode verificar a situação! Ou melhor ainda, tente se esconder em Pi em seu carro com uma bateria. Bata as portas algumas vezes, veja o que acontece!

Este é apenas um começo para as possibilidades do que você pode fazer com um Raspberry Pi e Firebase. O SenseHat também inclui sensores ambientais, giroscópios e uma bússola. Você pode configurar seu Pis para registrar certas mudanças no ambiente. Quer melhorar o seu jogo? Quando o seu Pi detectar movimentos, use uma câmera para capturar imagens e faça com que o Pi envie as fotos. Além disso, tente usar um algoritmo de visão por computador para reconhecer rostos. se for o rosto de alguém que você conhece, você pode ser notificado! Divirta-se!

Recomendado: