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