Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

bluetti-bt-lib

Inofficial Library for basic communication to bluetti powerstations. Core functions based on https://github.com/warhammerkid/bluetti_mqtt

The current Roadmap for this project and repositories using this library can be found here

Disclaimer

This library is provided without any warranty or support by Bluetti. I do not take responsibility for any problems it may cause in all cases. Use it at your own risk.

Projects using this library

Supported Powerstations and data

Validated

Device Name total_battery_percent dc_input_power ac_input_power dc_output_power ac_output_power
AC70 ✅ ✅ ✅ ✅ ✅
AC180 ✅ ✅ ✅ ✅ ✅
EB3A ✅ ✅ ✅ ✅ ✅
EP600 ✅ PV Grid ❌ AC Phases
Handsfree 1 ✅ ✅ ✅ ✅ ✅

Added and mostly validated by contributors (some are moved here from the HA Integration https://github.com/Patrick762/hassio-bluetti-bt):

Device Name Contributor total_battery_percent dc_input_power ac_input_power dc_output_power ac_output_power
AC2A @ruanmed ✅ ✅ ✅ ✅ ✅
AC50B @goetzc ✅ ❌ ✅ ✅ ✅
AC60 @mzpwr ✅ ✅ ✅ ✅ ✅
AC60P @mzpwr ✅ ✅ ✅ ✅ ✅
AC70P @matthewpucc ✅ ✅ ✅ ✅ ✅
AC180P @Patrick762 ✅ ✅ ✅ ✅ ✅
AC200L bluetti-mqtt ✅ ✅ ✅ ✅ ✅
AC200M bluetti-mqtt ✅ ✅ ✅ ✅ ✅
AC200PL @0x4E4448 ✅ ✅ ✅ ✅ ✅
AC300 bluetti-mqtt ✅ ✅ ✅ ✅ ✅
AC500 bluetti-mqtt ✅ ✅ ✅ ✅ ✅
AP300 @seaburger, @sidieje ✅ ✅ ✅ ✅ ✅
EL30V2 @dgudim ✅ ✅ ✅ ✅ ✅
EL100V2 @seaburger, lesolas20 ✅ ✅ ✅ ✅ ✅
EP500 bluetti-mqtt ✅ ✅ ✅ ✅ ✅
EP500P bluetti-mqtt ✅ ✅ ✅ ✅ ✅
EP760 @Apfuntimes ✅ PV Grid ❌ AC Phases
EP800 @jhagenk ✅ ❌ ❌ ❌ ❌
Handsfree 2 @pablogiaccaglia ✅ ✅ ✅ ✅ ✅
PR30V2 @gentoo90 ✅ ✅ ✅ ✅ ✅
PR100V2 shares PR30V2 register layout (pending validation) ✅ ✅ ✅ ✅ ✅
EL10 sidieje ✅ ✅ ✅ ✅ ✅

Controls

Validated:

Device Name ctrl_ac ctrl_dc
EB3A ✅ ✅
EP600 ✅ ❌

Added and mostly validated by contributors:

Device Name Contributor ctrl_ac ctrl_dc ctrl_ups_mode soc_range_start soc_range_end
AC200L bluetti-mqtt, @seaburger ✅ ✅ ✅ ❌ ❌
EL30V2 @x3ccd4828 ✅ ✅ ❌ ❌ ❌
Handsfree 2 @pablogiaccaglia ✅ ✅ ❌ ❌ ❌

Battery pack data

Device Name voltage battery_soc cell_voltages
AC300 ✅ ✅ ✅

Installation

pip install bluetti-bt-lib

Commands for testing

Commands included in this library should only be used for testing.

Scan for supported devices

usage: bluetti-scan [-h] [-r REGEX] [-s SCAN_TIME]

Detect bluetti devices by bluetooth name

options:
  -h, --help            show this help message and exit
  -r REGEX, --regex REGEX
                        Custom regex to match device name
  -s SCAN_TIME, --scan-time SCAN_TIME
                        How long to scan for devices (seconds)

Example output: ['EB3A', '00:00:00:00:00:00']

Detect device type by mac address

usage: bluetti-detect [-h] mac

Detect bluetti devices

positional arguments:
  mac         Mac-address of the powerstation

options:
  -h, --help  show this help message and exit

Example:

bluetti-detect 00:00:00:00:00:00

Example output: Device type is 'EB3A' with iot version 1 and serial 0000000000000. Full name: EB3A0000000000000

Read device data for supported devices

usage: bluetti-read [-h] [-m MAC] [-t TYPE] [-e ENCRYPTION]

Detect bluetti devices

options:
  -h, --help            show this help message and exit
  -m MAC, --mac MAC     Mac-address of the powerstation
  -t TYPE, --type TYPE  Type of the powerstation (AC70 f.ex.)
  -e ENCRYPTION, --encryption ENCRYPTION
                        Add this if encryption is needed

Example:

bluetti-read -m 00:00:00:00:00:00 -t EB3A

Example output:

FieldName.DEVICE_TYPE: EB3A
FieldName.DEVICE_SN: 0000000000000
FieldName.BATTERY_SOC: 92%
FieldName.DC_INPUT_POWER: 0W
FieldName.AC_INPUT_POWER: 0W
FieldName.AC_OUTPUT_POWER: 0W
FieldName.DC_OUTPUT_POWER: 0W
FieldName.CTRL_AC: False
FieldName.CTRL_DC: True
FieldName.CTRL_LED_MODE: LedMode.OFF
FieldName.CTRL_POWER_OFF: False
FieldName.CTRL_ECO: False
FieldName.CTRL_ECO_TIME_MODE: EcoMode.HOURS1
FieldName.CTRL_CHARGING_MODE: ChargingMode.STANDARD
FieldName.CTRL_POWER_LIFTING: False

Write to supported device

INFO: Devices with encryption are currently not supported!

usage: bluetti-write [-h] [-m MAC] [-t TYPE] [--on ON] [--off OFF] [-v VALUE] [-e ENCRYPTION] field

Write to bluetti device

positional arguments:
  field                 Field name (ctrl_dc f.ex.)

options:
  -h, --help            show this help message and exit
  -m MAC, --mac MAC     Mac-address of the powerstation
  -t TYPE, --type TYPE  Type of the powerstation (AC70 f.ex.)
  --on ON               Value to write
  --off OFF             Value to write
  -v VALUE, --value VALUE
                        Value to write (integer, see enum for value)
  -e ENCRYPTION, --encryption ENCRYPTION
                        Add this if encryption is needed

Example:

bluetti-write -m 00:00:00:00:00:00 -t EB3A --on on ctrl_ac

Adding fields

To add new fields, you can use the bluetti-detect command to first find out which version of iot protocol is used and if it uses encryption.

After you got this information, you can use the bluetti-readall command to read every registry and save the data to a json file and a hexdump (10 bytes per line). You should also note all values you see in the app to later compare the data.

Here's how to use the bluetti-readall command:

usage: bluetti-readall [-h] [-m MAC] [-v VERSION] [-e ENCRYPTION]

Detect bluetti devices

options:
  -h, --help            show this help message and exit
  -m MAC, --mac MAC     Mac-address of the powerstation
  -v VERSION, --version VERSION
                        IoT protocol version
  -e ENCRYPTION, --encryption ENCRYPTION
                        Add this if encryption is needed

With the separate tool at bluetti-bt-raw-reader you can view those values in a more understandable way.

You can also share the output with me using this form

To test added fields with the created json file, use bluetti-parse:

usage: bluetti-parse [-h] file

Parse readall output files

positional arguments:
  file        JSON file of the powerstation readall output

options:
  -h, --help  show this help message and exit

Release files for bluetti-bt-lib 0.2.0b1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bluetti-bt-lib 0.2.0b1
File Size Uploaded
bluetti_bt_lib-0.2.0b1.tar.gz 29.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bluetti-bt-lib 0.2.0b1
File Interpreter ABI Platform
bluetti_bt_lib-0.2.0b1-py3-none-any.whl Python 3 none any Details

Total release size: 90.0 kB

Release files / bluetti_bt_lib-0.2.0b1.tar.gz

Download URL bluetti_bt_lib-0.2.0b1.tar.gz
Size 29.8 kB
Tags Source
SHA-256 checksum
How to use checksums
8d3e6ecb649e6ff8201c343d2b0501c8f0b8873dbb62e3e42def2c8ab8c82122
BLAKE2b-256 checksum
How to use checksums
bbeec3f399c0f5f3bc07f55cd9b1038c7fe6b0e1f60d10f80c79b3d80fd25683
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release files / bluetti_bt_lib-0.2.0b1-py3-none-any.whl

Download URL bluetti_bt_lib-0.2.0b1-py3-none-any.whl
Size 60.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6762a9449cf5e9cd0229de7a630c4bc8633da1800ae1d119583e652814d58918
BLAKE2b-256 checksum
How to use checksums
04f4c6846d50fb5ecc065aa30309a26e284411da875e4e714f7b6f2770d666bf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.25

Release history Release notifications | RSS feed

This release

0.2.0b1 This release

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.18

2 release files

0.0.17

2 release files

0.0.16

2 release files

0.0.15

2 release files

0.0.14

2 release files

0.0.13

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page