Skip to main content

Python API to read Victron Instant Readout advertisements

Project description


victron_ble

A Python library to parse Instant Readout advertisement data from Victron devices.

Disclaimer: This software is not an officially supported interface by Victron and is provided entirely "as-is"

Supported Devices:

  • SmartShunt 500A/500mv and BMV-712/702 provide the following data:
    • Voltage
    • Alarm status
    • Current
    • Remaining time
    • State of charge (%)
    • Consumed amp hours
    • Auxilary input (temperature, midpoint voltage, or starter battery voltage)
  • Smart Battery Sense
    • Voltage
    • Temperature (°C)
  • Solar Charger (Tested with BlueSolar 75/15):
    • Charger State (Off, Bulk, Absorption, Float)
    • Battery Voltage (V)
    • Battery Charging Current (A)
    • Solar Power (W)
    • Yield Today (Wh)
    • External Device Load (A)

If you'd like to support development for additional devices, consider sponsoring this project

Install it from PyPI

pip install victron_ble

Usage

To be able to decrypt the contents of the advertisement, you'll need to first fetch the per-device encryption key from the official Victron application. The method to do this will vary per platform, instructions below:

Fetching Keys

OSX

  1. Install the Victron app from the Mac App Store
  2. Pair with your device at least once to transfer keys
  3. Run the following from Terminal to dump the known keys (install sqlite3 via Homebrew)
 sqlite3 ~/Library/Containers/com.victronenergy.victronconnect.mac/Data/Library/Application\ Support/Victron\ Energy/Victron\ Connect/d25b6546b47ebb21a04ff86a2c4fbb76.sqlite 'select address,advertisementKey from advertisementKeys inner join macAddresses on advertisementKeys.macAddress == macAddresses.macAddress'

{763aeff5-1334-e64a-ab30-a0f478s20fe1}|0df4d0395b7d1a876c0c33ecb9e70dcd
❯

Linux

  1. Download the Victron AppImage app from the Victron website.
  2. Pair with your device at least once to transfer keys
  3. Run the following from a terminal to dump the known keys (install sqlite3 via your package manager)
 sqlite3 ~/.local/share/Victron\ Energy/Victron\ Connect/d25b6546b47ebb21a04ff86a2c4fbb76.sqlite 'select address,advertisementKey from advertisementKeys inner join macAddresses on advertisementKeys.macAddress == macAddresses.macAddress'

A0:F4:78:02:0F:E1|0df4d0395b7d1a876c0c33ecb9e70dcd
❯

Windows

  1. Download the VictronConnect installer from the Victron website and install.
  2. Pair with your device at least once to transfer keys
  3. Open Explorer, navigate to %AppData%\Local\Victron Energy\Victron Connect\
  4. Open SQLite Viewer in a web browser of your choice
  5. Drag and drop the d25b6546b47ebb21a04ff86a2c4fbb76.sqlite file from Explorer into the SQLite Viewer window

Reading data

The project ships with a standalone CLI that can be used to print device data to the console.

# Will show all discovered Victron devices with Instant Readout enabled, their names, and IDs
$ > victron-ble discover 
763aeff5-1334-e64a-ab30-a0f478s20fe1: SmartShunt HT4531A246S
...


# Dump data for a particular device (replace the ID and key with your own)
$ > victron-ble read "763aeff5-1334-e64a-ab30-a0f478s20fe1@0df4d0395b7d1a876c0c33ecb9e70dcd"
INFO:victron_ble.scanner:Reading data for ['763aeff5-1334-e64a-ab30-a0f478s20fe1']
{
  "name": "SmartShunt HT4531A246S",
  "address": "763AEFF5-1334-E64A-AB30-A0F478S20FE1",
  "rssi": -79,
  "payload": {
    "aux_mode": "temperature",
    "consumed_ah": 0.0,
    "current": 0.0,
    "high_starter_battery_voltage_alarm": false,
    "high_temperature_alarm": false,
    "high_voltage_alarm": false,
    "low_soc_alarm": false,
    "low_starter_battery_voltage_alarm": false,
    "low_temperature_alarm": false,
    "low_voltage_alarm": false,
    "midpoint_deviation_alarm": false,
    "remaining_mins": 65535,
    "soc": 100.0,
    "temperature": 382.2,
    "voltage": 12.87
  }
}
...

# Dump data for debugging and supporting new devices (replace the ID)
$ > victron-ble dump "763aeff5-1334-e64a-ab30-a0f478s20fe1"
Dumping advertisements from 763aeff5-1334-e64a-ab30-a0f478s20fe1
1671843194.0534039      : 100289a302413bafd03bb245e131ae926267f6fd0b59e0
1671843194.682535       : 100289a302423baf58a1546e5262dcdf0ef642f353ed65
1671843197.676384       : 100289a302453baf804707549cffb2ab970c981ae897b6
...

To consume this project as a library, you can import the particular parser for your device:

from victron_ble.devices import detect_device_type

data = <ble advertisement data>
parser = detect_device_type(data)
parsed_data = parser(<key>).parse(<ble advertisement data>)

Development

If you'd like to help support a new device, collect the following and create a new Github issue:

  1. Run victron-ble discover to find the ID of the device you'd like to support
  2. Run victron-ble dump <ID> for a few minutes while collecting corresponding screenshots from the official apps instant readout to identify the current values

For pull requests:

Read the CONTRIBUTING.md file.

Contributors

Special thanks to https://github.com/rochacbruno/python-project-template for the project template

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

victron_ble-0.5.1.tar.gz (18.0 kB view details)

Uploaded Source

Built Distribution

victron_ble-0.5.1-py3-none-any.whl (17.2 kB view details)

Uploaded Python 3

File details

Details for the file victron_ble-0.5.1.tar.gz.

File metadata

  • Download URL: victron_ble-0.5.1.tar.gz
  • Upload date:
  • Size: 18.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for victron_ble-0.5.1.tar.gz
Algorithm Hash digest
SHA256 3aa5a65dee01e3b8f182c98464a2a59b9a9efc6b4344407d7b14370eb1651a14
MD5 1d0bd9ba9e51b61aa8ebe96ef699b1f2
BLAKE2b-256 85ad9a1db7a54c7f0a2ed3f358eb2d0d66d493784eb4e5980f4383ec03148536

See more details on using hashes here.

File details

Details for the file victron_ble-0.5.1-py3-none-any.whl.

File metadata

  • Download URL: victron_ble-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 17.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for victron_ble-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 36007e9f5f65bb280b3e2fe7c97ba4e0da976427ca2758f7574aee0585086134
MD5 1e9f0ddec88aed28944a9e8963e74498
BLAKE2b-256 12349f6c29dae5bcf9831d934e1ec78894ba905f21eb25712a33e229e57a3730

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page