ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

RuView v0.7.0 Home Assistant 集成解析:MQTT 自动发现、Matter 桥接与语义自动化原语实战

RuView v0.7.0 Home Assistant 集成解析:MQTT 自动发现、Matter 桥接与语义自动化原语实战 RuView v0.7.0 Home Assistant 集成解析MQTT 自动发现、Matter 桥接与语义自动化原语实战【免费下载链接】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/RuViewv0.7.0feat 分支feat/adr-115-ha-mqtt-matter是 RuView 正式打通家庭自动化生态的里程碑版本通过 MQTT 自动发现HA-DISCO与 Matter 桥接HA-FABRIC两条互补路径把 WiFi 人体感知能力存在、心率、呼吸、跌倒、多房间迁移等以每节点 21 个实体的形式接入 Home Assistant其架构核心是服务端推理的 10 个语义自动化原语HA-MIND让--privacy-mode下心率/呼吸/姿态不越过网络边界、但推断出的高层状态照常发布从而支撑医疗护理与辅助居住AAL场景。读完本文你将掌握该版本的完整 CLI 参数矩阵、实体映射、隐私模式、精度基线、验证命令与已规划的后续迭代方向。版本速览TL;DRRuView 在 v0.7.0 中为 Home Assistant 提供一等公民first-class集成通过 MQTT 自动发现接入 HA仅需一个--mqtt参数HA 即为每个 RuView 节点自动创建21 个实体11 个原始信号 10 个推断语义原语someone-sleeping、possible-distress、room-active、elderly-inactivity-anomaly、meeting-in-progress、bathroom-occupied、fall-risk-elevated、bed-exit、no-movement、multi-room-transition。语义原语是架构的基石它们在服务端运行因此--privacy-mode会在线上剥离 HR/BR/pose 数值的同时仍发布推断出的状态——这正是 RuView 可以部署到医疗护理与 AAL 场景的关键设计。附带 8 个可直接导入的 HA Blueprint 与 3 套 Lovelace 看板、ESP32 硬件验证脚本、可自校验的 witness 包以及每次 CI 运行约 2,560 条模糊断言、420 项库级测试。版本链路ADR-115设计· 追踪 issue #776 · 实现 PR #778。端侧用户能看到什么新能力Home Assistant 集成HA-DISCOwifi-densepose-sensing-server新增--mqtt参数受 Cargomqttfeature 门控。按每节点 21 实体自动发现——完整实体对照表见 docs/integrations/home-assistant.md。支持 mTLS、可配置的逐实体发布速率、面向医疗/AAL 部署的--privacy-mode。发布说明标注的配对测试基线为Home Assistant Core 2025.5与Mosquitto 2.0.18操作指南中另记录了 Mosquitto add-on 6.4 的组合。Matter 桥接脚手架HA-FABRIC新增--matter参数接通桥接管道cluster 映射、endpoint 树、配对码commissioning code。v0.7.0 为SDK 独立版本——真正的rs-matter集成按 ADR §9.10 推迟到 v0.7.1。桥接设备树规格定义了 Apple Home / Google Home / Alexa / SmartThings 的暴露面。语义自动化原语HA-MIND把 RuView 从RF 传感器升级为环境智能基础设施的推理层10 个 v1 原语每个都带 warmup 门控 迟滞hysteresis 可解释性标签逐原语的 precision/recall 发布在 docs/integrations/semantic-primitives-metrics.md。8 个开箱即用的 HA Blueprint可直接导入的 YAML 位于 examples/ha-blueprints/覆盖distress 通知、睡眠感知的走廊调光、晨起流程、老人不活动升级告警、会议室自动化、卫生间排风扇、跌倒风险升级、无活动自动布防。各文件与所用原语的对应关系见 examples/ha-blueprints/README.md其中 5 个在--privacy-mode下安全可用。3 套 Lovelace 看板开箱即用视图位于 examples/lovelace/单房间概览、多节点网格、医疗/AAL 护理视图兼容 privacy-mode。从零接入快速开始前置条件LAN 内运行中的MQTT broker——最简单的是 Home Assistant OS 中一键安装的 Mosquitto add-onEMQX 与 VerneMQ 同样可用。Home Assistant 2025.5 或更新版本已启用 MQTT 集成并指向同一 broker。RuViewwifi-densepose-sensing-serverv0.7.0二进制或从源码cargo run。启动发布端# Docker推荐非开发者使用 docker run --rm --nethost \ 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_PASSWORDyour-broker-password \ cargo run --release -p wifi-densepose-sensing-server \ --features mqtt -- \ --source esp32 --mqtt \ --mqtt-host 192.168.1.10 \ --mqtt-username homeassistant启动后约 5 秒内HA 应自动创建每个 RuView 节点对应一台设备以 MAC 或 zones 配置里的friendly_name命名每台设备 17 个实体存在、人数、心率、呼吸率、运动、跌倒事件、信号强度、分区 occupancy 以及 10 个语义原语。若 Settings → Devices 中没有任何显示参见操作指南中的排障章节。优雅停止Ctrl-C 时发布端会先向每个 availability topic 推送offline使 HA 立即把所有实体标为不可用kill -9则触发 MQTT LWT遗嘱消息约 30 秒内产生同样效果。实体参考每节点 21 个实体是如何构成的下表名称即unique_idslugHA 会自动分配友好名称。语义原语相关的实体命名可对照 examples/lovelace/01-single-room-overview.yaml 与 02-multi-node-grid.yaml 中的真实引用如binary_sensor.ruview_bedroom_someone_sleeping。原始信号11 个实体HA 实体SlugHA 组件单位源字段Presencepresencebinary_sensor—edge_vitals.presencePerson countperson_countsensorpersonsedge_vitals.n_personsHeart rateheart_ratesensorbpmedge_vitals.heartrate_bpmBreathing ratebreathing_ratesensorbpmedge_vitals.breathing_rate_bpmMotion levelmotion_levelsensor%edge_vitals.motion× 100Motion energymotion_energysensor无量纲edge_vitals.motion_energyFall detectedfallevent—edge_vitals.fall_detectedPresence scorepresence_scoresensor%edge_vitals.presence_score× 100Signal strengthrssisensordBmedge_vitals.rssiZone occupancyzone_occupancybinary_sensor—sensing_update.zonesPose keypointsposesensor属性—pose_data.keypoints需--mqtt-publish-pose开启其中 heart rate、breathing rate、pose 属生物特征实体设置--privacy-mode后它们会从 MQTT 中剥离且永不通过 Matter 发布。语义自动化原语10 个实体每个原语是运行在服务端的小型有限状态机FSM带显式的 warmup、迟滞与 refractory冷却窗口。逐原语精度/召回数据发布在 semantic-primitives-metrics.md。HA 实体SlugHA 组件触发条件Someone sleepingsomeone_sleepingbinary_sensorpresence motion5% BR ∈ [8,20] bpm 持续 5 分钟Possible distresspossible_distressbinary_sensorHR 1.5× 基线 motion 20% 无跌倒持续 60 sRoom activeroom_activebinary_sensor30 秒滑动窗口内 motion 10%Elderly inactivity anomalyelderly_inactivity_anomalybinary_sensor静止时长 2× 观测到的最大静止基线Meeting in progressmeeting_in_progressbinary_sensor≥2 人 低幅运动持续 10 分钟Bathroom occupiedbathroom_occupiedbinary_sensorpresence 命中标记为bathroom的活动分区Fall risk elevatedfall_risk_elevatedsensor0–100 分跨越 ≥70 时触发事件Bed exit (overnight)bed_exiteventsleeping → 在 22:00–06:00 之间离开床区No movement (safety)no_movementbinary_sensorpresence motion 1% 持续 30 分钟Multi-room transitionmulti_room_transitionevent10 秒内离开 X 分区并进入 Y 分区每次状态变更都会携带reason属性例如[motion5%, br12bpm, presencetrue]自动化模板可以直接引用它来解释触发原因。从源码看10 个原语由 semantic/bus.rs 中的SemanticBus统一持有sleeping、distress、room_active、elderly_anomaly、meeting、bathroom、fall_risk、bed_exit、no_movement、multi_room十个 FSM 字段tick()把每个RawSnapshot依注册顺序分发给全部原语仅收集产生非Idle状态的SemanticEvent交给 MQTT/Matter 发布端SemanticEvent携带kind、state、node_id与毫秒时间戳——这就是新增一个原语只需改动一个文件ADR §3.12.6的调用面设计。对应的原语单体实现各占一个模块例如 src/semantic/sleeping.rs、src/semantic/distress.rs 等。Matter 设备类型映射按 ADR-115 §3.11.1Matter 桥接把标准 cluster 可表达的子集暴露给 Apple Home / Google Home / Alexa / SmartThings生物特征与 pose 仅走 MQTT——因为 Matter 至今没有 HR / BR / pose 关键点对应的 cluster。RuViewMatter clusterMatter endpoint 设备类型PresenceOccupancySensing(0x0406)OccupancySensor(0x0107)Motion10%同一 endpointOccupancySensing 的属性同上Fall eventSwitch.MultiPressComplete事件GenericSwitch(0x000F)Person count厂商扩展属性 (0xFFF1_0001)同 OccupancySensor endpoint逐分区 occupancy每个 zone 一个OccupancySensorendpoint逐分区Sleeping / room-active / bathroom 等OccupancySensing每个原语一个 endpoint逐原语Fall-risk-elevated 事件Switch.MultiPressComplete事件GenericSwitchHR / BR / pose不暴露——仅 MQTT—运维视角CLI 参数全矩阵Flag默认值用途--mqttoff启用 HA-DISCO 发布端--mqtt-host HOSTlocalhostBroker 主机--mqtt-port PORT1883启用 TLS 时 8883Broker 端口--mqtt-username U—Broker 认证用户名--mqtt-password-env VARMQTT_PASSWORD持有密码的环境变量--mqtt-client-id IDwifi-densepose-hostnameMQTT client ID--mqtt-prefix PREFIXhomeassistant发现主题前缀--mqtt-tlsoff加密连接--mqtt-ca-file PATH—TLS / mTLS 的固定 CA--mqtt-client-cert PATH—mTLS 客户端证书--mqtt-client-key PATH—mTLS 客户端私钥--mqtt-refresh-secs N600发现消息重发间隔--mqtt-rate-vitals HZ0.2HR / BR 发布速率Hz--mqtt-rate-motion HZ1.0运动发布速率Hz--mqtt-rate-count HZ1.0人数发布速率Hz--mqtt-rate-rssi HZ0.1RSSI 发布速率Hz--mqtt-publish-poseoff开启姿态关键点发布--mqtt-rate-pose HZ1.0开启后的姿态发布速率Hz--privacy-modeoff在 MQTT 与 Matter 上剥离 HR/BR/pose--matteroff启用 HA-FABRIC Matter 桥--matter-setup-file PATH—写入 QR 码与配对码的文件--matter-resetoff清除 fabric 凭据并重新配对--matter-vendor-id VID0xFFF1开发用CSA 分配的厂商 ID--matter-product-id PID0x8001产品 ID--semanticon启用推理层--semantic-thresholds-file PATH—逐原语阈值覆盖--semantic-zones-file PATH—分区标签映射bathroom、bedroom…--no-semantic PRIMITIVE—禁用某个原语可重复完整 CLI 矩阵见 docs/integrations/home-assistant.md#configuration。源码侧这些参数在 mqtt/config.rs 的MqttConfig::from_args()中被组装为MqttConfig包含 host/port/用户名/密码、TlsConfigOff/SystemTrust/PinnedCa/MutualTls四态、逐实体PublishRates、publish_pose与privacy_mode。值得注意的实现细节端口默认值逻辑是mqtt_port.unwrap_or(if mqtt_tls { 8883 } else { 1883 })与表格一致密码只从--mqtt-password-env指定的环境变量读取源码通过std::env::var解析确保密钥不出现在命令行与 shell 历史中validate()在建立任何网络连接前做预检空 host、0 端口、refresh 为 0、非法速率都会立即报错让用户得到清晰错误而非 30 秒后的连接失败。分区标签文件格式--semantic-zones-file# semantic-zones.yaml zones: bathroom: [zone_3, zone_7] bedroom: [zone_1] kitchen: [zone_2] living: [zone_5] bed_zones: [zone_1]阈值覆盖--semantic-thresholds-file# semantic-thresholds.yaml sleep_dwell_secs: 300 distress_hr_multiple: 1.5 room_active_motion_threshold: 0.10 elderly_anomaly_multiple: 2.0 meeting_min_persons: 2 no_movement_dwell_secs: 1800 fall_risk_event_threshold: 70.0阈值实现位于PrimitiveConfigRust见 src/semantic/common.rs默认取值偏向保守宁精勿滥以避免面向用户的自动化被噪声刷屏若用于研究/演示场景可下调医疗或商用部署建议保持默认或上调。隐私模式医疗与 AAL 部署的正确姿势在医疗、AAL居家养老或商用场景部署时请设置--privacy-mode。它会从每一条外发 MQTT 发布中剥离心率、呼吸率与姿态关键点对这些实体整体抑制发现——HA 甚至看不到它们存在保持全部语义原语可用。sleeping / distress / room-active 等都是服务端推断出的状态跨线传输的只有布尔值或分数。这正是让该平台可用于受监管场景的架构红利。非 localhost broker 上务必把--privacy-mode与--mqtt-tls配对使用。源码侧这一契约实现在 mqtt/privacy.rsdecide(EntityKind, privacy_mode)对每个外发实体给出Publish/Suppress判定且发现层与状态层共用同一过滤器——若某实体被剥离它在每一层都被剥离防止控制器从状态缺失反推实体的存在。单测覆盖了privacy off 全发布privacy on 仅抑制生物特征privacy on 保留非生物信号三组行为。从 ADR-115 §6 的视角privacy-mode 对应的合规论证为HIPAA 式最低必要生物数值不离开设备、GDPR目的限制推断状态是支撑自动化所需的最小数据集、CCPA敏感个人信息无线健康数据。fall-risk-elevated / possible-distress / someone-sleeping 等标志照常工作因为它们在传感器管道内部计算只发布布尔输出。语义原语质量基线v1语义原语精度/召回文档 给出的 v1 基线2026-05-23对 ADR-079 配对采集集留出 1,077 样本子集 合成压力场景计算原语PrecisionRecallF1触发延迟说明someone_sleeping0.920.780.845 minrecall 受限于留出子集中的 BR 检测n_visible14.3/17possible_distress0.710.620.6660 sEWMA 基线需约 10 分钟静息 HR 种子冷启动首会话性能下降room_active0.960.940.9530 s最简单的原语已近上限elderly_inactivity_anomaly0.850.610.71不定30 分钟基线地板抑制误报meeting_in_progress0.880.810.8410 min依赖准确的n_persons上游 ADR-103 cog-person-countbathroom_occupied0.990.970.981 s分区派生标签正确后近完美fall_risk_elevated0.740.550.63不定v1 用运动方差代理v2 换步态不稳评分bed_exit0.940.890.911 s边沿触发no_movement0.910.930.9230 min定义上就长recall 受运动地板噪声限制multi_room_transition0.860.780.821 s依赖准确的分区标签测试集由三部分构成Rust 单测中的合成压力场景位于v2/crates/wifi-densepose-sensing-server/src/semantic/*/tests.rs、1,077 样本的相机配对留出子集cognitum-v02026-04 采集、以及semantic_events.jsonl现场采样日志。复现方式单元级用cargo test -p wifi-densepose-sensing-server --no-default-features semantic::回放评测用--source replay --metrics-out该路径在 P6 落地。文档同时给出 open-set 提醒这些是单房间相机监督留出集的上界跨环境域漂移ADR-027 MERIDIAN、多人同时在场、宠物/电子设备遮挡都可能导致真实部署 F1 降低 5–15 个百分点。三大操作范式Blueprint 与 Lovelace 组合把 YAML 文件放入HA config/blueprints/automation/ruvnet/后从 HA UISettings → Automations → Blueprints → Import导入即可。以下为第一个示例possible distress 推送通知的完整内容其余 7 个见 examples/ha-blueprints/blueprint: name: RuView — notify on possible distress description: Send a push notification when RuView detects sustained elevated heart rate agitated motion (possible distress). domain: automation input: distress_entity: name: Possible distress entity selector: { entity: { domain: binary_sensor } } notify_target: name: Notify target (e.g. notify.mobile_app_pixel) selector: { text: {} } trigger: - platform: state entity_id: !input distress_entity to: on action: - service: !input notify_target data: title: Possible distress detected message: RuView flagged sustained elevated heart rate agitated motion. Reason: {{ state_attr(trigger.entity_id, reason) }}.这里的reason属性正是 HA-MIND 可解释性标签的落地用法。其余常用模式还包括基于someone_sleeping的走廊 10% 亮度睡眠调光、基于bed_exit05:00–09:00 窗口的 10 分钟缓亮 咖啡机 撤防晨起流程等完整 YAML 与 privacy 兼容性对照见 examples/ha-blueprints/README.md。开发视角Cargo features、模块布局与测试Feature 门控在 v2/crates/wifi-densepose-sensing-server/Cargo.toml 中mqtt [dep:rumqttc]——引入rumqttc-v4-next 0.34关闭默认特性、启用use-rustls-ring避免 Windows 上的 openssl 依赖。该 feature 关闭时--mqtt-*参数仍可解析但启用--mqtt会打 WARN 且发布端为空操作。matter []——仅脚手架不引入任何 SDK符合v0.7.1 再接入rs-matter的规划。默认特性为空使默认二进制保持精简。新模块mqtt::{config, discovery, privacy, publisher, security, state}——配置组装、HA 发现消息、隐私过滤、rumqttc 发布循环、线界安全不变量、实体状态编码。semantic::{bus, common, sleeping, distress, room_active, elderly_anomaly, meeting, bathroom, fall_risk, bed_exit, no_movement, multi_room}——事件总线 10 个原语 FSM外加record现场日志。matter::{clusters, bridge, commissioning}——cluster 映射、endpoint 树、配对码。benches/mqtt_throughput.rs承载热路径基准tests/mqtt_integration.rs对真实 Mosquitto 做端到端集成测试examples/mqtt_publisher.rs提供独立发布示例。测试规模420 项库级单测全部通过其中 10 个proptest用例对线界与语义分发做模糊测试每次 CI 约 2,560 条模糊断言。3 个集成测试在 CImqtt-integration.yml仓库 GitHub Actions 工作流中对真实 Mosquitto 运行。6 个 criterion 基准见 docs/integrations/benchmarks.md。ESP32 验证脚本scripts/validate-esp32-mqtt.sh可对实际挂接硬件做端到端冒烟验证。witness 包生成器scripts/witness-adr-115.sh产出可自校验的 tarball。安全审计要点v0.7.0 在mqtt::security模块见 src/mqtt/security.rs落地了完整的线界审计Topic 段安全拒绝 MQTT 通配符/#、NUL 与/分段不得内嵌分隔符防止上游恶意负载注入订阅通配符——topic_segment_is_safe是纯函数同时被单测与真实 broker 集成测试覆盖。TLS 路径安全拒绝含 NUL / 换行的路径path_is_safe。32 KB 负载上限MAX_PUBLISH_BYTES 32 * 1024远低于多数 broker 的 256 KB 默认上限超限发布会打 WARN 供运维排查。凭据卫生金丝雀拒绝通过命令行直传的--mqtt-password避免进入ps输出、shell 历史与 supervisor 的 argv 记录只接受--mqtt-password-env。RUVIEW_MQTT_STRICT_TLS1把非 localhost broker 明文 MQTT从 WARN 提升为致命错误这是 v0.8.0 的默认行为升级路径v0.7.0 目前为告警后继续运行。线界安全模块内含5 个基于 property 的 fuzz 用例覆盖随机 Unicode 与在任意偏移注入通配符/NUL。--privacy-mode在每一层强制发现抑制 状态剥离 Matter cluster 门控三管齐下对应 src/mqtt/privacy.rs 的单过滤器复用设计。热路径基准笔记本 release 构建热路径实测目标超出state::event_fall编码259 ns2 µs7.7×rate_limiter::allow_first49.7 ns100 ns2×rate_limiter::allow_within_gap62.1 ns100 ns1.6×privacy::decide_hr_strip0.24 ns50 ns208×privacy::decide_presence_keep0.24 ns50 ns208×semantic::bus_tick_all_10_primitives717 ns10 µs14×每项目标至少超出 1.6×多项超过 100×。含义摘自 benchmarks.md以每节点 1 Hz 发布速率计ADR-115 全热路径限速判定 隐私过滤 10 原语语义推理 状态序列化在商用硬件上约花费每节点每 tick 1 µs——一台托管 100 个 RuView 节点的 Cognitum Seed 设备在 MQTT 路径上每秒只消耗约 100 µs CPU0.01% 的负载地板10 原语 × 100 节点的 FSM 常驻内存约 30 KB。复现cargo bench -p wifi-densepose-sensing-server --features mqtt --bench mqtt_throughput或RUVIEW_RUN_BENCH1 bash scripts/witness-adr-115.sh将结果封入 witness 包。注意这些数值来自单台笔记本Pi 5 上的每操作延迟预计慢 3–5×但速率预算1 µs vs 100 ms tick 间隔仍留有充足余量。完整复现链路Reproducibilitygit checkout v0.7.0 cd v2 cargo test -p wifi-densepose-sensing-server --no-default-features --lib # 420 passed cargo test -p wifi-densepose-sensing-server --features mqtt --no-default-features --lib # 同样 420 passed RUVIEW_RUN_INTEGRATION1 cargo test -p wifi-densepose-sensing-server \ --features mqtt --no-default-features --test mqtt_integration -- --test-threads1 cargo bench -p wifi-densepose-sensing-server --features mqtt --bench mqtt_throughput cd .. bash scripts/witness-adr-115.sh cd dist/witness-bundle-ADR115-*/ bash VERIFY.sh # 输出 ADR-115 witness bundle: VERIFIED ✓规划中推迟到 v0.7.1 与 v0.8.0 的内容推迟到 v0.7.1P8b——真正的rs-matterSDK 接线对已锁定的 cluster/bridge/commissioning 契约执行 BIND/READ/INVOKEP9b——多控制器验证把同一座桥同时配对进 Apple Home Google Home HA MatterCSA Matter 认证决策门——开发 VID0xFFF1适合个人/仅 HA 使用商用部署需申请正式厂商 ID。推迟到 v0.8.0非 localhost broker 上的明文 MQTT 由 WARN 升级为 hard-failRUVIEW_MQTT_STRICT_TLS1已先行落地HACS 原生 Python 集成作为不依赖 MQTT broker 的替代方案ADR §6.A。延伸阅读ADR-115Home Assistant 集成设计全文实体映射、MQTT topic 结构、发现 payload、Matter cluster 契约、§3.9 TLS/认证、§6 合规论证Home Assistant 操作指南完整 CLI 矩阵、zone/threshold 文件、Blueprints、排障与分行业应用范式语义原语精度/召回参考v1→v2 失败模式目录与阈值调优建议ADR-115 基准报告相关设计线索ADR-079相机 ground-truth 配对采集、ADR-027MERIDIAN 跨环境泛化、ADR-024AETHER 对比嵌入、ADR-103cog-person-count、ADR-110ESP32-C6 固件【免费下载链接】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),仅供参考
返回列表