Un termómetro conectado en cada habitación por 10 €: sensores Bluetooth + ESP32 + el descubrimiento automático MQTT de Gladys

¡Hola comunidad Gladys!

Soy el creador de OpenMQTTGateway y Theengs, hemos estado hablando con Pierre-Gilles sobre la integración en Gladys. Un primer paso es la integración MQTT con autodescubrimiento. Aquí hay un tutorial escrito por Claude que describe cómo funciona con un pequeño termómetro Bluetooth con pantalla, ThermoPro o Xiaomi, comprado por 10 € para monitorear la humedad o la temperatura.

Lo que pocos saben: estos sensores transmiten sus mediciones en Bluetooth Low Energy de forma continua — y Gladys ahora puede recuperarlas automáticamente.

En cuanto al presupuesto, la comparación para equipar 8 habitaciones con Zigbee:

Solución Costo para 8 habitaciones
Zigbee (Sonoff SNZB-02P ~14 € + dongle ~25 €) ~135 €
BLE ThermoPro (~9 €/unidad en paquete) + ESP32 8 € ~80 €
BLE Xiaomi LYWSD03MMC ~5 € (próximo tutorial) + ESP32 8 € ~48 €

Y a diferencia de Zigbee: pantalla LCD integrada en cada sensor (legible sin abrir Gladys), batería de botón que dura ~1 año, y los sensores que ya posee cuentan como 0 €. Solo se necesita una « antena » para escucharlos: un ESP32 a ~8 € flashado con OpenMQTTGateway, que decodifica más de 120 modelos de sensores y los publica en MQTT.

Y la cereza del pastel: la integración MQTT de Gladys ahora maneja el autodescubrimiento (formato Home Assistant Discovery, anunciado por Pierre-Gilles aquí) — se necesita Gladys 5 para que funcione con OpenMQTTGateway. Resultado: los sensores aparecen por sí solos en Gladys, con sus características ya configuradas. Cero temas MQTT para escribir a mano.

Aquí está el principio:

  Sensores BLE (5-10 €)        ESP32 + OpenMQTTGateway (~8 €)
  ┌──────────────┐
  │ ThermoPro    │ )))
  ├──────────────┤              ┌─────────────┐
  │ Xiaomi T301  │ ))) ~~BLE~~> │    ESP32    │
  ├──────────────┤              │     OMG     │
  │ Mi Flora     │ )))          └──────┬──────┘
  └──────────────┘                     │ WiFi / MQTT
                                       ▼
                              ┌─────────────────┐
                              │ Broker Mosquitto│
                              │  (en Gladys)  │
                              └────────┬────────┘
                                       │
                                       ▼
                              ┌─────────────────┐
                              │ Gladys 5        │
                              │ Autodescubrimiento │
                              └─────────────────┘

Tiempo total: 15 minutos. Sin soldadura, sin herramientas que instalar en su computadora. ¡Vamos allá!


El material necesario

Material Precio Rol
ThermoPro TP357/TP358 ~10-12 € (más barato en paquete de 2 o 3) Temperatura + humedad, con pantalla — El sensor estrella: cero configuración, decodificado de fábrica
Govee H5075 / H5072 ~12-15 € Alternativa sin configuración, con pantalla, decodificada de fábrica
Xiaomi LYWSD03MMC ~5 € El más barato, pero requiere un pequeño flash inalámbrico — será el objeto de un próximo tutorial
Mi Flora HHCCJCY01 ~12-15 € Sensor de plantas (humedad del suelo, luz, fertilidad)
SwitchBot Meter ~15 € Temperatura + humedad, con pantalla
ESP32 (cualquier modelo dev board, o M5Stack) ~8 € La antena BLE → MQTT
Cable USB ya en un cajón Alimentación del ESP32

¿Por qué el ThermoPro TP357 como sensor destacado? Está decodificado de fábrica por Theengs Decoder (ningún flash, ninguna app, ninguna clave: se coloca la batería y emite en claro), tiene una pantalla, se encuentra en todas partes en Amazon.fr (a menudo ~8-9 €/unidad en paquete de 2 o 3), y es uno de los sensores de mi configuración real. La promesa de « 15 minutos cronometrados » se cumple con él.

De mi parte, la configuración probada: un M5Stack (ESP32) flashado con OpenMQTTGateway v1.8.x (binario esp32 BLE), y un puñado de sensores ThermoPro, Xiaomi y SwitchBot. Pero cualquier ESP32 de 8 € hace exactamente el mismo trabajo.

:light_bulb: Un solo ESP32 cubre ~10 m a la redonda. Para una casa grande, ponga uno por piso: todos publican en el mismo broker, Gladys no verá ninguna diferencia.


Paso 1 — Actualizar Gladys + activar el broker MQTT (2 min)

:warning: Primero: actualice a Gladys 5

El autodescubrimiento apareció en 4.86, pero las versiones 4.x rechazaban los temas de estado « comodín » utilizados por OpenMQTTGateway. Si ve este mensaje en los registros de Gladys:

ignoring state topic +/+/BTtoMQTT/xxx, wildcards are not allowed

…es que no está en Gladys 5, que incluye la corrección. Si usa Watchtower (instalación Docker recomendada), la actualización se realiza automáticamente. De lo contrario, actualice el contenedor Gladys antes de continuar.

Luego: el broker MQTT en un clic

  1. Vaya a Integraciones, escriba « mqtt » en la búsqueda y abra MQTT Virtual Devices.

  1. En la pestaña Setup, active el interruptor « Use broker in a Docker container ». Un recuadro azul le advierte que un broker Mosquitto se lanzará en el puerto 1883: haga clic en « Install broker on Docker ».

  1. Una vez instalado, la pantalla muestra « Connected to the MQTT broker with success! » y la configuración:
    • URL del broker: mqtt://localhost
    • Nombre de usuario: gladys
    • una contraseña generada (el icono del ojo para verla) → cópiela, la necesitaremos en el paso 3.

El broker escucha en el puerto 1883 de la IP de su servidor Gladys, accesible desde toda la red local. Anote esta IP (ejemplo: 192.168.1.117).


Paso 2 — Flash OpenMQTTGateway desde el navegador (5 min)

No es necesario instalar nada: el flash se realiza directamente desde el navegador gracias al Web Serial.

  1. Conecte el ESP32 por USB a su computadora.

  2. Abra Chrome o Edge (Firefox y Safari no manejan el Web Serial) y vaya a:

    :backhand_index_pointing_right: (Option 1) Upload from the web | Theengs OpenMQTTGateway v1.8.1

  3. En la lista de binarios, elija esp32dev-ble.

  4. Haga clic en Connect, seleccione el puerto serie de su ESP32, luego Install.

  5. Espere 2-3 minutos durante el flash. :hot_beverage:

Eso es todo. El ESP32 se reinicia con OpenMQTTGateway a bordo, Theengs Decoder incluido (el decodificador de los 120+ modelos de sensores BLE).


Paso 3 — Configurar el WiFi y el MQTT del ESP32 (5 min)

Al primer arranque, el ESP32 aún no conoce su red: crea su propio punto de acceso WiFi.

  1. En su teléfono o computadora, conéctese a la red WiFi creada por el ESP32 (nombre del tipo OpenMQTTGateway).
  2. Un portal de configuración se abre (de lo contrario, abra 192.168.4.1 en el navegador).
  3. Proporcione:
Campo del portal Valor
SSID / contraseña WiFi su red WiFi
mqtt server la IP de su servidor Gladys (ej: 192.168.1.17)
mqtt port 1883
mqtt user gladys
mqtt pass la contraseña copiada desde la pantalla MQTT de Gladys en el paso 1
mqtt base topic home/ (:warning: ¡deje el valor predeterminado!)

  1. Valide. El ESP32 se reinicia y se conecta a su WiFi y luego al broker de Gladys.

A partir de ahí, escanea el BLE cada ~55 segundos y publica cada sensor decodificado en un tema del tipo:

home/<nom-gateway>/BTtoMQTT/<MAC-del-sensor>

Por ejemplo, para un ThermoPro TP357 :

{"tempc": 26.6, "hum": 88, "batt_low": true}

O para mi Oria T301 (un clon de Xiaomi cuyo firmware de fábrica emite en claro, MAC en A4:C1:38...) :

{"tempc": 26.3, "hum": 62, "batt": 100}

Y sobre todo, publica las configuraciones de descubrimiento (retained) en homeassistant/.../config — exactamente lo que la nueva integración MQTT de Gladys sabe leer. :smiling_face_with_sunglasses:


Paso 4 — Crear los dispositivos descubiertos en Gladys (2 min)

Vuelve a Gladys: Integraciones → MQTT Virtual Devices → pestaña Discovery.

Magia: tus sensores están ahí, con su nombre, modelo y características (temperatura, humedad, batería…) ya detectadas.

  1. Haz clic en cada dispositivo para crearlo en Gladys.
  2. Asignarle una habitación (Dormitorio, Baño, Sótano…).
  3. Añade las características a tus paneles de control: un mapa por habitación con temperatura + humedad, es muy legible.

Algunos ejemplos reales de lo que sube automáticamente en mi casa:

  • ThermoPro TP357/TP358: temperatura, humedad, alerta de batería baja
  • Oria T301 (clon de la familia LYWSD03MMC, firmware no cifrado de fábrica): temperatura, humedad, batería
  • Beacons BlueCharm: temperatura, acelerómetro, voltaje de la pila
  • SwitchBot Curtain / Blind Tilt: posición, batería, nivel de luz (en lectura — ver la sección de límites más abajo)

:hourglass_not_done: Paciencia en el primer descubrimiento: los sensores BLE emiten solo cada 1 a 10 minutos según el modelo. Deja que funcione 10 minutos antes de concluir que no funciona.


Paso 5 — Escenas útiles con todo esto

Ahora que cada habitación sube su temperatura y humedad, algunas ideas de escenas que cambian la vida:

:cold_face: Alerta de helada (sótano, garaje, invernadero)

  • Disparador: temperatura del sótano < 3 °C
  • Acción: enviar un mensaje de Telegram « :warning: Riesgo de helada en el sótano (2.1 °C), ¡piensa en las tuberías! »

:shower: Humedad en el baño → VMC

  • Disparador: humedad del baño > 70 %
  • Acción: encender la VMC (enchufe conectado)
  • Y la escena inversa: humedad < 55 % → apagar la VMC.

Con el ThermoPro a 88 % de humedad visto anteriormente, la VMC gira después de cada ducha. :grinning_face_with_smiling_eyes:

:thermometer: Seguimiento de la bodega de vino

  • Disparador: temperatura del sótano > 16 °C durante el día
  • Acción: notificación + gráfico en el panel de control para seguir la deriva durante el año.

Los límites honestos (y lo que sigue)

Sé transparente, no todo es perfecto aún:

  • El control de los actuadores SwitchBot (Cortina, Inclinación de Persiana) no está soportado aún por el descubrimiento de Gladys. Sus sensores suben muy bien (posición, batería, nivel de luz), pero las entidades cover tilt-only y las plantillas de comando utilizadas por OpenMQTTGateway no están gestionadas aún. Por lo tanto: lectura sí, comando no — por ahora.
  • El descubrimiento cubre los sensores clásicos (temperatura, humedad, batería, etc.). Las entidades más exóticas pueden ser ignoradas.
  • En Gladys, una integración Bluetooth nativa está en proceso de especificación — las discusiones están abiertas en este tema. A largo plazo, podremos imaginar prescindir de MQTT para el BLE. Mientras tanto, la solución OpenMQTTGateway + descubrimiento MQTT es lo mejor que hay, y es muy robusta.

Solución de problemas: las 5 trampas clásicas

1. No aparece nada en la pestaña Discovery, y los logs de Gladys dicen ignoring state topic +/+/BTtoMQTT/xxx, wildcards are not allowed → Tu Gladys no está actualizado: necesitas Gladys 5. Actualiza (Watchtower lo hace automáticamente) y reinicia el ESP32 para que republique sus configuraciones.

2. Has cambiado el base topic → Deja el base topic en home/ (el valor por defecto). Es el formato esperado, no lo personalices.

3. «No funciona» después de 2 minutos → Los sensores BLE emiten solo cada 1 a 10 minutos según el modelo. En el primer descubrimiento, deja que funcione 10 minutos. El ESP32, por su parte, escanea cada ~55 s.

4. Todavía nada después de 10 minutos → Verifica que el ESP32 esté conectado al broker: publica su estado (LWT) en el topic home/<nombre-gateway>/LWT, que debe valer online. Puedes verificarlo con MQTT Explorer, o con:

mosquitto_sub -h <IP-Gladys> -u gladys -P <contraseña> -t "home/+/LWT" -v

Si está offline o vacío: verifica la IP del broker, el puerto 1883, el nombre de usuario gladys y la contraseña copiada desde Gladys.

5. Un sensor del fondo del jardín nunca sube → El alcance BLE es de aproximadamente 10 m (incluyendo paredes, es rápidamente menos). La solución es simple y barata: añade un segundo ESP32 (uno por piso, uno en el garaje…), todos configurados en el mismo broker. Gladys fusiona todo naturalmente.


Conclusión

Por menos de 20 € (1 ESP32 + 1 ThermoPro), tienes un primer termómetro conectado que aparece solo en Gladys, sin el menor flash de sensor — y si un ThermoPro o un Xiaomi ya está en tu casa, tu primer sensor es gratis. Luego, cada habitación adicional cuesta solo ~10 €.

:pushpin: Próximo tutorial: el Xiaomi LYWSD03MMC a 5 € — la mejor relación calidad-precio del mercado, al precio de un pequeño flash inalámbrico de 2 minutos desde el navegador. ¡Quédate atento!

  • :stopwatch: 15 minutos de configuración
  • :wrench: Cero soldadura, cero línea de comandos obligatoria
  • :battery: 1 año de autonomía con batería de botón
  • :house: 120+ modelos de sensores soportados

Un gran agradecimiento a Pierre-Gilles por el descubrimiento automático MQTT que hace posible todo esto sin configuración manual. :folded_hands:

¿Y tú, qué sensores BLE tienes en tu casa? ¡Comparte tus payloads y tus escenas en las respuestas!

¡Qué interesante todo esto! ¡Gracias! :wink: