ESPHome component for ALLPOWERS BLE power stations

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 , Searching and Connected
  • 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.

Release 0.2.0

A new release is now available, focused on improving stability, safety, and usability in Home Assistant.

Highlights

  • New controls: ECO Mode, ECO shutdown timer, and Work Mode.
  • Improved BLE reliability with automatic recovery, connection watchdogs, and a configurable keepalive to improve long-session stability.
  • Better diagnostics, including firmware/hardware information and protocol error tracking.
  • Safer command handling: controls are only enabled when the BLE connection and telemetry are valid.
  • Optional experimental features, including Bluetooth device naming (disabled by default).

Existing installations can upgrade directly. As always, test the available controls on your specific hardware and firmware before enabling experimental features.

esphome-allpowers-ble 0.2.0