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 Broker publico HIVEMQ
- Pruebas Broker Publico Mosca.io
- Pruebas Broker Publico Mosquitto
- Public mqtt Broker
Pruebas
Acontinuacion realizaremos 2 pruebas:
- Conexion con Broker MQTT mosquito.org desde Node-RED.
- Conexion Broker MQTT mosquito.org con ESP8266 & Node-RED.
Instalacion 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
- Tutorial ESP8266 DS18B20 Temperatura Node-RED MQTT (Mosquitto) IoT
- Tutorial ESP8266 Node-RED Granafa InfluxDB MQTT
- Tutorial Amplificador Audio PAM8302A ESP8266 Node-RED MQTT
- 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
- Public mqtt Broker
- Información completa Node-RED
- Informacion completa MQTT
- Tutorial ESP8266 DS18B20 Temperatura Node-RED MQTT (Mosquitto) IoT
- Tutorial ESP8266 Node-RED Granafa InfluxDB MQTT
- Tutorial Amplificador Audio PAM8302A ESP8266 Node-RED MQTT