Postscript: I researched all this partially in the hope of using one of these on Node-RED running on Android, but it turned out that Android does not use BlueZ, so anything that relies on it cannot be used on Android, including node-red-contrib-xiaomi-ble.
However, node-red-contrib-mihome can still be used, because it accesses Xiaomi’s server for data, not by directly connecting with the thermo/hygrometer by BLE.
Stumbled on the following custom nodes of Node-RED for Xiaomi’s BLE thermometers/hygrometers LYWSD03MMC and MiFlora flower/plant monitors that I already own, while researching on those for Xiaomi Mi/Amazfit healthcare devices.
- node-red-contrib-xiaomi-ble — Supports both MiFlora Xiaomi Mi plant sensor and Xiaomi Mijia Bluetooth Temperature Humidity Sensor, particularly LYWSD03MMC. It directly receives data from these sensors through BLE. This relies on Noble: A Node.js BLE (Bluetooth Low Energy) central module, which in turn relies on BlueZ among other things.
- node-red-contrib-mihome — Supports LYWSD03MMC. Uses Node-mihome: Control Mi Home devices, such as Mi Robot Vacuums, Mi Air Purifiers, Mi Smart Home Gateway (Aqara) and more and control “Mi Home devices via local network or cloud.” The list of supported devices looks quite extensive, but it does not include MiFlora, unfortunately.
I also found some custom nodes that assume the use of a gateway. I do not use one, so they do not apply to me.
I am actually surprised to see the support for LYWSD03MMC. I could not have ESPHome on an ESP32 board connect to LYWSD03MMC because of encryption. “LYWSD03MMC only returning battery (sometimes) · Issue #32 · eschava/node-red-contrib-xiaomi-ble · GitHub” gives me the impression that Node-RED can read from LYWSD03MMC only when it is paired with it. A user recommends installing custom firmware to LYWSD03MMC anyway. Another uses a Bash script from “Using bash and gatttool to get readings from Xiaomi Mijia LYWSD03MMC Temperature Humidity sensor – d0wn.”
I thought the ESP32 platform was a good fit for accessing these devices because both ble and wifi are built in, and purchased a TTGo T-Display, unto which I intsalled ESPHome and is already picking up readings and posting them to a MQTT broker. However, at the place where AndroidTV-based media player Amigo 7xJP is eventually going to be (which is not my place), I can just use this Amigo 7xJP as a Node-RED server and use those custom nodes above.