deepseek Botandopencode v2.1.4 cf04ffc12e feat(sweeper): 设备页型号改用 RV02/RV03 系列号
云端 Product.model 是内部型号代码(RV02="1"、RV03="01"),HA 设备页
直接展示会显示 "01"。改用产品列表接口的 productSign(RV02=9、
RV03=26),未知机型回退 Equip.model。

- const.py:新增 SWEEPER_PRODUCT_MODELS
- models.py:新增 Equip.sweeper_model 属性
- __init__.py / vacuum.py / sensor.py / binary_sensor.py / select.py / image.py:DeviceInfo.model 改用 sweeper_model
- tests/test_models.py:覆盖系列号映射与回退
- docs/api/集成实现.md:补充型号来源说明

Co-Authored-By: opencode v2.1.4
2026-10-27 12:58:34 +08:00

NeteaseIntelligentHomeAssistant

网易智造 App(主包 com.netease.intelligent,versionName 5.3.5)的 Home Assistant 自定义集成与 API 逆向仓库。

安装(HACS)

  1. 在 HACS 中将本仓库添加为自定义仓库,类别选择 集成(Integration)。
  2. 在 HACS 中搜索「网易智造」并下载。
  3. 重启 Home Assistant,然后在 设置 → 设备与服务 → 添加集成 中搜索「网易智造」。

Important

HACS 仅支持公开的 GitHub 仓库。本仓库的 HACS 安装源为 GitHub 镜像: https://github.com/readonly-42894/NeteaseIntelligentHomeAssistant (开发主仓库托管于 Gitea git.o0kam1.dev,GitHub 仅为 HACS 分发镜像。)

目录结构

路径 说明
custom_components/netease_intelligent/ Home Assistant 自定义集成(HACS 托管目录)
custom_components/netease_intelligent/manifest.json 集成清单(domain / 版本 / 依赖等)
custom_components/netease_intelligent/brand/ HACS brand 资源(icon.png / [email protected],取自 App 图标)
hacs.json HACS 清单
.github/workflows/validate.yml HACS Action + hassfest 校验工作流
docs/openapi.yaml OpenAPI 3.0.3 端点/schema 规范
docs/API工作原理.md API 工作机制总览(架构/网络栈/Base URL/接口组织/源码定位)
docs/api/ API 专题文档(认证机制/统一响应结构/登录流程/调用示例/集成实现)
source/ 原始安装包(Git LFS 跟踪)
scripts/ 生成器 gen_openapi.py;辅助脚本 extract_fields.sh、在线冒烟 live_smoke.py;官方推送通道探针 push_probe.py;地图字体获取 fetch_map_font.py
tests/ 单元测试(pytest,见「测试」一节)

集成开发状态

  • HACS 合规骨架(hacs.json / manifest.json / brand 资源 / 校验工作流)
  • 最小可加载集成(Config Flow 手动录入 Cookie 凭据)
  • 登录流程:短信验证码 / 邮箱密码(网易 URS SDK),另保留手动录入 Cookie 兜底
  • 家庭数据抽象(models.py / api.py / coordinator.py,装配进 hass.data)
  • 扫地机器人:设备登记 + vacuum 实体(清扫/暂停/回充/吸力/寻找)+ select 清扫模式(自动清扫/仿真拖地,Pro 款为探索建图、非 Pro 款为沿边清扫)+ 电量/今日清扫统计 sensor + 充电中 binary_sensor
  • 扫地机器人:实时地图 image 实体(下载 mapUrl 二进制地图包,解析并渲染为 PNG;复用 App drawable 图标/纹理,默认按清扫结果显示已清扫地面/房间与轨迹,叠加虚拟墙、清扫区域与带朝向的机器人/充电座标记;支持浅色/深色两种配色,并可配置整幅地图朝向(0°/90°/180°/270° 旋转);清扫中经推送 subtype 3 轨迹实时增长)
  • 扫地机器人:控制后即时反馈(vacuum 乐观更新 + 立即刷新);轮询频率固定(推送在线 10min、离线 5min,不随状态提速)
  • 官方推送通道:Socket.IO 长连接(iot_class=cloud_push)为扫地机实时数据提供实时增补(轮询提供完整字段与基线);探针 scripts/push_probe.py
  • 官方通知:复刻同一通道的 noti 主题(回执 notificationReply + lastNotiId 持久化 + 按 id 去重),收到通知时在事件总线触发 netease_intelligent_notification(仅事件总线,不落 persistent_notification);只要取到 pid 即启用,不依赖扫地机
  • 登录流程:手机号 + 密码 / 微信
  • 设备 / 家庭 / 场景实体

集成结构

文件 说明
config_flow.py / urs.py 登录配置流与网易 URS 登录 SDK 协议实现;选项流提供地图配色与朝向设置(map_theme / map_rotation)
api.py 业务 API 客户端(Cookie 认证 + ResponseWrapper 解包),实现家庭域与扫地机端点
models.py 家庭域数据模型(Family/Room/Member/FamilyEquip/Equip/FamilyEnv 等 DTO)与扫地机数据 DTO(SweeperDeviceData)
coordinator.py DataUpdateCoordinator,周期拉取家庭列表并缓存于 coordinator.data;另含 NeteaseIntelligentSweeperCoordinator 缓存单台扫地机实时数据(轮询为基础、推送实时增补)
push.py / push_protocol.py 官方 Socket.IO 推送通道(cloud_push):帧解析、载荷→SweeperDeviceData 映射、pushId 生成、noti 通知解析与回执;断线退避重连,不可用时轮询继续提供数据,收到通知在事件总线触发 netease_intelligent_notification
vacuum.py 扫地机器人 vacuum 实体(StateVacuumEntity + VacuumActivity:清扫/暂停/回充/吸力/寻找设备);控制指令后乐观更新并触发快速刷新
select.py 扫地机器人 select 实体:清扫模式(复刻官方「模式选择」弹窗 ModeControlDialog——自动清扫/仿真拖地,Pro 款为探索建图、非 Pro 款为沿边清扫;当前模式由 workMode 反推,选择即 setWorkMode(ctrltype, Start) 切换,乐观更新 + 快速刷新)
sensor.py 扫地机器人 sensor:电量、今日清扫面积、今日清扫时长
binary_sensor.py 扫地机器人 binary_sensor:充电中(device_class: battery_charging,chargeStatus == Charging),供前端给电量实体显示充电图标/动效
image.py 扫地机器人 image 实体:把 mapUrl 地图包渲染为 PNG 展示(配色由选项 map_theme、朝向由选项 map_rotation 决定);清扫中按推送 subtype 3 轨迹增量重放
map_parser.py 扫地机二进制地图包解析(复刻 App MapDataParser,纯标准库);含推送轨迹复刻(parse_trajectory / apply_trajectory,对应 App MapHistoryParser)
map_render.py 用 Pillow 把解析结果渲染为 PNG(复刻 App spirit 上色与坐标变换,直接贴 App drawable 图标/纹理;支持深色调色板与整幅地图朝向旋转;history 模式显示清扫结果与轨迹,叠加墙/区域/朝向标记)
map_assets/ 取自 App res/drawable* 的地图图标/纹理(机器人/充电座/定点透明 PNG,虚拟墙/区域/背景平铺纹理)
fonts/ 内置地图字体 Noto Sans SC(SIL OFL 1.1),保证房间名等 CJK 文字在无 CJK 系统字体的宿主(如 HA 容器)也能正确渲染
__init__.py 装配:建 API 客户端与协调器,存入 hass.data[DOMAIN][entry_id],登记扫地机器人设备并装配 vacuum/select/sensor/binary_sensor/image 实体

API 逆向

测试

pip install -r requirements_test.txt
pytest

tests/ 覆盖家庭域数据模型(models.py)的反序列化与容错、API 客户端(api.py)的认证/UA 生成、扫地机器人状态映射(sweeper_activity),以及地图包解析、实时轨迹(map_parser.py)与渲染(map_render.py)。测试环境通过 tests/conftest.py 用合成包名加载 const / models / api / map_parser / map_render 这些模块,避免引入 homeassistant 依赖;地图测试用 tests/map_fixture.py 合成的地图包(不含真实户型数据),渲染测试需要 Pillow(Home Assistant 核心自带,测试环境由 requirements_test.txt 安装)。

许可

本项目代码以 AGPL-3.0 许可发布。网易智造 App 及其商标归网易所有,本项目与网易无关联。

S
Description
网易智造 App 的 Home Assistant 自定义集成与 API 逆向:扫地机器人 vacuum / sensor / 实时地图 image 实体,附 OpenAPI 规范与网易 URS 登录协议,支持 HACS 安装。
Readme AGPL-3.0
117 MiB
0 Stars 1 Watchers 0 Forks
Languages
Python 99.9%
Shell 0.1%