[APP][Pro] Xiaomi Mi Home App

Thanks! I forgot to mention i don’t have it yet, but nice to know i can add it here once i get one! Didn’t find any support for it before you updated the app, thanks!

Version 3.4.96

12. 7. 2026
Added reliable local telemetry, capability icons, bowl and feeder status sensors, and locally calculated daily food consumption statistics for Xiaomi Smart Pet Food Feeder 2.

…possibly maximum that can be done with that.

Hi!

That’s fantastic news – thank you so much for the update and for finding a way to make it work! I’m downloading the beta version right now and will be testing it thoroughly over the next few days. I’ll let you know how it goes.

Thanks again for your effort!

Hi!

I’ve been testing the new beta version (3.4.96). I noticed that while the telemetry data (like food weight) is coming through correctly, the FoodLevel status doesn’t seem to update automatically when the food level crosses the configured threshold.

For example, I set the threshold to 10g. My feeder has 47g, but the status is still stuck on ‘Low’. It seems the status logic needs a manual trigger or a more frequent refresh. Is there any way to make this update more responsive?

Thanks for your help!"

Hi,
thanks for testing and reporting this. The current FoodLevel value is not calculated from the configured gram threshold; it comes from a separate device status indicating the food level in the storage container, while the 47 g value represents food in the bowl. I’ll rename it to Container food level to make this distinction clearer.

Also please when reporting, best is to send diag from the app with details provided together with the logs.

Hi!
I’m still trying to map out which of the available sensors in your app corresponds to the actual weight of the food in the bowl. As we discussed, I’m seeing some confusion with the status updates.
To help clarify and debug this, I’ve attached two screenshots showing the sensor options I have, along with the diagnostic log from the app.
Could you please point out which of the following sensors should be used to monitor the actual weight of the food in the bowl?

  1. Foodlevel
  2. Food Out Status
  3. Heap Status
  4. Feeder Status
  5. Food level in bowl
  6. Food stuck status
    Additionally, even though I refilled the storage container, the app (and the Xiaomi Home app as well) still shows it as ‘Empty/Low’. I suspect there might be a physical sensor issue with the device itself, but since I’m seeing the correct data for the bowl weight (32g), I want to make sure I’m looking at the right sensor for that.
    Thanks for your guidance!"
    Log
    11f39bd5-2d0f-4cb0-9c82-94902de749b1
(attachments)



Could you confirm if ‘Low food intake threshold’ is strictly for monitoring the eating habits (intake), or does it also trigger the ‘Low food’ warning for the container?

Hi!
Quick update: after restarting the device, the container status (Foodlevel) is now correctly showing ‘Normal’.
However, I’m still struggling with the ‘Food level in bowl’ status in Homey. The device is currently reporting 32g in the bowl (which I can see in the ‘Device data’), but the ‘Food level in bowl’ sensor in Homey still shows ‘Empty’.
Could you please clarify:

  1. Is ‘Food level in bowl’ intended to be a sensor that displays the current weight in grams, or is it a status category (Empty/Low/Normal) that is calculated based on a different threshold?
  2. If it is meant to be a status, how can I configure the threshold for it so that 32g is considered ‘Normal’ instead of ‘Empty’?
    I have attached the diagnostic report and the current logs so you can see why the ‘Empty’ status is persisting despite the 32g reading.
    Thanks

that could be a limitation of this local integration and of the data actually provided by the feeder.

Your diagnostic report was submitted from version v3.4.96. Please always install the latest test version before submitting a report, because newer versions contain additional diagnostics and fixes that are absent from this log.

To your extensive list of questions:

  1. None of the listed sensors represents the current bowl weight in grams:

    • Container food level — previously called Foodlevel. This is the device-reported Normal/Low status for the food storage container.
    • Food Out Status — indicates an abnormal food-dispensing condition.
    • Heap Status — indicates detected food accumulation.
    • Feeder Status — Idle, Feeding, or Fault.
    • Food level in bowl — a device-reported category: Empty, Low, or Normal.
    • Food stuck status — indicates that food may be stuck in the dispensing mechanism.
  2. The 32 g shown in your log is not the current amount of food in the bowl. It is the locally calculated Food consumed today value. The log shows it increasing through detected consumption events, for example from 32 g to 34 g, 36 g, 38 g, and 40 g.

  3. Low food intake threshold is related only to monitoring eating behaviour. It does not control the Container food level warning and does not define the Empty/Low/Normal thresholds for the bowl.

  4. Food level in bowl is not calculated by Homey from the measured grams. It is a separate status reported directly by the feeder. The device does not expose a configurable threshold for this status through the local protocol, so Homey currently cannot make 32 g count as Normal by changing a setting.

  5. Because the Xiaomi Home app also showed the storage container as Empty/Low, and restarting the feeder corrected it, that particular problem originated from the feeder or its internal sensor/cache rather than Homey.

The v3.4.96 log does not include the raw values needed to investigate the bowl status; it mostly contains Pet Fountain diagnostics and feeder consumption updates. The latest test version now logs the raw container status, bowl-weight sample, bowl status, intake threshold, feeding status, and failed MIoT request batches.

Please update to the latest test version, reproduce the discrepancy, and submit a new diagnostic report while the incorrect status is still visible.

But again let me re-iterate, this is what it is, I will be not able to get more data from the feeder and my cloud based tests shows that the additional insights are probably not worth of integrating this into Cloud as well (yet).

@Felho , thank you—the new v3.5.0 log provided the information we needed. It confirms that the feeder reports the actual bowl weight correctly: it increased from 23 g to 33 g after dispensing. However, the separate Empty/Low/Normal status supplied by the device remained Empty, so that status is unreliable over the local protocol.

I have adjusted the integration to use the actual bowl weight instead. The next version will expose the weight in grams and calculate the bowl status locally using a new Bowl low threshold (g) setting. With the default threshold of 10 g, both 23 g and 33 g will be shown as Normal.

The existing Low food intake threshold remains unrelated; it is intended for monitoring eating behaviour, not the amount currently in the bowl.

Watch for next test version then.

Hi!

Thank you for helping and fix this. I would like donate for you. Have you revolut account?

…don’t thanks until it works :wink:

I have changed little bit more now, please test how this would work for you.

Version 3.5.1 — Additional Xiaomi Smart Pet Feeder 2 improvements

Donation options are available on the app page, you would be the first in last 6 months then :wink:

I do have also revolut, @bretis6ws - but not using it so often.

Hi!

That’s excellent news, everything is working perfectly now! The data sync is spot on, and the sensor statuses are updating as they should. Thank you so much for putting in the effort to make this happen – it’s really appreciated!

Since I don’t use PayPal, I’d love to send you a donation via Revolut (@bretis6ws) instead, if that works for you. I’m planning to send $30 as a token of my appreciation for your hard work.

Keep up the great work, and thanks again!

Thought I’d give an update on my fan. There has been quite a few updates over the last few days and the first one that landed after I wrote here seemed to fix my problems. The next one made it wonky again, and now it just tells me there’s no contact with the fan at all.

As written in the first post…

I tried to give you that in [APP][Pro] Xiaomi Mi Home App - #2061 by Tiwas, but please tell me what more you need.

The name in the app is “Xiaomi Smart Standing Air Circulation Fan (xiaomi.fan.p76)” (which is visible from the other screenshots. It was sold as “Xiaomi Smart Standing Air Circulation Fan - BPLDS11DM” (Xiaomi Smart Standing Fan 2). It’s an EU model.

Report ID: b3bde4e3-eeca-4061-bb89-aeb224608ef2

Please tell me if I can provide anything else. Should I retry all the different fan models in the app again? The one I’m using now was the only one that intermittently worked (until it stopped).

I see in the log handshake errors , not something I can really influence myself, if the initial test during pairing is okay..
Can you try removing it and pairing again?

Note :
For Xiaomi xiaomi.fan. models, use the Advanced Xiaomi Smart Fan MIoT driver for new pairings.*

Recreating the fan seems to work fine. I’ve also made a reservation for the ip in the router, in case that was part of the problem. It didn’t seem to have a DHCP lease, so it going from connected to disconnected could have been an IP change.

The only things I’m (kind of) missing are vertical and horizontal controls, but that’s a minor issue. The most importan is to be able to turn it on/off and set fan speed.

So again the same applies… :wink:

Hi Sharkys,

First of all, thank you for continuing to maintain the Xiaomi Mi Home app. I understand that you took over maintaining the project, and I really appreciate that.

I have been troubleshooting support for my Xiaomi Smart Standing Air Circulation Fan, because although the fan can be added to Homey, several functions do not work correctly.

To determine whether the issue was with the fan itself or the Homey implementation, I tested the device directly using python-miio and the local MIoT protocol.

After testing every function on the physical device, I believe I now have a complete and verified MIoT mapping for this model.


Device Information

  • Product: Xiaomi Smart Standing Air Circulation Fan
  • Model: xiaomi.fan.p76
  • Hardware: BL602
  • Firmware: 1.0.5

Homey device used:

  • Advanced Mi Smart Standing Fan MIoT (WiFi)

Current issue in Homey

The fan can be added successfully in Homey, but only the power control works.

I can turn the fan on and off, but the other functions do not work correctly.

For example:

  • Fan speed cannot be controlled.
  • Homey does not read the current fan speed.
  • The speed is shown as 0, even while the fan is running.
  • Changing a value often causes Homey to show busy or user action timeout.
  • The selected value then returns to the previous value.
  • Wind mode does not work.
  • Natural wind level does not work.
  • Horizontal oscillation does not work.
  • Vertical oscillation does not work.
  • Oscillation angles do not work.
  • LED and buzzer controls do not work.
  • The directional movement buttons are not available.

The only capability that currently works correctly in Homey is:

  • Power on/off

However, all the other functions work correctly when communicating directly with the device through the local MIoT protocol.


Complete Property Mapping

Function SIID PIID Type Values
Power 2 1 bool true / false
Fault status 2 2 int 0 = no fault
Straight / Normal Wind mode 2 3 int 0 = Straight / Normal, 1 = Natural
Natural Wind level 2 4 int 0–3 (levels 1–4 in Xiaomi Home)
Fan speed 2 5 int 1–100
Horizontal oscillation 2 6 bool true / false
Horizontal oscillation angle 2 7 int 30 / 60 / 90 / 120
Vertical oscillation 2 8 bool true / false
Vertical oscillation angle 2 9 int 30 / 60 / 90 / 100
LED display 5 1 bool true / false
Buzzer 7 1 bool true / false

Complete Action Mapping

The directional buttons inside Xiaomi Home are not properties.

They are MIoT Actions.

Function SIID AIID
Move Left 2 4
Move Right 2 5
Move Up 2 6
Move Down 2 7

Each action moves the fan head one small step, exactly like pressing the arrows in Xiaomi Home.


Example Commands

Below are the commands I used for testing.

Replace:

  • DEVICE_IP
  • DEVICE_TOKEN

with your own values.

Power

Read

get_property_by 2 1

Turn on

set_property_by 2 1 true bool

Turn off

set_property_by 2 1 false bool

Straight / Normal Wind Mode

Read

get_property_by 2 3

Straight / Normal

set_property_by 2 3 0 int

Natural

set_property_by 2 3 1 int

Natural Wind Level

Read

get_property_by 2 4

Levels

set_property_by 2 4 0 int
set_property_by 2 4 1 int
set_property_by 2 4 2 int
set_property_by 2 4 3 int

Fan Speed

Read

get_property_by 2 5

Examples

set_property_by 2 5 1 int
set_property_by 2 5 25 int
set_property_by 2 5 50 int
set_property_by 2 5 100 int

Horizontal Oscillation

Read

get_property_by 2 6

Enable

set_property_by 2 6 true bool

Disable

set_property_by 2 6 false bool

Horizontal Oscillation Angle

Read

get_property_by 2 7

Available values

30
60
90
120

Set

set_property_by 2 7 30 int
set_property_by 2 7 60 int
set_property_by 2 7 90 int
set_property_by 2 7 120 int

Vertical Oscillation

Read

get_property_by 2 8

Enable

set_property_by 2 8 true bool

Disable

set_property_by 2 8 false bool

Vertical Oscillation Angle

Read

get_property_by 2 9

Available values

30
60
90
100

Set

set_property_by 2 9 30 int
set_property_by 2 9 60 int
set_property_by 2 9 90 int
set_property_by 2 9 100 int

LED

Read

get_property_by 5 1

Enable

set_property_by 5 1 true bool

Disable

set_property_by 5 1 false bool

Buzzer

Read

get_property_by 7 1

Enable

set_property_by 7 1 true bool

Disable

set_property_by 7 1 false bool

Direction Buttons

Move Left

call_action_by 2 4

Move Right

call_action_by 2 5

Move Up

call_action_by 2 6

Move Down

call_action_by 2 7

Swing in cycles

The “Swing in cycles” function is not a separate property or action.

It simply enables both oscillation directions simultaneously.

set_property_by 2 6 true bool
set_property_by 2 8 true bool

To disable it:

set_property_by 2 6 false bool
set_property_by 2 8 false bool

Conclusion

I have tested every property and action above directly on the physical device.

All functions work correctly through the local MIoT protocol.

In Homey, however, only power on/off currently works. This suggests that the fan itself is working correctly, while the remaining issue is most likely related to the current Homey model mapping, capability mapping, data types, or property polling.

I would be happy to test a beta version or help verify any future changes.

Hopefully this mapping can save you some time and make it easier to add full support for the xiaomi.fan.p76.

Thanks again for continuing to maintain the project.

Best regards,
Lukas