Arduino + Python [Alertas por E-Mail]

  • 3 Respuestas
  • 4512 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Riojas

  • *
  • Underc0der
  • Mensajes: 60
  • Actividad:
    0%
  • Reputación 4
  • -RIOJAS
    • Ver Perfil
    • Arduino Center
    • Email

Arduino + Python [Alertas por E-Mail]

  • en: Abril 12, 2017, 01:20:34 pm
Que hay de nuevo gente!!!
Les traigo esta practica en la cual haremos uso de Python para enviarnos alertas de E-mail cuando un sensor de presencia(PIR) sea activado.

Manos a la obra!!!

Materiales necesarios:
1 Arduino UNO.
1 Sensor PIR.
Cables para conexión.


Enseguida les dejo el diagrama de conexión.


En esta ocasión también haremos usa de la librería "serial" que se encarga de la comunicación entre Python y Arduino (les dejare los enlaces al final).

A continuacion les dejo el codigo de Python explicado:

Código: (python) You are not allowed to view links. Register or Login
# Importamos las librerias
import time
import serial
import smtplib
import mimetypes

# Importamos los módulos necesarios
from email.MIMEText import MIMEText

#Declaramos las variables de el emisor y el receptor de el correo a enviar.
emisor = "[email protected]"
receptor = "[email protected]"

#Creamos el objeto "ser" para comunicarnos con Arduino, cambiar el puerto COM por el de tu arduino
ser = serial.Serial('COM9', 9600)

#Definimos la funciona que se encargara de mandar el mail   
def envia_email():
   
    # Autenticamos
    mailServer = smtplib.SMTP('smtp.gmail.com',587)
    mailServer.ehlo()
    mailServer.starttls()
    mailServer.ehlo()
    mailServer.login(emisor,"contraseñadelemisor")
                               
    # Enviamos el mensaje
    mailServer.sendmail(emisor,receptor,mensaje.as_string())
    print("Mensaje Enviado!")

    # Cerramos conexión
    mailServer.close()


while True:
    lectura = ser.readline()
    print(lectura)
    #Este If se encarga de leer lo que entra por el puerto serie
    #Si la primer letra de lo que contiene el puerto seria es una "M" se cumple la condicion
    if lectura[0] == 'M' :
        #Declaramos las variables fecha y hora para enviarlas en el mail
        fecha = time.strftime("%d/%m/%y")
        hora = time.strftime("%H:%M:%S")
        # Configuracion del mensaje
        mensaje = MIMEText("Se ha activado el sensor PIR el: "+ fecha + " a las: " + hora)
        mensaje['From']=emisor
        mensaje['To']=receptor
        mensaje['Subject']="Sensor PIR Activado!!!"
        #Se envia el mail
        envia_email()
    time.sleep(0.5)


Hay que tener en cuenta que debemos cambiar el numero del puerto COM por el que este usando tu Arduino en ese momento.

Ahora vamos con el código de Arduino.

Código: (c) You are not allowed to view links. Register or Login
//Definimos el pin en el que conectaremos la salido de el PIR
int pirPin = 8;

int minSecsBetweenEmails = 60; // 1 min. Tiempo entre lecturas de el sensor, esto para evitar que se envien muchos correos.
 
long lastSend = -minSecsBetweenEmails * 1000l;

 
void setup()
{
  pinMode(pirPin, INPUT); //Definimos el pin de el sensor como una entrada
  Serial.begin(9600); //Inicializamos la comunicacion serial. Debe ser la misma que en Python
}
 
void loop()
{
  long now = millis();
  if (digitalRead(pirPin) == HIGH)
  {
    if (now > (lastSend + minSecsBetweenEmails * 1000l))
    {
      Serial.println("MOVIMIENTO"); //Si se detecte movimiento enviamos este mensaje por el puerto Serie
      lastSend = now;
    }
    else
    {
      Serial.println("Espere..."); //Se enviara este mensaje mientras no se active el sensor
    }
  }
  delay(500);
}

Y este es el resultado de el mail que se envía:


Hasta aquí esta sencilla practica, espero les guste y atentos a los próximos aportes ya que estaremos añadiendo la función de enviar una foto de el "intruso" utilizando openCV

Saludos colegas!!!

Links de descargas:
Python 2.7
You are not allowed to view links. Register or Login

Libreria pySerial
You are not allowed to view links. Register or Login


Desconectado DUDA

  • *
  • Underc0der
  • Mensajes: 337
  • Actividad:
    0%
  • Reputación 1
  • Hago pocas cosas, pero las hago bien.
    • Ver Perfil

Re:Arduino + Python [Alertas por E-Mail]

  • en: Abril 12, 2017, 01:40:13 pm
Que aporte! Que genialidad! +Karma

Gracias mi bro!
DUDA

Desconectado Nikola Tesla

  • *
  • Underc0der
  • Mensajes: 3
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

Re:Arduino + Python [Alertas por E-Mail]

  • en: Abril 12, 2017, 02:49:04 pm
Buenisimo!! Como aporte,quizas agregando un ESP8266 o un modulo ethernet podriamos hacerlo independiente de la computadora!

Desconectado ldelvalleh

  • *
  • Underc0der
  • Mensajes: 1
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email

Re:Arduino + Python [Alertas por E-Mail]

  • en: Abril 13, 2017, 05:49:34 am
Muy bueno me ha encantado. Podéis probar también el servicio IFTTT con Arduino es un servicio muy potente y más sencillo.

Os dejo un tutorial de IFTTT con NodeMCU (ESP8266) y Arduino donde los explican con un Tweet.

You are not allowed to view links. Register or Login