MiFlora Sensor Plant Database

You all might be interested in this:


This is AWESOME!!! Now we just need to populate the DB with the details for the Cannabaceae family…!!

Very Nice work!!!

Awesome! Some plant names are off tho, like Aeschynanthus pulcher but that’s a data issue which displays wrong image and wrong plant. I guess the database file/images I used was wrong but I found the right parameters :slight_smile:

It looks so good that I wanna go and grab more of these Mi Flora sensors!



This is nice!

You should be able to edit the data after converting it to suit your needs

Nice to see you’re looking into this . Some thoughts on this topic:

  1. I don’t think its a good idea to use Xiaomi API directly because this might break in the future. On the other hand it’s not suitable to ship 4500 plant images (~450MB) with the default homeassistant installation. The data.js file is rather small in size and could be shipped with the default installation. So maybe we should look at the min/max data without the images and provide the images ourselves?

  2. The scraped data and Images are lacking many plants. I for example am a passionate chili grower with 10+ types of chili at home but not a single chili plant is in the Xiaomi database.

  3. I’d like to see the database growing for everybody not just for each individual adding their plants, pictures and corresponding min/max values but without an editable open database like my initial idea of a collaborative google doc this is not possible. Anyone has an idea how this could be solved?

2 -> There are no “chili” in the db no, but search “capsicum”.


Thank you!

My two cents, let people get the picture on their own and put it on the www folder.

They can get exactly the picture they like or even the real picture of their plant and you save yourself the hassle of dealing with the pictures, getting the right ones and having 450MB of useless data for people to only use a like 3-5 pictures out of 4500


Do you think is possible to enhance actual sensor by using mmol accumulation against lux ?


I use a custom component called “Average Temperature” With this, you are able to add multiple sensors to create a single sensor which averages out the values of all of the defined sensors… I use this for thermostats where it is better to get the reading from multiple temp points to get a better ave room temperature… There is however no reason why you cannot do this for other sensors, as long as the units that are being measured are the same… Ave Temp Custom Component

What’s the difference between your custom sensor and min_max sensor?

1 Like

Have a look here at some of the reasoning… Average Sensor so whilst the min/max can probably do this, I decided to go with this one…

Does anyone have good DB for this card?
I found something but not work with convert.py

You’ll find it over here: https://github.com/khronimo/MiFloraDB

1 Like

I tried to install the card, but there is a mistake that “Custom element doesn’t exist: flower-card.”
Hass log shows:

https://example.com/local/lovelace-flower-card/data/data.js:1:1 Uncaught SyntaxError: Invalid or unexpected token

but I used only the script in repo. Please help!
I attached the data file.

Me too, do you have any update?

Your file is in the wrong format.
$ file data.js.2
data.js.2: Little-endian UTF-16 Unicode text, with very long lines

A working database:
$ file data.js
data.js: ASCII text, with very long lines

on my installation I’ve the right file
$** file data.js
data.js: ASCII text, with very long lines

Can be the problem on the converter?

I’m not a programmer, though I do fiddle. It could be a problem with the converter, however at the moment there isn’t enough information to make that determination.

What MiFlora database did you use? the MiFloraDB linked above? Is your error exactly the same at Artem’s minus the example.com?

What does your data.js look like? I’ve fiddled with mine a bit making it what I believe is more complaint, but I took a copy I labeled as original and it seems to work as well.

My file is 5 lines long (based on one really really really long line). and looks like this:

‘use strict’;
const FlowerData =
{" -insert really long line - ]}
export {FlowerData};

Is yours the same format?