小米 / Roborock 扫地机 + Valetudo 改装
概念速览
- Valetudo:开源项目,把米家 / Roborock / Dreame / Viomi 等扫地机的闭源固件替换为基于 Linux + Python 的本地控制
- 核心收益:摆脱云端依赖、可在 HA 中拿到完整地图、支持自定义分区与禁区
- 适用机型:Dreame / Roborock S5-S8 / 米家 1T/1S/Pro/Ultra / Viomi / Cecotec
为什么改装?
| 维度 | 原厂固件 | Valetudo 改装后 |
|---|---|---|
| 地图导出 | ❌ 仅 App 截图 | ✅ 实时 JSON / PNG |
| 远程控制 | ❌ 强制云端 (延迟 500ms+) | ✅ 局域网 MQTT (延迟 < 50ms) |
| 自定义分区 | ❌ 仅官方 4 个区 | ✅ 任意多区 + 命名 |
| 禁区精度 | ±5 cm | ±1 cm |
| OTA 升级 | 厂商推送 (可能变砖) | 你说了算 |
| 隐私 | 视频流强制上传 | 0 上传 |
适用机型速查
| 品牌 | 机型 | 改装难度 | 推荐度 | 备注 |
|---|---|---|---|---|
| Dreame | L10s Ultra / X30 / X40 | ⭐⭐ | ⭐⭐⭐⭐⭐ | 改装最稳,Python 3.11 + MQTT 原生 |
| Roborock | S5 / S6 / S7 / S8 | ⭐ | ⭐⭐⭐ | 经典方案,Moddable 固件成熟 |
| Roborock | Q7 / Q8 / S8 MaxV | ⭐⭐⭐ | ⭐⭐ | 新机型部分功能受限 |
| Xiaomi Mi Robot | Vacuum Mop 1C / 2 Pro | ⭐⭐ | ⭐⭐ | 性价比高 |
| Viomi | S9 | ⭐⭐ | ⭐⭐ | 已有完整方案 |
| Cecotec | Conga 9090 | ⭐⭐⭐ | ⭐ | 西班牙机型 |
改装流程 (Dreame L10s Ultra 示例)
步骤 1:准备工作
所需物料: - Dreame L10s Ultra 主机 (全新或二手,¥2,500-4,000) - 螺丝刀套装 (T8 / T10 / 十字) - USB-UART 串口模块 (CH340 或 CP2102,¥15) - 杜邦线 3 根 - Linux / Mac 工作站 - Valetudo 预编译固件 (从 valetudo.cloud 下载) - SSH 客户端步骤 2:拆机 + 串口接入
- 拆下底部 8 颗螺丝,打开上盖
- 找到主板上 4-pin UART 焊点 (TX / RX / GND / 3.3V)
- USB-UART 模块连接:UART TX → 模块 RX,UART RX → 模块 TX,GND → GND
- 不要接 3.3V —— 主板自带供电
步骤 3:获取 root shell
# Mac / Linux 上监听串口screen /dev/tty.usbserial-1410 115200# 或minicom -D /dev/tty.usbserial-1410 -b 115200按住扫地机的回充键开机,看到启动日志后立刻按回车打断 autoboot:
U-Boot 2018.05 (Mar 12 2023 - 14:23:01 +0800)
DRAM: 512 MiBMMC: mmc@7e202000: 0, mmc@7e202200: 1Hit any key to stop autoboot: 0=>进入 U-Boot 命令行后执行:
setenv bootargs "mem=512M root=/dev/mmcblk0p2 rootfstype=ext4 rw console=ttyS0,115200 init=/bin/sh"boot进入 root shell 后:
# 1. 备份原厂固件dd if=/dev/mmcblk0 of=/mnt/backup_factory.img bs=4M
# 2. 刷入 Valetudocd /tmpwget https://github.com/Valetudo/Valetudo/releases/latest/download/valetudo-dreame-l10s-ultra.tar.gztar -xzf valetudo-dreame-l10s-ultra.tar.gz./install.sh
# 3. 设置 root 密码passwd步骤 4:恢复云端 (可选)
Valetudo 默认完全离线。如果想保留云端控制 (例如远程启动):
# 在 /etc/valetudo/valetudo.conf 中设置[cloud]enabled = true # 允许与原厂 App 通信Home Assistant 集成
方式 A:Valetudo 原生 MQTT (推荐)
Valetudo 自动发布 MQTT 主题:
valetudo/<robot-id>/MapData # 地图 PNG (base64)valetudo/<robot-id>/state # 当前状态 (mowing/charging/error)valetudo/<robot-id>/attributes # 电量、清扫面积、时长HA 集成:
mqtt: vacuum: - name: "Dreame L10s" state_topic: "valetudo/dreame-001/state" set_position_topic: "valetudo/dreame-001/command" ...方式 B:Xiaomi MIoT 集成 (改装后仍可用)
- HA → 添加集成 →
Xiaomi MIoT - 用 Token 登录 (改装不影响 Token)
- 设备正常出现,但延迟比 MQTT 略高
方式 C:自定义卡片 (Map 实时显示)
# lovelace 卡片配置type: picture-entityentity: vacuum.dreame_l10sshow_name: trueshow_state: truecamera_image: camera.dreame_l10s_map进阶:地图坐标触发
Valetudo 地图坐标系可被 HA 读取,实现”机器人到达厨房桌下时停止”等智能自动化:
# 通过 MQTT 订阅地图数据- platform: mqtt topic: "valetudo/dreame-001/MapData" value_template: "{{ value_json.map }}" # 解析像素坐标 → 房间坐标 → 触发对应场景故障排查
📋 复现条件
| 类别 | 必备 | 可选 / 备注 |
|---|---|---|
| 硬件 | 兼容 Valetudo 的米家 / Roborock / Dreame 机型 · UART 串口工具 (¥30) · CH340 烧录器 | 备用机 (建议) |
| 操作系统 | macOS / Linux (Windows 需 WSL) | Ubuntu 22.04 推荐 |
| 软件版本 | Valetudo 0.9+ · python-miio 0.5+ · MQTT broker 2.x | Node-RED (复杂自动化) |
| 网络 | 2.4 GHz Wi-Fi · 电脑与扫地机同网段 | 隔离 VLAN (推荐) |
| 账号 | 米家 App 已绑定 (用于初始 root) | 后期可解绑云端 |
| 时间 | 拆机 30 min · 串口 root 30 min · 刷 Valetudo 30 min · HA 集成 15 min | 调试 +1 h |
| 难度 | ⭐⭐⭐⭐ 高 | 拆机需要胆量 |
| 前置知识 | Linux 串口 (minicom / picocom) · mqtt 基础 | HA 基础 |
⛔ 别这么做 (Anti-patterns)
经验证的坑 —— 跳过 = 至少浪费半天,严重的烧板 / 锁机。
| ❌ 错误做法 | 💥 后果 | ⚠️ 风险 | 范围 |
|---|---|---|---|
| 不要在断电前直接拔 Valetudo 改装中的 USB-TTL | 刷机中途断电 = 变砖。先 dmesg 确认串口没掉再操作。 | 🟡 | 智米扫拖一体 / Roborock S5 Max |
| 不要把米家设备 token 上传到任何第三方云 | token = 设备控制权,泄漏 = 任何人可远程开门。 | 🔴 | 所有米家 / Aqara 设备 |
不要在生产 HA 配置里直接编辑 configuration.yaml 后 check_config 不通过就 reload | 错的 reload 会让 HA 启动失败 → 所有自动化停摆。用 configuration.yaml 备份 + git 版本化。 | 🟢 | Home Assistant |
| 不要给 Frigate 摄像头内网用 admin/admin 默认密码 | RTSP / ONVIF 默认账号 = 局域网裸奔。先改密码。 | 🟡 | 海康 / 大华摄像头 |
| 不要在 ESPHome 设备上直接 OTA 升级到主版本 (major) | 主版本常改 NVS 分区。OTA 升级后启动失败 = 拆壳刷机。先 flash USB 一次。 | 🟡 | ESP32-S3 语音卫星 / 智能开关 |
| 不要在智能家居自动化里写死设备 IP | DHCP 重启后 IP 变 = 自动化失效。用 hostname / mDNS / 静态租约。 | 🟢 | Home Assistant / Hubitat |
| 不要在 Matter 设备首次配对时关掉手机蓝牙 | Matter 配对 = BLE → WiFi handover,全程需要蓝牙。 | 🟢 | Aqara M3 / Apple Home |
🚨 风险总览 (Risk Matrix)
| 风险等级 | 含义 | 例子 |
|---|---|---|
| 🟢 低 | 改错可回滚 / 几分钟恢复 | pip 全局装包、DHCP IP 写死 |
| 🟡 中 | 需要重新刷机 / 重装 / 1-2 小时恢复 | 装错 ROS 2 版本、没 OTA 升级看版本 |
| 🔴 高 | 不可逆 / 烧板 / 安全风险 | 电池反接、micro-ROS 没看门狗、刷机中途断电 |