Describe the bug
When setting the cleaning mode to "Vacuum then Mop" in the Roborock App, python-roborock fails to map mop_mode: 300 and water_box_mode: 235. This causes upstream consumers (such as Home Assistant) to display an Unknown state for the mop mode entities.
Roborock Model
Roborock Saros 20
Firmware: 02.55.44
App Version
Roborock App (Latest)
Python-roborock Version
Latest (python-roborock version shipped with Home Assistant Core)
Expected Behavior
mop_mode: 300 should be recognized as VACUUM_THEN_MOP (or equivalent enum state) instead of raising an unmapped enum warning/falling back to unknown.
Diagnostics / Logs
Here is the decoded payload from GET_STATUS while the device is set to "Vacuum then Mop":
{
"msg_ver": 2,
"msg_seq": 3205,
"state": 8,
"battery": 85,
"clean_time": 564,
"clean_area": 7582500,
"error_code": 0,
"map_present": 1,
"in_cleaning": 0,
"in_returning": 0,
"in_fresh_state": 1,
"lab_status": 3,
"water_box_status": 1,
"back_type": -1,
"wash_phase": 0,
"wash_ready": 1,
"wash_status": 512,
"fan_power": 102,
"dnd_enabled": 0,
"map_status": 3,
"is_locating": 0,
"lock_status": 0,
"water_box_mode": 235,
"distance_off": 0,
"water_box_carriage_status": 1,
"mop_forbidden_enable": 1,
"camera_status": 8613,
"is_exploring": 0,
"home_sec_status": 0,
"home_sec_enable_password": 1,
"monitor_status": 0,
"adbumper_status": [0, 0, 0],
"water_shortage_status": 0,
"dock_type": 27,
"dust_collection_status": 0,
"auto_dust_collection": 1,
"avoid_count": 0,
"mop_mode": 300,
"debug_mode": 0,
"in_warmup": 0,
"collision_avoid_status": 1,
"switch_map_mode": 0,
"dock_error_status": 0,
"charge_status": 1,
"unsave_map_reason": 0,
"unsave_map_flag": 0,
"dry_status": 1,
"rdt": 8280,
"clean_percent": 0,
"extra_time": 0,
"rss": 2,
"dss": 2216,
"common_status": 2,
"last_clean_t": 1788529011,
"replenish_mode": 0,
"repeat": 1,
"kct": 0,
"subdivision_sets": 0,
"cleaning_info": {
"target_segment_id": -1,
"segment_id": -1,
"fan_power": 105,
"water_box_status": 200,
"mop_mode": 300
},
"exit_dock": 0,
"seq_type": 0,
"pet_reminding": 0,
"sub_error_code": 0,
"sub_zone": -1
}
Describe the bug
When setting the cleaning mode to "Vacuum then Mop" in the Roborock App,
python-roborockfails to mapmop_mode: 300andwater_box_mode: 235. This causes upstream consumers (such as Home Assistant) to display anUnknownstate for the mop mode entities.Roborock Model
Roborock Saros 20
Firmware: 02.55.44
App Version
Roborock App (Latest)
Python-roborock Version
Latest (
python-roborockversion shipped with Home Assistant Core)Expected Behavior
mop_mode: 300should be recognized asVACUUM_THEN_MOP(or equivalent enum state) instead of raising an unmapped enum warning/falling back to unknown.Diagnostics / Logs
Here is the decoded payload from
GET_STATUSwhile the device is set to "Vacuum then Mop":{ "msg_ver": 2, "msg_seq": 3205, "state": 8, "battery": 85, "clean_time": 564, "clean_area": 7582500, "error_code": 0, "map_present": 1, "in_cleaning": 0, "in_returning": 0, "in_fresh_state": 1, "lab_status": 3, "water_box_status": 1, "back_type": -1, "wash_phase": 0, "wash_ready": 1, "wash_status": 512, "fan_power": 102, "dnd_enabled": 0, "map_status": 3, "is_locating": 0, "lock_status": 0, "water_box_mode": 235, "distance_off": 0, "water_box_carriage_status": 1, "mop_forbidden_enable": 1, "camera_status": 8613, "is_exploring": 0, "home_sec_status": 0, "home_sec_enable_password": 1, "monitor_status": 0, "adbumper_status": [0, 0, 0], "water_shortage_status": 0, "dock_type": 27, "dust_collection_status": 0, "auto_dust_collection": 1, "avoid_count": 0, "mop_mode": 300, "debug_mode": 0, "in_warmup": 0, "collision_avoid_status": 1, "switch_map_mode": 0, "dock_error_status": 0, "charge_status": 1, "unsave_map_reason": 0, "unsave_map_flag": 0, "dry_status": 1, "rdt": 8280, "clean_percent": 0, "extra_time": 0, "rss": 2, "dss": 2216, "common_status": 2, "last_clean_t": 1788529011, "replenish_mode": 0, "repeat": 1, "kct": 0, "subdivision_sets": 0, "cleaning_info": { "target_segment_id": -1, "segment_id": -1, "fan_power": 105, "water_box_status": 200, "mop_mode": 300 }, "exit_dock": 0, "seq_type": 0, "pet_reminding": 0, "sub_error_code": 0, "sub_zone": -1 }