Sign inSign up

tyzbit/zero-log-parser

By tyzbit

•Updated over 4 years ago

Parse binary Zero motorcycle logs and save a resulting text file

Image
0

1.1K

tyzbit/zero-log-parser repository overview

⁠Zero Log Parser

This is a small decoder utility to parse Zero Motorcycle main bike board (MBB) and battery management system (BMS) logs.

  • It is designed to emulate Zero Motorcycles' own official log parser, that turns the binary-encoded event log into a mostly-readable text file.
  • If you send a log to Zero Customer Support, they should provide you with a text file in response. (Often, a phone call prompts them to process the log file)
  • If you run this script, and the script does not parse some entries correctly, we can upgrade the log parser to handle them if we have a copy of Zero's official log. So try to provide us with examples like this to help the development of the parser.

⁠Usage

⁠Getting Logs

You can extract logs from the bike using the Zero mobile app⁠:

  1. Download the Zero mobile app.
  2. Pair your motorcycle with it via bluetooth.
  3. Once the pairing is working, select Support > Email bike logs.
  4. Enter your email address into the To: line to send the logs to yourself rather than / in addition to Zero Motorcycles support.
  5. Open the email and download the attachment.
⁠Running

You'll need to install Python 3 somehow from https://www.python.org/downloads/⁠

$ python3 zero_log_parser.py <logfile.bin> [-o output_file]

⁠Docker

If you want to run using Docker, there's only two steps: build, then run.

⁠Docker Build
docker build . -t "zero-log-parser"

To explain:

docker build

Build a new Docker image

.

Use a Dockerfile in the current directory ("/.")

-t "zero-log-parser"

Tag it as "zero-log-parser"

⁠Docker Run

We will change directory to where the logs are, then run the tool against a log.

cd ~/zero-logs
docker run --rm -v "$PWD:/root" zero-log-parser /root/VIN_BMS0_2019-04-20.bin -o /root/VIN_BMS0_2019-04-20.txt

To explain:

cd ~/zero-logs

Go to the directory where the logs are stored. Change this to the correct directory for you

docker run

Run a Docker image as a container

--rm

Don't keep the image when it exits

-v "$PWD:/root"

Mount the current working directory as a volume inside the container at /root

zero-log-parser

What Docker image to run

/root/VIN_BMS0_2019-04-20.bin

Name of the binary file. You can get this by doing an ls after the cd before this command. Make sure to add /root/ before it since the path in the container is different

-o /root/VIN_BMS0_2019-04-20.txt

Save the decoded log file as VIN_BMS0_2019-04-20.txt in /root, which will save it in the current working directory outside of the container

⁠Development

Basic log documentation is at log_structure.md⁠.

If you want to debug the script and contribute, it's helpful to be able to run the tests. These currently look at a suite of log files and just run the parser to look for errors.

⁠Setup

$ python3 setup.py develop

⁠Testing

$ python3 test.py <directory of log files>

⁠Authors

Originally developed at https://github.com/KimBurgess/zero-log-parser⁠

Tag summary

Content type

Image

Digest

Size

18.8 MB

Last updated

over 4 years ago

docker pull tyzbit/zero-log-parser