I got a Dreametech L10s Ultra yesterday and was very impressed! It’s quite capable and has a lot of nice features.
I tried it out on day 1 using the Dreametech app and I didn’t upgrade the firmware on the L10s Ultra in case I want to switch to Valetudo some day. But now that I know how to use it and I’m sure it’s working fine, I want to integrate it with Home Assistant. There’s a Xiaomi Mii integration and a Dreame Vacuum HACS integration. Configuring either one of them seems to require an account on Xiaomi Mi Cloud.
I installed the Xiaomi Home app on my Android and connected my L10s Ultra to it - so the L10s is now controllable via the Xiaomi Home app. Then I set up an account on Xiaomi Mi Cloud, but the cloud account says I have no devices. I can’t find a way to tell the Xiaomi Home app to inform Xiaomi Mi Cloud that I have a device.
Does anyone have any suggestions either how to get my L10s to appear in Xiaomi Mi Cloud, or to integrate it with Home Assistant another way (other than Valetudo - I want to do that, but it’s beyond my skillset right now)?
Thanks for any tips or guidance.
Seems about right. I honestly don’t remember how I did it and now I switched to Valetudo… I found this link in my notes, may it helps https://community.home-assistant.io/t/missing-robot-model-dreame-z10-pro-laser-vacuum-cleaner-in-xiaomi-integration/423558
This seems to be a step in the right direction, I installed the Xiaomi Miot Auto integration and during configuration it found my L10s Ultra! However, it failed to add the it as a device due to this error:
Logger: custom_components.xiaomi_miot.vacuum Source: custom_components/xiaomi_miot/__init__.py:1418 Integration: Xiaomi Miot Auto (documentation, issues) First occurred: 4:55:37 AM (197 occurrences) Last logged: 8:11:21 AM DreameBot L10s Ultra(dreame.vacuum.r2228o): Got MiioException while fetching the state: Unable to discover the device 192.168.133.122, mapping: {'vacuum.status': {'siid': 2, 'piid': 1}, 'vacuum.fault': {'siid': 2, 'piid': 2}, 'vacuum.mode': {'siid': 2, 'piid': 3}, 'silver_ion.silverion_life_time': {'siid': 19, 'piid': 1}, 'silver_ion.silverion_life_level': {'siid': 19, 'piid': 2}, 'mop.mop_life_level': {'siid': 18, 'piid': 1}, 'mop.mop_left_time': {'siid': 18, 'piid': 2}, 'collect_dust.auto_collect': {'siid': 15, 'piid': 1}, 'collect_dust.clean_times': {'siid': 15, 'piid': 2}, 'collect_dust.dust_enable': {'siid': 15, 'piid': 3}, 'collect_dust.dust_status': {'siid': 15, 'piid': 5}, 'clean_logs.first_clean_time': {'siid': 12, 'piid': 1}, 'clean_logs.total_clean_time': {'siid': 12, 'piid': 2}, 'clean_logs.total_clean_times': {'siid': 12, 'piid': 3}, 'clean_logs.total_clean_area': {'siid': 12, 'piid': 4}, 'audio.volume': {'siid': 7, 'piid': 1}, 'audio.voice_packet_id': {'siid': 7, 'piid': 2}, 'audio.voice_change_state': {'siid': 7, 'piid': 3}, 'map.mult_map_state': {'siid': 6, 'piid': 7}, 'map.mult_map_info': {'siid': 6, 'piid': 8}, 'do_not_disturb.enable': {'siid': 5, 'piid': 1}, 'do_not_disturb.start_time': {'siid': 5, 'piid': 2}, 'do_not_disturb.end_time': {'siid': 5, 'piid': 3}, 'vacuum_extend.work_mode': {'siid': 4, 'piid': 1}, 'vacuum_extend.cleaning_time': {'siid': 4, 'piid': 2}, 'vacuum_extend.cleaning_area': {'siid': 4, 'piid': 3}, 'vacuum_extend.cleaning_mode': {'siid': 4, 'piid': 4}, 'vacuum_extend.mop_mode': {'siid': 4, 'piid': 5}, 'vacuum_extend.waterbox_status': {'siid': 4, 'piid': 6}, 'vacuum_extend.task_status': {'siid': 4, 'piid': 7}, 'break_point_restart-4-11': {'siid': 4, 'piid': 11}, 'vacuum_extend.carpet_press': {'siid': 4, 'piid': 12}, 'vacuum_extend.serial_number': {'siid': 4, 'piid': 14}, 'vacuum_extend.clean_rags_tip': {'siid': 4, 'piid': 16}, 'vacuum_extend.keep_sweeper_time': {'siid': 4, 'piid': 17}, 'vacuum_extend.faults': {'siid': 4, 'piid': 18}, 'vacuum_extend.nation_matched': {'siid': 4, 'piid': 19}, 'vacuum_extend.relocation_status': {'siid': 4, 'piid': 20}, 'vacuum_extend.laser_switch': {'siid': 4, 'piid': 21}, 'vacuum_extend.ai_switch': {'siid': 4, 'piid': 22}, 'vacuum_extend.clean_setting': {'siid': 4, 'piid': 23}, 'vacuum_extend.mop_status': {'siid': 4, 'piid': 25}, 'vacuum_extend.custom_enable': {'siid': 4, 'piid': 26}, 'vacuum_extend.child_lock': {'siid': 4, 'piid': 27}, 'vacuum_extend.sensitivity': {'siid': 4, 'piid': 28}, 'vacuum_extend.mop_way': {'siid': 4, 'piid': 29}, 'vacuum_extend.clean_cancel': {'siid': 4, 'piid': 30}, 'carpet_distinguish-4-33': {'siid': 4, 'piid': 33}, 'vacuum_extend.autowash_switch': {'siid': 4, 'piid': 34}, 'vacuum_extend.warn_status': {'siid': 4, 'piid': 35}, 'vacuum_extend.carpet_clean': {'siid': 4, 'piid': 36}, 'auto_add_detergent-4-37': {'siid': 4, 'piid': 37}, 'vacuum_extend.dry_time': {'siid': 4, 'piid': 40}, 'vacuum_extend.nowater_tips': {'siid': 4, 'piid': 41}, 'filter.filter_life_level': {'siid': 11, 'piid': 1}, 'filter.filter_left_time': {'siid': 11, 'piid': 2}, 'brush_left_time-10-1': {'siid': 10, 'piid': 1}, 'brush_life_level-10-2': {'siid': 10, 'piid': 2}, 'brush_cleaner.brush_left_time': {'siid': 9, 'piid': 1}, 'brush_cleaner.brush_life_level': {'siid': 9, 'piid': 2}, 'battery_level': {'siid': 3, 'piid': 1}, 'battery.charging_state': {'siid': 3, 'piid': 2}}, max_properties: 10/62
So I found an explanation that there are sometimes problems discovering devices across subnets, and my L10s is in a different subnet than my Home Assistant. This seems odd to me, though, because Xiaomi Miot Auto saw my L10s and even knew it’s IP address - but perhaps that’s TCP and the problem is that UDP can’t cross subnets? The article says there are 2 ways to possibly overcome the cross-subnet issue: put the devices on the same subnet (currently not an option for me), and “configure IP masquearding on the outgoing routing interface for the subnet where the MI device resides.” With GPT’s help, I tried to add IP Masquerading (which I guess is just NAT), but it’s not working. I’m pretty confident I did it wrong. Can anyone help me configure my pfsense so that my L10s on one subnet can be discovered by Xiaomi Miot Auto on the other subnet?
Networking stuff was my first thought, too, when starting to read your log. Unfortunately i can’t help you with that (my HA is in host mode as are all the IoT-devices), but I think I can explain why it was able to get the IP: It received it via the API from Xiaomi. Good luck figuring out the networking :/
Thanks, I’ll take a look.