work on diff methocds
This commit is contained in:
@@ -27,22 +27,44 @@ The protocol is ported from the excellent
|
|||||||
time in round-robin.
|
time in round-robin.
|
||||||
- Zero external dependencies — uses the stock ESP32 Arduino BLE stack.
|
- Zero external dependencies — uses the stock ESP32 Arduino BLE stack.
|
||||||
|
|
||||||
## Two modes: connection vs. advertisement
|
## Three ways to read a Bluetti — and their status
|
||||||
|
|
||||||
Bluetti exposes two different BLE channels, and this library has a class for each:
|
Bluetti data is reachable over three different channels. This project covers all
|
||||||
|
three; which one you use depends on your model's generation.
|
||||||
|
|
||||||
| | `BluettiBLE` (connection) | `BluettiADV` (advertisement) |
|
| # | Channel | Where | Status | Use for |
|
||||||
|---|---|---|
|
|---|---|---|---|---|
|
||||||
| Transport | GATT connect + Modbus poll | passive advertisement scan |
|
| 1 | **`BluettiBLE`** — BLE GATT connection | `src/BluettiBLE.*` | ✅ **Working** (builds, on-hardware-pending per model) | Older/plaintext models — full read **+ control** |
|
||||||
| Data | full register set + **control** | monitoring snapshot, **read-only** |
|
| 2 | **`BluettiADV`** — BLE advertisement broadcast | `src/BluettiADV.*` | ⏳ **Ready, blocked on key** | Newer encrypted models — read-only, local |
|
||||||
| Encryption | none (older models only) | **AES-128-CTR**, key from the app |
|
| 3 | **Cloud Open API** — HTTPS | `cloud/bluetti.mjs` | ⏳ **Ready, pending account approval** | Any model incl. EL300 — read **+ control**, via cloud |
|
||||||
| Works on | AC300, AC200M, EB3A, EP500P, … (older/plaintext generation) | newer **encrypted** generation: Elite / V2 / EP600, etc. |
|
|
||||||
|
|
||||||
If `BluettiBLE` connects but never returns data and the unit disconnects after a
|
### 1. `BluettiBLE` — local GATT connection ✅ Working
|
||||||
few seconds, your device is the newer encrypted generation — use **`BluettiADV`**
|
Connects over BLE GATT and polls the plaintext Modbus-style protocol. No pairing
|
||||||
instead (see [Advertisement mode](#advertisement-mode-bluettiadv) below). The
|
or key. Full register read plus AC/DC output control. **Works on the older /
|
||||||
connection/control channel on those models is locked behind a proprietary
|
plaintext generation** (AC300, AC200M, EB3A, EP500P, …). The library compiles and
|
||||||
handshake and is not supported; the advertisement channel is open and documented.
|
links; per-model field maps are ported from the reference project and want a
|
||||||
|
final on-hardware sanity check. See [Quick start](#quick-start).
|
||||||
|
|
||||||
|
### 2. `BluettiADV` — local advertisement broadcast ⏳ Ready, blocked on key
|
||||||
|
Passively decodes the encrypted monitoring broadcast that **newer** units emit
|
||||||
|
(Elite / V2 / EP600 / AC180 / AC200L …). Read-only, no connection. The decoder is
|
||||||
|
implemented (AES-128-CTR + the official BLE-ADV field layout) and builds, but it
|
||||||
|
needs the device's **16-byte AES key**, which Bluetti has not yet exposed in the
|
||||||
|
app for these models. Ready to run the moment a key is available. See
|
||||||
|
[Advertisement mode](#advertisement-mode-bluettiadv).
|
||||||
|
|
||||||
|
### 3. Cloud Open API — HTTPS ⏳ Ready, pending account approval
|
||||||
|
For encrypted models (incl. the **EL300**) whose local channels are locked, the
|
||||||
|
official cloud Open Platform works today — full read and control, no AES key. The
|
||||||
|
signed client is implemented in [`cloud/bluetti.mjs`](cloud/README.md). It needs a
|
||||||
|
registered developer app + IoT API permission + the device SN authorized to your
|
||||||
|
account; **app approval is currently pending** (Bluetti review, ~1 day). Not
|
||||||
|
ESP32-native (HTTPS/cloud).
|
||||||
|
|
||||||
|
> **Quick decision:** older Bluetti → use **#1** locally. Newer/Elite (EL300) →
|
||||||
|
> use **#3** (cloud) now, switch to **#2** (local) once the broadcast key ships.
|
||||||
|
> If `BluettiBLE` connects then disconnects within seconds with no data, you have
|
||||||
|
> a newer encrypted unit — that's the #2/#3 path.
|
||||||
|
|
||||||
## Supported devices
|
## Supported devices
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user