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.
(http://i.imgur.com/MObykyi.png)
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:# 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.//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:
(http://i.imgur.com/hUkQnz9.png?1)
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
Que aporte! Que genialidad! +Karma
Gracias mi bro!
DUDA
Buenisimo!! Como aporte,quizas agregando un ESP8266 o un modulo ethernet podriamos hacerlo independiente de la computadora!
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/ (https://programarfacil.com/blog/arduino-blog/como-ifttt-arduino-nodemcu/)