Skip to main content

BM Generator 3000

Test generator for battery cyclers.

Supported formats: Basytec, Neware, Digatron, JSON-LD.

Screenshot

Documentation: https://digibatt.github.io/bmgen

Examples: examples

Setup

The Python package is available on PyPI and can be installed using pip:

pip install bm-generator

The web version of the program can be started using the command:

bmgen-server

Installation from sources

The required dependencies and the package itself can also be installed from the sources using pip:

pip install -e .[dev]

A working installation of Python >= 3.10 and pip is required. The web version also requires npm. To build the modules for the web version and the documentation, the provided build script can be used:

./build.sh

Documentation

The documentation is built using the script

./build_docs.sh

Examples

This is a simple example that shows the basic structure of a program:

# import required functions and channel variables
from bmgen.function import *
from bmgen.channel import *

# set data recording interval
# registration format is only applied to BM programs
register(time=seconds(1), format=["my_custom_reg"])

# set safety limits
limit(V > 4.2, error(1))
limit(V < 2.5, error(1))
limit(I > 5, error(1))
limit(I < -5, error(1))

# specify test steps
charge(current=2.0, voltage=4.2, limits=[I < 0.2])
pause(hours=1)
discharge(current=1.5, limits=[V < 3.0])

To see the test programs that are generated, expand the sections below.

Battery Manager

Command for this example: bmgen --target bm --format table examples/simple_program.py

StepLabelOperatorValueLimitActionRegistration
1SETmy_custom_reg
1 s
2SET> 4.2 V
< 2.5 V
> 5 A
< -5 A
ERR 1
ERR 1
ERR 1
ERR 1
3CHA2.0 A
4.2 V
< 0.2 A
4PAU90 min
5DCH1.5 A< 3.0 V
6STO

Neware

Command for this example: bmgen --target neware --format table examples/simple_program.py

Step IndexStep NameStep Time (hh:mm:ss.ms)Voltage (V)Current (A)Cutoff voltage (V)Cutoff current (A)Capacity (Ah)Others
1CCCV Chg4.22.00.2
2Rest1:30:00.000
3CC DChg1.53.0
4End

Basytec

Command for this example: bmgen --target basytec --format table examples/simple_program.py

LevelLabelCommandParameterTerminationActionRegistrationComment
1StartU>4.2V
U<2.5V
I>5A
I<-5A



2ChargeI=2.0A
U=4.2V
I<0.2At=1s
3Pauset>90mint=1s
4DischargeI=1.5AU<3.0Vt=1s
5STOPStop

Web Interface

The easiest way to get started is using the web version by running the command:

bmgen-server

The web interface can be accessed at http://localhost:5000

CLI

The program can also be used as a command line tool:

bmgen

The only required argument is the filename of the Python program to be translated. A dash ( - ) can be used to read from standard input.

The following options are supported:

-t, --target

Set the target language. Available values are bm, neware, and basytec. The default value is bm.

-f, --format

Set the target format. The supported formats depend on the target:

BM:

  • text (default): Plain text file that can be pasted into the Battery Manager
  • table: HTML table resembling the Battery Manager interface for test programs

Neware:

  • xml (default): XML file that can be opened in the Neware client
  • table: HTML table resembling the Neware interface for test programs

Basytec:

  • text (default): Plain text PLN file that can be opened in the Basytec program
  • table: HTML table resembling the Basytec interface for test programs

-o, --out

Name of the output file. If this option is not provided, the output is written to the terminal.

Release files for bm-generator 0.29.15

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

Source distribution (sdist)

Source distribution for bm-generator 0.29.15
File Size Uploaded
bm_generator-0.29.15.tar.gz 6.2 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for bm-generator 0.29.15
File Interpreter ABI Platform
bm_generator-0.29.15-py3-none-any.whl Python 3 none any Details

Total release size: 12.6 MB

Release files / bm_generator-0.29.15.tar.gz

Download URL bm_generator-0.29.15.tar.gz
Size 6.2 MB
Tags Source
SHA-256 checksum
How to use checksums
6bbd9f23e9b5d8d9352737af8e79a88847cf35d09783fb47139c8680ecf879c1
BLAKE2b-256 checksum
How to use checksums
838e154319a030412ce7e3e133c3cdf8501682e327bc518694b8a06277a8ed85
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 1, 2026.

Transparency log

Release files / bm_generator-0.29.15-py3-none-any.whl

Download URL bm_generator-0.29.15-py3-none-any.whl
Size 6.4 MB
Tags Python 3
SHA-256 checksum
How to use checksums
07d3f9670785c5e91a82586d5e3745e46fa5797bad08ff6cadd87a5c23d87367
BLAKE2b-256 checksum
How to use checksums
8620eb600f29d07cf73c25255c42f6f9ab52981bdb6288393a94251f49b427fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 1, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.29.15 This release

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