halpcomputar/suntek-fridge-ble

GitHub: halpcomputar/suntek-fridge-ble

该项目为基于 SUNTEK SC-BLE 模块的 12V 便携式车载冰箱(如 BougeRV CRD2)提供本地蓝牙 BLE 协议文档与 Home Assistant 只读集成,不依赖云端或 ESP32。

Stars: 0 | Forks: 0

# SUNTEK Fridge BLE — Home Assistant 集成 [![验证](https://static.pigsec.cn/wp-content/uploads/repos/cas/5e/5e718fe260ce98fce7c7fe52644591c39a59ee2da8cef2fd4718ecc42327da23.svg)](https://github.com/halpcomputar/suntek-fridge-ble/actions/workflows/validate.yml) [![hacs](https://img.shields.io/badge/HACS-custom-41BDF5.svg)](https://hacs.xyz/) 为基于 **SUNTEK `SC-BLE-1.0`** 模块构建的 12V 便携式压缩机冰箱提供本地蓝牙监控 —— 逆向工程基于一台 **BougeRV CRD2 V2.0** 双区冰箱。 无需云端,无需厂商账户,无需 ESP32。 这些冰箱 **不是** Alpicool 同类产品。Alpicool、Brass Monkey、Bodega 及其 贴牌产品使用 GATT service `1234` 和二进制 `FE FE … sum16` 协议,并且已经由 [alpicool_ha_ble](https://github.com/Gruni22/alpicool_ha_ble) 和 [refridge](https://github.com/LeanderM99/refridge) 提供支持。此硬件使用 service `FFF0` 并 采用换行符分隔的 **ASCII CSV** 通讯。由于此前没有任何已公布的资料涵盖此协议,因此诞生了本项目。 由于 `SC-BLE-1.0` 是一个通用模块,这很可能适用于除 BougeRV 之外的一系列贴牌 冰箱。[报告你的型号](../../issues/new?template=model-report.yml) —— 无论兼容与否。 ## 我的冰箱适用吗? 品牌名称不能说明问题。判断标准是 GATT service: | 你看到的内容 | 结论 | |---|---| | Service `FFF0`,write `FFF1`,notify `FFF4` | ✅ 适用本项目 | | Service `1234`,write `1235`,notify `1236` | ❌ 请使用 Alpicool 集成 | | 广播名称以 `SYZ-` 开头 | ✅ 强烈信号 | | 制造商字符串为 `SUNTEK`,型号为 `SC-BLE-1.0` | ✅ 强烈信号 | 在手机上使用 [nRF Connect](https://www.nordicsemi.com/Products/Development-tools/nRF-Connect-for-mobile) 进行检查,并确保厂商 App 已关闭。 ## 状态 **只读。** 冰箱报告的所有数据都作为实体公开。控制功能 —— 设定值、 电源、Eco/Max —— 尚未实现:命令特征 `FFF1` 是只写的, 因此其格式必须从厂商 App 中抓取。请参阅 [PROTOCOL.md](PROTOCOL.md#command-frame-fff1) 了解具体方法和六步命令检查清单。 12 个状态字段中有 10 个已通过厂商 App 和冰箱自身的 显示屏确认。剩下的两个在参考设备上被记录为无法测试,而不是 盲目猜测。 ## 实体 | 实体 | 类型 | 备注 | |---|---|---| | Zone 1 / Zone 2 温度 | sensor | 在参考设备上,zone 1 是较大的隔室 | | Zone 1 / Zone 2 设定值 | sensor | | | 输入电压 | sensor | 诊断 | | 运行模式 | sensor | enum:Eco / Max | | 电池保护 | sensor | enum:Low / Medium / High,诊断 | | 电源 | binary_sensor | 设备类 *running* | 温度在内部统一为 °C,因此 Home Assistant 会根据你的 首选单位进行显示,并且当你频繁在 °F 和 °C 之间切换冰箱时,长期统计数据也不会丢失。 `iot_class` 为 `local_push`:集成仅订阅,不进行轮询。冰箱每 4 秒左右发送 一次状态帧,并且在发生任何变化时立即发送一次。 ## 安装说明 ### HACS 1. HACS → ⋮ → **Custom repositories** 2. 仓库 `https://github.com/halpcomputar/suntek-fridge-ble`,类型为 **Integration** 3. 下载,然后 **重启 Home Assistant** ### 手动 将 `custom_components/suntek_fridge_ble/` 复制到你的 Home Assistant `config/custom_components/` 目录中,然后重启。 ### 设置 在关闭厂商 App 的情况下,冰箱应该会在 **Settings → Devices & Services** 下被自动发现。否则,请通过 **Add Integration → SUNTEK Fridge BLE** 手动添加。 ## 要求与限制 - 范围内有蓝牙适配器,或者有一个 [ESPHome Bluetooth Proxy](https://esphome.io/components/bluetooth_proxy/)。 范围大约为 10 米。 - **同一时间只能建立一个 BLE 连接。** 当 Home Assistant 连接时,厂商 App 无法 连接,反之亦然。集成会将连接中断视为正常情况,并采用退避算法进行 重连。 ## 开发说明 协议层不依赖 Home Assistant,因此其测试可以在任何地方运行: ``` pip install pytest && python3 -m pytest tests/ -q ``` `tools/probe.py` 是一个独立的 BLE 探测器,可以实时解码数据帧并高亮显示 发生变化的字段 —— 包括跨重连的检测,这也是那些仅限 App 设置的映射方式。 有关完整的规范、已确认的内容以及未确认的内容,请参阅 [PROTOCOL.md](PROTOCOL.md)。 ## 致谢 Alpicool 相关项目 —— [Gruni22/alpicool_ha_ble](https://github.com/Gruni22/alpicool_ha_ble), [LeanderM99/refridge](https://github.com/LeanderM99/refridge), [klightspeed/BrassMonkeyFridgeMonitor](https://github.com/klightspeed/BrassMonkeyFridgeMonitor), 以及 [dandwhelan 的兼容性说明](https://github.com/dandwhelan/Alpicool50l12vfridgefreezer) —— 虽然涵盖的是不同的协议,但正是它们的文档让我们能够快速排除该 产品线,并从零开始开发本项目。 ## 许可证 MIT —— 请参阅 [LICENSE](LICENSE)。
标签:Home Assistant, 协议逆向, 安全规则引擎, 智能家居, 物联网, 硬件集成, 蓝牙低功耗, 逆向工具