Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Arduino + Python [Alertas por E-Mail]

  • 3 Respuestas
  • 3074 Vistas

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

Desconectado Riojas

  • *
  • Underc0der
  • Mensajes: 59
  • Actividad:
    0%
  • Reputación 4
  • -RIOJAS
    • Ver Perfil
    • Arduino Center
    • Email
« 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
  1. # Importamos las librerias
  2. import time
  3. import serial
  4. import smtplib
  5. import mimetypes
  6.  
  7. # Importamos los módulos necesarios
  8. from email.MIMEText import MIMEText
  9.  
  10. #Declaramos las variables de el emisor y el receptor de el correo a enviar.
  11. receptor = "[email protected]"
  12.  
  13. #Creamos el objeto "ser" para comunicarnos con Arduino, cambiar el puerto COM por el de tu arduino
  14. ser = serial.Serial('COM9', 9600)
  15.  
  16. #Definimos la funciona que se encargara de mandar el mail    
  17. def envia_email():
  18.    
  19.     # Autenticamos
  20.     mailServer = smtplib.SMTP('smtp.gmail.com',587)
  21.     mailServer.ehlo()
  22.     mailServer.starttls()
  23.     mailServer.ehlo()
  24.     mailServer.login(emisor,"contraseñadelemisor")
  25.                                
  26.     # Enviamos el mensaje
  27.     mailServer.sendmail(emisor,receptor,mensaje.as_string())
  28.     print("Mensaje Enviado!")
  29.  
  30.     # Cerramos conexión
  31.     mailServer.close()
  32.  
  33.  
  34. while True:
  35.     lectura = ser.readline()
  36.     print(lectura)
  37.     #Este If se encarga de leer lo que entra por el puerto serie
  38.     #Si la primer letra de lo que contiene el puerto seria es una "M" se cumple la condicion
  39.     if lectura[0] == 'M' :
  40.         #Declaramos las variables fecha y hora para enviarlas en el mail
  41.         fecha = time.strftime("%d/%m/%y")
  42.         hora = time.strftime("%H:%M:%S")
  43.         # Configuracion del mensaje
  44.         mensaje = MIMEText("Se ha activado el sensor PIR el: "+ fecha + " a las: " + hora)
  45.         mensaje['From']=emisor
  46.         mensaje['To']=receptor
  47.         mensaje['Subject']="Sensor PIR Activado!!!"
  48.         #Se envia el mail
  49.         envia_email()
  50.     time.sleep(0.5)
  51.  
  52.  

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
  1. //Definimos el pin en el que conectaremos la salido de el PIR
  2. int pirPin = 8;
  3.  
  4. int minSecsBetweenEmails = 60; // 1 min. Tiempo entre lecturas de el sensor, esto para evitar que se envien muchos correos.
  5.  
  6. long lastSend = -minSecsBetweenEmails * 1000l;
  7.  
  8.  
  9. void setup()
  10. {
  11.   pinMode(pirPin, INPUT); //Definimos el pin de el sensor como una entrada
  12.   Serial.begin(9600); //Inicializamos la comunicacion serial. Debe ser la misma que en Python
  13. }
  14.  
  15. void loop()
  16. {
  17.   long now = millis();
  18.   if (digitalRead(pirPin) == HIGH)
  19.   {
  20.     if (now > (lastSend + minSecsBetweenEmails * 1000l))
  21.     {
  22.       Serial.println("MOVIMIENTO"); //Si se detecte movimiento enviamos este mensaje por el puerto Serie
  23.       lastSend = now;
  24.     }
  25.     else
  26.     {
  27.       Serial.println("Espere..."); //Se enviara este mensaje mientras no se active el sensor
  28.     }
  29.   }
  30.   delay(500);
  31. }

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
https://www.python.org/

Libreria pySerial
https://pypi.python.org/pypi/pyserial/2.7


Desconectado DUDA

  • *
  • Underc0der
  • Mensajes: 334
  • Actividad:
    0%
  • Reputación 1
  • Hago pocas cosas, pero las hago bien.
    • Ver Perfil
« Respuesta #1 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
« Respuesta #2 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
« Respuesta #3 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.

https://programarfacil.com/blog/arduino-blog/como-ifttt-arduino-nodemcu/

 

¿Te gustó el post? COMPARTILO!



Arduino + Snap4Arduino "Hola Mundo"

Iniciado por Riojas

Respuestas: 1
Vistas: 3152
Último mensaje Febrero 19, 2017, 09:31:50 pm
por rreedd
Arduino + Snap4Arduino "Juego PONG" [Parte1]

Iniciado por Riojas

Respuestas: 0
Vistas: 2415
Último mensaje Febrero 24, 2017, 04:59:07 pm
por Riojas
Arduino + Snap4Arduino "Juego PONG" [Final]

Iniciado por Riojas

Respuestas: 0
Vistas: 1920
Último mensaje Marzo 15, 2017, 02:33:08 pm
por Riojas
Arduino + Snap4Arduino "Juego PONG" [Parte2]

Iniciado por Riojas

Respuestas: 0
Vistas: 2129
Último mensaje Marzo 03, 2017, 07:07:08 pm
por Riojas
Entornos Gráficos para la Programación: Plataforma Open Hardware Arduino

Iniciado por ANTRAX

Respuestas: 0
Vistas: 2817
Último mensaje Junio 30, 2012, 06:47:30 pm
por ANTRAX