Tasshack / dreame-vacuum

Home Assistant integration for Dreame robot vacuums with map support
https://community.home-assistant.io/t/custom-component-dreame-vacuum
MIT License
898 stars 112 forks source link

X40 Ultra water tank sensors not working #633

Open apocaliss92 opened 4 months ago

apocaliss92 commented 4 months ago

Describe the bug The entity sensor.x40_ultra_complete_low_water_warning entity does not update when the tank is empty, while the application is fine. I'm also wondering if there is any sensor available to track the dirty water tank, the dust bag status and the detergent status, all these information are available on the application

To Reproduce Check the sensor.x40_ultra_complete_low_water_warning entity

Expected behavior A clear and concise description of what you expected to happen.

Screenshots Screenshot 2024-07-10 alle 12 28 51

Additional Information (please complete the following information)

apocaliss92 commented 4 months ago

I have done a bit of investigation and seems like the 2 following behaviors are not handled:

For the first one I could find the property DreameVacuumProperty.DIRTY_WATER_TANK_STATUS (137) is not handled in the sensors The value is 1 if the tank is removed, 0 if it's correctly installed I will look at the second one too, hopefully will be helpful

Tasshack commented 4 months ago

I haven't been able to get access to a X40 yet therefore it is not fully supported.

apocaliss92 commented 4 months ago

Let me know if I can help somehow! Appreciate your work

Tasshack commented 4 months ago

Can you share screenshots from the app that contains the information you want to see in the integration?

apocaliss92 commented 4 months ago

IMG_4008

From top left to bottom right

Can I provide you some logs to help?

Tasshack commented 4 months ago

For clean and dirty tanks; The dock does not actually have a water level sensor but instead it measures power consumption of the pump for determining the tank is empty therefore it cannot know tank is empty or not without running its pump.

Dust bag; I don't think the dock also have a sensor for detecting a bag is installed or not. Only sensor is for the dust bag cover.

Detergent; Integration already generates entities for detegent sensor.x40_ultra_complete_detergent_left and sensor.x40_ultra_complete_detergent_time_left. When detergent is not installed DreameVacuumProperty.AUTO_ADD_DETERGENT should be returning 2 but since that property also controls the detergent adding feature, there are no extra sensor generated for it from the integration.

I will take a look at the app source code for more information.

apocaliss92 commented 4 months ago

Thanks for the detailed responses! About tanks, i am quiet sure there are sensors mounted in the tanks, and if I remove one of them the app shows red right away, without it is running, tomorrow I can upload a pic of the sensors

About the dust bag same, as soon as I remove the bag, the app shows red for it

Tasshack commented 4 months ago

Thanks for the detailed responses! About tanks, i am quiet sure there are sensors mounted in the tanks, and if I remove one of them the app shows red right away, without it is running, tomorrow I can upload a pic of the sensors

Yes there are sensors for presence of the tank but there are no sensor for liquid level inside it. Because of that low water warning can only be triggered after pumps start running.

About the dust bag same, as soon as I remove the bag, the app shows red for it

I will check on this from the source code.

apocaliss92 commented 4 months ago

Oh ok I got it now, then for clear water it's all good already. Are the presence sensors already mapped to ha?

Today the dirty water tank got full during a run and I have received a notification on home assistant and on the app, do you know what sensor should I check, when this happens?

Thanks

Tasshack commented 4 months ago

I think it is handled by the standard error sensor sensor.x40_ultra_complete_error. https://github.com/Tasshack/dreame-vacuum/blob/dev/custom_components/dreame_vacuum/dreame/const.py#L1621

You should also see a notification in HA too if you haven't been cleared it from the app.

Tasshack commented 4 months ago

Those are the remaining properties.

    DreameVacuumProperty.CLEAN_WATER_TANK_STATUS: {siid: 27, piid: 1},
    DreameVacuumProperty.DIRTY_WATER_TANK_STATUS: {siid: 27, piid: 2},
    DreameVacuumProperty.DUST_BAG_STATUS: {siid: 27, piid: 3},
    DreameVacuumProperty.DETERGENT_STATUS: {siid: 27, piid: 4},
    DreameVacuumProperty.STATION_DRAINAGE_STATUS: {siid: 27, piid: 5},

https://github.com/Tasshack/dreame-vacuum/blob/dev/custom_components/dreame_vacuum/dreame/types.py#L911

I am going to map these to sensors on the next Beta release.

apocaliss92 commented 4 months ago

Thank you very much! Ah one lost thing but probably you know already, I had to comment out the lines 2784-2785 in map.py, they would break the integration, it was a suggestion from another issue

Tasshack commented 4 months ago

Values from app source code;

CLEAN_WATER_TANK_STATUS:
0 = ???
1 = Not Installed
2 = Low Water
3 = OK

DIRTY_WATER_TANK_STATUS:
0 = Installed
1 = Not Installed or Full

DUST_BAG_STATUS:
0 = Installed
1 = Not Installed
2 = Please Check

DETERGENT_STATUS:
0 = Installed
1 = Disabled
2 = Low Detergent
apocaliss92 commented 4 months ago

Thanks a lot for taking this up, I have just encountered another issue, tonight the vacuum has cleaned up as usually and did run out of water in the end. The sensor.x40_ultra_complete_low_water_warning was set to low_water correctly, but as soon as I refilled it up it didn't return to normal state. The only thing that worked was to reload the integration in homeassistant