El Xiaomi LYWSD03MMC es un pequeño monitor de temperatura y humedad con display que se vende a unos precios muy asequibles:
- Tienda oficial Mi.com, 9,99€
- Tienda Mi Fans Store, 6,09€
- Tienda Xiaomi Smart-Technology Store, 5,99€
La integración en Home Assistant de dispositivos que implementan el protocolo Xiaomi Mijia BLE MiBeacon se realiza mediante Xiaomi BLE que, a su vez, usa la integración de Bluetooth.
La idea es escuchar las transmisiones Bluetooth que los dispositivos hacen por sí mismos, lo cual permite obtener los últimos valores del sensor sin necesidad de despertarlo del modo de suspensión profunda y conservar así su batería.
Bluetooth
La integración Bluetooth, que se carga por defecto en Home Assistant, permite detectar dispositivos cercanos que usen este protocolo.
Para disponer de Bluetooth en Linux es necesario que:
- El socket D-Bus debe ser accesible para Home Assistant
- El adaptador Bluetooth debe ser accesible para D-Bus y ejecutar BlueZ >= 5.43
- La implementación de D-Bus debe ser dbus-broker
- El sistema host debe ejecutar el kernel de Linux 5.15.62 o posterior
Nota: En una Raspberry Pi 4 hay que comprobar que no se haya desactivado el Bluetooth en el fichero
/boot/config.txt
mediante la directivadtoverlay=disable-bt
.
Para comprobar que todo está correcto, se puede ejecutar el comando bluetoothctl
:
pi@pi4nas:~ $ bluetoothctl
Agent registered
Y también comprobar el estado del servicio hciuart.service
mediante el comando systemctl
:
pi@pi4nas:~ $ sudo systemctl status hciuart.service
● hciuart.service - Configure Bluetooth Modems connected by UART
Loaded: loaded (/lib/systemd/system/hciuart.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2023-06-23 19:44:50 CEST; 4min 47s ago
Process: 377 ExecStart=/usr/bin/btuart (code=exited, status=0/SUCCESS)
Main PID: 487 (hciattach)
Tasks: 1 (limit: 4915)
CGroup: /system.slice/hciuart.service
└─487 /usr/bin/hciattach /dev/serial1 bcm43xx 3000000 flow -
Jun 23 19:44:43 pi4nas systemd[1]: Starting Configure Bluetooth Modems connected by UART...
Jun 23 19:44:50 pi4nas btuart[377]: bcm43xx_init
Jun 23 19:44:50 pi4nas btuart[377]: Flash firmware /lib/firmware/brcm/BCM4345C0.hcd
Jun 23 19:44:50 pi4nas btuart[377]: Set Controller UART speed to 3000000 bit/s
Jun 23 19:44:50 pi4nas btuart[377]: Device setup complete
Jun 23 19:44:50 pi4nas systemd[1]: Started Configure Bluetooth Modems connected by UART.
A continuación, en Home Assistant, se puede acceder a las integraciones para configurarla:
- Settings
- Devices and Services
- Add Integration
- Seleccionar Bluetooth
- Seleccionar el dispositivo
hci0 (xx:xx:xx:xx:xx:xx)
- Do you want to set up the Bluetooth adapter hci0 (xx:xx:xx:xx:xx:xx)?
- Pulsar el botón
Submit
- HA indicará que:
- ha creado la configuración para
xx:xx:xx:xx:xx:xx
- ha encontrado el dispositivo
hci0 (xx:xx:xx:xx:xx:xx)
- ha creado la configuración para
- Seleccionar el área donde esté ubicado
- Pulsar el botón
Finish
Xiaomi BLE
La integración Xiaomi BLE permite integrar dispositivos que utilizan el protocolo Xiaomi Mijia BLE MiBeacon.
Una vez activada, si tenemos dispositivos compatibles, puede que se hayan descubierto en:
- Settings
- Devices and Services
- Discovered
- Temperature/Humidity Sensor XXXX (LYWSD03MMC) Xiaomi BLE
- Pulsar el botón
Add
- Pulsar el botón
- Temperature/Humidity Sensor XXXX (LYWSD03MMC) Xiaomi BLE
Si aparece el siguiente mensaje informativo, se puede hacer clic en Submit
para añadirlo:
“There hasn’t been a broadcast from this device in the last minute so we aren’t sure if this device uses encryption or not. This may be because the device uses a slow broadcast interval. Confirm to add this device anyway, then the next time a broadcast is received you will be prompted to enter its bindkey if it’s needed.”
- Do you want to set up Temperature/Humidity Sensor XXXX (LYWSD03MMC)?
- Hacer clic en
Submit
- Escoger el área en la que se ubica el dispositivo
- Hacer clic en
Finish
- Hacer clic en
Success!
Created configuration for Temperature/Humidity Sensor XXX (LYWSD03MMC).
We found the following devices:
Temperature/Humidity Sensor XXX
LYWSD03MMC (Xiaomi)
Area: xxxx
Podría ser que los dispositivos se hubiesen descubierto mediante la integración BTHome si no se ha cambiado el tipo de anuncio de BTHome v2
a MIJIA (Mi Home)
al cambiar el firmware de los mismos.
Flash atc1441
o pvvx
Existen dos proyectos en GitHub que permiten grabar un firmware alternativo en estos termómetros de Xiaomi:
- ATC MiThermometer @atc1441, es el proyecto original de Aaron Christophel
- ATC MiThermometer @pvvx, es un fork del anterior realizado por un ruso llamado Victor que incorpora bastantes mejoras (por ejemplo, una mejor gestión del consumo de energía)
Los dos proyectos tienen una página web que permite realizar esta grabación usando un simple navegador (Google Chrome o Microsoft Edge) desde un dispositivo con Bluetooth:
- https://atc1441.github.io/TelinkFlasher.html
- https://pvvx.github.io/ATC_MiThermometer/TelinkMiFlasher.html
Aunque el procedimiento para flashear un firmware alternativo es bastante similar en los dos proyectos, es recomendable utilizar la herramienta de pvvx
:
- Activar Bluetooth en un teléfono móvil Android
- Usar el navegador Google Chrome o Microsoft Edge
- Acceder a la página https://pvvx.github.io/ATC_MiThermometer/TelinkMiFlasher.html
- Pulsar el botón
Connect
- Seleccionar el dispositivo
LYWSD03MMC
y pulsar el botónEmparejar
Si el dispositivo ya tenía un firmware alternativo, se llamará ATC_XXXXX
en lugar de LYWSD03MMC
.
Si el emparejamiento funciona correctamente, en la pantalla del dispositivo aparecerá el símbolo de Bluetooth para indicarlo.
- Pulsar el botón
Custom Firmware: ATC_vXX.bin
para seleccionar la última versión del firmware - Pulsar el botón
Start Flashing
Comenzará el proceso de envío de los bloques del firmware a través de BT y, si todo va bien, en unos 30 segundos estará actualizado y listo para configurar sus parámetros.
Si hubiese problemas para configurar el dispositivo en Home Assistant, se puede revisar la issue “Xiaomi BLE not asking for bindkey” donde se explica cómo reconfigurar el dispositivo a los 10 minutos usando bindkey obtenida mediante el botón Do Activation
.
Configuración
Una vez se ha cambiado el firmware, se podrá conectar de nuevo con el dispositivo y configurarlo:
- Pulsar el botón
Get Config
para mostrar la configuración actual - Pulsar el botón
Get Time
para mostrar la fecha y hora del dispositivo (si se ha quitado la batería suele ser 1970) - Pulsar el botón
Set Time
para enviar la fecha y hora actual al dispositivo - Cambiar los siguientes parámetros de la configuración:
- Activar Show batt [x]
- Activar Sensor in “LowPower mode” [x]
- Cambiar el Advertising type de
BTHome v2
aMIJIA (MiHome)
- Cambiar el Advertising interval de
2500.0
ms a5000.0
ms - Cambiar el Measure interval de
4
a12
(es decir, de 20 sec a 60 sec) - Cambiar el Minimum LCD refresh rate de
2.45
a10.00
- Pulsar el botón
Set Config
para enviar la configuración - Pulsar el botón
Disconnect
para desconectarse del dispositivo
Esta configuración envia el siguiente custom string en hexadecimal: 55a6100000500ca931c80ab400
Zigbee
También existe un proyecto en GitHub del usuario devbis
para convertir un LYWSD03MMC
de BT a Zigbee:
Este proyecto también tiene una página web https://devbis.github.io/telink-zigbee/ que permite grabar el custom firmware usando un simple navegador (Google Chrome o Microsoft Edge) desde un dispositivo con Bluetooth.
Habrá que investigar esta opción para ver si el consumo de batería es menor que usando BT.
Referencias
- Temperatura y Humedad con Xiaomi LYWSD03MMC en Grafana @ Blog Tecnológico de Alférez
- Convert Xiaomi LYWSD03MMC From Bluetooth to Zigbee @ SmartHomeScene
- 4$ Xiaomi thermometer custom firmware LYWSD03MMC BLE TLSR8251 @ YouTube (Aaron Christophel, atc1441)
- Vídeo: Tutorial 19 – Cambio a Custom Firmware del Termohigrómetro Xiaomi LYWSD03MMC @ Domótica en Casa
- Xiaomi Temperature & Humidity Sensor Home Assistant Integration @ Simply Smart House
- Home Asssistant Xiaomi Mijia LYWSD03MMC Temperature and Humidity Sensor Tutorial September 2022
Historial de cambios
- 2023-06-22: Notas iniciales
- 2025-01-12: Revisión y publicación del documento