Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

README: Configuración de Broker MQTT con Mosquitto y ESP32

1. Descripción

Este proyecto tiene como objetivo montar un broker MQTT usando Mosquitto en una VM Ubuntu y conectar una ESP32 para enviar y recibir datos de sensores de manera remota. La comunicación se realiza mediante tópicos MQTT, lo que permite actualizar la configuración de la ESP32 sin reprogramarla.


2. Requisitos

  • Hardware

    • ESP32
    • Sensor(es) conectado(s) a la ESP32 (ej: temperatura, humedad)
    • Computadora host para desarrollo
  • Software

    • Vagrant
    • VirtualBox
    • Ubuntu 22.04 (Jammy) como VM
    • Mosquitto MQTT Broker
    • IDE Arduino o PlatformIO
    • Librería Arduino PubSubClient para MQTT

3. Configuración de la VM con Vagrant

Ejemplo de Vagrantfile:

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/jammy64"
  config.vm.network "private_network", ip: "192.168.1.56"
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "1024"
    vb.cpus = 1
  end
end

Pasos para levantar la VM:

vagrant up
vagrant ssh

4. Instalación de Mosquitto

Dentro de la VM:

sudo apt update
sudo apt install mosquitto mosquitto-clients -y
sudo systemctl enable mosquitto
sudo systemctl start mosquitto
sudo systemctl status mosquitto

5. Configuración de Mosquitto para aceptar conexiones externas

Editar el archivo de configuración:

sudo nano /etc/mosquitto/mosquitto.conf

Agregar al final:

listener 1883 0.0.0.0
allow_anonymous true
persistence false

Reiniciar el servicio:

sudo systemctl restart mosquitto

Verificar que escuche en todas las interfaces:

sudo netstat -tuln | grep 1883
# O usando ss
sudo ss -tuln | grep 1883

Resultado esperado:

tcp   0   0 0.0.0.0:1883   0.0.0.0:*   LISTEN

6. Configuración de la ESP32

6.1 Librerías necesarias

  • WiFi.h
  • PubSubClient.h (instalable desde el Library Manager de Arduino)

6.2 Conexión Wi-Fi y MQTT

#include <WiFi.h>
#include <PubSubClient.h>

const char* ssid = "TU_SSID";
const char* password = "TU_PASSWORD";
const char* mqtt_server = "192.168.1.56"; // IP de la VM broker

WiFiClient espClient;
PubSubClient client(espClient);

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  
  Serial.println("\n✅ Conectado a WiFi!");
  
  client.setServer(mqtt_server, 1883);
}

void loop() {
  if (!client.connected()) {
    reconnect();
  }
  client.loop();
  
  // Publicar datos cada 5 segundos
  static unsigned long lastMsg = 0;
  unsigned long now = millis();
  if (now - lastMsg > 5000) {
    lastMsg = now;
    client.publish("sensor/temp", "Dato de prueba");
  }
}

void reconnect() {
  while (!client.connected()) {
    Serial.print("Conectando MQTT...");
    if (client.connect("ESP32_Client")) {
      Serial.println("✅ Conectado al broker MQTT");
      client.subscribe("config/esp32");
    } else {
      Serial.print("Error rc=");
      Serial.print(client.state());
      Serial.println(" intentando de nuevo en 5s");
      delay(5000);
    }
  }
}

7. Verificación de mensajes

7.1 Desde la VM

  • Suscribirse a los tópicos publicados por la ESP32:
mosquitto_sub -t "sensor/temp" -v
mosquitto_sub -t "config/esp32" -v
  • Publicar mensajes de configuración:
mosquitto_pub -h 192.168.1.56 -t "config/esp32" -m '{"intervalo":10000}'

La ESP32 debería recibir los mensajes en tiempo real.

7.2 Desde la PC (opcional)

mosquitto_sub -h 192.168.1.56 -t "sensor/temp" -v
mosquitto_pub -h 192.168.1.56 -t "config/esp32" -m '{"intervalo":10000}'

8. Notas importantes

  • La ESP32 no debe usar localhost (127.0.0.1) para conectarse al broker; siempre usar la IP de la VM.
  • Evitar delay() largos en el loop() para no perder la conexión MQTT.
  • Usar client.loop() constantemente para mantener la sesión activa.
  • Para entornos de producción, se recomienda configurar autenticación y TLS en Mosquitto.

9. Resultado esperado

  • La ESP32 se conecta automáticamente al Wi-Fi y al broker MQTT.
  • Los mensajes publicados aparecen en el broker en tiempo real.
  • Se pueden enviar mensajes de configuración desde la VM o cualquier cliente MQTT externo.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages