miflora sensor platform allows one to monitor plant soil and air conditions. The Mi Flora plant sensor is a small Bluetooth Low Energy device that monitors the moisture and conductivity of the soil as well as ambient light and temperature. Since only one BLE device can be polled at a time, the library implements locking to prevent polling more than one device at a time.
Install Bluetooth Backend
Before configuring Home Assistant you need a Bluetooth backend and the MAC address of your sensor. Depending on your operating system, you may have to configure the proper Bluetooth backend for your system:
- On Hass.io: Miflora will work out of the box.
- On a generic Docker installation: Works out of the box with
--net=hostand properly configured Bluetooth on the host.
- On other Linux systems:
- Preferred solution: Install the
bluepylibrary (via pip). When using a virtual environment, make sure to use install the library in the right one. - Fallback solution: Install
gatttoolvia your package manager. Depending on the distribution, the package name might be:
- Preferred solution: Install the
- On Windows and MacOS there is currently no support for the miflora library.
Scan for MAC address
Start a scan to determine the MAC addresses of the sensor (you can identify your sensor by looking for
Flower care or
Flower mate entries) using this command:
$ sudo hcitool lescan LE Scan ... F8:04:33:AF:AB:A2 [TV] UE48JU6580 C4:D3:8C:12:4C:57 Flower mate [...]
Or, if your distribution is using bluetoothctl use the following commands:
$ bluetoothctl [bluetooth]# scan on [NEW] Controller <your Bluetooth adapter> [default] [NEW] F8:04:33:AF:AB:A2 [TV] UE48JU6580 [NEW] C4:D3:8C:12:4C:57 Flower mate
To use your Mi Flora plant sensor in your installation, add the following to your
# Example configuration.yaml entry sensor: - platform: miflora mac: 'xx:xx:xx:xx:xx:xx' monitored_conditions: - moisture
- mac (Required): The MAC address of your sensor.
monitored_conditions array (Optional): The parameters that should be monitored (defaults to monitoring all parameters).
- moisture: Moisture in the soil.
- light: Brightness at the sensor’s location.
- temperature: Temperature at the sensor’s location.
- conductivity: Conductivity in the soil.
- battery: Battery details.
- name (Optional): The name displayed in the frontend.
- force_update (Optional): Sends update events even if the value hasn’t changed.
median (Optional): Sometimes the sensor measurements show spikes. Using this parameter, the poller will report the median of the last 3 (you can also use larger values) measurements. This filters out single spikes. Median: 5 will also filter double spikes. If you never have problems with spikes,
median: 1will work fine.
- timeout (Optional): Define the timeout value in seconds when polling (defaults to 10 if not defined)
- retries (Optional): Define the number of retries when polling (defaults to 2 if not defined)
- cache_value (Optional): Define cache expiration value in seconds (defaults to 1200 if not defined)
adapter (Optional): Define the Bluetooth adapter to use (defaults to hci0). Run
hciconfigto get a list of available adapters.
By default the sensor is only polled once every 20 minutes. So, if you set
median: 3 it will take at least 40 minutes before the sensor will report a value after a Home Assistant restart. Since the values usually change very slowly, this usually isn’t a big problem. Keep in mind though that reducing polling intervals will have a negative effect on the battery life.
A full configuration example could look like the one below:
# Example configuration.yaml entry sensor: - platform: miflora mac: 'xx:xx:xx:xx:xx:xx' name: Flower 1 force_update: false median: 3 monitored_conditions: - moisture - light - temperature - conductivity - battery