Índice:
- Etapa 1: configurar contas Firebase e Twilio
- Etapa 2: Configure seu Pis
- Etapa 3: Python Script para Pi1
- Etapa 4: Python Script para Pi2
- Etapa 5: Teste o Pis
- Etapa 6: Construindo o aplicativo R-PiAlerts IOS
- Etapa 7: teste o aplicativo
- Etapa 8: Conclusão
Vídeo: R-PiAlerts: Crie um sistema de segurança baseado em WiFi com Raspberry Pis: 8 etapas (com imagens)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:39
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
- 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).
- 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.
- 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
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:
- Registre-se para uma conta gratuita do Firebase
- Vá para o console. Crie um novo projeto e dê um nome a ele.
- No menu esquerdo, clique em "Visão geral"
- 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:
- No menu à esquerda, clique em "Autenticação". Vá para "Método de login" e ative "E-mail / senha"
- 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.
- No menu esquerdo, vá para o "Banco de dados"
- 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:
- Inscreva-se para uma conta gratuita no site do Twilio
- Copie seu accountSID e authToken
- Clique em "Trial Restrictions" e selecione "get your first Twilio phone number"
- Copie seu novo número de telefone
Etapa 2: Configure 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
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
É 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
É 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
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
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:
Controle remoto IR baseado em Arduino automático baseado em temperatura: 7 etapas
Controle remoto IR baseado em Arduino automático baseado em temperatura: Ei, e aí, pessoal! Akarsh aqui da CETech. Cansado de acordar no meio de um sono profundo só porque a temperatura ambiente está muito baixa ou muito alta por causa do seu AC mudo. Então este projeto é para você. Neste projeto, vamos fazer o nosso
Botão de segurança sem fio para segurança do PLC: 6 etapas (com imagens)
Botão de segurança sem fio para segurança do CLP: Este projeto é minha prova de conceito para o uso de IoT e (eventualmente) robótica para criar uma camada adicional de segurança para instalações de fabricação perigosas. Este botão pode ser usado para iniciar ou parar vários processos, incluindo o controle de sinal
Sistema de segurança de segurança feminina One Touch: 3 etapas
Sistema de segurança para mulheres com um toque: Alarme com um toque Sistema de segurança para mulheres usando o microcontrolador 8051 No mundo de hoje, a segurança das mulheres é a questão mais importante em cada país. Hoje as mulheres são perseguidas e perturbadas e às vezes quando a ajuda urgente é necessária. Não há local obrigatório
Sistema de segurança baseado em PIR: 7 etapas
Sistema de segurança baseado em PIR: Este módulo é baseado em sensor PIR e muito preciso, consiste em um módulo de campainha e alimentação de backup para maior segurança
Sistema de segurança RFID (baseado em Arduino): 6 etapas (com imagens)
Sistema de segurança RFID (baseado em Arduino): um dispositivo muito bom para ter em casa, até mesmo pode