Páginas

miércoles, 9 de noviembre de 2016

Tutorial ESP8266 Control GPIO Node-RED MQTT (Mosquitto) IoT # 1


Para la integración del modulo ESP8266 con la plataforma IoT node-red se ha utilizado el protocolo MQTT, existen librerias para esp8266 como cliente MQTT en este caso he decidido utilizar la libreria pubsubclient.

Este ejemplo permitira recibir que Node red reciba datos desde el ESP8266 y permitira controlar un diodo led conectado al GPIO 02 desde un dashboard creado en Node Red Dashboard.



Agregar a Arduino IDE la libreria pubsubclient utilizando el buscador de librerias o descargando manualmente la libreria y guardandola en su carpeta respectiva para librerias.

Nota: Para realizar correctamente este tutorial debe realizar los siguientes tutoriales.
Tutoriales Anteriores Recomendados
icstation.com
Tutorial 1: Instalacion de lubuntu ubuntu
Tutorial 2: Instalacion de Node Red
Tutorial 3: Instalacion Dashboard Node Red 
Tutorial 4: Instalacion nodo Modbus TCP en Node red 
Tutorial 5: Instalacion de Mosquitto Broker MQTT en Lubuntu
Tutorial 6: Programar ESP8266 con Arduino IDE

Codigo Arduino IDE
el codigo de arduino IDE realiza varios pasos pero definire los principales, conexion con Broker MQTT, funcion de publicar (enviar mensajes ) aun topico especifico y funcion de suscribir (recibir mensajes) aun topico especifico.
Nota: En la parte inferior del post Codigo arduino IDE completo

1.Parametros de Red
Configurar  parametros de red SSID y PASSWORD, se requiere tener previamente instalado un servidor MQTT Broker el cual cumple la funcion de servidor, en este caso yo utilizo Mosquitto MQTT.
const char* ssid = "##############";
const char* password = "###############";
const char* mqtt_server = "192.168.0.19";

2. Función publish ("topic", mensaje) 
 client.publish("event", "hello world");

3.  Función subscribe ("topic")
la funcion  subscribe realiza unllamado a la  funcion callback para la recepcion de datos
  client.subscribe("event");

4. Funcion callback
A esta funcion ingresan 3 parametros propios de la libreria pubsubclient.h  topic, payload (carga) y tamaño, realiza la impresion del topic y el mensaje, para el encendido del diodo led realiza un barrido de payload en una posicion especifica para determinar el estado 1 o 0.

void callback(char* topic, byte* payload, unsigned int length) {
  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");
  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  }
  Serial.println();

  // Switch on the LED if an 1 was received as first character
  if ((char)payload[0] == '0') {
     Serial.println("LOW");
    digitalWrite(2, LOW);   // Turn the LED on (Note that LOW is the voltage level
    // but actually the LED is on; this is because
    // it is acive low on the ESP-01)
  } 

 if ((char)payload[0] == '1') {
    Serial.println("HIGH");
    digitalWrite(2, HIGH);  // Turn the LED off by making the voltage HIGH
  }

}


Node red
1 Nodo de Recepcion de mensajes cliente MQTT  (subscribe) desde ESP8266 atravez del topic "event" y depuracion en nodo debug.
2 Creacion de 2 botones  "On" "Off" para envio de valores a nodo MQTT (publish) hacia ESP8266 topic "event"
3 Nodo text de salida de texto para visualizar estado de diodo led.
Nota: En la parte inferior del post codigo de Importación de Nodos en Github




Diseño Dashboard Node red
Organizacion de Widgets en pestañas y Grupos



Visualizacion Dashboard Node red



Conexion ESP8266 








Donde Comprar ?

Descargas:
Codigo Arduino IDE Github ESP8266 MQTT
Github Libreria pubsubclient
Codigo importacion Node red

Refencias
icstation.com
Tutorial 1: Instalacion de lubuntu ubuntu
Tutorial 2: Instalacion de Node Red
Tutorial 3: Instalacion Dashboard Node Red 
Tutorial 4: Instalacion nodo Modbus TCP en Node red 
Tutorial 5: Instalacion de Mosquitto Broker MQTT en Lubuntu
Tutorial 6: Programar ESP8266 con Arduino IDE
node-red-dashboard
Nodered.org
github.com/node-red
Nodejs.org

Mas Información:

Canal Youtube

1 comentario:
Write comentarios
  1. Ufff que cantidad de información útil!!!
    Voy a necesitar al menos un mes para poder probar todo esto.
    Muchísimas gracias por la publicación :-)

    ResponderEliminar