sábado, 2 de septiembre de 2017

Tutorial #19 ESP8266 (Parte9) – MQTT – Enviar email usando Gmail y Python

Este es otro tutorial sobre internet de las cosas (IOT) usando MQTT en un ESP8266, en el que muestro como usar una script de Python que monitorea MQTT para enviar un email cuando la temperatura que lee el sensor LM35 supera un determinado valor.


tutorial19.py:

#!/usr/bin/env python 1
# -*- coding: utf-8 -*-

import paho.mqtt.client as mqtt
import sys
import smtplib
import mimetypes

global supero
supero = False

# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, flags, rc):
    print("Conectado - Codigo de resultado: "+str(rc))

    # Subscribing in on_connect() means that if we lose the connection and
    # reconnect then subscriptions will be renewed.
    client.subscribe("/#")

# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
    print(msg.topic+" "+str(msg.payload))
    lista = msg.topic.split("/")

    global supero

    if str(lista[2]) == "temperatura" and float(msg.payload) < 26:
       supero = False

    if supero == False and str(lista[2]) == "temperatura" and float(msg.payload) > 26:

        supero = True

        from email.MIMEText import MIMEText
     
        emisor = "____@gmail.com"
        receptor = "____@gmail.com"
        
        print("Enviando Email...")
     
        # Configuracion del mensaje
        mensaje = MIMEText("La temperatura de la " + lista[1] + " es de: " + str(msg.payload))
        mensaje['From']=emisor
        mensaje['To']=receptor
        mensaje['Subject']= "La temperatura de la " + lista[1] + " superó los 26ºC"
     
        try:
            # Nos conectamos al servidor SMTP de Gmail
            serverSMTP = smtplib.SMTP('smtp.gmail.com',587)
            serverSMTP.ehlo()
            serverSMTP.starttls()
            serverSMTP.ehlo()
            serverSMTP.login(emisor,"__password__")
            print("Conectado con exito al servidor SMTP...")
        except:
            print("Error al intentar conectarse al servidor SMTP...")
     
        try:
            # Enviamos el mensaje
            serverSMTP.sendmail(emisor,receptor,mensaje.as_string())
            # Cerramos la conexion
            serverSMTP.close()
            print("Email enviado con exito...")
        except:
            print("Error al intentar enviar el email...")

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

try:
    client.connect("m13.cloudmqtt.com", 11948, 60)
except:
    print("No se pudo conectar con el MQTT Broker...")
    print("Cerrando...")
    sys.exit()
    
client.username_pw_set("lqeamtbn", "vh0cU_Vcszxp")

try:
    client.loop_forever()
except KeyboardInterrupt:  #precionar Crtl + C para salir
    print("Cerrando...")

No hay comentarios:

Publicar un comentario