Skip to content

ekersten/arduino-mqtt-socket.io

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Arduino-MQTT-Socket.io

Proyecto para conectar un dispositivo Arduino (ESP32/8266) a un servidor MQTT para publicación y recepción de telemetría e instrucciones.

Servidor Node.js con Socket.io para la sincronización de los eventos de MQTT mediante WebSockets.

Cliente conectado a los WebSockets para enviar y recibir datos desde el Arduino.

Requisitos

Hardware

  • ESP32 DevKit (probado en NodeMCU ESP32)
  • Potenciómetro (conectado a pin analógico)
  • Botón pulsador (pull-down)
  • LED compatible con PWM

Software

  • Arduino IDE o PlatformIO
  • Docker y Docker Compose (para el broker MQTT)
  • Node.js (para el servidor Socket.io - pendiente de implementar)
  • MQTTX (opcional) - Cliente MQTT con GUI para testing

Librerías Arduino

  • PubSubClient - Cliente MQTT
  • ArduinoJson (v7.x) - Serialización/deserialización JSON
  • WiFiManager - Configuración WiFi por portal cautivo
  • WiFi - Conectividad WiFi ESP32

Configuración de Hardware

Pines ESP32 (NodeMCU DevKit):

GPIO 36 (ADC1_CH0) → Potenciómetro (entrada analógica)
GPIO 19            → Botón pulsador (INPUT_PULLDOWN)
GPIO 32            → LED PWM (salida analógica)
GPIO 2 (LED_BUILTIN) → LED integrado

Nota: Ajusta los pines en arduino/sketch/sketch.ino (líneas 18-20) según tu configuración de hardware.

Configuración Inicial

1. Configurar el Broker MQTT

Edita la IP del servidor MQTT en arduino/sketch/sketch.ino (línea 9):

const char* mqtt_server = "192.168.0.6";  // Cambiar a la IP de tu broker

2. Levantar el Broker Mosquitto

cd mqtt
docker-compose up -d

El broker estará disponible en:

  • Puerto 1883: MQTT estándar
  • Puerto 9001: MQTT sobre WebSockets

3. Configurar WiFi en el ESP32

Al encender el ESP32 por primera vez:

  1. Se creará un Access Point llamado "AutoConnectAP" (password: password)
  2. Conéctate a esta red desde tu móvil/PC
  3. Se abrirá un portal cautivo para configurar las credenciales WiFi
  4. Una vez configurado, el ESP32 se conectará automáticamente

Estructura del Proyecto

.
├── arduino/
│   └── sketch/
│       └── sketch.ino          # Firmware ESP32
├── mqtt/
│   ├── docker-compose.yml      # Configuración Docker Mosquitto
│   ├── config/
│   │   └── mosquitto.conf      # Configuración del broker
│   ├── data/                   # Datos persistentes MQTT
│   └── log/                    # Logs del broker
└── README.md

Protocolo MQTT

Topics

  • iot_status: Telemetría del Arduino → Broker
  • iot_commands: Comandos Broker → Arduino

Formato de Mensajes (JSON)

Telemetría (publicada por Arduino):

// Potenciómetro (0-100%)
{"component": "pot", "value": 75}

// Botón pulsador
{"component": "button", "value": true}

Comandos (suscritos por Arduino):

// LED integrado (ON/OFF)
{"component": "led1", "value": true}

// LED PWM (0-100%)
{"component": "led2", "value": 80}

Uso

Opción 1: MQTTX (Recomendado)

MQTTX es un cliente MQTT multiplataforma con interfaz gráfica que facilita el testing.

Configuración de conexión:

Name: Arduino IoT
Host: mqtt://
Port: 1883
Client ID: mqttx_client (o cualquier ID único)

Suscribirse a telemetría:

  • Topic: iot_status o # (todos los topics)

Enviar comandos:

  • Topic: iot_commands
  • Payload ejemplos:
    {"component":"led1","value":true}
    {"component":"led2","value":75}

Opción 2: Línea de Comandos (mosquitto_pub/sub)

Monitorear mensajes:

Suscribirse a todos los topics:

docker exec -it mqtt-mosquitto-1 mosquitto_sub -t '#' -v

Suscribirse solo a telemetría:

docker exec -it mqtt-mosquitto-1 mosquitto_sub -t 'iot_status'

Enviar comandos:

Encender LED integrado:

docker exec -it mqtt-mosquitto-1 mosquitto_pub -t 'iot_commands' \
  -m '{"component":"led1","value":true}'

Controlar LED PWM al 50%:

docker exec -it mqtt-mosquitto-1 mosquitto_pub -t 'iot_commands' \
  -m '{"component":"led2","value":50}'

Desarrollo

Detener el Broker MQTT

cd mqtt
docker-compose down

Ver Logs del Broker

docker-compose logs -f

Roadmap

  • Implementar servidor Node.js con Socket.io
  • Crear cliente web para control y monitoreo
  • Agregar autenticación MQTT
  • Persistencia de datos históricos

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published