dicklesworthstone/frankensonos 是一个用 Rust 编写的内存安全的 Sonos 扬声器控制器。它通过 SSDP/UPnP-SOAP/GENA 管理同一 LAN 中的自家扬声器,并同时提供 CLI、HTTP API 和 MCP 服务器,让 AI 智能体能够操控家中设备。2026 年 11 月 2 日的提交 221f88ac 在通过搜索选曲并立即播放的路径上增加了一个家庭(household)条件。
家庭在这个代码中是根据扬声器的区域组(zone group)结构划分出来的单位。它会区分并检查两种情况:播放请求完全没有携带家庭 id 的情况,以及携带了家庭 id 但与当前家庭不同的情况。不存在的家庭 id 从一开始就会被拒绝,而这次连存在但不同的家庭 id 也以同样的方式被拒绝,并以 NotReady 错误返回。同样的地方还保留着当扬声器播放代(generation)出现偏差时的检查,那种情况下播放同样不会开始。结果是,通过搜索获得的曲目不会在正在播放的那个家庭之外的其他家庭的扬声器中响起。
实现只在两个地方改动,共 28 行(+19/-9):crates/fsonos-api 中的搜索·播放接口文件和模拟测试文件。测试一侧先用 GetZoneGroupState 读取的区域组结构,再应用位置信息查询,以便以家庭划分为基准检查播放路径。不过,提交信息说明并没有运行产品测试。在真实扬声器和多个家庭混杂的实际住宅中的行为并未通过此次提交得到确认,因此要在多家庭环境中使用还需要更多硬件验证。