Ir al contenido

← Calibración de sensores | Contenido | Siguiente: Integración con Home Assistant →

11. Guía de integración MQTT

Version: 1.2.0
Date: 2025-12-24

Guía completa para la conectividad MQTT de ACRouter, incluyendo la estructura de topics y la integración con Home Assistant.




Tabla de contenido




Descripción general

ACRouter soporta el protocolo MQTT para:

  • Monitoreo en tiempo real — Métricas de potencia, voltaje, corrientes, estado del router
  • Control remoto — Cambio de modo, control del dimmer, parada de emergencia
  • Configuración — Ajustar parámetros de forma remota
  • Integración con Home Assistant — Descubrimiento automático para una integración domótica transparente

The MQTT client is based on ESP-IDF's esp-mqtt library with automatic reconnection, Last Will & Testament (LWT), and QoS support.




Características

Característica Descripción
Reconexión automática Se reconecta automáticamente si se pierde la conexión
LWT (Last Will) Publishes "offline" status when device disconnects
Mensajes retenidos Los topics de estado y configuración se retienen
Niveles QoS QoS 0 para métricas, QoS 1 para comandos
HA Discovery Creación automática de entidades en Home Assistant
Agregación JSON Métricas combinadas en un único mensaje JSON
Persistencia NVS La configuración se conserva entre reinicios



Inicio rápido


1. Habilitar MQTT a través de la consola serie

bash
# Set broker URL (replace with your broker IP)
mqtt-broker mqtt://192.168.1.10:1883

# Enable MQTT
mqtt-enable

# Check status
mqtt-status


2. Verificar la conexión

text
======================================================
  MQTT Status
======================================================
State:         Connected
Enabled:       Yes
Broker:        mqtt://192.168.1.10:1883
Device ID:     039C7C
Device Name:   (default)
HA Discovery:  Enabled
Pub Interval:  5000 ms
------------------------------------------------------
Uptime:        125 sec
Published:     250 messages
Received:      3 messages
======================================================


3. Suscribirse a topics

Usando las herramientas cliente de Mosquitto como ejemplo:

bash
# Subscribe to all ACRouter topics
mosquitto_sub -h 192.168.1.10 -t "acrouter/#" -v



Estructura de topics

Todos los topics siguen el patrón: acrouter/{device_id}/category/name

El {device_id} se genera automáticamente a partir de los últimos 6 caracteres de la dirección MAC (por ej., 039C7C) o puede establecerse manualmente.


Topics de estado (retenidos)

Topic Descripción Valor de ejemplo
status/online Disponibilidad del dispositivo (LWT) online / offline
status/mode Modo actual del router auto, manual, boost...
status/state Estado del controlador idle, increasing, at_max...
status/dimmer Nivel del dimmer 0 - 100 (%)
status/wifi_rssi Intensidad de señal WiFi -65 (dBm)


Topics de métricas (no retenidos)

Publicación cada 5 segundos (configurable).

Topic Descripción Unidad
metrics/voltage Voltaje AC RMS V
metrics/power_grid Potencia de red (+ importación, - exportación) W
metrics/power_solar Potencia solar/generación W
metrics/power_load Consumo de potencia de la carga W
metrics/current_grid Corriente de red A
metrics/current_solar Corriente solar A
metrics/current_load Corriente de la carga A
metrics/direction Dirección del flujo de energía consuming, supplying, balanced


Topics de configuración (retenidos)

Topic Descripción Rango
config/control_gain Ganancia del controlador P 10 - 1000
config/balance_threshold Zona muerta de balance 0 - 1000 W
config/manual_level Nivel manual del dimmer 0 - 100 %


Topics de comando (solo escritura)

Envíe comandos publicando en estos topics:

Topic Descripción Payload
command/mode Establecer modo del router off, auto, eco, offgrid, manual, boost
command/dimmer Establecer dimmer (modo manual) 0 - 100
command/emergency_stop Parada de emergencia cualquier valor
command/reboot Reiniciar dispositivo cualquier valor
command/refresh Forzar publicación de todos los datos cualquier valor


Topics de sistema (retenidos)

Topic Descripción Ejemplo
system/version Versión del firmware 1.1.0
system/ip Dirección IP del dispositivo 192.168.1.100
system/mac Dirección MAC AA:BB:CC:DD:EE:FF
system/uptime Tiempo de actividad en segundos 3600
system/free_heap Memoria heap libre 150000


Topics JSON agregados

Para mayor eficiencia, las métricas también se publican como JSON agregado:

Topic: json/metrics

json
{
  "voltage": 230.5,
  "power_grid": -150.2,
  "power_solar": 1250.0,
  "power_load": 1100.0,
  "current_grid": 0.65,
  "current_solar": 5.43,
  "current_load": 4.78,
  "direction": "supplying"
}



Comandos de consola


Gestión de conexión

Comando Descripción
mqtt-status Mostrar estado de conexión y estadísticas
mqtt-enable Habilitar cliente MQTT
mqtt-disable Deshabilitar cliente MQTT
mqtt-reconnect Forzar reconexión
mqtt-publish Forzar publicación inmediata de todos los datos


Configuración

Comando Descripción
mqtt-config Mostrar toda la configuración MQTT
mqtt-broker Establecer URL del broker (por ej., mqtt://192.168.1.10:1883)
mqtt-user Establecer nombre de usuario para autenticación
mqtt-pass Establecer contraseña para autenticación
mqtt-device-id Establecer ID de dispositivo personalizado para topics
mqtt-device-name Establecer nombre del dispositivo (para Home Assistant)
mqtt-interval Establecer intervalo de publicación (1000–60000 ms)
mqtt-ha-discovery <0\|1> Habilitar/deshabilitar descubrimiento de Home Assistant


Ejemplos

bash
# Configure broker with authentication
mqtt-broker mqtt://192.168.1.10:1883
mqtt-user myuser
mqtt-pass mypassword
mqtt-enable

# Set custom device name for Home Assistant
mqtt-device-name "Solar Router Kitchen"

# Reduce publish frequency to 10 seconds
mqtt-interval 10000

# Disable Home Assistant auto-discovery
mqtt-ha-discovery 0



Configuración


Claves de almacenamiento NVS

Todos los ajustes MQTT se conservan en NVS (Non-Volatile Storage):

Clave Descripción
mqtt_enabled Indicador de habilitación MQTT
mqtt_broker URL del broker
mqtt_user Nombre de usuario
mqtt_pass Contraseña
mqtt_dev_id ID del dispositivo
mqtt_dev_name Nombre del dispositivo
mqtt_interval Intervalo de publicación
mqtt_ha_disc Indicador HA Discovery


Valores por defecto

Parámetro Valor por defecto
Habilitado No
Broker (vacío)
ID del dispositivo Generado automáticamente a partir de la MAC
Intervalo de publicación 5000 ms
HA Discovery Habilitado



Prueba de topics

Puede usar cualquier cliente MQTT para probar los topics. Los ejemplos a continuación utilizan las herramientas cliente de Mosquitto (mosquitto_sub / mosquitto_pub).


Suscribirse a todos los topics

bash
mosquitto_sub -h 192.168.1.10 -t "acrouter/#" -v


Suscribirse a topics específicos

bash
# Status only
mosquitto_sub -h 192.168.1.10 -t "acrouter/039C7C/status/#" -v

# Metrics only
mosquitto_sub -h 192.168.1.10 -t "acrouter/039C7C/metrics/#" -v

# JSON aggregated
mosquitto_sub -h 192.168.1.10 -t "acrouter/039C7C/json/#" -v


Enviar comandos

bash
# Change mode to AUTO
mosquitto_pub -h 192.168.1.10 -t "acrouter/039C7C/command/mode" -m "auto"

# Set dimmer to 50% (in MANUAL mode)
mosquitto_pub -h 192.168.1.10 -t "acrouter/039C7C/command/dimmer" -m "50"

# Emergency stop
mosquitto_pub -h 192.168.1.10 -t "acrouter/039C7C/command/emergency_stop" -m "1"

# Reboot device
mosquitto_pub -h 192.168.1.10 -t "acrouter/039C7C/command/reboot" -m "1"

# Force refresh all data
mosquitto_pub -h 192.168.1.10 -t "acrouter/039C7C/command/refresh" -m "1"


Actualizar configuración vía MQTT

bash
# Set control gain
mosquitto_pub -h 192.168.1.10 -t "acrouter/039C7C/config/control_gain/set" -m "200"

# Set balance threshold
mosquitto_pub -h 192.168.1.10 -t "acrouter/039C7C/config/balance_threshold/set" -m "25"



Solución de problemas


Problemas de conexión

Síntoma: esp-tls: select() timeout

Soluciones:

  1. Verifique que el broker esté en ejecución y sea accesible
  2. Verifique que el firewall permita el puerto 1883
  3. Compruebe el formato de la URL del broker: mqtt://IP:PORT
  4. Pruebe la conectividad del broker desde otro cliente


"Client has started" Error

Síntoma: Errores repetidos mqtt_client: Client has started

Solución: Esto era un bug en versiones anteriores. Actualice al firmware más reciente donde esp_mqtt_client_start() se llama solo una vez.


WiFi no conectado

Symptom: MQTT doesn't connect on boot

Explicación: MQTT ahora espera la conexión WiFi antes de intentar conectarse. Verifique primero el estado de WiFi:

bash
wifi-status


Mensajes no recibidos

Síntoma: Los comandos se envían pero no se procesan

Soluciones:

  1. Verifique la ortografía del topic (distingue mayúsculas y minúsculas)
  2. Verifique que el ID del dispositivo coincida: mqtt-status
  3. Compruebe que el mensaje se reciba: el registro del dispositivo muestra MQTT: Command: mode = auto


Home Assistant no detecta el dispositivo

Symptom: Device doesn't appear in Home Assistant

Soluciones:

  1. Verifique que HA Discovery esté habilitado: mqtt-ha-discovery 1
  2. Compruebe que la integración MQTT de HA esté configurada
  3. Fuerce la republicación: mqtt-publish o reinicie el dispositivo
  4. Revise los registros de HA en busca de mensajes de descubrimiento



Ver también


Última actualización: 2025-12-24

← Calibración de sensores | Contenido | Siguiente: Integración con Home Assistant →