Minha porta envia email

Tempo de Leitura ~3 minutos

Hoje iremos aprender a criar um fantástico alarme usando Raspberry e Node.js.

Post traduzido e adaptado do blog: Christian Haschek

Uma das coisas que mais me fascina no tema Internet das Coisas, é o poder combinar e utilizar um software que controla um hardware. Nesta experiência utilizaremos um Raspberry para criar um sistema de alarme para monitorar a porta de sua casa ou quarto de uma forma bem interessante.

Bem sem mais delongas, vamos ao que interessa.

Passo 1

Neste projeto iremos utilizar:

  • 1 Raspberry
  • 1 Sensor reed switch
  • 1 Cabo usb
  • 1 resistor 10kΩ

Montagem do cirquito

Passo 2: O sensor reed switch

O sensor reed switch é um componente essencial para nosso projeto, devido o mesmo mudar o seu campo magnético quando sofre uma interferência de um íma. Então caso a porta feche o sensor irá detectar o status e enviar para nosso servidor Nodejs rodando na Raspberry.

Passo 3: Desenvolvimento do software

Com apenas algumas linhas de código veremos que é bastante simples realizar este projeto. No desenvolvimento do software usaremos o Nodejs por que acho muito simples o seu funcionamento e como um desenvolvedor web, me sinto bem confortável com a linguagem JAVASCRIPT. Além do mais, o gerenciador de pacotes NPM é uma mão na roda para instalarmos todos os módulos que precisaremos.

Neste exemplo iremos fazer o Raspberry enviar um email quando o status da porta for alterado. Este projeto pode servir de base para você desenvolver seus proprios projetos… Solte a imaginação e mão na massa.

Iniciaremos com a instalação de dois pacotes via NPM. No terminal digite esses comandos:

npm install emailjs
npm install rpi-gpio

Com este código você terá que fazer algumas mudanças para utiliza-lo:

  • Caso utilizar um pino diferente do apresentado nesse tutorial, mude para o que vocẽ escolheu. Altere o valor do portaPino.

  • Altere as credenciais de seu e-mail (usuario, senha e host, caso não esteja usando o Gmail)

var gpio = require('rpi-gpio');
var email   = require("emailjs/email");
var pinoPorta = 7; 
var server  = email.server.connect({
                user:    "your.username",
                password:"YourPassword",
                host:    "smtp.gmail.com",
                ssl: true});

var ultimoStatus = 1;

gpio.setup(pinoPorta, gpio.DIR_IN,readInput);

function readInput()
{
    gpio.read(pinoPorta, function(err, value){
        if(ultimoStatus!=value)
        {
                console.log(alteraStatus(value));
                server.send({ //sending email
                   text:    alteraStatus(value),
                   from:    "Porta <youremail@gmail.com>",
                   to:      "Destinatário <youremail@gmail.com>",
                   subject: alteraStatus(value)
                }, function(err, message) { console.log(err || message); });
        }
        ultimoStatus = value;
    });

  setTimeout(readInput,1000); // verificando a porta de segundo e segundo
}

function alteraStatus(s){
  if(s==0) return 'A porta esta aberta! '+getTime();
  else return 'A porta esta fechada! '+getTime();
}

function getTime(){
        var h = new Date().getHours();
        var m = new Date().getMinutes();
        var s = new Date().getSeconds();
        if(h <10) h = '0'+h;
        if(m <10) m = '0'+m;
        if(s <10) s = '0'+s;
        return h+':'+m+':'+s;
}

Para executar o códgio você terá que salvar esse arquivo com o nome “statusporta.js”, em seguida abrir o terminal e digitar o seguinte comando:

node statusporta.js

Se tudo funcionar corretamente e você abrir , em seguida, fechar sua porta você deve receber um e-mail, verifique sua caixa de entrada.

Espero que tenham gostado e agregado conhecimento…

Até a próxima

Conectando display Oled com Nodemcu

MongoDB é um banco orientado a documentos open-source que permite alta performance, alta disponibilidade e escalabilidade automática. - 10gen. Continue Lendo

Como fazer deploy de Apps para o Heroku

Published on June 15, 2016

Como criei meu blog com Jekyll

Published on November 03, 2015