『HomeAssistant』综合讨论区

[插件集成] 小米路由器 Home Assistant 集成 | 本地 API 实时监控,无需云端
  • 楼主 tiejiang
  • 3736702026-6-6 15:14:43
本帖最后由 tiejiang 于 2026-6-22 22:45 编辑

小米路由器 Home Assistant 集成 | 本地 API 实时监控,无需云端

🆕 v1.5.0 新功能:路由器重启按钮

集成会自动创建一个 重启路由器 按钮实体button.miwifi_router_reboot,点击即可远程重启路由器。


点击按钮即发送重启命令到路由器
自动使用 stok 认证机制(过期会自动重新登录)
重启后路由器 1-2 分钟恢复,期间传感器显示不可用,恢复后自动重新连接
配合 HA 自动化可实现"断网自动重启路由器"
中文显示"重启路由器",英文显示"Reboot Router"



V1.4.0 实现:用户可选单位
在集成配置里新增了两个下拉选项:
  • 实时网速传感器单位(speed_unit):Auto / B/s / kB/s / MB/s / GB/s / KiB/s / MiB/s / GiB/s
  • 累计流量传感器单位(total_unit):Auto / B / kB / MB / GB / TB / KiB / MiB / GiB / TiB
选好单位后,传感器状态值会按所选单位自动换算。比如选 MB/s,下载速度就直接显示 5.23 而不是 5230000。

v1.3.10 修复了老固件路由器无法正常登录的bug,请不能正常使用的下载最新版本。

v1.3.5 新增
MiWiFi 路由器登录密码的哈希算法因固件版本不同而异:
  • 新固件(如 BE5000):使用 SHA256+SHA256
  • 老固件(如 AX3600、AC2100、AX9000):使用 SHA1+SHA1
本集成在登录前自动读取路由器 init_info 接口中的 newEncryptMode 字段自动判断加密方式
如果还是出现invalid-auth,你也可以在浏览器中访问 http://路由器IP/cgi-bin/luci/api/xqsystem/init_info,查看返回的 newEncryptMode 字段值,并反馈,帮助完善兼容性。

-------------------------------------------------------------------------------------------------------------------------------------------


游客,如果您要查看本帖隐藏内容请回复


之前一直用 xiaomi_home 和 hass-xiaomi-miot 接路由器,结果传感器全是"未知"并且很多属性都没有,就所以自己用AI写了一个,直接走路由器本地 Web API,所有数据实时获取,不依赖任何云端服务。

功能介绍

路由器传感器

接入后自动创建以下传感器,无需任何配置:

传感器说明单位
Download SpeedWAN 下载速率B/s
Upload SpeedWAN 上传速率B/s
Download Total累计下载量B
Upload Total累计上传量B
Online Devices在线设备数
CPU LoadCPU 负载%
Memory Usage内存使用率%


设备追踪

每个连接到路由器的设备都会自动创建 device_tracker 实体:

  • 在线/离线状态实时检测(home / not_home)
  • 单设备速率数据(upload_speed / download_speed、累计流量、峰值速率)
  • 信号强度、频道、OUI 等额外信息


🆕 设备传感器(v1.3.0 新增)

在集成配置界面手动选择需要监控的设备,每个选中设备自动创建 4 个独立传感器

传感器说明单位
{设备名} Download Speed设备下载速率B/s
{设备名} Upload Speed设备上传速率B/s
{设备名} Download Total设备累计下载量B
{设备名} Upload Total设备累计上传量B


为什么要单独做设备传感器? 因为 device_tracker 的速率数据是属性(attribute),Home Assistant 不会记录属性的历史变化,无法在图表中展示。设备传感器是独立的传感器实体,支持历史记录,可以直接用在 mini-graph-card 等图表卡片里画曲线。

性能优化

集成做了分层轮询优化,不会给路由器造成额外负担:

  • 实时数据 10s + 设备列表 30s + 静态信息 5min,请求量减少 60%+
  • 在线设备数变化时立即轮询设备列表,离线检测延迟 < 10 秒
  • 登录 token 缓存 10 分钟,减少认证开销
  • HTTP Keep-Alive 复用连接,每次请求节省约 50ms


支持型号

所有运行 MiWiFi 固件的小米路由器均可使用:

型号平台状态
Xiaomi BE5000RD18✅ 已验证
Xiaomi BE3600RD09🔶 理论兼容
Xiaomi AX9000RA69🔶 理论兼容
Xiaomi AX6000RA67🔶 理论兼容
Xiaomi AX3600RA70🔶 理论兼容
Xiaomi AX3000TRB01🔶 理论兼容
Redmi AX6RA69🔶 理论兼容
Redmi AX5RB03🔶 理论兼容
Redmi AC2100RM2100🔶 理论兼容


  • 已验证:经实际设备测试确认可用
  • 🔶 理论兼容:基于相同 MiWiFi 固件 API 推断兼容,未经实际设备验证


其他运行 MiWiFi 固件的路由器理论上均兼容,欢迎反馈测试结果,验证后升级为 ✅。


如何判断我的路由器是否支持?


只需在浏览器中直接访问以下两个地址之一(将 192.168.31.1 替换为你的路由器 IP)。新固件和老固件使用不同的 URL 路径,本集成会自动尝试这两个地址:
地址 1(新固件):
http://192.168.31.1/api/xqsystem/init_info

地址 2(老固件):
http://192.168.31.1/cgi-bin/luci/api/xqsystem/init_info

判断方法:
  • 任一地址显示 JSON 数据,包含路由器型号、固件版本等信息,说明完全支持:
// 新固件示例 (BE5000)
{"hardware":{"platform":"RD18","version":"1.0.53","displayName":"Xiaomi BE5000"}, "newEncryptMode":1, ...}
// 老固件示例 (AX3600, 没有 newEncryptMode 字段或字段为 0)
{"romversion":"1.0.168","countrycode":"CN","code":0,"model":"xiaomi.router.ra70","hardware":"RA70",...}

  • 如果两个地址都返回 404 或 nginx 默认错误页,说明路由器固件版本过老或固件分支不同,本集成可能无法使用
  • 如何确认你的路由器用哪种加密算法:看返回 JSON 里有没有 newEncryptMode 字段

    • newEncryptMode=1 → 新固件,使用 SHA256(无需手动选,集成会自动检测)
    • newEncryptMode 字段缺失、为 0 或其他值 → 老固件,使用 SHA1(无需手动选,集成会自动检测)
    • 两个地址都打不开 → 集成默认用 SHA1,登录失败会自动切换到 SHA256 重试

💡 这些接口都不需要登录即可访问。集成会自动按"地址 1 → 地址 2"的顺序尝试,并用返回结果决定登录算法,所以你不需要手动选择算法 —— 默认的"Auto-detect"模式已经覆盖所有情况。
如果自动检测后登录仍然失败,可以在集成配置里手动选择 Force SHA1 或 Force SHA256 作为兜底。

安装
游客,如果您要查看本帖隐藏内容请回复



配置

新建条目

纯 UI 配置,不需要写 YAML:

  • 设置 → 设备与服务 → 添加集成,搜索 "MiWiFi Router"
  • 填写连接信息:
    • 路由器 IP 地址:默认 192.168.31.1
    • 路由器管理密码:MiWiFi 管理界面登录密码
    • 实时数据轮询间隔(scan_interval):默认 10 秒
    • 设备列表轮询间隔(device_scan_interval):默认 30 秒
  • 连接成功后,会进入 选择需添加传感器的设备 步骤:
    • 勾选需要监控的设备(也可以跳过,之后再加)
    • 每个选中设备将创建 4 个独立传感器
  • 提交完成


修改配置

  • 设置 → 设备与服务 → MiWiFi Router → ⚙️ 配置
  • 需添加传感器的设备 下拉框中勾选/取消设备
  • 提交后集成自动重载,传感器立即生效


使用示例

设备速率图表

用 mini-graph-card 展示设备实时速率:

  1. type: custom:mini-graph-card
  2. entities:
  3.   - sensor.xiaomizhu_lu_you_qi_istoreos_download_speed
  4.   - sensor.xiaomizhu_lu_you_qi_istoreos_upload_speed
  5. name: istoreos 网速
  6. hours_to_show: 1
复制代码


自动化:设备上线通知

  1. automation:
  2.   - alias: "手机连接WiFi通知"
  3.     trigger:
  4.       - platform: state
  5.         entity_id: device_tracker.miwifi_router_device_xx_xx_xx_xx_xx_xx
  6.         to: "home"
  7.     action:
  8.       - service: notify.mobile_app
  9.         data:
  10.           title: "设备上线"
  11.           message: "{{ trigger.to_state.attributes.friendly_name }} 已连接WiFi"
复制代码


自动化:设备离线检测

  1. automation:
  2.   - alias: "设备离线通知"
  3.     trigger:
  4.       - platform: state
  5.         entity_id: device_tracker.miwifi_router_device_xx_xx_xx_xx_xx_xx
  6.         to: "not_home"
  7.         for:
  8.           minutes: 5
  9.     action:
  10.       - service: notify.mobile_app
  11.         data:
  12.           title: "设备离线"
  13.           message: "{{ trigger.from_state.attributes.friendly_name }} 已断开WiFi超过5分钟"
复制代码


查看设备速率(device_tracker 属性)

  1. # 在模板中使用
  2. {{ state_attr('device_tracker.miwifi_router_device_xx_xx_xx_xx_xx_xx', 'download_speed_human') }}
  3. # 输出: "2.45 MB/s"

  4. {{ state_attr('device_tracker.miwifi_router_device_xx_xx_xx_xx_xx_xx', 'upload_speed_human') }}
  5. # 输出: "156.00 KB/s"
复制代码


常见问题

Q: 传感器显示"未知"?

检查路由器 IP 和密码是否正确,确保 HA 和路由器在同一局域网。

Q: 实时数据轮询间隔和设备列表轮询间隔有什么区别?

  • 实时数据轮询间隔(scan_interval):控制 WAN 上下行速率、累计流量、CPU 负载、内存使用率等路由器自身传感器的刷新频率。这些数据变化快,默认 10 秒即可获得平滑的速率曲线。
  • 设备列表轮询间隔(device_scan_interval):控制设备在线状态、设备速率属性、设备传感器的刷新频率。设备列表 API 响应较重(包含所有连接设备的详细信息),默认 30 秒可以在及时检测上下线的同时减少对路由器的请求压力。


简单来说:想看更流畅的网速曲线就调小 scan_interval;想更快发现设备上下线就调小 device_scan_interval,但不要设得太小以免增加路由器负担。

Q: 和 xiaomi_home / hass-xiaomi-miot 有什么区别?

那两个集成走 MIoT 协议,但路由器固件不响应属性读取请求,所以传感器全部显示"未知"。本集成走路由器本地 Web API,直接获取实时数据。

Q: 会影响路由器性能吗?

不会。HTTP Keep-Alive 复用连接,分层轮询减少请求量。路由器管理界面每 2 秒轮询,本集成默认 10 秒,负载远低于网页管理。

Q: device_tracker 的速率数据和设备传感器有什么区别?

device_tracker 的速率是属性(attribute),HA 不记录属性历史,无法直接画图。设备传感器是独立实体,支持历史记录,可直接用于图表。如果需要在仪表盘中展示设备速率曲线,请选中对应设备创建传感器。
[size=1.25em]

Q: 出现 invalid-auth 错误?


通常是密码输入错误。如果确认密码无误,可能是路由器固件使用的加密算法不同。v1.3.5+ 已支持自动检测加密方式(SHA256/SHA1),请更新到最新版本。你也可以在浏览器中访问 http://路由器IP/cgi-bin/luci/api/xqsystem/init_info,查看返回的 newEncryptMode 字段值,并在 GitHub Issues 中反馈,帮助完善兼容性。

如果觉得有用,欢迎到 GitHub 点个 ⭐,也欢迎反馈使用情况和测试结果!

游客,如果您要查看本帖隐藏内容请回复






评分

倒序浏览 看全部 全部回复70
晚点去试一试
感谢分享,试试看
  • 地板 TSABCD
  • 2026-6-6 18:13:29
本帖最后由 TSABCD 于 2026-6-6 18:29 编辑

想问一下,如果要设备上线通知推送安卓手机,手机要安装HA吗?没找到HA的下载。
感谢分享
本帖最后由 Eliosusu 于 2026-6-6 20:00 编辑


添加仓库错误
手动安装后 路由AP模式下添加错误
  • 7# qiyi
  • 2026-6-7 12:05:16
Redmi AX5

日志记录器: custom_components.miwifi_router.api
来源: custom_components/miwifi_router/api.py:229
集成: miwifi_router (文档, 问题)

Login failed for 10.0.0.1 after 3 attempts: code=401, msg=not auth
学习一下
  • 9# dust2k
  • 2026-6-13 20:00:59
不知道我用的BE6500是不是支持啊,回头我也测试一下。
  • 10# 109nas
  • 2026-6-13 20:19:46
Xiaomi AX9000
  • iShot_2026-06-13_20.19.05.jpg
1234.. 8下一页
回复 17收藏