Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unknown code 7 for RoborockDockTypeCode #270

Open
cryptk opened this issue May 2, 2023 · 24 comments
Open

Unknown code 7 for RoborockDockTypeCode #270

cryptk opened this issue May 2, 2023 · 24 comments
Labels
bug Something isn't working planned We plan to add this to the integration

Comments

@cryptk
Copy link

cryptk commented May 2, 2023

Version of the custom_component

fresh install from main branch via HACS

What vacuum are you using?

Roborock S8 Pro Ultra

Describe the bug

The integration seems to not (yet) support the new dock with the S8 Pro Ultra

Debug log

Note: The lines about "Unknown code 304 for RoborockMopModeCode" are being handled over in #261

2023-05-01 20:03:04.466 INFO (MainThread) [homeassistant.helpers.script.websocket_api_script] websocket_api script: Running websocket_api script
2023-05-01 20:03:04.466 INFO (MainThread) [homeassistant.helpers.script.websocket_api_script] websocket_api script: Executing step call service
2023-05-01 20:03:04.468 DEBUG (MainThread) [roborock.cloud_api] id=47413 Requesting method get_status with None
2023-05-01 20:03:04.556 DEBUG (MainThread) [roborock.cloud_api] id=47413 Response from get_status: {'msg_ver': 2, 'msg_seq': 5462, 'state': 8, 'battery': 100, 'clean_time': 1212, 'clean_area': 18120000, 'error_code': 0, 'map_present': 1, 'in_cleaning': 0, 'in_returning': 0, 'in_fresh_state': 1, 'lab_status': 1, 'water_box_status': 1, 'back_type': -1, 'wash_phase': 0, 'wash_ready': 0, 'wash_status': 256, 'fan_power': 105, 'dnd_enabled': 0, 'map_status': 3, 'is_locating': 0, 'lock_status': 0, 'water_box_mode': 202, 'water_box_carriage_status': 1, 'mop_forbidden_enable': 1, 'camera_status': 387, 'is_exploring': 0, 'adbumper_status': [0, 0, 0], 'water_shortage_status': 0, 'dock_type': 7, 'dust_collection_status': 0, 'auto_dust_collection': 1, 'avoid_count': 1, 'mop_mode': 304, 'debug_mode': 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': 7320, 'clean_percent': 0, 'rss': 2, 'dss': 2729, 'last_clean_t': 1682971590}
2023-05-01 20:03:05.559 DEBUG (MainThread) [roborock.cloud_api] id=49273 Requesting method get_status with None
2023-05-01 20:03:05.563 DEBUG (MainThread) [roborock.cloud_api] id=85463 Requesting method get_dnd_timer with None
2023-05-01 20:03:05.565 DEBUG (MainThread) [roborock.cloud_api] id=67218 Requesting method get_clean_summary with None
2023-05-01 20:03:05.570 DEBUG (MainThread) [roborock.cloud_api] id=77965 Requesting method get_consumable with None
2023-05-01 20:03:05.650 DEBUG (MainThread) [roborock.cloud_api] id=49273 Response from get_status: {'msg_ver': 2, 'msg_seq': 5463, 'state': 8, 'battery': 100, 'clean_time': 1212, 'clean_area': 18120000, 'error_code': 0, 'map_present': 1, 'in_cleaning': 0, 'in_returning': 0, 'in_fresh_state': 1, 'lab_status': 1, 'water_box_status': 1, 'back_type': -1, 'wash_phase': 0, 'wash_ready': 0, 'wash_status': 256, 'fan_power': 105, 'dnd_enabled': 0, 'map_status': 3, 'is_locating': 0, 'lock_status': 0, 'water_box_mode': 202, 'water_box_carriage_status': 1, 'mop_forbidden_enable': 1, 'camera_status': 387, 'is_exploring': 0, 'adbumper_status': [0, 0, 0], 'water_shortage_status': 0, 'dock_type': 7, 'dust_collection_status': 0, 'auto_dust_collection': 1, 'avoid_count': 1, 'mop_mode': 304, 'debug_mode': 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': 7320, 'clean_percent': 0, 'rss': 2, 'dss': 2729, 'last_clean_t': 1682971590}
2023-05-01 20:03:05.655 WARNING (MainThread) [roborock.code_mappings] Unknown code 7 for RoborockDockTypeCode
2023-05-01 20:03:05.660 WARNING (MainThread) [roborock.code_mappings] Unknown code 304 for RoborockMopModeCode
2023-05-01 20:03:05.690 DEBUG (MainThread) [roborock.cloud_api] id=77965 Response from get_consumable: {'main_brush_work_time': 36540, 'side_brush_work_time': 31308, 'filter_work_time': 36540, 'filter_element_work_time': 0, 'sensor_dirty_time': 31188, 'strainer_work_times': 35, 'dust_collection_work_times': 13, 'cleaning_brush_work_times': 35}
2023-05-01 20:03:05.696 DEBUG (MainThread) [roborock.cloud_api] id=67218 Response from get_clean_summary: {'clean_time': 31188, 'clean_area': 433987500, 'clean_count': 12, 'dust_collection_count': 13, 'records': [1682970382, 1682964764, 1682946469, 1682945488, 1682873881, 1682778520, 1682777496, 1682736686, 1682736653, 1682715054, 1682711722, 1682707008]}
2023-05-01 20:03:05.735 DEBUG (MainThread) [roborock.cloud_api] id=85463 Response from get_dnd_timer: {'start_hour': 22, 'start_minute': 0, 'end_hour': 8, 'end_minute': 0, 'enabled': 1, 'actions': {'dry': 0, 'dust': 1, 'led': 1, 'resume': 1, 'vol': 1}}
2023-05-01 20:03:05.737 DEBUG (MainThread) [roborock.cloud_api] id=59548 Requesting method get_clean_record with [1682970382]
2023-05-01 20:03:05.824 DEBUG (MainThread) [roborock.cloud_api] id=59548 Response from get_clean_record: {'begin': 1682970382, 'end': 1682971594, 'duration': 1212, 'area': 18120000, 'error': 0, 'complete': 1, 'start_type': 2, 'clean_type': 3, 'finish_reason': 56, 'dust_collection_status': 1, 'avoid_count': 1, 'wash_count': 0, 'map_flag': 0}
2023-05-01 20:03:05.827 DEBUG (MainThread) [roborock.cloud_api] id=56592 Requesting method get_dust_collection_mode with None
2023-05-01 20:03:05.912 DEBUG (MainThread) [roborock.cloud_api] id=56592 Response from get_dust_collection_mode: {'mode': 0}
2023-05-01 20:03:05.913 DEBUG (MainThread) [custom_components.roborock.coordinator] Finished fetching roborock data in 0.356 seconds (success: True)

@Lash-L
Copy link
Collaborator

Lash-L commented May 2, 2023

Will be solved alongside my other device specific changes. Thanks for getting this information.

I know I'm missing some functionality for the s8 pro ultra in terms of docking.

Right now we have DustCollectionMode | WashTowelMode | SmartWashParams

What other dock cleaning functionality does it have?

Do you happen to have a mac/iphone?

@Lash-L Lash-L added bug Something isn't working planned We plan to add this to the integration labels May 2, 2023
@cryptk
Copy link
Author

cryptk commented May 2, 2023

The dock has functionality for emptying the dust bin, washing the mop pad, setting the mop wash frequency, setting the washing mode, setting the dust collection emptying mode, setting the drying duration.

I don't have mac or iphone, but if you are wanting to pull packet captures of communications to the vacuum while interacting with the app, I can pull those from my network gear.

@Lash-L
Copy link
Collaborator

Lash-L commented May 2, 2023

Okay so I don't currently have any information for the drying duration and I have some missing information for actually running a few of those things.

If you would like to try, be my guest. I tried for a bit capturing from through my unifi wap and my iphone and an android emulator, but the data was further encrypted. The only luck I've had is doing a packet trace directly through my iphone. It's definitely worth giving a try though since you're familiar with packet captures

Make sure your phone + vacuum are on the same network, then we are looking for tcp request with data and src or destination of the packet to your robots ip.

If you use wireshark, the filter I use is ip.addr = ip and data.data and tcp

If you're able to get data, all of the dock information would be helpful, including the maintenance tab.

if you can get the data, I can decrypt it or I can send you a script.

@cryptk
Copy link
Author

cryptk commented May 2, 2023

As far as I can tell, I don't see any traffic going directly between my phone and the vacuum... everything appears to be going through the cloud connection at AWS

@Lash-L
Copy link
Collaborator

Lash-L commented May 2, 2023

Yep that's the issue I faced. For some reason when I did the packet trace directly through my iphone I got data that went directly to the vacuum

@Lash-L
Copy link
Collaborator

Lash-L commented May 2, 2023

I believe it is because you can capture layer 2 traffic over the air, but to capture layer 3 traffic unencrypted you need to be going directly through the device

@cryptk
Copy link
Author

cryptk commented May 2, 2023

That's just it, I'm not seeing ANY packets at all going directly between my vacuum and my phone.

@Lash-L
Copy link
Collaborator

Lash-L commented May 2, 2023

I take back everything I've said. I was actually able to get some data using wireshark on my windows laptop.

The data doesn't necessarily have to be directly from your phone.

Just filter to any that have your robots vacuum, make sure your phone, laptop, and vacuum are all on teh same network and there are no firewall restrictions between them.

Then I had to close and reopen my app a few times for data to start coming up.

See if doing that gives you anything with data.

@cryptk
Copy link
Author

cryptk commented May 2, 2023

The only packets I am able to see are either phone <> AWS, roborock <> AWS or roborock <> broadcast, I am definitely seeing data between the vacuum and AWS though, can you give me some information on how to process that data and I'll see if I can get anything useful?

@Lash-L
Copy link
Collaborator

Lash-L commented May 2, 2023

image
Do you see data that looks like this?

Tcp data with data column and another data?

If so - I can write up how to process it

Otherwisre, the data is encrypted and we can't do anything

@Lash-L
Copy link
Collaborator

Lash-L commented May 2, 2023

If you download this branch and then run this file after entering in your local_key(you can get this from the debug logs), your roborocks ip, and the path to the wireshark.pcapng file, this should print out everything decoded.

https://github.com/Lash-L/python-roborock/blob/wireshark_decoding/roborock/offline_parser.py

@cryptk
Copy link
Author

cryptk commented May 2, 2023

I do not see data like that, the data going between roborock <> AWS is all TLS, the roborock > broadcast traffic is all UDP and I am not seeing any traffic at all between roborock <> phone (which is the data that would likely be unencrpted). It's as if my phone and/or vacuum are refusing to communicate over the local network

@Lash-L
Copy link
Collaborator

Lash-L commented May 2, 2023

That is basically the problem I was facing in the past, not sure why it started working for me.

Potentially because I have connected locally to the vacuum before? So maybe it starts broadcasting differently? I'm not sure.

But that is exactly what was happening with me originally. UDP data that wasn't helpful and TLS data that was encrypted.

Restarting the app a few times does sometimes work for me - but also I wonder if the android app is just different from the iphone app?

@Lash-L
Copy link
Collaborator

Lash-L commented May 2, 2023

Ah I'm silly and tired.

Looking at it now - and the data I was actually getting - I was getting data from my HA instance communicating with the vacuum, not my phone.

So going back to the state of never having been able to capture packets from anything other than ios/mac

@humbertogontijo
Copy link
Owner

I block the dns for mqtt-us-2.roborock.com before sniffing the traffic between phone and vacuum. If the app can't communicate to mqtt, it starts using local connection

@Lash-L
Copy link
Collaborator

Lash-L commented May 2, 2023

Ah that makes sense - I had tried blocking internet entirely from the device but it ended up not working when I did that. Just the dns makes sense

@cryptk
Copy link
Author

cryptk commented May 2, 2023

@Lash-L I was able to pull decrypted pcaps directly from my phone using an app named PCAPdroid. I have successfully parsed them using the offline parser that you provided.

Here are the messages from opening the "Dock settings" menu:

([RoborockMessage(protocol=4, payload=b'{"dps":{"101":"{\\"id\\":1079,\\"method\\":\\"get_smart_wash_params\\",\\"params\\":{}}"},"t":1682998124}', seq=1, prefix=b'\x00\x00\x00\x87', version=b'1.0', random=0, timestamp=0)], b'')
([RoborockMessage(protocol=5, payload=b'', seq=1, prefix=b'\x00\x00\x00\x11', version=b'1.0', random=1207, timestamp=1682998124)], b'')
([RoborockMessage(protocol=4, payload=b'{"t":1682998124,"dps":{"102":"{\\"id\\":1079,\\"result\\":{\\"smart_wash\\":0,\\"wash_interval\\":1200}}"}}', seq=798, prefix=b'\x00\x00\x00\x87', version=b'1.0', random=1208, timestamp=1682998124)], b'')
([RoborockMessage(protocol=5, payload=b'', seq=798, prefix=b'\x00\x00\x00\x11', version=b'1.0', random=0, timestamp=0)], b'')
([RoborockMessage(protocol=4, payload=b'{"dps":{"101":"{\\"id\\":1080,\\"method\\":\\"get_dust_collection_mode\\",\\"params\\":[]}"},"t":1682998124}', seq=2, prefix=b'\x00\x00\x00\x87', version=b'1.0', random=0, timestamp=0)], b'')
([RoborockMessage(protocol=5, payload=b'', seq=2, prefix=b'\x00\x00\x00\x11', version=b'1.0', random=1209, timestamp=1682998124)], b'')
([RoborockMessage(protocol=4, payload=b'{"t":1682998124,"dps":{"102":"{\\"id\\":1080,\\"result\\":{\\"mode\\":0}}"}}', seq=799, prefix=b'\x00\x00\x00g', version=b'1.0', random=1210, timestamp=1682998124)], b'')
([RoborockMessage(protocol=5, payload=b'', seq=799, prefix=b'\x00\x00\x00\x11', version=b'1.0', random=0, timestamp=0)], b'')
([RoborockMessage(protocol=4, payload=b'{"dps":{"101":"{\\"id\\":1081,\\"method\\":\\"get_dust_collection_switch_status\\",\\"params\\":[]}"},"t":1682998124}', seq=3, prefix=b'\x00\x00\x00\x87', version=b'1.0', random=0, timestamp=0)], b'')
([RoborockMessage(protocol=5, payload=b'', seq=3, prefix=b'\x00\x00\x00\x11', version=b'1.0', random=1211, timestamp=1682998124)], b'')
([RoborockMessage(protocol=4, payload=b'{"t":1682998124,"dps":{"102":"{\\"id\\":1081,\\"result\\":{\\"status\\":1}}"}}', seq=800, prefix=b'\x00\x00\x00g', version=b'1.0', random=1212, timestamp=1682998124)], b'')
([RoborockMessage(protocol=5, payload=b'', seq=800, prefix=b'\x00\x00\x00\x11', version=b'1.0', random=0, timestamp=0)], b'')
([RoborockMessage(protocol=4, payload=b'{"dps":{"101":"{\\"id\\":1082,\\"method\\":\\"get_auto_delivery_cleaning_fluid\\",\\"params\\":{}}"},"t":1682998124}', seq=4, prefix=b'\x00\x00\x00\x87', version=b'1.0', random=0, timestamp=0)], b'')
([RoborockMessage(protocol=5, payload=b'', seq=4, prefix=b'\x00\x00\x00\x11', version=b'1.0', random=1213, timestamp=1682998124)], b'')
([RoborockMessage(protocol=4, payload=b'{"t":1682998124,"dps":{"102":"{\\"id\\":1082,\\"result\\":{\\"status\\":1}}"}}', seq=801, prefix=b'\x00\x00\x00g', version=b'1.0', random=1214, timestamp=1682998124)], b'')
([RoborockMessage(protocol=5, payload=b'', seq=801, prefix=b'\x00\x00\x00\x11', version=b'1.0', random=0, timestamp=0)], b'')
([RoborockMessage(protocol=4, payload=b'{"dps":{"101":"{\\"id\\":1083,\\"method\\":\\"app_get_dryer_setting\\",\\"params\\":[]}"},"t":1682998124}', seq=5, prefix=b'\x00\x00\x00\x87', version=b'1.0', random=0, timestamp=0)], b'')
([RoborockMessage(protocol=5, payload=b'', seq=5, prefix=b'\x00\x00\x00\x11', version=b'1.0', random=1215, timestamp=1682998124)], b'')
([RoborockMessage(protocol=4, payload=b'{"t":1682998124,"dps":{"102":"{\\"id\\":1083,\\"result\\":{\\"status\\":1,\\"on\\":{\\"cliff_on\\":1000,\\"cliff_off\\":1000,\\"count\\":10,\\"dry_time\\":10800,\\"dry_heating_film_time\\":3600},\\"off\\":{\\"cliff_on\\":500,\\"cliff_off\\":500,\\"count\\":10}}}"}}', seq=802, prefix=b'\x00\x00\x01\x07', version=b'1.0', random=1216, timestamp=1682998124)], b'')
([RoborockMessage(protocol=5, payload=b'', seq=802, prefix=b'\x00\x00\x00\x11', version=b'1.0', random=0, timestamp=0)], b'')
([RoborockMessage(protocol=4, payload=b'{"dps":{"101":"{\\"id\\":1084,\\"method\\":\\"get_prop\\",\\"params\\":[\\"get_status\\"]}"},"t":1682998125}', seq=6, prefix=b'\x00\x00\x00\x87', version=b'1.0', random=0, timestamp=0)], b'')
([RoborockMessage(protocol=5, payload=b'', seq=6, prefix=b'\x00\x00\x00\x11', version=b'1.0', random=1217, timestamp=1682998127)], b'')
([RoborockMessage(protocol=4, payload=b'{"t":1682998127,"dps":{"102":"{\\"id\\":1084,\\"result\\":[{\\"msg_ver\\":2,\\"msg_seq\\":347,\\"state\\":8,\\"battery\\":100,\\"clean_time\\":3,\\"clean_area\\":0,\\"error_code\\":0,\\"map_present\\":1,\\"in_cleaning\\":0,\\"in_returning\\":0,\\"in_fresh_state\\":1,\\"lab_status\\":1,\\"water_box_status\\":1,\\"fan_power\\":102,\\"dnd_enabled\\":1,\\"map_status\\":3,\\"is_locating\\":0,\\"lock_status\\":0,\\"water_box_mode\\":202,\\"water_box_carriage_status\\":1,\\"mop_forbidden_enable\\":1,\\"camera_status\\":387,\\"is_exploring\\":0,\\"adbumper_status\\":[0,0,0],\\"water_shortage_status\\":0,\\"dock_type\\":7,\\"dust_collection_status\\":0,\\"auto_dust_collection\\":1,\\"avoid_count\\":0,\\"mop_mode\\":300,\\"back_type\\":-1,\\"wash_phase\\":0,\\"wash_ready\\":0,\\"wash_status\\":33024,\\"debug_mode\\":0,\\"collision_avoid_status\\":1,\\"switch_map_mode\\":0,\\"dock_error_status\\":0,\\"charge_status\\":1,\\"unsave_map_reason\\":4,\\"unsave_map_flag\\":0,\\"dry_status\\":0,\\"rdt\\":0,\\"clean_percent\\":0,\\"rss\\":2,\\"dss\\":2729,\\"events\\":[],\\"switch_status\\":1,\\"last_clean_t\\":1682995471}]}"}}', seq=803, prefix=b"\x00\x00\x04'", version=b'1.0', random=1218, timestamp=1682998127)], b'')
([RoborockMessage(protocol=5, payload=b'', seq=803, prefix=b'\x00\x00\x00\x11', version=b'1.0', random=0, timestamp=0)], b'')
([RoborockMessage(protocol=4, payload=b'{"dps":{"101":"{\\"id\\":1085,\\"method\\":\\"get_prop\\",\\"params\\":[\\"get_status\\"]}"},"t":1682998128}', seq=7, prefix=b'\x00\x00\x00\x87', version=b'1.0', random=0, timestamp=0)], b'')
([RoborockMessage(protocol=5, payload=b'', seq=7, prefix=b'\x00\x00\x00\x11', version=b'1.0', random=1219, timestamp=1682998128)], b'')
([RoborockMessage(protocol=4, payload=b'{"t":1682998128,"dps":{"102":"{\\"id\\":1085,\\"result\\":[{\\"msg_ver\\":2,\\"msg_seq\\":348,\\"state\\":8,\\"battery\\":100,\\"clean_time\\":3,\\"clean_area\\":0,\\"error_code\\":0,\\"map_present\\":1,\\"in_cleaning\\":0,\\"in_returning\\":0,\\"in_fresh_state\\":1,\\"lab_status\\":1,\\"water_box_status\\":1,\\"fan_power\\":102,\\"dnd_enabled\\":1,\\"map_status\\":3,\\"is_locating\\":0,\\"lock_status\\":0,\\"water_box_mode\\":202,\\"water_box_carriage_status\\":1,\\"mop_forbidden_enable\\":1,\\"camera_status\\":387,\\"is_exploring\\":0,\\"adbumper_status\\":[0,0,0],\\"water_shortage_status\\":0,\\"dock_type\\":7,\\"dust_collection_status\\":0,\\"auto_dust_collection\\":1,\\"avoid_count\\":0,\\"mop_mode\\":300,\\"back_type\\":-1,\\"wash_phase\\":0,\\"wash_ready\\":0,\\"wash_status\\":33024,\\"debug_mode\\":0,\\"collision_avoid_status\\":1,\\"switch_map_mode\\":0,\\"dock_error_status\\":0,\\"charge_status\\":1,\\"unsave_map_reason\\":4,\\"unsave_map_flag\\":0,\\"dry_status\\":0,\\"rdt\\":0,\\"clean_percent\\":0,\\"rss\\":2,\\"dss\\":2729,\\"events\\":[],\\"switch_status\\":1,\\"last_clean_t\\":1682995471}]}"}}', seq=804, prefix=b"\x00\x00\x04'", version=b'1.0', random=1220, timestamp=1682998128)], b'')
([RoborockMessage(protocol=5, payload=b'', seq=804, prefix=b'\x00\x00\x00\x11', version=b'1.0', random=0, timestamp=0)], b'')

Here are the messages for setting the drying time:

([RoborockMessage(protocol=4, payload=b'{"dps":{"101":"{\\"id\\":1059,\\"method\\":\\"app_set_dryer_setting\\",\\"params\\":{\\"on\\":{\\"dry_time\\":7200},\\"status\\":1}}"},"t":1682997965}', seq=1, prefix=b'\x00\x00\x00\xa7', version=b'1.0', random=0, timestamp=0)], b'')
([RoborockMessage(protocol=4, payload=b'{"dps":{"101":"{\\"id\\":1063,\\"method\\":\\"app_set_dryer_setting\\",\\"params\\":{\\"on\\":{\\"dry_time\\":10800},\\"status\\":1}}"},"t":1682997970}', seq=5, prefix=b'\x00\x00\x00\xa7', version=b'1.0', random=0, timestamp=0)], b'')
([RoborockMessage(protocol=4, payload=b'{"dps":{"101":"{\\"id\\":1066,\\"method\\":\\"app_set_dryer_setting\\",\\"params\\":{\\"on\\":{\\"dry_time\\":14400},\\"status\\":1}}"},"t":1682997974}', seq=8, prefix=b'\x00\x00\x00\xa7', version=b'1.0', random=0, timestamp=0)], b'')

Here are the messages when opening the Maintenance menu:

([RoborockMessage(protocol=4, payload=b'{"dps":{"101":"{\\"id\\":327,\\"method\\":\\"get_consumable\\",\\"params\\":[]}"},"t":1682998364}', seq=1, prefix=b'\x00\x00\x00w', version=b'1.0', random=0, timestamp=0)], b'')
([RoborockMessage(protocol=5, payload=b'', seq=1, prefix=b'\x00\x00\x00\x11', version=b'1.0', random=1299, timestamp=1682998364)], b'')
([RoborockMessage(protocol=4, payload=b'{"t":1682998364,"dps":{"102":"{\\"id\\":327,\\"result\\":[{\\"main_brush_work_time\\":36550,\\"side_brush_work_time\\":31318,\\"filter_work_time\\":36550,\\"filter_element_work_time\\":0,\\"sensor_dirty_time\\":31198,\\"strainer_work_times\\":35,\\"dust_collection_work_times\\":13,\\"cleaning_brush_work_times\\":35}]}"}}', seq=881, prefix=b'\x00\x00\x01G', version=b'1.0', random=1300, timestamp=1682998364)], b'')
([RoborockMessage(protocol=5, payload=b'', seq=881, prefix=b'\x00\x00\x00\x11', version=b'1.0', random=0, timestamp=0)], b'')

Let me know if you need me to grab anything else, it's getting late so I likely won't be able to send anything else until after work tomorrow, but I'll keep an eye on this issue and get you whatever data you need.

@Lash-L
Copy link
Collaborator

Lash-L commented May 2, 2023

I expected another consumable call - that response doesn't describe all of the items in maintenance does it?

@cryptk
Copy link
Author

cryptk commented May 2, 2023

I'll check it again tomorrow and see if I missed any of the messages

@cryptk
Copy link
Author

cryptk commented May 2, 2023

Screenshot_20230501-224526

I think that call does have everything, I attached a screenshot of the maintenance screen for reference

@Lash-L
Copy link
Collaborator

Lash-L commented May 2, 2023

Okay can you send me a screenshot of the screen for both of the dock consumables?

Do they have timing info on them?

@cryptk
Copy link
Author

cryptk commented May 2, 2023

Oddly enough, no they don't... The progress bar slowly depletes so it's tracking it somewhere and somehow, but the detail page for them does not show any time information. I'm stuck in meetings at work basically all day, once I'm off in about 6 hours I can pull whatever messages you need, feel free to leave me a list of the data you're interested in and I'll get it all pulled after work for you!

Side note, I love how big GitHub makes these screenshots. I hope you wanted them obnoxiously huge because I have no idea how to adjust them, lol.

Screenshot_20230502-091912
Screenshot_20230502-091908

@humbertogontijo
Copy link
Owner

humbertogontijo commented May 2, 2023

It is saying once every two months for dock maintenance brush and once a month for dock water filter. So that is probably what @Lash-L was looking for

@Lash-L
Copy link
Collaborator

Lash-L commented May 2, 2023

Thanks.

I'll try to tackle this at some point - I'll be honest, it wont be at the top of my priorities, but I will try to complete it

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working planned We plan to add this to the integration
Projects
None yet
Development

No branches or pull requests

3 participants