EpaL/alliance-it2-homeassistant
GitHub: EpaL/alliance-it2-homeassistant
通过逆向工程 BLE 协议,用 ESP32 将 Alliance it2 景观照明变压器本地接入 Home Assistant,无需云端或 Tuya 密钥。
Stars: 0 | Forks: 0
# Alliance it2 — 本地控制(无需云端,无需 Tuya 密钥)
通过本地蓝牙控制 **Alliance Outdoor Lighting it2** 智能
照明变压器,该项目由官方 **it Pro** 应用
(`com.alliance.it_pro`)逆向工程而来。它通过 ESP32 将你的 it2 变成原生的 **Home Assistant** 实体
——**无需 Tuya localKey,无需 Alliance 云账号,也无需联网。**
```
Home Assistant ──WiFi/API── ESP32-S3 ──Bluetooth LE── it2 transformer ── lights
```
你将在 Home Assistant 中获得一个 **Garden Lighting** 主开关以及**独立的分区开关**(Zone 1/2/3)
——比官方应用本身具有更精细的控制。(it2-300 仅支持按区域开启/关闭;它不支持调光。)
## 为什么会有这个项目
it2 硬件使用 Tuya v3.3 LAN 协议,但 Alliance 的应用根本
没有使用 Tuya —— 它是通过 **Bluetooth LE** 来控制设备的(并且为了
远程访问,它使用了自己基于设备 BLE 身份识别的 AWS IoT 云)。在应用
或其云端中**根本没有任何 Tuya localKey**,因此通常的“提取
localKey 并使用 tinytuya”的方案是行不通的。相反,这个项目
逆向了应用的 BLE 命令协议并直接驱动设备。
有关完整的协议说明,请参阅 [`PROTOCOL.md`](PROTOCOL.md)。
## 目录说明
| 路径 | 说明 |
|---|---|
| [`esphome/it2.yaml`](esphome/it2.yaml) | **主要交付物** —— 用于 ESP32-S3 的 ESPHome 配置,原生地将 it2 桥接到 Home Assistant(无需 MQTT)。 |
| [`esphome/ESPHOME_SETUP.md`](esphome/ESPHOME_SETUP.md) | 分步指南:烧录 ESP32、查找 BLE MAC 并在 HA 中接入。 |
| [`PROTOCOL.md`](PROTOCOL.md) | 逆向工程得出的 BLE 协议(操作码、帧结构、认证、区域)。 |
| [`it2ble.py`](it2ble.py) | 独立的 Python/`bleak` CLI,可从计算机控制 it2(`on`/`off`/`status`/`channel`)。非常适合测试。 |
| [`bridge/`](bridge) | 替代方案:Raspberry Pi 的 BLE→MQTT 桥接(`it2_bridge.py` + systemd unit + 设置指南),如果你更倾向于使用 Pi 而不是 ESP32。 |
| `ble_scan.py`, `ble_signal.py` | 设置期间使用的 BLE 扫描/信号强度辅助工具。 |
| `tuya_key.js`, `ssl_unpin.js`, `frida_*.py`, `fetch_key.py` | (用于研究出这一切的)逆向工程脚本(Frida SSL 证书解除、堆扫描、Tuya 云端尝试)。保留以供参考。 |
## 快速开始(ESP32 + Home Assistant)
1. 通过 ESPHome 使用 [`esphome/it2.yaml`](esphome/it2.yaml) 烧录 **ESP32-S3**。
2. 首次启动时,从日志中读取你的 it2 的 BLE MAC(参见设置指南),并且
将其填入 `ble_client: → mac_address:` 中。
3. 将 ESP32 安装在变压器的蓝牙覆盖范围内,并在本地供电。
4. 在 Home Assistant 中接入该设备 —— 你将获得一个 **Garden Lighting** 主
开关以及 **Garden Zone 1/2/3** 开关。
完整详情请参阅 [`esphome/ESPHOME_SETUP.md`](esphome/ESPHOME_SETUP.md)。
## 一段话简介协议
## 注意事项 / 常见问题
- it2 同一时间仅接受 **一个** BLE 连接 —— 当 ESP32/Pi 处于
连接状态时,Alliance 的手机应用无法连接(如需使用应用,请关闭该桥接设备)。
- 你必须提供自己设备的 BLE MAC(通过 ESP32 扫描日志或
nRF Connect 等应用找到它);配置文件中的值仅是某一个特定设备的。
- 这里面**不**包含 `it Pro` APK 和 `frida-server` 二进制文件 —— 请
从它们的官方来源获取。
## 免责声明
本项目与 Alliance Outdoor Lighting 或
Tuya 没有任何关联、认可或支持。这是用于控制你所拥有的硬件的独立互操作性研究,
按“原样”提供,不提供任何保证。这是为了实现互操作性而进行的逆向工程;
你需要对自己的使用方式负责。“Alliance”、“it2”和“it Pro”是
其各自所有者的商标。
## 许可证
[MIT](LICENSE)
标签:逆向工具