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.
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:
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
Ufff que cantidad de información útil!!!
ResponderBorrarVoy a necesitar al menos un mes para poder probar todo esto.
Muchísimas gracias por la publicación :-)