RuView × Apple HomeHAP-1.1 原生 HomeKit 桥接与 HomePod 环境智能集成指南【免费下载链接】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/RuViewRuView 通过 HomeKit Accessory ProtocolHAP-1.1将自己声明为原生 HomeKit 配件让 HomePod / Apple TV 在数秒内完成 mDNS 发现、Home app 一键配对Siri 与自动化直接消费 WiFi 反射信号产生的存在感知presence、呼吸与跌倒风险等语义事件——全程无需 Home Assistant 中转。读完本文你将掌握从 ESP32-C6 采集节点、三进程数据链路到 iPhone 配对、Siri 按房间问答、HomePod 语音播报以及 MCP 智能体接入的完整部署与排查方法。一、架构总览RuView 如何被 HomePod 发现HomePod 不是可以被主动推送数据的端点而是局域网内的Home Hub HomeKit/Matter 控制器 Siri 端点。正确的数据流向是 RuView 侧主动广播advertise配件HomePod 通过 Bonjour/mDNS 发现再转发给 Home app、Siri 与自动化图graph。本集成在 ADR-125 — RuView ↔ Apple Home native HAP bridge 中正式定稿其完整链路如下ESP32-C6 CSI node (living room) ↓ (UDP feature stream) RuView Sensing Server (announces presence, vital signs, BFLD events) ↓ (HTTP polling) HAP Bridge (advertises HomeKit accessory on mDNS) ↓ (Bonjour discovery) HomePod or Apple TV (Home Hub) ↓ (forwards to Home app Siri) iPhone, iPad, Mac, Watch, Apple Home automations该方案复用 Philips Hue、Eve、Nanoleaf 等配件遵循的HAP-1.1标准。HomePod 在桥启动后数秒内即可发现它配对在 Home app 中一键完成Siri 立即可用——例如Hey Siri, is anyone in the living room?。关于设计取舍与隐私保护可进一步阅读 ADR-125BFLD 隐私门PrivacyGate的技术定义见 ADR-118 — Beamforming Feedback Layer for Detection。二、目前已交付的能力Tier 1 Tier 2集成工作在feat/adr-125-apple-fabric分支上以8 次增量迭代落地PR #797下表完整列出各迭代交付物迭代能力Commit状态1多特征 HomeKit 配件Motion Occupancy StatelessProgrammableSwitch48db60a65Runtime-live2传感服务器 HTTP 端点供桥轮询/api/v1/vitals、/api/v1/bfld、/api/v1/semantic-events194a2e163Runtime-livecurl 验证通过3含 N 个子配件的 HAP 桥按房间问 Siri为每个房间命名Siri 即可语音回应63b77f760Runtime-live双桥同时在网广播4语义事件端点Unknown Presence、Unexpected Occupancy、Unrecognized Activity Pattern3d30261e7Runtime-live隐私不变量 I1 强制生效5rvagent MCP 消费者agentic chain面向 Claude Code 集成提供 12 个 MCP 工具c19742d71已在真实 C6 上运行时验证6PyO3 BFLD PrivacyClass 绑定SOTA Rust crate 暴露给 Pythonde0712d43源码编译通过cargo check绿7Shortcuts-as-gluelaunchd 任务 经 iCloud Home 图在 HomePod 上 Speak Text绕过 Bonjour 阻塞d0525359d运行时验证osascript 触发通过8面向 Eve.app 渲染的自定义特征 UUID 脚手架设计完成运行时 HAP-python JSON-loader 为后续工作3bb8c1621设计脚手架当前即可使用的功能在 iPhone、iPad 或 Mac 的 Home app 中将 RuView 桥配对为配件向 Siri 提出按房间的存在感知问题is anyone home、is the office occupied、did someone fall以存在检测、呼吸存在、跌倒风险或活动模式异常为触发器创建自动化通过 Shortcuts-as-glue 路径Tier 2将 RuView 事件流转为 HomePod 语音播报通过 agentic MCP 接口Claude Code 集成以编程方式查询 RuView 数据。三、五分钟快速上手3.1 前置条件硬件运行 CSI 固件rev v0.7.0的 ESP32-C6与 Mac 和 HomePod 处于同一 WiFi 网络软件已在 Home app 中完成配对同一 iCloud 账号的 MacPython 3.8网络Mac、HomePod、ESP32-C6 三者必须处于同一局域网子网如192.168.1.0/24。3.2 第 1 步配置 ESP32-C6通过 USB 连接 C6 并运行配置脚本python firmware/esp32-csi-node/provision.py \ --port /dev/ttyUSB0 \ --ssid YourWiFiSSID \ --password YourWiFiPassword \ --target-ip 192.168.1.20验证 C6 是否已在网络启动ping 192.168.1.20从源码看配置脚本 将 WiFi 凭据与聚合目标写入 ESP32 的 NVS 分区默认偏移0x9000、大小 24 KiB因此无需重新编译固件即可改网。其还实现了默认增量合并additive-by-default新 CLI 参数会与之前写入的按端口状态合并而不是整盘覆盖 NVS——只有首次配置回收板时才需要--reset清除状态文件与设备 NVS。3.3 第 2 步在 Mac 上创建 venv 并安装 HAP-pythonmkdir -p ~/ruview-hap cd ~/ruview-hap python3 -m venv venv source venv/bin/activate pip install HAP-python3.4 第 3 步将 RuView 桥接脚本复制到 Mac从仓库例如克隆到 Mac 本地复制以下文件cp scripts/c6-presence-watcher.py ~/ruview-hap/ cp scripts/ruview-sensing-server.py ~/ruview-hap/ cp scripts/ruview-hap-bridge.py ~/ruview-hap/3.5 第 4 步按顺序启动三个守护进程终端 1启动 C6 presence watcher读取 C6 的 UDP 数据包执行 BFLD 隐私门cd ~/ruview-hap source venv/bin/activate python c6-presence-watcher.py --node-id 1 --esp32-ip 192.168.1.20 --privacy-class 2输出将存在事件写入/tmp/ruview-state.json。这里值得展开说明底层实现见 c6-presence-watcher.py它消费的是固件rv_feature_state结构体固件定义 对应实现发出的60 字节 UDP 帧魔数RV_FEATURE_STATE_MAGIC 0xC5110006字段含motion_score、presence_score、respiration_bpm、heartbeat_bpm、anomaly_score等末尾带 CRC32 校验IEEE 多项式即zlib.crc32。关键行为迟滞阈值PRESENCE_ON_THRESHOLD 0.40触发 Motion ONPRESENCE_OFF_THRESHOLD 0.20释放 Motion OFF避免presence_score在边界附近时 HomeKit 特征抖动空闲释放IDLE_RELEASE_S 5.0秒内未收到有效数据包即自动清除 motion 与 occupancy覆盖 C6 完全断线场景Occupancy 滚动窗口默认 3 秒滚动平均OCC_ON_THRESH 0.30/OCC_OFF_THRESH 0.15Anomaly 事件anomaly_score越过--anomaly-threshold默认 0.7时触发Unrecognized Activity Pattern每 10 秒输出一行统计包数、有效数、CRC 错误数、平均 presence/motion便于确认存活。终端 2启动传感服务器为 HAP 桥提供 HTTP 轮询接口cd ~/ruview-hap source venv/bin/activate python ruview-sensing-server.py --port 3000输出监听http://127.0.0.1:3000/api/v1/...。传感服务器 是 rvagentADR-124npm v0.1.0期望的 HTTP API 子集实现数据源为 watcher 写入的/tmp/ruview-last-feature.json若文件缺失或超过STALENESS_S 10秒未更新端点返回 503 并附带 is c6-presence-watcher running? 提示。完整端点集见下表与 MCP 工具实现 一一对应端点说明GET /health存活探针含 feature 数据年龄GET /api/v1/sensing/latestADR-102 schema v2 最新感知窗口GET /api/v1/edge/registry节点枚举GET /api/v1/vitals/node_id/latestEdgeVitalsMessage呼吸/心率/置信度GET /api/v1/bfld/node_id/last_scanBfldScanResponseidentity_risk_score恒为 nullPOST /api/v1/bfld/node_id/subscribe?duration_sN订阅窗口返回subscription_idGET /api/v1/semantic-events/node_id/latest三类语义事件布尔值 触发时间戳终端 3启动 HAP 桥在 mDNS 上广播 HomeKit 配件cd ~/ruview-hap source venv/bin/activate python ruview-hap-bridge.py --port 51826 --pin 200-70-910输出在终端中寻找配对码例如Setup code: 200-70-910。桥接脚本 的实现细节值得关注生产桥默认端口为51827测试桥占 51826持久化文件与配对状态位于~/.ruview-hap-prod/配对码同时写入~/.ruview-hap-prod/setup-code.txt重启后无需翻终端日志桥名为RuView Sensing自动扫描/tmp/ruview-state.*.json生成房间名文件名中的连字符会被转换为空格并做首字母大写如LIVING_ROOM→Living Room同时也兼容旧版单文件/tmp/ruview-state.json默认映射为--legacy-room即 Living Room每个房间子配件携带三个服务MotionSensor短窗口移动、OccupancySensor持续存在、StatelessProgrammableSwitch异常事件轮询周期 1 秒run_at_interval(1.0)为 Eve.app 渲染预留了自定义特征 UUID 脚手架BFLD_PRIVACY_CLASS_UUID 8B0E1C00-0001-4B0E-9C00-1234567890ABBFLD Privacy Class值域 2..3当前为设计脚手架运行时接线HAP-python JSON-loader 路径在后续迭代交付。3.6 第 5 步在 iPhone 上配对桥打开 iPhone 上的Homeapp点右上角→Add Accessory扫描配对码或点Dont Have a Code or Cant Scan?→More Options从列表中选择RuView Sense桥应在 10 秒内出现分配到房间例如 Living Room点Done。3.7 第 6 步用 Siri 测试配对完成后向 Siri 提问Hey Siri, is anyone in the living room?Siri 会返回当前占用状态。从 C6 前走过再问一次——存在值应在 1–2 秒内更新。四、多房间扩展一个桥、N 个子配件要监控多个房间每个 C6 节点运行独立的c6-presence-watcher.py实例即可# Terminal: Room 1 (Living Room, node_id1) python c6-presence-watcher.py --node-id 1 --esp32-ip 192.168.1.20 \ --output /tmp/ruview-state.living-room.json # Terminal: Room 2 (Bedroom, node_id2) python c6-presence-watcher.py --node-id 2 --esp32-ip 192.168.1.21 \ --output /tmp/ruview-state.bedroom.json # Terminal: HAP bridge (auto-discovers both state files) python ruview-hap-bridge.py --port 51826 --rooms Living Room,BedroomHAP 桥会自动发现/tmp/ruview-state*下的*.json文件并为每个房间创建一个 HomeKit 子配件。每个房间在 Home app 中独立显示可被分配到其物理位置。该拓扑单桥 N 子配件是 ADR-125 §2.1.c 的正式决策运营者只需配对一次之后各房间子配件自动出现——若采用每房间一个独立配件运营者必须在第二、第三个房间之后反复配对且容器重启 / 重新镜像时配对状态会变得难以维护。五、隐私语义阈值化事件而非概率化监控RuView 的 BFLDBeamforming Feedback Layer for Detection见 ADR-118使用privacy class门控来决定哪些数据可以跨过 HomeKit 边界。只有 Class 2Anonymous和 Class 3Restricted有资格跨越Class 0/1原始身份信息永不暴露。在 c6-presence-watcher.py 中PrivacyClass类完整镜像了 Rust cratewifi-densepose-bfld::PrivacyClassADR-118 §2.1RAW0、DERIVED1、ANONYMOUS2、RESTRICTED3且allows_hap()只放行 2/3。若传入--privacy-class raw或derivedwatcher 会拒绝启动并打印 I1 不变量说明退出码 2。Restricted3模式会剥离anomaly_score/env_shift/coherence它们可能在长期观测中泄露纵向漂移指纹Anonymous2为生产默认携带聚合生命体征以支撑 HomeKitUnknown Presence自动化上下文但不含任何身份派生字段。5.1 三类语义事件HomeKit 暴露的是阈值化事件而非原始概率事件HomeKit 特征含义自动化示例Unknown PresenceMotionSensor有状态检测到人 超过 30 秒无匹配身份记录Turn on porch light when Unknown Presence detected after 9pmUnexpected OccupancyOccupancySensor占用偏离运营者设定的时间表Send notification if office is occupied on weekendsUnrecognized Activity PatternProgrammableSwitch瞬时活动漂移或重校准门触发Run a re-learning sequence when activity changes在 传感服务器 的semantic_events_for()中可以看到这三类事件的实现细节unknown_presence由 BFLD presence_score 的 3 秒滚动平均≥ 0.30驱动unexpected_occupancy当前以原始占用呈现并显式标记schedule_awareFalse日程感知门控为后续工作unrecognized_activity_pattern在anomaly_score 0.7时激活。5.2 有意隐藏的内容以下数据永不暴露给 HomeKitidentity_risk_score0–1 数值置信度——只有阈值化语义事件跨过边界Soul-Signature 匹配概率——BFLD 内部使用rf_signature_hash——加密内部状态。identity_risk_score是 BFLD 身份特征管线产出的连续 0..1 置信度ADR-121 §2.6不得以原始值跨过 HomeKit 边界也不得接入SecuritySystemCurrentState——那会把 RuView 变成入侵者检测式的监控 UX。语义端点还在响应中显式返回redacted_fields列表identity_risk_score、soul_match_probability、rf_signature_hash把 I1 不变量复述到了 HTTP 边界上。这强制落实了ADR-125 §2.1.d 不变量 I1原始身份信息永不出节点。语义框架是有意设计的——Unknown Presence 读起来是有人在这里、一切正常但值得留意而不是指控。六、Siri 按房间问答Siri-by-Room为每个 HomeKit 配件按其房间命名。HAP 桥从状态文件前缀提取房间名python c6-presence-watcher.py --node-id 1 \ --output /tmp/ruview-state.LIVING_ROOM.json # HAP bridge sees this and names the accessory Living Room在 Home app 配对后Siri 即知道房间查询结果Is anyone in the living room?查询 Living Room 配件的 motion sensorIs anyone home?查询所有房间配件任一检测到移动即返回 trueTurn on the bedroom lights when occupancy is detected自动化仅以 Bedroom 配件为触发器6.1 StatelessProgrammableSwitch 驱动自动化每个房间还暴露一个StatelessProgrammableSwitch在语义事件边界Unrecognized Activity Pattern、Recalibration 等触发。这是 HomeKit 中用于瞬时触发的原生原语在 Home app 中进入Automation→Create New Automation→When an Accessory is Controlled选择Living Room→Programmable Switch→Single Press添加动作Turn on scene、Send notification、Set HomeKit Secure Video recording等。七、通过快捷指令实现 HomePod 语音播报Tier 2 路径将 RuView 事件播报到 HomePod 的最简单方式是Shortcuts-as-glue——一个原生 macOS launchd 任务监听 RuView 语义事件并触发你定义的 Shortcut。该路径绕过了 Bonjour reflector 阻塞某些网状网络下 HomePod 无法被发现的问题不再依赖本地 mDNS而是 Mac 通过 iCloud 配对的 Home 图Home graph触达 HomePod。整套胶水代码位于 scripts/macos-shortcuts 目录架构如下real C6 → UDP feature_state → c6-presence-watcher.py → BFLD PrivacyGate → /tmp/ruview-last-feature.json → ruview-sensing-server.py on :3000 ↓ HTTP poll loop in launchd job macOS Shortcut RuView Announce运营者在 Shortcuts.app 中自定义 → action: Speak Text on HomePod → HomePod 语音播报事件7.1 一次性设置1. 在 Shortcuts.app 中创建快捷指令在 Mac 上打开Shortcuts.app点左上角→Create Shortcut点Add Action→ 搜索Speak Text并添加在Speak Text动作中点击扬声器图标→ 选择你的HomePod或 HomePod mini将快捷指令命名为RuView Announce名称须完全一致点右上角Save。2. 从终端测试快捷指令osascript -e tell application Shortcuts Events to run shortcut RuView Announce with input Test from RuViewHomePod 应以你选择的语音说出 Test from RuView。3. 安装 launchd 任务从仓库复制 plist 并加载cp scripts/macos-shortcuts/ruview-watcher.plist \ ~/Library/LaunchAgents/com.ruvnet.ruview.watcher.plist launchctl load ~/Library/LaunchAgents/com.ruvnet.ruview.watcher.plist launchctl list | grep ruvnet # 确认已加载ruview-watcher.plist 是用户级 LaunchAgent而非 LaunchDaemon因为 Shortcuts.app 在 macOS 上是用户作用域。关键配置RunAtLoad为 true、KeepAlive.SuccessfulExit为 false崩溃后自动重启、ProgramArguments指定/bin/bash调用 announce-via-homepod.sh 并传入--node-id、--event、--shortcut-name等参数环境变量RUVIEW_SENSING_URLhttp://localhost:3000、RUVIEW_LOG/tmp/ruview-watcher.logstdout/stderr 分别落盘。注意 plist 中的脚本路径默认/Users/cohen/announce-via-homepod.sh需按你的克隆位置调整。4. 验证生效一个终端查看日志tail -f /tmp/ruview-watcher.log另一个终端从 C6 前走过触发存在检测。日志应出现[17:10:12] unknown_presence rising-edge → running RuView AnnounceHomePod 随即以配置好的语音播报事件。announce-via-homepod.sh 的核心逻辑是上升沿触发每--poll-interval默认 5 秒轮询/api/v1/semantic-events/node_id/latest仅当事件active从非 true 变为 true 时才调用 Shortcut避免重复播报。支持--once单次轮询模式便于测试--announcement可自定义播报文本。7.2 扩展到多个房间要为不同房间播报不同事件在 Shortcuts.app 中创建多个快捷指令RuView Announce KitchenRuView Announce Bedroom然后以不同--shortcut-name运行多个 watcher 任务# Kitchen events on HomePod mini in kitchen scripts/macos-shortcuts/announce-via-homepod.sh \ --node-id 1 --event unknown_presence \ --shortcut-name RuView Announce Kitchen \ --poll-interval 2 # Bedroom events on HomePod in bedroom scripts/macos-shortcuts/announce-via-homepod.sh \ --node-id 2 --event unknown_presence \ --shortcut-name RuView Announce Bedroom \ --poll-interval 2 7.3 进一步扩展因为 Shortcut 在 Shortcuts.app 中可由运营者随时编辑你可以把它扩展为任何能力激活场景检测到跌倒风险时打开就寝场景发送通知到 Apple Watch调用 Webhook对接其他系统发送消息到他人 iPhone触发 HomeKit 安全摄像头录像。这正是 Shortcuts-as-glue 的灵活性所在——RuView 侧零代码改动全部定制发生在运营者自己的快捷指令库中。完整设置与故障排查见 scripts/macos-shortcuts/README.md。八、通过 MCP 供智能体消费Agentic ConsumptionRuView 的感知流还通过Model Context ProtocolMCP开放——这是 Claude Code 及其他 AI 智能体查询 RuView 数据的标准接口规范见 ADR-124 — rvagent MCP / RuVector npm integration。8.1ruvnet/rvagentnpm 包v0.1.0该包暴露12 个 MCP 工具使 Claude Code 智能体能够按房间查询存在与占用读取呼吸频率与心率遥测监控 BFLD 语义事件检视应用注册表边缘模块启动后台训练任务。8.2 安装在 Claude Code 项目中npm install -D ruvnet/rvagent0.1.0 # 或通过 MCP 添加 claude mcp add rvagent -- npx -y ruvnet/rvagent0.1.0然后在 Claude Code 会话中/claude-flow-help # 列出所有可用 MCP 工具8.3 工具参考工具输入输出ruview_csi_latestnode_id最新 CSI 窗口1024 子载波30 个 OFDM 符号ruview_pose_inferCSI 窗口17 关键点骨架每关节 x、y、置信度ruview_count_inferCSI 窗口人数 95% CIruview_registry_listquery可选105 可用边缘模块列表ruview_train_countepochs, learning_rate启动训练任务 IDruview_job_statusjob_id进度、ETA、当前 lossruview.bfld.last_scannode_id最新 BFLD 扫描privacy_class、person_countidentity_risk_scorenull遵循 I1 不变量ruview.bfld.subscribenode_id, event_filter持续流式 BFLD 窗口直至关闭流ruview.presence.nowroom可选每房间当前占用ruview.vitals.get_breathingnode_id呼吸频率BPM 置信度ruview.vitals.get_heart_ratenode_id心率BPM 置信度ruview.vitals.get_allnode_id呼吸 心率 元数据MCP 工具在 tools/ruview-mcp/src/tools 中实现如presence-now.ts、bfld-last-scan.ts、bfld-subscribe.tsschema 定义见 tools/ruview-mcp/src/schemas/tools.ts。本指南中的 Python 传感服务器ruview-sensing-server.py正是这些工具期望的 HTTP API 子集的传感服务器等价物——即使 Rust 二进制未运行MCP 智能体也能通过同一套工具面消费真实 ESP32-C6 流。8.4 示例Claude Code 智能体工作流# Claude-flow agent pseudocode import claude_code tools claude_code.mcp_tools(rvagent) # Query latest presence presence toolsruview.presence.now print(fLiving room occupancy: {presence.occupancy}) # True/False # Check vitals vitals toolsruview.vitals.get_all print(fBreathing: {vitals.breathing_bpm} BPM) # Stream BFLD events in real-time for event in toolsruview.bfld.subscribe: print(fUnknown presence detected: privacy_class{event.privacy_class})九、故障排查9.1 Mac 上dns-sd -B _airplay._tcp local.看不到 HomePod可能原因HomePod 与 Mac 虽在同一 SSID 但处于不同子网。部分网状网络会把 2.4 GHz 与 5 GHz 频段划分到不同/24子网或将访客设备放在独立 VLAN。排查步骤打开路由器管理页确认 HomePod 与 Mac 在同一子网范围如均为192.168.1.x若在不同子网如192.168.1.x与192.168.100.x在路由器设置中启用IGMP ProxyingNetgear Nighthawk 常见如可用则优先启用Bonjour Repeater或mDNS Reflector重启 HomePod 与 Mac。注意Shortcuts-as-glue 路径Tier 2无需此修复——它经 iCloud Home 图路由播报不依赖 mDNS。9.2 iPhone 配对失败Couldnt Add Accessory可能原因HAP 桥的配对状态损坏或与 mDNS 不同步。修复步骤停止 HAP 桥守护进程删除配对状态文件rm -rf ~/.ruview-hap-prod/accessory.state重启 HAP 桥——它会重新生成新的配对码在 Home app 中重新尝试Add Accessory→More Options输入新配对码。9.3 重启后配对码重新生成属预期行为。HAP-python 在配对持久化文件缺失或损坏时会重新生成配对码。成功配对后配对密钥单独存储在~/.ruview-hap-prod/中并能跨重启存活——配对码本身是临时的仅在初始配对时有用。若在配对前丢失配对码删除状态并重启即可获得新码。9.4 存在更新缓慢或卡住可能原因ruview-sensing-server.py 中的 HTTP 轮询循环被阻塞或 C6 未发送 UDP 数据包。排查步骤确认 C6 已启动ping 192.168.1.20确认数据包到达传感服务器nc -u -l 5005 # 监听 UDP 5005 # 应能看到来自 C6 的周期性数据包手动查询传感服务器curl http://127.0.0.1:3000/api/v1/vitals/latest应返回含呼吸与心率字段的 JSON若桥轮询后仍未反映变化重启 HAP 桥。十、不在当前范围内的事项以下内容被有意推迟或超出当前发布范围项目状态时间线Matter 协议P3推迟等待matter-rsSDK 稳定HAP-1.1 已覆盖今天约 95% 的 UXRust 原生 HAPP2计划中以 Rust 原生实现替换 PythonHAP-python旁车预计在收集 5 次真实配对运营者反馈后启动PyO3 BFLD wheel 部署ADR-117 P5待办运行时 import 切换使 Python 脚本使用 Rust BFLD crate源码编译通过✅cargo check绿但 wheel 尚未发布面向 Eve.app 的自定义特征 UUID迭代 8 运行时脚手架设计完成等待 HAP-python JSON-loader 实现小规模后续 PRAirPlay 2 语音合成pyatv网络待定要求 HomePod 在 Mac 上经 Bonjour 可见Shortcuts-as-glueTier 2为可用替代方案十一、参考资料ADR-125 — RuView ↔ Apple Home native HAP bridge —— 设计规范、隐私理由、实现时序ADR-118 — Beamforming Feedback Layer for Detection —— BFLD 隐私门与身份风险语义ADR-124 — rvagent MCP / RuVector npm integration —— MCP 工具规范scripts/macos-shortcuts/README.md —— Shortcuts-as-glue 设置与故障排查scripts/ruview-hap-bridge.py —— 生产 HAP 桥实现ADR-125 §2.1.c 拓扑落地scripts/c6-presence-watcher.py —— UDP 帧解析、BFLD PrivacyGate、迟滞阈值与语义事件实现scripts/ruview-sensing-server.py —— rvagent 兼容 HTTP API 与语义事件端点firmware/esp32-csi-node/provision.py —— ESP32-C6 NVS 配置脚本增量合并语义。【免费下载链接】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),仅供参考