ESP8266 & Broker Publico MQTT Mosquitto & Node-RED

En las ultimas pruebas hemos tomado el protocolo MQTT dado que ha tomado gran fuerza los ultimos años y pensamos que es gracias a su sencilles, seguridad, practicidad y muy ligero perfecto proyectos aplicaciones IoT y M2M.

Gracias a la contribucion de creadores y desarrolladores de aplicaciones MQTT, existen en internet Broker MQTT  publicos para pruebas de control y monitoreo desde internet, estan disponibles para conectar desde cualquier cliente MQTT en este caso utilizaremos el Broker publico de mosquitto , el cual  tiene dashboard para visualizar conexiones MQTT y web sockets.

De esta manera realizamos una aplicacion IoT sencilla y sin complicaciones.

Dado que es publico y gratuito se deben tener unas consideraciones de las cuales hablaremos abajo como no abusar del servicio y no confiar.

Pagina Oficial: mosquitto.org

Dashboard MQTT: mosquitto.org

 

Configuraciones Broker MQTT

Broker: test.mosquitto.org
TCP Port: 

  • 1883 : MQTT, unencrypted
  • 8883 : MQTT, encrypted
  • 8884 : MQTT, encrypted, client certificate required


Websocket Port: 

  • 8080 : MQTT over WebSockets, unencrypted
  • 8081 : MQTT over WebSockets, encrypted

Otros Broker publicos





Pruebas

Acontinuacion realizaremos 2 pruebas:

  1. Conexion con Broker MQTT mosquito.org desde Node-RED.
  2. Conexion Broker MQTT mosquito.org  con ESP8266 & Node-RED.

Instalacion Node-RED

Instalacion de Plataforma Node-Red

Conexion con Broker MQTT Mosquitto desde Node-RED

Utilizando Node-RED instalado previamente en un servidor local en mi red, realizaremos la conexión MQTT con Mosquitto.org para validar la conexión desde cualquier cliente MQTT.

De esta manera podríamos enviar y recibir  datos entre nuestros dispositivos y aplicaciones atravez de internet sin necesidad de cosas tan complejas o costosas como vpn ip fijas y demas inconvenientes para dichas aplicaciones IoT.





Conexión Broker MQTT Mosquitto.org con ESP8266 & Node-RED

En este caso el Modulo ESP8266 12E NodeMCU configurado como cliente MQTT realiza la lectura un sensor de temperatura DS18B20 Protocolo (Onewire) realiza el envio la temperatura via MQTT al Broker mosquitto y Node-RED instalado en la red local solicita el valor de temperatura y gráfica en Node-RED Dashboard.

Topico MQTT 

«temperature/PDAControl/sensor»

Mensaje

valor temperatura ejemplos «28.9»

 Video Completo Explicado ESP8266 mosquitto & Node-RED

Pruebas similares

  1. Tutorial ESP8266 DS18B20 Temperatura Node-RED MQTT (Mosquitto) IoT
  2. Tutorial ESP8266 Node-RED Granafa InfluxDB MQTT
  3. Tutorial Amplificador Audio PAM8302A ESP8266 Node-RED MQTT
  4. Plataforma Node-RED

Codigo Arduino IDE

El Modulo ESP8266 se configura como cliente MQTT y realiza la lectura periodica de la temperatura del sensor DS18B20, conectada al pin D4 (Gpio 02), alimentado a 5v, con su respectiva resistencia de 4.7K recomendada en el datasheet de maxim.

Requiere las librerias :

/* MQTT Client Temperature Onewire
* More information about projects PDAControl 
* PDAControl English http://pdacontrolen.com 
* Mas informacion sobre proyectos PDAControl
* PDAControl Espanol http://pdacontroles.com 
* Channel Youtube https://www.youtube.com/c/JhonValenciaPDAcontrol/videos 
*/


#include < ESP8266WiFi.h >
#include < PubSubClient.h >
#include < OneWire.h > 
#include < DallasTemperature.h >
// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2 // pin 2

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);


// Update these with values suitable for your network.

const char* ssid = "************";
const char* password = "************";
const char* mqtt_server = "test.mosquitto.org"; /// MQTT Broker
int mqtt_port = 1883;

WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50];
int value = 0;

void setup() { 
 Serial.begin(115200);
 // Start up the library
 sensors.begin();
 
 setup_wifi();
 client.setServer(mqtt_server, mqtt_port);
 client.setCallback(callback);

 Serial.println("Connected ");
 Serial.print("MQTT Server ");
 Serial.print(mqtt_server);
 Serial.print(":");
 Serial.println(String(mqtt_port)); 
 Serial.print("ESP8266 IP ");
 Serial.println(WiFi.localIP()); 
 Serial.println("Modbus RTU Master Online");


 
}

void setup_wifi() {

 delay(10);
 // We start by connecting to a WiFi network
 Serial.println();
 Serial.print("Connecting to ");
 Serial.println(ssid);

 WiFi.begin(ssid, password);

 while (WiFi.status() != WL_CONNECTED) {
 delay(500);
 Serial.print(".");
 }

 Serial.println("");
 Serial.println("WiFi connected");
 Serial.println("IP address: ");
 Serial.println(WiFi.localIP());
}

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();
 
}
void reconnect() {
 // Loop until we're reconnected
 while (!client.connected()) {
 Serial.print("Attempting MQTT connection...");
 // Attempt to connect
 if (client.connect("ESP8266Client")) {

 Serial.println("connected");
 // client.subscribe("event");
 } else {
 Serial.print("failed, rc=");
 Serial.print(client.state());
 Serial.println(" try again in 5 seconds");
 // Wait 5 seconds before retrying
 delay(5000);
 }
 }
}
void loop() {
 
 sensors.requestTemperatures();
 float celsius = sensors.getTempCByIndex(0);
 Serial.println(sensors.getTempCByIndex(0));
 
 char temperaturenow [15];
 dtostrf(celsius,7, 3, temperaturenow); //// convert float to char 
 client.publish("temperature/PDAControl/sensor", temperaturenow); /// send char 
 
 if (!client.connected()) {
 reconnect();

 }
 client.loop();

 delay(10000); 
}

Materiales y donde comprar

Instalacion en Lubuntu

Instalacion de Mosquitto Broker MQTT en lubuntu (Ubuntu) linux

Conclusiones y Recomendaciones

Consideramos que aunque tecnicamente el broker es publico no realizamos aplicaciones que esten constantemente conectada a este broker, se deben tener en cuentas las siguientes recomendaciones dadas por mosquitto.org:

Usted es libre de usarlo para cualquier aplicación, pero por favor no abusar ni confiar en ella para nada de importancia. También debe construir su cliente para hacer frente a la reiniciación Broker, mas documentacion referente en test.mosquitto.org

Solo realizamos pruebas rapidas, aunque cabe notar que han montados sus aplicaciones IoT con este broker sin ningun inconveniente aparente el servicio esta activo y es publico.

Con un broker en la Nube (intenet) desde cualquier parte podríamos conectar nuestros dispositivos y aplicaciones sin limites de direcciones IP y demas restricciones, actualmente investigo planes y servicios de servidores MQTT.

En proximos tutoriales probaremos otros servidores MQTT publicos e interaciones con FRED (Node-RED) .

Otros Broker publicos

Referencias





 

 

Deja una respuesta