ESP32 como puerta de enlace BLE-WiFi con MQTT basado en ESPHome

Vamos a integrar en una red basada en MQTT los mensajes provenientes de un dispositivo basado en BLE. Para ello, haremos uso del entorno ESPHome que, con poco esfuerzo, permite la integración de nuestro dispositivo y el reenvío de sus mensajes vía WiFi como tópicos MQTT.

El hecho de que los microcontroladores basados en ESP32 integren Bluetooth LE y WiFi los hace ideales para su uso como puertas de enlace entre ambas tecnologías.

Instalación y configuración de ESPHome

En primer lugar, instalaremos el entorno ESPHome en nuestro ArchLinux:
# yay -S esphome

A continuación crearemos en nuestro directorio de trabajo un archivo con el nombre de nuestro proyecto y la extensión .yaml donde indicaremos la siguiente información:

  • En el campo esphome indicaremos:
    • El nombre del proyecto en name.
    • El modelo de tarjeta en board, que normalmente será nodemcu-32s.
  • Para la configuración WiFi:
    • Identificador de nuestra WiFi en ssid.
    • La clave WPA correspondiente en password.
  • Registro de logs en logger:
    • En level indicaremos el nivel de logging que deseamos. Nótese al respecto, que todos los mensajes generados por el logger serán reenviados vía MQTT, así que se recomienda limitar el nivel de log para evitar mucho tráfico. “ERROR” es un nivel aceptable.
  • Habilitación de gestión BLE en esp32_ble_tracker.
  • Configuración de sensores:
    • Indicamos la plataforma en platform. En este caso haremos uso de un sensor de temperatura y humedad Mijia de Xiaomi.
  • Protocolo MQTT:
    • En broker indicamos la IP del gestor MQTT.
    • En port, su puerto.
    • Podemos indicar un prefijo a los tópicos con topic_prefix.
esphome:
  name: mible
  platform: ESP32
  board: nodemcu-32s

wifi:
  ssid: "ssid"
  password: "password"

# Enable logging
logger:
  level: ERROR

# Sensores
esp32_ble_tracker:

sensor:
  - platform: xiaomi_lywsdcgq
    mac_address: 4C:65:A8:D0:64:XX
    temperature:
      name: "Xiaomi LYWSDCGQ Temperature"
    humidity:
      name: "Xiaomi LYWSDCGQ Humidity"
    battery_level:
      name: "Xiaomi LYWSDCGQ Battery Level"

# MQTT
mqtt:
  broker: 192.168.1.100
  port: 1883
  topic_prefix: sensores

Una vez generado el archivo de configuración, conectaremos nuestro ESP32 al PC vía USB, donde solo tendremos que ejecutar en la siguiente línea desde un terminal para que se lleve a cabo la compilación y subida del ejecutable correspondiente:
$ esphome mible.yaml run

Tópicos MQTT

En el ordenador donde tengamos instalado mosquitto nos suscribiremos a los tópicos que nos interesan:
$ mosquitto_sub -t sensores/#

Obtendremos la lectura del sensor correspondiente.

sensores/sensor/xiaomi_lywsdcgq_temperature/state 23.5
sensores/sensor/xiaomi_lywsdcgq_humidity/state 63.6
sensores/sensor/xiaomi_lywsdcgq_battery_level/state 70
Esta entrada fue publicada en MQTT y etiquetada , , , . Guarda el enlace permanente.

Una respuesta a ESP32 como puerta de enlace BLE-WiFi con MQTT basado en ESPHome

  1. Pingback: ESPHome con Home Assistant | Notas sobre robótica, electrónica, sistemas operativos y programación

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s