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...")
Maestro le quiero agradecer la gran generosidad de compartir su conocimiento y trabajo. Le mando un cordial saludo.
ResponderEliminarBuen día, se podría desarrollar MQTT en un host o servidor (no local) con nodeMCU, de pronto Socket, pero no utilice m13.cloudmqtt.com u otra plataforma IoT, en cambio el mismo host como en el que se muestra en el video que ejecuta los .php e index?
ResponderEliminarHola Todo me corre muy bien pero tengo un detalle:
ResponderEliminarY..bueno yo le puse enviar e-mail a los 36 °C....
PORQUE sera??
Python 2.7.15 (v2.7.15:ca079a3ea3, Apr 30 2018, 16:30:26) [MSC v.1500 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>
===================== RESTART: C:\Python27\tutorial19.py =====================
Conectado - Codigo de resultado: 5
Conectado - Codigo de resultado: 0
/placa2/temperatura 33.5
/placa2/pulsador presionado
/placa2/pulsador NO presionado
/placa2/pulsador presionado
/placa2/pulsador NO presionado
/placa2/temperatura 31.3
/placa2/temperatura 35.4
/placa2/pulsador presionado
/placa2/pulsador NO presionado
/placa2/pulsador presionado
/placa2/pulsador NO presionado
/placa2/temperatura 32.3
/placa2/salidaDigital ON
/placa2/salidaAnalogica 0
/placa2/salidaAnalogica 0
/placa2/salidaAnalogica 1023
/placa2/temperatura 38.3
Enviando Email...
Traceback (most recent call last):
File "C:\Python27\tutorial19.py", line 81, in
client.loop_forever()
File "C:\Python27\lib\site-packages\paho_mqtt-1.3.1-py2.7.egg\paho\mqtt\client.py", line 1481, in loop_forever
rc = self.loop(timeout, max_packets)
File "C:\Python27\lib\site-packages\paho_mqtt-1.3.1-py2.7.egg\paho\mqtt\client.py", line 1003, in loop
rc = self.loop_read(max_packets)
File "C:\Python27\lib\site-packages\paho_mqtt-1.3.1-py2.7.egg\paho\mqtt\client.py", line 1284, in loop_read
rc = self._packet_read()
File "C:\Python27\lib\site-packages\paho_mqtt-1.3.1-py2.7.egg\paho\mqtt\client.py", line 1849, in _packet_read
rc = self._packet_handle()
File "C:\Python27\lib\site-packages\paho_mqtt-1.3.1-py2.7.egg\paho\mqtt\client.py", line 2305, in _packet_handle
return self._handle_publish()
File "C:\Python27\lib\site-packages\paho_mqtt-1.3.1-py2.7.egg\paho\mqtt\client.py", line 2500, in _handle_publish
self._handle_on_message(message)
File "C:\Python27\lib\site-packages\paho_mqtt-1.3.1-py2.7.egg\paho\mqtt\client.py", line 2647, in _handle_on_message
self.on_message(self, self._userdata, message)
File "C:\Python27\tutorial19.py", line 45, in on_message
mensaje['Subject']= "La temperatura de la " + lista[1] + " superó los 36 ⁰C"
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 6: ordinal not in range(128)
>>>
Felicidades y Muchas gracias de antemano!!
:-)
excelente trabajo maestro
ResponderEliminar