mkirsten/beosound5c

GitHub: mkirsten/beosound5c

用树莓派 5 和 Web 技术为经典 B&O BeoSound 5 音响提供现代化流媒体替换方案,保留原有硬件交互并集成多种音乐服务与智能家居平台。

Stars: 22 | Forks: 5

# BeoSound 5c 使用 Web 技术和 Raspberry Pi 5 现代化重塑 Bang & Olufsen BeoSound 5 体验。 **网站:[www.beosound5c.com](https://www.beosound5c.com)** 本项目用基于圆弧的触摸 UI 取代了原始的 BeoSound 5 软件,该 UI 可集成 Sonos、Bluesound 和 Denon HEOS 播放器、音乐服务(Spotify、Apple Music、TIDAL、Plex)以及 Home Assistant。它与原始的 BS5 硬件(旋转编码器、激光指示器、显示屏)兼容,并支持使用 BeoRemote One 进行无线控制。 ## 快速开始 运行于 [Raspberry Pi 5 4GB](https://www.raspberrypi.com/products/raspberry-pi-5/)。有关完整的安装说明,请参阅 [beosound5c.com](https://beosound5c.com)。 ### 全新安装 1. 使用 [Raspberry Pi Imager](https://www.raspberrypi.com/software/) 烧录 **Raspberry Pi OS Bookworm Lite (64-bit)**。在写入前点击设置图标(齿轮)以启用 SSH 并设置您的用户名/密码。 2. 克隆并运行安装程序: ``` git clone https://github.com/mkirsten/beosound5c.git ~/beosound5c cd ~/beosound5c sudo ./install/install.sh ``` 安装程序会处理一切:软件包、显示配置、服务安装。不会有任何询问——它只会在完成时提示重启。 3. 重启后,设备会显示一个二维码。用手机扫描它(或在任何浏览器中打开 `http:///config`)以完成设置:设备名称、播放器、音频输出、Home Assistant 和音源。 ### 更新 ``` git pull && sudo ./install/install.sh update ``` 更新服务文件、sudoers 和 Python 软件包。除非系统软件包发生更改,否则无需重启。 ## 远程支持 如果您在故障排除时需要帮助,可以开启一个临时的远程支持会话。安装程序预装了 [Tailscale](https://tailscale.com/)(默认禁用——在您开启会话之前不会有任何后台服务运行)。 ``` bs5c-support # Start session — prompts for an access key bs5c-support stop # End session and disconnect bs5c-support status # Check if a session is active ``` 向开发者索取访问密钥,在提示时将其粘贴,并分享显示的 Tailscale IP。操作完成后,`bs5c-support stop` 会断开连接并停止 Tailscale daemon。 ## 配置 安装后,在浏览器中打开 `http:///config`。配置 UI 允许您设置设备名称、播放器、音量适配器、Home Assistant 连接、传输机制以及所有音源。更改会被保存,并且服务会自动重启。 配置存放在设备上的两个文件中: - **`/etc/beosound5c/config.json`** —— 所有设置(设备名称、播放器 IP、菜单、场景、音量、传输机制) - **`/etc/beosound5c/secrets.env`** —— 仅限凭证(HA token、MQTT 密码) 有关字段和选项的完整列表,请参阅 **[配置 schema](docs/config.schema.json)**。 要编辑场景(名称、图标、HA 脚本),请直接编辑 `/etc/beosound5c/config.json` —— 即 `"scenes"` 数组。 ## 遥测 坦白说,我只是很高兴能看到 BeoSound 5c 在世界各地出现。目前在美国、整个欧洲、这里的斯德哥尔摩、亚洲以及澳大利亚都有安装设备——每次地图上出现一个新节点,我都能开心一整天。 为了实现这一点,每台 BS5c 都会在启动时向 `beosound5c.com` 发送一个小型的匿名 ping。Web 配置 UI 中有一个对应的开关——将其关闭完全没问题,也不会影响其他任何内容。系统会使用您的公共 IP 来推断所在国家(通过 Cloudflare —— 除了国家名称外,绝不存储任何其他信息)。系统绝不会发送任何主机名、设备名称、MAC 地址或凭证。欢迎随时阅读 [`services/lib/beacon.py`](services/lib/beacon.py) 以确切了解发送了哪些内容。 | 字段 | 值 | |---|---| | `device_id` | 稳定的匿名 ID —— Pi 板载 MAC 地址的单向 UUIDv5 哈希值(MAC 本身绝不会被发送)。基于 MAC 派生,以便重新烧录镜像的设备能保持相同的身份,而不会被计算两次;如果不存在板载接口,则回退为随机 UUID | | `version` | 软件版本字符串 | | `sources` | 已启用的音源名称(例如 `spotify`、`cd`)—— 不包含任何凭证或配置值 | | `player_type` | 播放器后端:`sonos`、`bluesound`、`heos` 或 `local` | | `volume_type` | 音量适配器类型:`sonos`、`beolab5`、`powerlink` 等 | 如果您想选择退出,只需在仓库根目录下创建一个 `NO_TELEMETRY` 文件: ``` touch ~/beosound5c/NO_TELEMETRY ``` ## 文档 - [音频、播放器与音源](docs/audio-setup.md) —— 播放器类型、音源兼容性、Spotify 设置、音量适配器 - [Home Assistant 集成](docs/home-assistant.md) —— MQTT、webhook、自动化示例 - [遥控器与 IR](docs/remotes.md) —— BeoRemote One 配对、IR 音源按钮、Beo6 - [开发与贡献](docs/CONTRIBUTING.md) —— 本地开发设置、仓库结构、部署脚本 ## 致谢 `services/masterlink.py` 在很大程度上是 Tore Sinding Bekkedal 开发的 [libpc2](https://github.com/toresbe/libpc2) (GPL-3.0) 的衍生作品。`web/js/arcs.js` 中的圆弧几何源自 Lars Baunwall 开发的 [Beolyd5](https://github.com/larsbaunwall/Beolyd5) (Apache 2.0)。完整列表请参阅 [THIRDPARTY.md](THIRDPARTY.md)。 本项目不隶属于 Bang & Olufsen。"Bang & Olufsen"、"BeoSound"、"BeoRemote" 和 "MasterLink" 是 Bang & Olufsen A/S 的商标。
标签:数据可视化, 智能家居, 流媒体, 物联网, 用户界面, 逆向工具, 音频播放器