I have published an experimental ESPHome external component for monitoring and controlling compatible ALLPOWERS portable power stations over Bluetooth Low Energy:
dedalodaelus/esphome-allpowers-ble
I originally created it for my own ALLPOWERS R600 and am sharing it in case it is useful to somebody else. It is not an official integration, and I am not affiliated with ALLPOWERS, ESPHome or Home Assistant.
Credits
The BLE protocol decoding and original communication logic come from the excellent madninjaskillz/allpowers-ble project.
This ESPHome component is a port and adaptation of that implementation. I did not reverse-engineer the protocol from scratch. Full attribution and the upstream MIT licence notice are included in the repository.
Compatibility
The component has been tested with:
- ALLPOWERS R600
The upstream implementation also targets the S300 and devices whose BLE name matches AP S* , but I have not personally validated those models with this ESPHome component.
Compatibility depends on the BLE GATT layout and packet format. The project does not claim support for every ALLPOWERS model.
Features
- Battery level
- Total input and output power
- Estimated remaining runtime
- AC, DC and light state and control
- Charging and discharging indicators
- BLE states:
Disabled,SearchingandConnected - Automatic reconnection while enabled
- Manual disconnection that stops further connection attempts
- Telemetry invalidation when BLE disconnects or data becomes stale
- Commands blocked until BLE and telemetry are valid
- Separate Home Assistant subdevice
- Optional RSSI and protocol diagnostics
- Optional Home Assistant controls that become unavailable when BLE controls cannot be used
It can run on a dedicated ESP32 or share an ESP32 with a Home Assistant Bluetooth Proxy.
Installation
The repository includes a reusable ESPHome package, examples, protocol documentation and installation instructions:
external_components:
- source: github://dedalodaelus/esphome-allpowers-ble@main
components:
- allpowers_ble
packages:
allpowers_station:
url: https://github.com/dedalodaelus/esphome-allpowers-ble
ref: main
refresh: 1d
files:
- path: packages/allpowers_ble.yaml
vars:
allpowers_id: allpowers
allpowers_name: "ALLPOWERS Power Station"
allpowers_mac: !secret allpowers_station_mac
Add the MAC to your local secrets.yaml:
allpowers_station_mac: "AA:BB:CC:DD:EE:FF"
Known limitations
The currently verified protocol information does not provide commands or fields for:
- ECO or charging modes
- Charging limits
- Independent USB control
- Voltage, current or temperature
- Internal alarms
- Remaining energy in Wh
I have intentionally not added commands that cannot be verified from the upstream implementation or BLE captures.
AC frequency reporting is experimental and disabled by default.
Feedback, compatibility reports and contributions are welcome through the repository.