# Xiaomi Mi Sensors

Integration Key: xiaomiMi


Using this together with Bluetooth Low Energy requires that the hciDeviceId settings of both integrations are the same value.

The Xiaomi Mi integration scans for Bluetooth Low Engery (BLE) advertisements from a variety of Xiaomi sensors. Sensor readings can then be published to MQTT using the Home Assistant integration.

# Requirements

This integration has all the same requirements as the Bluetooth Low Energy integration.

# Supported devices

This integration has been tested with these devices:

  • LYWSD02

    (rectangular body, E-Ink with clock display. broadcasts temperature and humidity when it changes)

  • LYWSD02

    (rectangular body, E-Ink, broadcasts temperature and humidity, about 20 readings per minute, no battery info)


    (circular body, segment LCD, broadcasts temperature and humidity when it changes and battery level periodically)


    (small square body, segment LCD, broadcasts temperature and humidity once in about 10 minutes and battery level once in an hour, advertisements are encrypted, therefore you need to set the key in your configuration, see for instructions the bindKey option)

  • Mi Flora

    (plant sensor, requires up-to-date firmware, tested with v3.2.2)

# Settings

Name Type Default Description
sensors Sensor options An array of sensor definitions.
hciDeviceId Number 0 Bluetooth Device ID (e.g. 0 to use hci0).

# Sensor Options

Name Type Default Description
name string A human readable name for the sensor. Will be used in MQTT topics.
address string MAC address of the device (Format).
bindKey string A decryption key for sensors which send encrypted data.

# Address Format

The address field is a lowercase MAC address without :. This is the same format as a tag ID in the BLE integration. The BLE integration can also be used to log device IDs to the console.

# Encryption

Some Xiaomi sensors encrypted their data (e.g. LYWSD03MMC). To be able to read the data from this sensor one needs to get a hold of the encryption key. For ways to get this key please read this this FAQ entry (opens new window) from the custom-components/sensor.mitemp_bt (opens new window) repository. Once found, it can be set with the bindKey option.

Retrieving keys from the Xiaomi Mijia LYWSD03MMC
  1. Keep the Xiaomi Mijia LYWSD03MMC sensor close to the mobile phone.
  2. Make sure that the Bluetooth connection is enabled on the mobile phone.
  3. Using the mobile phone's browser, navigate to https://atc1441.github.io/TelinkFlasher.html (opens new window).
  4. Enlarge the mobile phone's screen for better readability.
  5. Now, click the [Connect] button and wait until it shows "Connected." See the Log section at the bottom.
  6. Once connected, click the [Do Activation] button and wait until the "Mi Bind Key" shows the information.

TeLink Flasher interface for retrieving the bind key

Example Config
    - xiaomiMi
  hciDeviceId: 0
    - name: xiaomiSensor1
      address: c47c8d6c9820

# See also

There are many projects dedicated to these devices. This integration has particularly benefited from these two: