name: sonoscli description: 控制 Sonos 扬声器(发现/状态/播放/音量/分组)。 homepage: https://sonoscli.sh metadata: { “openclaw”: { “emoji”: “🔊”, “requires”: { “bins”: [“sonos”] }, “install”: [ { “id”: “go”, “kind”: “go”, “module”: “github.com/steipete/sonoscli/cmd/sonos@latest”, “bins”: [“sonos”], “label”: “安装 sonoscli (go)”, }, ], }, }
Sonos 命令行工具
使用 sonos 命令控制本地网络上的 Sonos 扬声器。
快速开始
sonos discoversonos status --name "厨房"sonos play|pause|stop --name "厨房"sonos volume set 15 --name "厨房"
常用任务
- 分组:
sonos group status|join|unjoin|party|solo - 收藏夹:
sonos favorites list|open - 播放队列:
sonos queue list|play|clear - Spotify 搜索 (通过 SMAPI):
sonos smapi search --service "Spotify" --category tracks "查询内容"
注意事项
- 如果 SSDP 失败,请指定
--ip <扬声器-ip>。 - Spotify Web API 搜索是可选的,需要配置
SPOTIFY_CLIENT_ID/SECRET环境变量。 - 如果出现错误,请查看故障排除部分,如果匹配度高,请提供建议。
故障排除
sonos discover - no route to host
- 当出现错误
Error: write udp4 0.0.0.0:64326->239.255.255.250:1900: sendto: no route to host (Command exited with code 1)时- 请注意
0.0.0.0:后面的端口号是临时的,会变化,子网掩码也可能不完全匹配 sendto: no route to host这部分信息应该是一致的
- 请注意
- 建议用户,在 Mac OS 的
direct(非 Docker 沙箱)模式下,需要为网关的顶级父进程启用 设置 -> 隐私与安全性 -> 本地网络 权限- 如果是通过
launchd运行,则为node进程 - 如果直接在终端运行网关,则为
Terminal应用 - 如果通过 VS Code 内的终端运行,则为
Visual Studio Code应用
- 如果是通过
- 另一种选择是使用允许网络访问的
sandbox(docker 容器)模式
sonos discover - bind: operation not permitted
- 当出现错误
Error: listen udp4 0.0.0.0:0: bind: operation not permitted时 - 建议用户,他们可能正在通过 Codex 或其他不允许网络访问的沙箱中运行(可以通过在启用沙箱的 Codex CLI 会话中运行
sonos discover且不批准权限提升请求来复现此问题)