让RuView接入Home Assistant:MQTT自动发现+Matter桥接全指南(21个实体一次配好)
【免费下载链接】RuViewπ RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.项目地址: https://gitcode.com/GitHub_Trending/wi/RuView
RuView 是一个用普通 WiFi 信号就能完成人体存在检测、生命体征监测(心率/呼吸率)和姿态感知的开源 WiFi 感知项目——全程不需要摄像头。本指南教你把 RuView 接入Home Assistant:通过MQTT 自动发现一条命令配好21 个实体(11 个原始信号 + 10 个语义推断状态),再用Matter 桥接让 Apple Home / Google Home 也能"看见"你的传感器。
📡 RuView 是什么:无摄像头的 WiFi 空间感知
RuView 利用现有路由器发出的 WiFi 信号(CSI/信道状态信息),通过 Rust 编写的wifi-densepose-sensing-server感知服务器,实时输出存在、人数、心率、呼吸率、跌倒、动作级别等数据。硬件上可以是一台树莓派 + ESP32-S3 感知节点,或信用卡大小的Cognitum Seed一体机。
它的核心卖点:没有摄像头、没有可穿戴设备,就能知道"卧室里有人、正在睡觉、呼吸率 16 RPM"。但感知数据关在 RuView 自己的界面里,对智能家居来说就是座孤岛——这就是本指南要解决的问题。
🧩 为什么是"双协议":MQTT 为主,Matter 互补
RuView 的 HA 集成(设计决策见 ADR-115)采用双协议策略,两条路径不是二选一,而是互补:
| 维度 | MQTT 自动发现(HA-DISCO) | Matter 桥接(HA-FABRIC) |
|---|---|---|
| 覆盖数据 | 全部21 个实体(含心率、呼吸、姿态) | 标准化子集(存在/人数/跌倒/区域) |
| 可用控制器 | Home Assistant + 任意 MQTT 消费者 | Apple Home / Google Home / Alexa / SmartThings / HA |
| 配置方式 | HA 自动创建实体,零代码 | 扫二维码配对 |
| 生物特征数据 | ✅ 支持 | ❌ Matter 协议尚无对应集群 |
一句话:MQTT 承载全量数据给 HA 玩家,Matter 承载标准子集给全屋生态。一个节点可以同时进两个体系,HA 通过
unique_id自动去重,不会出现"幽灵设备"。
Cognitum Seed 是 RuView 的自学习硬件节点,插上网就能工作,无需云端账号:
🚀 MQTT 自动发现完整配置步骤(3 步搞定)
以下操作已在Home Assistant Core 2025.5 + Mosquitto 2.0.18上验证,完整操作手册见 Home Assistant 集成文档。
前置条件
- 一台局域网内的MQTT broker——最简单的方式是在 Home Assistant OS 的附加组件商店里一键安装Mosquitto(EMQX、VerneMQ 也兼容)
- Home Assistant 2025.5 或更新版本,MQTT 集成已启用并指向该 broker
- RuView
wifi-densepose-sensing-serverv0.7.0+二进制(或源码cargo run编译)
第 1 步:启动带--mqtt的感知服务器
Docker 方式(推荐非开发者):
docker run --rm --net=host \ ruvnet/wifi-densepose:0.7.0 \ --source esp32 \ --mqtt --mqtt-host 192.168.1.10 \ --mqtt-username homeassistant --mqtt-password-env MQTT_PASSWORD源码方式(Rust 1.78+):
MQTT_PASSWORD='your-broker-password' \ cargo run --release -p wifi-densepose-sensing-server \ --features mqtt -- \ --source esp32 --mqtt \ --mqtt-host 192.168.1.10 \ --mqtt-username homeassistant第 2 步:等待自动发现(约 5 秒)
启动后,感知服务器会向homeassistant/.../config主题逐实体发布发现消息(保留消息、QoS 1,每 600 秒刷新一次,HA 重启也能自愈),Home Assistant 随即自动创建:
- 1 个 device:每个 RuView 节点一个(以 MAC 或友好名称命名)
- 21 个 entities:全部挂在该 device 下
第 3 步:验证
打开 HA 的设置 → 设备与服务,应能看到 "RuView node " 及其实体。感知服务器的实时数据面板长这样——这些 RSSI、动作带、呼吸带数值现在全部会同步进 HA:
💡 优雅停机:直接 Ctrl-C,发布会先向所有 availability 主题推送
offline,HA 立即把实体标记为不可用;kill -9则由 MQTT LWT(遗嘱消息)兜底,30 秒内生效。
📋 21 个实体全清单:每个节点一次配好
11 个原始信号实体
| HA 实体 | 组件类型 | 单位 | 来源字段 |
|---|---|---|---|
| Presence(存在) | binary_sensor | — | edge_vitals.presence |
| Person count(人数) | sensor | persons | edge_vitals.n_persons |
| Heart rate(心率) | sensor | bpm | edge_vitals.heartrate_bpm |
| Breathing rate(呼吸率) | sensor | bpm | edge_vitals.breathing_rate_bpm |
| Motion level(动作级别) | sensor | % | edge_vitals.motion |
| Motion energy(动作能量) | sensor | — | edge_vitals.motion_energy |
| Fall detected(跌倒) | event | — | edge_vitals.fall_detected |
| Presence score(存在置信度) | sensor | % | edge_vitals.presence_score |
| Signal strength(信号强度) | sensor | dBm | edge_vitals.rssi |
| Zone occupancy(区域占用) | binary_sensor | — | sensing_update.zones |
| Pose(姿态关键点,可选) | sensor(属性) | — | 需加--mqtt-publish-pose |
10 个语义推断实体(HA-MIND)⭐
这才是精华。RuView 内置一个服务端推理层,用小型状态机把原始信号融合成自动化真正需要的"高级状态",每个状态还附带reason解释属性(例如["motion<5%", "br=12bpm", "presence=true"]),方便你调试"为什么触发了":
| 语义实体 | 触发条件 |
|---|---|
someone_sleeping有人在睡觉 | 存在 + 动作<5% + 呼吸率 8–20 bpm,持续 5 分钟 |
possible_distress疑似不适 | 心率超基线 1.5 倍 + 动作>20%,持续 60 秒 |
room_active房间活跃 | 30 秒滚动窗口内动作 >10% |
elderly_inactivity_anomaly老人活动异常 | 空闲时间超过个人基线 2 倍 |
meeting_in_progress会议进行中 | ≥2 人 + 低幅动作持续 10 分钟 |
bathroom_occupied卫生间有人 | 存在 + 标记为 bathroom 的区域激活 |
fall_risk_elevated跌倒风险升高 | 0–100 风险分,超过 70 触发事件 |
bed_exit夜间离床 | 22:00–06:00 从睡眠状态离开床区域 |
no_movement无动作(安全检查) | 存在 + 动作<1% 持续 30 分钟 |
multi_room_transition跨房间移动 | 10 秒内离开 X 区并进入 Y 区 |
每个原型的精确率/召回率数据公开在 语义原语指标文档。
🎁 8 个自动化蓝图 + 3 个看板:零代码直接用
仓库内置了可直接导入的资产,放在 examples/ha-blueprints/ 目录下——把 YAML 文件丢进 HA 的<config>/blueprints/automation/ruvnet/,然后在设置 → 自动化与场景 → 蓝图 → 导入即可:
| 蓝图 | 场景 |
|---|---|
| 01 疑似不适时推送通知 | 独居/老人看护 |
| 02 有人睡觉时走廊调暗 | 夜起不刺眼 |
| 03 起床后唤醒流程 | 灯光渐亮 + 咖啡机 |
| 04 老人活动异常告警 | 平时 9 点起床,11 点还没动 → 提醒 |
| 05 会议灯光+勿扰模式 | 办公室/居家办公 |
| 06 卫生间有人时开排风扇 | 隐私模式安全 |
| 07 跌倒风险超阈值升级告警 | 预防性干预 |
| 08 房间无人时自动布防 | 自动安防 |
另外 examples/lovelace/ 提供 3 个开箱即用的Lovelace 看板:单房间总览、多节点全屋网格、以及一个医疗/AAL 看护视图(隐私模式下依然完整可用)。
🌐 Matter 桥接:Apple Home 也能接入
不想只用 HA?感知服务器内置 Matter 桥接(--matter开关,独立于--mqtt),把节点以Bridged Devices Aggregator形态暴露给任意 Matter 控制器:
cargo run -p wifi-densepose-sensing-server -- \ --source esp32 \ --matter \ --matter-setup-file /tmp/matter-qr.txt启动后日志里会打印Matter 安装码 + 二维码字符串,用 iPhone 的 Apple Home 或 HA 的 Matter 集成扫码即可配对:
- 支持多控制器:同一节点可同时进 Apple Home、Google Home 和 HA(Matter fabric 隔离机制),HA 里会自动去重
- 暴露的能力:存在(
OccupancySensing)、跌倒事件(Switch.MultiPressComplete)、人数(厂商扩展属性,仅 HA/SmartThings 可见)、每区域占用端点 - 注意:心率、呼吸率、姿态不会走 Matter(协议没有对应集群),生物特征只走 MQTT;重置配对用
--matter-reset - 目前使用开发厂商 ID
0xFFF1,Apple Home 若提示"未知厂商"点"仍然添加"即可
v0.7.0 的完整变更与基准数据见 v0.7.0 发布说明。
🔒 隐私模式:健康数据不出家门
在医疗、养老、商用环境部署时,加上--privacy-mode:
- 心率、呼吸率、姿态关键点在MQTT 线上被直接剥离,发现消息都不发布——HA 根本不知道这些实体存在
- 10 个语义推断状态照常工作:推理发生在服务器端,过线的只是布尔值/分数。护理员能看到"检测到不适",但永远看不到原始心率数值
- 这是让 RuView 能合规部署在养老院、医院、学校的架构级优势(最小必要原则,契合 HIPAA/GDPR 思路)
建议非 localhost broker 一律搭配--mqtt-tls;v0.7.0 对明文连接会打 WARN,v0.8.0 起将直接硬失败。
🛠️ 常见故障排查
| 症状 | 排查步骤 |
|---|---|
| HA 里没有出现实体 | 用mosquitto_sub -h <broker> -t 'homeassistant/#' -v看是否有发现消息;没有 → 检查--mqtt-host和网络;有消息但 HA 无设备 → 确认 HA 的 MQTT 集成指向同一 broker |
| 实体出现但状态不更新 | 看服务器日志有无[ws]/[edge_vitals]行确认 CSI 数据流;诊断时把--mqtt-rate-vitals 1.0调高(默认 0.2 Hz 即每 5 秒一次) |
| 出现"非 localhost 明文 MQTT" WARN | 加--mqtt-tls并提供 CA,或把 Mosquitto 搬到与感知服务器同一台机器 |
| Matter 配对失败 | 检查--matter-setup-file里的安装码;确认主机与控制器同一 WiFi 子网;"未知厂商"提示点"仍然添加" |
写在最后
一条--mqtt命令,21 个实体自动就位,8 个蓝图即导即用——RuView 从此不再是"又一个黑盒感知平台",而是任何 Home Assistant 安装(乃至任何 Matter 生态智能家居)的即插即用传感器。下一步可以试试:把someone_sleeping接进你的"晚安"场景,看看 WiFi 信号如何在你睡着时悄悄调暗走廊的灯 🌙
延伸阅读:ADR-115 完整设计文档 · Home Assistant 集成操作手册 · 语义原语精度指标
【免费下载链接】RuViewπ RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.项目地址: https://gitcode.com/GitHub_Trending/wi/RuView
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考