Montando un gateway BLE a MQTT con ESP32 y OpenMQTTGateway

 

Hace unos días adquirí un termómetro Xiaomi (LYWSD03MMC) que utiliza BLE (Bluetooth Low Energy) para enviar las lecturas realizadas. Como quiero que los datos sean publicados en un broker MQTT, este firmware OpenMQTTGateway me hace todo el trabajo. En esta entrada veremos como instalarlo desde Linux.

Instalaremos OpenMQTTGateway en un ESP32 concretamente una placa DOIT ESP32 DEVKIT V1. Para más información y otras placas soportadas, recomiendo ir a la url OpenMQTTGateway compatible boards.

Borrar restos de programas anteriores

Antes de comenzar, es conveniente borrar lo que anteriormente tenía el dispositivo ESP32. También sirve para borrar una incorrecta configuración del dispositivo, o cuando queremos cambiar los parámetros guardados.

esptool.py --chip esp32 erase_flash

Ejecutaremos el comando anterior con botón boot pulsado, luego soltaremos cuando veamos que empieza el proceso.

Descargamos los siguientes binarios:

https://github.com/espressif/arduino-esp32/raw/master/tools/sdk/bin/bootloader_dio_80m.bin

https://github.com/espressif/arduino-esp32/raw/master/tools/partitions/boot_app0.bin

Estos binarios también los descargamos aunque aquí lo hacemos con la versión que actualmente es la principal, recomiendo descargarlos de la siguiente página eligiendo la última versión. Lo que sí debes buscar son los archivos:

  • esp32dev-ble-firmware.bin
  • esp32dev-ble-partitions.bin

https://github.com/1technophile/OpenMQTTGateway/releases/download/v0.9.5/esp32dev-ble-firmware.bin

https://github.com/1technophile/OpenMQTTGateway/releases/download/v0.9.5/esp32dev-ble-partitions.bin

‘Flasheando’ el dispositivo.

Para flashear el dispositivo usaremos la herramienta esptool.py. En distribuciones derivadas de Ubuntu la instalaremos con:

pip install esptool

Ejecutaremos el siguiente comando con el botón boot del esp32 pulsado, luego soltaremos cuando veamos que empieza el proceso.

esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 115200 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect 0xe000 boot_app0.bin 0x1000 bootloader_dio_80m.bin 0x10000 esp32dev-ble-firmware.bin 0x8000 esp32dev-ble-partitions.bin

Una vez flasheado buscaremos la red wifi OpenMQTTGateway_ESP32_BLE y nos conectamos con el password wifi: your_password.

Configurando el dispositivo

Accedemos con el navegador a la ip 192.168.4.1 y configuramos a qué red wifi nos queremos conectar.

Para configurarlo pondremos como mínimo, la red WIFI a la que queremos conectarnos junto con la contraseña WIFI de dicha red y la dirección IP del servidor MQTT.

Verificando que funciona

mosquitto_sub -h "ip_del_servidor" -t "#" -v

Y vamos viendo todos los topics que va enviando.

Ojo que a lo mejor no se ve la red wifi porque necesita conectarse a un cargador de móvil.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *