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
If you can’t use
bluetoothctl but have access to an Android phone you can try
BLE Scanner or similar scanner applications from the Play Store to easily find your sensor MAC address.
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