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
Pingback: ESPHome con Home Assistant | Notas sobre robótica, electrónica, sistemas operativos y programación