Roborock Integration - Add support for Dyad series

I´m assuming Roborock Dyad wet/dry vacuums are not supported by the Roborock integration as I can not add my Dyad Pro. I have a S5Max that integrates just fine, but the Dyad Pro just won´t show up.

It would be great if support for Roborock Dyad-series could be added in the Roborock integration. Products link: Roborock Cordless Vacuum Cleaners | Roborock Global

Although they are manual vacuums, they are supported and can be added in the Roborock app. Thus the information in Roborock integration (Roborock - Home Assistant) is a bit misleading: “If you can add your device to the Roborock app - it is supported.”

Support for Dyad series in the integration would be useful for:

  • Status and statistics
  • Trigger and / or schedule self cleaning
  • Trigger and / or schedule drying
  • Changing settings

Kindly
Gustav

do not forget to vote for your own request :slight_smile:

2 Likes

Hello - code owner for Roborock here - that was written before these vacuums were even an option.

If you would like support for the devices - you can enable debug logging on. the Roborock integration and then reload the integration and pm me your logs. Theoeritcally that will give me the first bit of the puzzle. Realistically, it would be nice if someone who had the device could handle integrating it, but I can do what I am able to.

1 Like

I Voted for this integration!

debug:
(I anonymized some data like email, token, room-names)

2023-12-09 14:12:38.529 DEBUG (MainThread) [homeassistant.components.roborock] Integration async setup entry: {'entry_id': '6734964370b0362e9c903749a0963873', 'version': 1, 'domain': 'roborock', 'title': '[email protected]', 'data': {'username': '[email protected]', 'user_data': {'uid': 1234567, 'tokentype': '', 'token': '0000000000000000000000000000000-ttttttttttttttttttttttt==', 'rruid': 'rr66666666666666', 'region': 'eu', 'countrycode': '49', 'country': 'DE', 'nickname': 'nickname_removed', 'rriot': {'u': '8KR8bflDddB7QVA2FIx5P', 's': 'eGZCOe', 'h': 'YecIoddueN', 'k': 'rMFval9o', 'r': {'r': 'EU', 'a': 'https://api-eu.roborock.com', 'm': 'ssl://mqtt-eu-4.roborock.com:8883', 'l': 'https://wood-eu.roborock.com'}}, 'tuyaDeviceState': 0, 'avatarurl': 'https://files.roborock.com/iottest/default_avatar.png'}, 'base_url': 'https://euiot.roborock.com'}, 'options': {}, 'pref_disable_new_entities': False, 'pref_disable_polling': False, 'source': 'user', 'unique_id': '[email protected]', 'disabled_by': None}
2023-12-09 14:12:38.529 DEBUG (MainThread) [homeassistant.components.roborock] Getting home data
2023-12-09 14:12:38.706 DEBUG (MainThread) [homeassistant.components.roborock] Got home data HomeData(id=3957785, name='My Home', products=[HomeDataProduct(id='41e0KOKs0d7ytUgbVg0jo', name='Dyad Pro Combo', model='roborock.wetdryvac.a83', code=None, iconurl=None, attribute=None, capability=0, category='roborock.wetdryvac', schema=[HomeDataProductSchema(id='134', name='烘干状态', code='drying_status', mode='ro', type='RAW', product_property=None, desc=None), HomeDataProductSchema(id='200', name='启停', code='start', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='201', name='状态', code='status', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='202', name='自清洁模式', code='self_clean_mode', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='203', name='自清洁强度', code='self_clean_level', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='204', name='烘干强度', code='warm_level', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='205', name='洗地模式', code='clean_mode', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='206', name='吸力', code='suction', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='207', name='水量', code='water_level', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='208', name='滚刷转速', code='brush_speed', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='209', name='电量', code='power', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='210', name='预约时间', code='countdown_time', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='212', name='自动自清洁', code='auto_self_clean_set', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='213', name='自动烘干', code='auto_dry', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='214', name='滤网已工作时间', code='mesh_left', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='215', name='滚刷已工作时间', code='brush_left', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='216', name='错误值', code='error', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='218', name='滤网重置', code='mesh_reset', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='219', name='滚刷重置', code='brush_reset', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='221', name='音量', code='volume_set', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='222', name='直立解锁自动运行开关', code='stand_lock_auto_run', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='223', name='自动自清洁 - 模式', code='auto_self_clean_set_mode', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='224', name='自动烘干 - 模式', code='auto_dry_mode', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='225', name='静音烘干时长', code='silent_dry_duration', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='226', name='勿扰模式开关', code='silent_mode', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='227', name='勿扰开启时间', code='silent_mode_start_time', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='228', name='勿扰结束时间', code='silent_mode_end_time', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='229', name='近30天每天洗地时长', code='recent_run_time', mode='rw', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='230', name='洗地总时长', code='total_run_time', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='235', name='featureinfo', code='feature_info', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='236', name='恢复初始设置', code='recover_settings', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='237', name='烘干倒计时', code='dry_countdown', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='238', name='清洁液投放', code='set_cleanser_amount', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='10000', name='ID点数据查询', code='id_query', mode='rw', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10001', name='防串货', code='f_c', mode='ro', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10002', name='定时任务', code='schedule_task', mode='rw', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10003', name='语音包切换', code='snd_switch', mode='rw', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10004', name='语音包/OBA信息', code='snd_state', mode='rw', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10005', name='产品信息', code='product_info', mode='ro', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10006', name='隐私协议', code='privacy_info', mode='rw', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10007', name='OTA info', code='ota_nfo', mode='ro', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10101', name='rpc req', code='rpc_req', mode='wo', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10102', name='rpc resp', code='rpc_resp', mode='ro', type='STRING', product_property=None, desc=None)])], devices=[], received_devices=[], lon=None, lat=None, geo_name=None, rooms=[HomeDataRoom(id=10644633, name='room_1'), HomeDataRoom(id=10644623, name='room_2'), HomeDataRoom(id=10644622, name='room_3'), HomeDataRoom(id=10644620, name='room_4')])
2023-12-09 14:12:43.897 DEBUG (MainThread) [homeassistant.components.roborock] Integration async setup entry: {'entry_id': '6734964370b0362e9c903749a0963873', 'version': 1, 'domain': 'roborock', 'title': '[email protected]', 'data': {'username': '[email protected]', 'user_data': {'uid': 1234567, 'tokentype': '', 'token': '0000000000000000000000000000000-ttttttttttttttttttttttt==', 'rruid': 'rr66666666666666', 'region': 'eu', 'countrycode': '49', 'country': 'DE', 'nickname': 'nickname_removed', 'rriot': {'u': '8KR8bflDddB7QVA2FIx5P', 's': 'eGZCOe', 'h': 'YecIoddueN', 'k': 'rMFval9o', 'r': {'r': 'EU', 'a': 'https://api-eu.roborock.com', 'm': 'ssl://mqtt-eu-4.roborock.com:8883', 'l': 'https://wood-eu.roborock.com'}}, 'tuyaDeviceState': 0, 'avatarurl': 'https://files.roborock.com/iottest/default_avatar.png'}, 'base_url': 'https://euiot.roborock.com'}, 'options': {}, 'pref_disable_new_entities': False, 'pref_disable_polling': False, 'source': 'user', 'unique_id': '[email protected]', 'disabled_by': None}
2023-12-09 14:12:43.897 DEBUG (MainThread) [homeassistant.components.roborock] Getting home data
2023-12-09 14:12:44.013 DEBUG (MainThread) [homeassistant.components.roborock] Got home data HomeData(id=3957785, name='My Home', products=[HomeDataProduct(id='41e0KOKs0d7ytUgbVg0jo', name='Dyad Pro Combo', model='roborock.wetdryvac.a83', code=None, iconurl=None, attribute=None, capability=0, category='roborock.wetdryvac', schema=[HomeDataProductSchema(id='134', name='烘干状态', code='drying_status', mode='ro', type='RAW', product_property=None, desc=None), HomeDataProductSchema(id='200', name='启停', code='start', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='201', name='状态', code='status', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='202', name='自清洁模式', code='self_clean_mode', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='203', name='自清洁强度', code='self_clean_level', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='204', name='烘干强度', code='warm_level', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='205', name='洗地模式', code='clean_mode', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='206', name='吸力', code='suction', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='207', name='水量', code='water_level', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='208', name='滚刷转速', code='brush_speed', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='209', name='电量', code='power', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='210', name='预约时间', code='countdown_time', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='212', name='自动自清洁', code='auto_self_clean_set', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='213', name='自动烘干', code='auto_dry', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='214', name='滤网已工作时间', code='mesh_left', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='215', name='滚刷已工作时间', code='brush_left', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='216', name='错误值', code='error', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='218', name='滤网重置', code='mesh_reset', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='219', name='滚刷重置', code='brush_reset', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='221', name='音量', code='volume_set', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='222', name='直立解锁自动运行开关', code='stand_lock_auto_run', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='223', name='自动自清洁 - 模式', code='auto_self_clean_set_mode', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='224', name='自动烘干 - 模式', code='auto_dry_mode', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='225', name='静音烘干时长', code='silent_dry_duration', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='226', name='勿扰模式开关', code='silent_mode', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='227', name='勿扰开启时间', code='silent_mode_start_time', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='228', name='勿扰结束时间', code='silent_mode_end_time', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='229', name='近30天每天洗地时长', code='recent_run_time', mode='rw', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='230', name='洗地总时长', code='total_run_time', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='235', name='featureinfo', code='feature_info', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='236', name='恢复初始设置', code='recover_settings', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='237', name='烘干倒计时', code='dry_countdown', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='238', name='清洁液投放', code='set_cleanser_amount', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='10000', name='ID点数据查询', code='id_query', mode='rw', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10001', name='防串货', code='f_c', mode='ro', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10002', name='定时任务', code='schedule_task', mode='rw', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10003', name='语音包切换', code='snd_switch', mode='rw', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10004', name='语音包/OBA信息', code='snd_state', mode='rw', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10005', name='产品信息', code='product_info', mode='ro', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10006', name='隐私协议', code='privacy_info', mode='rw', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10007', name='OTA info', code='ota_nfo', mode='ro', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10101', name='rpc req', code='rpc_req', mode='wo', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10102', name='rpc resp', code='rpc_resp', mode='ro', type='STRING', product_property=None, desc=None)])], devices=[], received_devices=[], lon=None, lat=None, geo_name=None, rooms=[HomeDataRoom(id=10644633, name='room_1'), HomeDataRoom(id=10644623, name='room_2'), HomeDataRoom(id=10644622, name='room_3'), HomeDataRoom(id=10644620, name='room_4')])
2023-12-09 14:12:54.106 DEBUG (MainThread) [homeassistant.components.roborock] Integration async setup entry: {'entry_id': '6734964370b0362e9c903749a0963873', 'version': 1, 'domain': 'roborock', 'title': '[email protected]', 'data': {'username': '[email protected]', 'user_data': {'uid': 1234567, 'tokentype': '', 'token': '0000000000000000000000000000000-ttttttttttttttttttttttt==', 'rruid': 'rr66666666666666', 'region': 'eu', 'countrycode': '49', 'country': 'DE', 'nickname': 'nickname_removed', 'rriot': {'u': '8KR8bflDddB7QVA2FIx5P', 's': 'eGZCOe', 'h': 'YecIoddueN', 'k': 'rMFval9o', 'r': {'r': 'EU', 'a': 'https://api-eu.roborock.com', 'm': 'ssl://mqtt-eu-4.roborock.com:8883', 'l': 'https://wood-eu.roborock.com'}}, 'tuyaDeviceState': 0, 'avatarurl': 'https://files.roborock.com/iottest/default_avatar.png'}, 'base_url': 'https://euiot.roborock.com'}, 'options': {}, 'pref_disable_new_entities': False, 'pref_disable_polling': False, 'source': 'user', 'unique_id': '[email protected]', 'disabled_by': None}
2023-12-09 14:12:54.107 DEBUG (MainThread) [homeassistant.components.roborock] Getting home data
2023-12-09 14:12:54.221 DEBUG (MainThread) [homeassistant.components.roborock] Got home data HomeData(id=3957785, name='My Home', products=[HomeDataProduct(id='41e0KOKs0d7ytUgbVg0jo', name='Dyad Pro Combo', model='roborock.wetdryvac.a83', code=None, iconurl=None, attribute=None, capability=0, category='roborock.wetdryvac', schema=[HomeDataProductSchema(id='134', name='烘干状态', code='drying_status', mode='ro', type='RAW', product_property=None, desc=None), HomeDataProductSchema(id='200', name='启停', code='start', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='201', name='状态', code='status', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='202', name='自清洁模式', code='self_clean_mode', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='203', name='自清洁强度', code='self_clean_level', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='204', name='烘干强度', code='warm_level', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='205', name='洗地模式', code='clean_mode', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='206', name='吸力', code='suction', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='207', name='水量', code='water_level', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='208', name='滚刷转速', code='brush_speed', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='209', name='电量', code='power', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='210', name='预约时间', code='countdown_time', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='212', name='自动自清洁', code='auto_self_clean_set', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='213', name='自动烘干', code='auto_dry', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='214', name='滤网已工作时间', code='mesh_left', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='215', name='滚刷已工作时间', code='brush_left', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='216', name='错误值', code='error', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='218', name='滤网重置', code='mesh_reset', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='219', name='滚刷重置', code='brush_reset', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='221', name='音量', code='volume_set', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='222', name='直立解锁自动运行开关', code='stand_lock_auto_run', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='223', name='自动自清洁 - 模式', code='auto_self_clean_set_mode', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='224', name='自动烘干 - 模式', code='auto_dry_mode', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='225', name='静音烘干时长', code='silent_dry_duration', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='226', name='勿扰模式开关', code='silent_mode', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='227', name='勿扰开启时间', code='silent_mode_start_time', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='228', name='勿扰结束时间', code='silent_mode_end_time', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='229', name='近30天每天洗地时长', code='recent_run_time', mode='rw', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='230', name='洗地总时长', code='total_run_time', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='235', name='featureinfo', code='feature_info', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='236', name='恢复初始设置', code='recover_settings', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='237', name='烘干倒计时', code='dry_countdown', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='238', name='清洁液投放', code='set_cleanser_amount', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='10000', name='ID点数据查询', code='id_query', mode='rw', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10001', name='防串货', code='f_c', mode='ro', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10002', name='定时任务', code='schedule_task', mode='rw', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10003', name='语音包切换', code='snd_switch', mode='rw', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10004', name='语音包/OBA信息', code='snd_state', mode='rw', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10005', name='产品信息', code='product_info', mode='ro', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10006', name='隐私协议', code='privacy_info', mode='rw', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10007', name='OTA info', code='ota_nfo', mode='ro', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10101', name='rpc req', code='rpc_req', mode='wo', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10102', name='rpc resp', code='rpc_resp', mode='ro', type='STRING', product_property=None, desc=None)])], devices=[], received_devices=[], lon=None, lat=None, geo_name=None, rooms=[HomeDataRoom(id=10644633, name='room_1'), HomeDataRoom(id=10644623, name='room_2'), HomeDataRoom(id=10644622, name='room_3'), HomeDataRoom(id=10644620, name='room_4')])

Would be nice to get this running :slight_smile:

@ggurrag @bMX @pdsccode I’ve got a bit of good news, I was able to successfully upgrade us to v2 of the api that allows us to get the device information for all devices not just the robot vacuums.

This is a great first step.

However, seemingly there is a bit different with the mqtt.

Doesone of you happen to have a mac and an iphone? If so, I would be able to walk you through how to get me some data that I could then use to figure out control.

I am able to get status through a rest request - but that is not ideal, as I prefer to have everything local as far as I can. Do any of you have a mac and an iphone?

1 Like

Unfortunately no Iphone and Mac, only Android phones and Windows pc’s.

Sounds great in the first place. Thanks for your engagement :+1:

However, same here: only android and windows available.

Tell me, I have an iPhone.

1 Like

Do you have an iphone and a mac?

Only an iPhone and iPad but no Mac. I can get the Mac of someone Else but my phone is Not connected to the Same ID.

As an update for all of you -

I got the original api I was having issues with figured out as stated above.

I was able to use some of the information from some api calls to get a few other misc things added in.

However, We. send and receive commands using secured mqtt, and in order to do that, we need an encryption key. The only way to get that is to reverse engineer the Roborock app. The encryption key/ ciphering process seems to be different for the robot vacuums than the dyad series. It will probably take me some time to get it all figured out.

2 Likes

Hi Luke, isn’t it possible to get that key from Xiaomi?

No - neither Xiaomi or Roborock have ever been very eager to work with me to add functionality to Home Assistant.

That being said, I - along with a few other reverse engineering hobbyist were able to get everything we need. I just need to take the time to actually add the support into Home Assistant, but there is a lot to do in that regard.

2 Likes

Hello, I also bought a “roborock dyad pro”, same problem, I’ll give you my logs

2024-01-23 11:01:21.689 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry [email protected] for roborock
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 406, in async_setup
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/roborock/__init__.py", line 36, in async_setup_entry
    home_data = await api_client.get_home_data(user_data)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/roborock/api.py", line 769, in get_home_data
    home_id = await self._get_home_id(user_data)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/roborock/api.py", line 749, in _get_home_id
    home_id_response = await home_id_request.request(
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/roborock/api.py", line 113, in request
    return await resp.json()
           ^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/aiohttp/client_reqrep.py", line 1165, in json
    raise ContentTypeError(
aiohttp.client_exceptions.ContentTypeError: 0, message='Attempt to decode JSON with unexpected mimetype: text/html', url=URL('https://euiot.roborock.com/api/v1/getHomeDetail')
2024-01-23 11:04:37.406 ERROR (MainThread) [homeassistant.components.shelly] Error fetching Ventola bagno  data: Error fetching data: DeviceConnectionError()
2024-01-23 12:13:05.454 ERROR (Thread-9) [pychromecast.socket_client] [Camera da letto(192.168.1.116):8009] Error reading from socket.
2024-01-23 12:13:05.455 WARNING (Thread-9) [pychromecast.socket_client] [Camera da letto(192.168.1.116):8009] Error communicating with socket, resetting connection
2024-01-23 12:31:41.411 ERROR (MainThread) [homeassistant.components.shelly] Error fetching Ventola bagno  data: Error fetching data: DeviceConnectionError()
2024-01-23 12:39:12.168 ERROR (Thread-9) [pychromecast.socket_client] [Camera da letto(192.168.1.116):8009] Error reading from socket.
2024-01-23 12:39:12.169 WARNING (Thread-9) [pychromecast.socket_client] [Camera da letto(192.168.1.116):8009] Error communicating with socket, resetting connection
2024-01-23 12:48:32.486 ERROR (Thread-9) [pychromecast.socket_client] [Camera da letto(192.168.1.116):8009] Error reading from socket.
2024-01-23 12:48:32.487 WARNING (Thread-9) [pychromecast.socket_client] [Camera da letto(192.168.1.116):8009] Error communicating with socket, resetting connection
2024-01-23 12:53:51.406 ERROR (MainThread) [homeassistant.components.shelly] Error fetching Ventola bagno  data: Error fetching data: DeviceConnectionError()
2024-01-23 13:01:16.686 DEBUG (MainThread) [homeassistant.components.roborock] Integration async setup entry: {'entry_id': 'b6a0492c80604151cb6854c95374dd0b', 'version': 1, 'minor_version': 1, 'domain': 'roborock', 'title': '[email protected]', 'data': {'username': '[email protected]', 'user_data': {'uid': 5558940, 'tokentype': '', 'token': '421f5ae244684aaeb4547105f3d1a1b3-iNzKMyYEROaTxHHcMXoHdg==', 'rruid': 'rr634c93c6d81830', 'region': 'eu', 'countrycode': '39', 'country': 'IT', 'nickname': 'Ksk6990827', 'rriot': {'u': '18VpLauNeJ3oMDvQ22k3fK', 's': 'l89CdK', 'h': 'QnokHqzr4j', 'k': 'rTuXXWF1', 'r': {'r': 'EU', 'a': 'https://api-eu.roborock.com', 'm': 'ssl://mqtt-eu-5.roborock.com:8883', 'l': 'https://wood-eu.roborock.com'}}, 'tuyaDeviceState': 0, 'avatarurl': 'https://files.roborock.com/iottest/default_avatar.png'}, 'base_url': 'https://euiot.roborock.com'}, 'options': {}, 'pref_disable_new_entities': False, 'pref_disable_polling': False, 'source': 'user', 'unique_id': '[email protected]', 'disabled_by': None}
2024-01-23 13:01:16.693 DEBUG (MainThread) [homeassistant.components.roborock] Getting home data
2024-01-23 13:01:17.515 DEBUG (MainThread) [homeassistant.components.roborock] Got home data HomeData(id=5572704, name='My Home', products=[HomeDataProduct(id='3SfZWEKLMqwP3GE1FiLslU', name='Roborock Dyad Pro', model='roborock.wetdryvac.a56', category=<RoborockCategory.WET_DRY_VAC: 'roborock.wetdryvac'>, code=None, iconurl=None, attribute=None, capability=2, schema=[HomeDataProductSchema(id='134', name='烘干状态', code='drying_status', mode='ro', type='RAW', product_property=None, desc=None), HomeDataProductSchema(id='200', name='启停', code='start', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='201', name='状态', code='status', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='202', name='自清洁模式', code='self_clean_mode', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='203', name='自清洁强度', code='self_clean_level', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='204', name='烘干强度', code='warm_level', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='205', name='洗地模式', code='clean_mode', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='206', name='吸力', code='suction', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='207', name='水量', code='water_level', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='208', name='滚刷转速', code='brush_speed', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='209', name='电量', code='power', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='210', name='预约时间', code='countdown_time', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='212', name='自动自清洁', code='auto_self_clean_set', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='213', name='自动烘干', code='auto_dry', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='214', name='滤网已工作时间', code='mesh_left', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='215', name='滚刷已工作时间', code='brush_left', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='216', name='错误值', code='error', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='218', name='滤网重置', code='mesh_reset', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='219', name='滚刷重置', code='brush_reset', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='221', name='音量', code='volume_set', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='222', name='直立解锁自动运行开关', code='stand_lock_auto_run', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='223', name='自动自清洁 - 模式', code='auto_self_clean_set_mode', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='224', name='自动烘干 - 模式', code='auto_dry_mode', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='225', name='静音烘干时长', code='silent_dry_duration', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='226', name='勿扰模式开关', code='silent_mode', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='227', name='勿扰开启时间', code='silent_mode_start_time', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='228', name='勿扰结束时间', code='silent_mode_end_time', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='229', name='近30天每天洗地时长', code='recent_run_time', mode='rw', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='230', name='洗地总时长', code='total_run_time', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='235', name='featureinfo', code='feature_info', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='236', name='恢复初始设置', code='recover_settings', mode='rw', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='237', name='烘干倒计时', code='dry_countdown', mode='ro', type='VALUE', product_property=None, desc=None), HomeDataProductSchema(id='10000', name='ID点数据查询', code='id_query', mode='rw', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10001', name='防串货', code='f_c', mode='ro', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10002', name='定时任务', code='schedule_task', mode='rw', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10003', name='语音包切换', code='snd_switch', mode='rw', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10004', name='语音包/OBA信息', code='snd_state', mode='rw', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10005', name='产品信息', code='product_info', mode='ro', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10006', name='隐私协议', code='privacy_info', mode='rw', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10007', name='OTA info', code='ota_nfo', mode='ro', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10101', name='rpc req', code='rpc_req', mode='wo', type='STRING', product_property=None, desc=None), HomeDataProductSchema(id='10102', name='rpc resp', code='rpc_resp', mode='ro', type='STRING', product_property=None, desc=None)])], devices=[], received_devices=[], lon=None, lat=None, geo_name=None, rooms=[])

Thank you!

Hello, was support for the Dyad ever added? I’m looking at buying one and was hoping for home assistant integration support. Thanks

It’s a long complicated process. I am slowly working on it

1 Like

Thanks @Lash-L for working on this.
It would be a great help to also have Dyad Pro support as well.
Thanks a lot for your efforts.
Please let me know, if I can help with logs or else.

BR Thomas

Hey everyone - latest update:


Successfully getting things to show up on my local instance.

to start off with, there will be sensors for status, power, mesh left, brush left, and error. Binary sensors, time entities, button entities, number entities, etc. coming later.

Big thanks to @ggurrag for sharing their device with me. None of this would have been possible without it!

Hoping to have a PR for adding this into core this month, will depend on the review cycle if it is included in the may release.

3 Likes

image

I have a PR up to get support added to Core