ESP8266 Cliente MQTT Mosquitto Node-RED

Desde hace un tiempo ha entrado en auge el IoT o Internet de las cosas, abriendo una posibilidad de interconectar dispositivo a internet, uno de los protocolos que implementados mas conocidos es el Protocolo MQTT, este protocolo TCP/IP de mensajeria ligera es excelente para envio bidirecional de datos (sensores, actuadores, etc).Se requiere un instalar Broker MQTT en caso de pruebas locales como en este caso, aunque existe una gran cantidad de Plataformas IoT que ya lo tienen Implementado.






Recomendamos para pruebas locales el broker Mosquitto y Node-RED, Para la siguiente prueba  utilizaremos Mosquitto MQTT (Tutorial Recomendado Instalacion de Mosquitto Broker MQTT en lubuntu (Ubuntu) linux ), Aunque se puede instalar en Windows y MAC, hemos decidido utilizar Lubuntu o crear una MV en Virtualbox  y sobre esta instalar Mosquitto y Node-RED.

Esta recopilación de Videos Tutoriales sobre Node-RED sera una buena introducción a esta plataforma: Node-RED IoT.

trialcommand.com

Prueba

Realizaremos una pequeña prueba de ESP8266 como cliente MQTT, de esta manera nuestro modulo(Cliente MQTT) atravez de Mosquitto(Broker) conectara con Node-RED (Cliente MQTT).

Hemos conectado un Diodo led(GPIO D15) y un pulsador (GPIO D0)al modulo ESP8266, desde Node-RED Dashboard activar y desactivar el diodo led y visualizar el estado del pulsador.

Se han creado 2 topicos MQTT:

  1. client_MQTT.subscribe(“output”);    /// activate Led – activa led
  2. client_MQTT.publish(“input”,buf);  //// Array char mensage MQTT /// state input – estado entrada.

El siguiente tutorial explicara los puntos principales de la aplicacion.

ESP8266 Cliente MQTT Node-RED Mosquitto

Nota:En este caso el ESP8266 esta constantemente enviando el valor del pulsador Input y leyendo estado de Output, se recomienda realizar solicitudes periodicas utilizando delay’s para evitar conflictos.

Codigo Arduino IDE

Sucripciones

Para definir una suscripcion se requiere la funcion “client_MQTT.subscribe(“output”); “ y el mensaje retornara mensajes en la funcion callback realiza la recepción de  todas las suscripciones, con un if se filtran los topicos requeridos y se asignan a variables locales.

Publicaciones

la funcion para publicar “client_MQTT.publish(“input”,buf);”  utiliza los parametros  “topico”, “mensaje”  en este caso el valor de la entrada se convierte de int a String, la funcion no acepta Strings,  utiliza array de char en este caso y hemos implementado esta funcion de conversion.

Conclusiones

El protocolo MQTT se ha convertido en uno de los protocolos estandard para aplicaciones para el Internet de las cosas IoT, Realizando una comparación con otros protocolos mencionaremos algunas  ventajas:

  • Permite el envio de Strings sin limitarse a Numeros.
  • El envio de mensajes sin requerir nombres especificos de registros.
  • Se puede realizar una agrupación y organización de registros sencillas.
  • Consideramos que es muy rápido, aunque en nuestro ejemplo abusemos al tener un envio constante, se recomienda enviar datos en intervalos fijos.

Node-RED  es una gran herramienta para aplicaciones de estas características y dispone de un Dashboard que permite gran cantidad de aplicaciones.





Referencias

Descargas

Libreria PubSubClient para ESP8266

Creada por knolleary

3 Replies to “ESP8266 Cliente MQTT Mosquitto Node-RED”

Deja un comentario