MQTT y ESP8266

Para trabajar con MQTT es interesante instalar primero en el ordenador un cliente como MQTT.fx para hacer debug: https://mqttfx.jensd.de/ o MQTT explorer http://mqtt-explorer.com/ 

Para conseguir una comunicación MQTT con ESP8266 o Arduino, emplearemos una librería. Existen muchas disponibles gracias a la comunidad que existe alrededor de Arduino. Concretamente, nosotros emplearemos una de las más conocidas y la más estable y flexible, lo que facilita su uso en proyectos que queramos realizar donde intervengan Arduino y MQTT.

Dicha librería es pubsubclient Arduino Client for MQTT y nos provee de un sencillo cliente que nos permite tanto subscribirnos como publicar contenido usando MQTT. Internamente, usa la API de Arduino Ethernet Client lo que lo hace compatible con un gran número de ‘shields’ y placas como:

  • Arduino Ethernet
  • Arduino YUN
  • Arduino WiFi Shield
  • Intel Galileo/Edison
  • ESP8266
  • ESP32

Web: https://pubsubclient.knolleary.net/ 

Instalar la librería mediante el gestor de librerías:

PubSubClient es una librería compatible con Arduino y ESP8266. Básicamente hace que nuestra placa se comporte como un cliente MQTT, es decir, que podamos publicar mensajes y suscribirnos a un topic o varios para recibir mensajes. Da lo mismo si utilizas un Arduino o un ESP8266, el código es prácticamente el mismo. La diferencia reside en cómo nos conectamos a la red WiFi o Ethernet, cada placa utiliza su propia librería.

Github PubSubClient: https://github.com/knolleary/pubsubclient 

API Documentación: https://pubsubclient.knolleary.net/api.html 

Enviando un mensaje a través del protocolo MQTT con Wemos D1 Mini

Vamos a partir de uno de los ejemplos que vienen dentro de la librería. Lo encontrarás en Archivo>Ejemplos>PubSubClient>mqtt_esp8266. Esta opción te abre el siguiente código: https://github.com/knolleary/pubsubclient/blob/master/examples/mqtt_esp8266/mqtt_esp8266.ino 

Configurar el SSID y el password de la red. En mqtt_server poner la IP de la Raspberry Pi donde se ha instalado el broker Mosquitto.

NOTA: tener en cuenta que si usamos usuario y contraseña debemos usar connect (clientID, username, password) en lugar de connect (clientID) https://pubsubclient.knolleary.net/api.html#connect3   

Código: https://github.com/jecrespo/Curso-IoT-Open-Source/blob/master/mqtt_esp8266/mqtt_esp8266.ino 

Este sketch publica un mensaje “hello world #x” consecutivo cada 2 segundos en el topic “outTopic” y se suscribe al topic “inTopic”. Además  cuando se recibe un mensaje se dispara la función callback que si es un 1 enciendo el led integrado y en caso contrario se desactiva.

Firmware para Wemos D1 Mini + Shields

El firmware para los nodos remotos:

Probar cada firmware y hacer un programa sencillo para interactuar con ellos.

Firmware de otros nodos remotos: https://github.com/jecrespo/Curso-Node-RED/tree/master/Remote%20Nodes%20Firmware/Firmware%20M5Stack%20Varios 

Topic Map

El topic map del firmware de los dispositivos es:

  • cursocefire/wemos/{nombre}/dato10s – publica mensaje numerado cada 10s
  • cursocefire/wemos/{nombre}/dato60s – publica mensaje numerado cada 60s
  • cursocefire/wemos/{nombre}/reset – publica mensaje cada reset o inicio
  • cursocefire/wemos/{nombre}/led – suscrito (1 led ON, otro valor  led OFF)
  • cursocefire/wemos/{nombre}/text – suscrito (muestra el mensaje por pantalla)
  • cursocefire/wemos/{nombre}/rele – suscrito (1 relé ON, otro valor  relé OFF). Firmware relé
  • cursocefire/wemos/{nombre}/oled – suscrito (muestra el mensaje por pantalla oled). Firmware oled
  • cursocefire/wemos/{nombre}/temperatura – publica dato temperatura cada 10 segundos. Firmware DS18B20
  • cursocefire/wemos/{nombre}/matrix – suscrito (0 efecto y apaga, de 1 a 8 ilumina de 1 a 8 líneas de matriz ). Firmware matrix.
  • cursocefire/raspberrypi/{nombre}/CPU – publica Node-RED el datos de CPU 
  • cursocefire/raspberrypi/{nombre}/Temperatura – publica Node-RED el datos de temperatura procesador
  • cursocefire/raspberrypi/{nombre}/Memoria – publica Node-RED el datos de memoria libre
  • cursocefire/wibeee/# – datos eléctricos de Wibeee
  • cursocefire/m5atom/enrique/aviso – suscrito (“alarma” – leds rojos, “aviso” – leds amarillos, “ok” – leds verdes, otro mensaje apaga)
  • cursocefire/m5atom/enrique/boton – al pulsar publica “press” o “longpress”
  • cursocefire/m5stack/enrique/A – al pulsar botón A publica “press”
  • cursocefire/m5stack/enrique/B – al pulsar botón B publica “press” 
  • cursocefire/m5stack/enrique/C – al pulsar botón C publica “press”
  • cursocefire/m5stack/enrique/led – suscrito (1 dibuja en pantalla círculo rojo, otro valor  dibuja en pantalla círculo verde)
  • cursocefire/m5stack/enrique/text – suscrito, muestra por pantalla el texto
  • cursocefire/m5stick/enrique/temperatura – publica dato temperatura cada 1 segundo
  • cursocefire/m5stick/enrique/humedad – publica dato humedad cada 1 segundo
  • cursocefire/m5stick/enrique/presion – publica dato presión cada 1 segundo
  • cursocefire/m5stickplus/enrique/distancia – publica dato distancia cuando se activa
  • cursocefire/m5stickplus/enrique/button – al pulsar botón publica “press”
  • cursocefire/m5stickplus/enrique/led – suscrito (1 led ON, otro valor  led OFF)
  • cursocefire/m5stickplus/enrique/label  – suscrito (“red” – circulo rojo, “yellow” – circulo amarillo, “green” – circulo verde, “black” – circulo negro)

3 pensamientos en “MQTT y ESP8266

  1. Pingback: Saber Más Fundamentos IoT CEFIRE | Aprendiendo Arduino

  2. Pingback: MQTT y ESP8266 -

  3. Pingback: Práctica 6: Integración de Datos en Plataforma IoT | Aprendiendo Arduino

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios .