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
789 stars 94 forks source link

X40 Ultra vacuum ignoring cleaning parameters in clean_segment action #675

Open puboe opened 1 month ago

puboe commented 1 month ago

Describe the bug

When calling clean segment action, X40 Ultra vacuum does not use the set parameters, instead it uses the global fan_speed and mop pad settings. According to the documentation Cleaning parameters and cleaning sequence are ignored by the device when customized_cleaning or cleaning_sequence is enabled. yet they seem to be ignored when customized_cleaning and cleaning_sequence are turned off as well or I'm doing something wrong, which is also likely.

To Reproduce With customized_cleaning: false and cleaning_sequence: null call the following action on the X40 vacuum entity:

action: dreame_vacuum.vacuum_clean_segment
target:
  entity_id: vacuum.x40_ultra_complete
data:
  segments: 4
  suction_level: 0
  water_volume: 3

Expected behavior The vacuum cleans the correct room using the provided cleaning parameters. Instead cleans the correct room but with global settings.

Screenshots The global settings in the app while executing the above mentioned action.

Additional Information (please complete the following information)

Tasshack commented 1 month ago

This may be related to the water_volume is no longer supported and instead there are wetness_level and cleaning_route settings available or it may be related to the X40 is being very new and something else may have changed from its firmware.

I can easily update the global settings from the integration too but I really don't want to unless really needed because it provides another set of settings apart from the global ones but that may no longer available on X40 and future models.

Can you enable the info logs, repeat the same steps and send me the log output so I can make sure you are doing everything correctly and the device actually not performing the action.

logger:
  default: warn
  logs:
    custom_components.dreame_vacuum: info

Also you can set the global settings using a script and internal entity services. Here is an example https://github.com/Tasshack/dreame-vacuum/issues/465.

puboe commented 1 month ago

Thanks for the quick response! here are the logs produced while running the above mentioned action. Let me know if you need anything else!

dreame_logs.log

Tasshack commented 1 month ago

Thanks for the quick response! here are the logs produced while running the above mentioned action. Let me know if you need anything else!

dreame_logs.log

Thanks for the logs, I have checked and everything seems correct. Integration sends fan and water settings to the device with the segment id but i guess device ignores them.

Send action START_CUSTOM [{'piid': 1, 'value': 18}, {'piid': 10, 'value': '{"selects":[[4,1,0,3,1]]}'}]

I have also checked the app source code too in case there is something changed but looks like really it is not possible to set custom settings for a cleaning job for the vacuums that has custom mopping route capability because app always uses the global settings for this type of API request.

I am going implement global fan and water settings updating action with all and segment cleaning services for this generation of devices but the result will be same as you are setting them with a script.

puboe commented 1 month ago

Thanks for the support and the amazing work on this integration! Let me know if I can be of more help.