Blog del Ing. Alejandro Alomar (webalealomar@gmail.com). En este blog subo algunos de los trabajos que hago como hobby (no profesional), hay temas variados como, impresoras 3d, IOT (internet de las cosas), programación de ESP8266, electrónica, etc.
En el tutorial anterior de IOT (internet de las cosas) usando MQTT en un ESP8266; explique cómo guardar los datos de MQTT en MySQL usando un script de Python; en este video les explico cómo hacer una tabla con los topics y graficar la temperatura. Para realizar esto vamos a usar MySQL, PHP y Highcharts.
Este es el séptimo tutorial de IOT
(internet de las cosas) usando MQTT en un ESP8266; en estos videos (Parte A y
B) explico
cómo integrar MQTT (usando el bróker CloudMQTT) con MySQL, para eso vamos a
usar Python y dos librerías, “paho-mqtt 1.3.0” para conectarse con MQTT y “MySQL-python
1.2.5” para trabajar con la base de datos. En la parte B del tutorial termino
de explicar cómo crear la base de datos usando la herramienta phpMyAdmin
incluida en el servidor local WAMP “Uniform Server – Coral 8.9.2”; y agrego lo
que falta del código de Python como trabajar con la base de datos.
Parte A:
Parte B:
tutorial17.py:
#!/usr/bin/env python 1# -*- coding: utf-8 -*-import paho.mqtt.client as mqttimport sys# 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))client = mqtt.Client()client.on_connect = on_connectclient.on_message = on_messagetry: 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...")
tutorial17b.py:
#!/usr/bin/env python 1# -*- coding: utf-8 -*-import paho.mqtt.client as mqttimport sysimport MySQLdb# Abrir conexión con bases de datostry: db = MySQLdb.connect("127.0.0.1","root","root","tutorial17")except: print("No se pudo conectar con la base de datos") print("Cerrando...") sys.exit()# Preparando cursorcursor = db.cursor()# 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("/") sql = """INSERT INTO `tutorial17`.`tabla` (`id`, `usuario`, `topic`, `mensaje`, `fecha`) VALUES (NULL, '""" + lista[1]+ """', '""" + lista[2] + """', '""" + str(msg.payload) + """', CURRENT_TIMESTAMP);""" try: # Ejecutar un comando SQL cursor.execute(sql) db.commit() print("Guardando en base de datos...OK") except: db.rollback() print("Guardando en base de datos...Falló")client = mqtt.Client()client.on_connect = on_connectclient.on_message = on_messagetry: client.connect("m13.cloudmqtt.com", 11948, 60)except: print("No se pudo conectar con el MQTT Broker...") print("Cerrando...") db.close() sys.exit() client.username_pw_set("lqeamtbn", "vh0cU_Vcszxp")try: client.loop_forever()except KeyboardInterrupt: #precionar Crtl + C para salir print("Cerrando...") db.close()
En este nuevo tutorial sobre IOT (internet de las cosas) usando ESP8266, voy a explica como agregarle un gráfico al dashboard MQTT que vimos en el tutorial anterior. Para eso vamos a usar JavaScript y dos librerías de Highcharts.
Este es el quinto tutorial de IOT (internet de las cosas) usando MQTT en un ESP8266; en estos videos (Parte A y B) les muestro como agregarle diseño al dashboard (tablero) que vimos en el tutorial 13, para eso vamos a hacer uso de CSS y JavaScript.
Este es el cuarto tutorial de IOT usando MQTT en un ESP8266; es un
complemento del número 13, en el que les mostré cómo hacer sus propios dashboards (tableros). En este video muestro cómo
hacer un login previo de exactamente el mismo ejemplo anterior. En el
tutorial muestro como hacer la aplicación web usando PHP (además de HTML y
JavaScript), tanto en un servidor local como en un servidor externo.
function OnOff(dato){ message = new Paho.MQTT.Message(dato); message.destinationName = '/' + usuario + '/salidaDigital' client.send(message); }; function enviarSalidaAnalogica(){ var dato = document.getElementById("myRange").value; message = new Paho.MQTT.Message(dato); message.destinationName = '/' + usuario + '/salidaAnalogica' client.send(message); }; // called when the client connects function onConnect() { // Once a connection has been made, make a subscription and send a message. console.log("onConnect"); client.subscribe("#"); } // called when the client loses its connection function onConnectionLost(responseObject) { if (responseObject.errorCode !== 0) { console.log("onConnectionLost:", responseObject.errorMessage); setTimeout(function() { client.connect() }, 5000); } } // called when a message arrives function onMessageArrived(message) { if (message.destinationName == '/' + usuario + '/' + 'temperatura') { //acá coloco el topic document.getElementById("temperatura").textContent = message.payloadString + " ºC"; } if (message.destinationName == '/' + usuario + '/' + 'pulsador') { //acá coloco el topic document.getElementById("pulsador").textContent = message.payloadString; } if (message.destinationName == '/' + usuario + '/' + 'salidaDigital') { //acá coloco el topic document.getElementById("salidaDigital").textContent = message.payloadString; } if (message.destinationName == '/' + usuario + '/' + 'salidaAnalogica') { //acá coloco el topic document.getElementById("salidaAnalogica").textContent = message.payloadString; } } function onFailure(invocationContext, errorCode, errorMessage) { var errDiv = document.getElementById("error"); errDiv.textContent = "Could not connect to WebSocket server, most likely you're behind a firewall that doesn't allow outgoing connections to port 39627"; errDiv.style.display = "block"; } var clientId = "ws" + Math.random(); // Create a client instance var client = new Paho.MQTT.Client("m11.cloudmqtt.com", 30722, clientId); // set callback handlers client.onConnectionLost = onConnectionLost; client.onMessageArrived = onMessageArrived; // connect the client client.connect({ useSSL: true, userName: usuario, password: contrasena, onSuccess: onConnect, onFailure: onFailure }); </script> </body></html>