MarkS0485/Ember

GitHub: MarkS0485/Ember

Ember 是一款替代原厂应用的 clean-room 蓝牙柴油加热器控制客户端,支持 Android 和 Windows 双平台直接本地 BLE 控制与远程访问。

Stars: 0 | Forks: 0

# Ember 针对 **HeatGenie / HCalory** 类蓝牙柴油空气加热器的独立、干净环境(clean-room)替代客户端。它们使用与原厂应用相同的 BLE 线上传输协议,但实现了更简洁的代码,并且**无需账户、云服务或互联网依赖**——所有操作均通过低功耗蓝牙(Bluetooth LE)在本地运行。 ## 功能 - **直接 BLE 控制** — 扫描、绑定、启动 / 停止 / 净化排气、设置目标温度或功率级别,以及读取实时遥测数据(温度、电源电压、运行状态、故障代码)。 - **双加热器协议,统一抽象** — `HCalory` 和 `HeatGenie` 传输格式(两者均为 Tuya-BLE 封装)位于通用的协议接口之后;根据设备自动选择合适的编解码器。 - **调度** — 按每个加热器设置每日定时开/关程序。 - **自动启动/停止** — 基于规则的自动化(保持恒温,或在设定时间段内运行)。 - **分组** — 将多个加热器组合为一个逻辑区域进行统一驱动。 - **油箱跟踪** — 根据运行时间和功率级别估算剩余油量,并支持**低油量自动停止**,防止油泵干转。 - **海拔补偿** — 根据当地海拔调整燃油/空气混合比(柴油加热器在高海拔地区会运行得过浓)。 - **远程访问** — 桌面客户端托管一个小型的经过身份验证的 API 服务器(HMAC 签名请求、自签名 TLS、可选的 UPnP 端口转发、二维码配对),Android 应用可与之配对,从而在蓝牙范围之外也能控制加热器。 - **诊断** — 原始数据帧日志、标志 / 开关检查器,以及用于协议开发的手动命令输入框。 ## 仓库结构 ``` android/ Android client — Kotlin + Jetpack Compose, min SDK 31 (Android 12). A foreground service owns the BLE link and survives backgrounding. Package com.emberheat. windows/ Windows client — C# / .NET 10, WPF (MVVM). Direct BLE via Windows.Devices.Bluetooth, plus the optional remote API server (ASP.NET Core Kestrel hosted inside the desktop app). docs/ Protocol documentation — the shared source of truth. OLDSRC/ Decompiled vendor app + reference APKs. Third-party material; git-ignored, never pushed. ``` `docs/BLE_PROTOCOL.md` 是有关帧格式、服务 / 特征值发现、操作码、传感器编码和固件特性的权威参考文档。两个客户端均遵循此文档;如果实际传输协议与文档不一致,会优先修正文档。 ## 架构 两个客户端共享相同的分层设计: - **传输层** — 在加热器的 `0x181A` GATT 服务上使用 Tuya 风格的 BLE 帧(`TuyaBleFrame`);通过属性位而非硬编码的 UUID 来发现特征值。 - **协议层** — 位于统一接口背后的 `HCalory` 和 `HeatGenie` 实现,暴露通用的遥测数据和特定于型号的功能。 - **控制逻辑** — 调度、自动启动/停止规则、分组分发和燃料跟踪,全部由实时遥测数据流驱动。 - **远程访问** — Windows 应用可以通过经过 HMAC 身份验证的 HTTPS API 暴露其已绑定的加热器;Android 应用与之配对(通过二维码或手动方式),并在超出 BLE 范围时远程控制加热器。 ## 构建 ### Android 需要 JDK 17 和 Android SDK(或 Android Studio Iguana+)。在 `android/` 目录下: ``` ./gradlew :app:installDebug # build + install the debug APK to a connected device ``` 发布构建(`./gradlew :app:assembleRelease`)生成的是未签名版本。 ### Windows 在 Windows 10/11 上需要 **.NET 10 SDK** (x64)。在 `windows/` 目录下: ``` dotnet build Ember.sln dotnet run --project src/Ember # launch the WPF app ``` `src/HcaloryTest` 是一个用于协议调优和抓包的小型控制台工具。 ## 硬件要求 - 一台位于约 10 米范围内且正在广播的 HeatGenie / HCalory 类 BLE 柴油加热器(只要未连接到其他中心设备,它就会持续广播)。 - 蓝牙 4.0+ 模块。在 Windows 上,必须激活 Microsoft BLE 协议栈(即运行 `BthLEEnum` / `Microsoft.Bluetooth.Legacy.LEEnumerator` 服务)。 ## 敏感信息 未提交任何敏感信息。`local.properties`、`google-services.json`、TLS 材料(`*.pfx` / `*.p12`)以及已配对客户端的状态均已被 git 忽略。 ## 安全须知 柴油空气加热器会燃烧燃料并产生废气,其中包括一氧化碳。 这是用于控制燃烧硬件的非官方软件:请务必使用有效的 CO 警报器,切勿在有人占用的封闭空间内运行无排气口的加热器,并谨慎对待远程或自动启动功能。 ## 许可证 基于 **GNU General Public License v3.0** 授权 — 详见 [LICENSE](LICENSE) 获取完整文本。
标签:Android应用, Windows应用, 柴油加热器, 物联网协议, 物联网控制, 自动化控制, 蓝牙低功耗