跳转到主要内容

Python API读取Victron即时读数广告

项目描述


victron_ble

一个Python库,用于解析Victron设备发出的即时读数广告数据。

免责声明:此软件不是Victron官方支持的接口,提供完全“原样”。

支持设备

  • SmartShunt 500A/500mv和BMV-712/702提供以下数据
    • 电压
    • 警报状态
    • 电流
    • 剩余时间
    • 充电状态(%)
    • 消耗安时数
    • 辅助输入(温度、中点电压或启动电池电压)
  • 智能电池感知
    • 电压
    • 温度(°C)
  • 太阳能充电器(与BlueSolar 75/15测试过)
    • 充电器状态(关闭、吸收、浮充)
    • 电池电压(V)
    • 电池充电电流(A)
    • 太阳能功率(W)
    • 今日产出(Wh)
    • 外部设备负载(A)

如果您想支持对其他设备的开发,请考虑赞助此项目

从PyPI安装

pip install victron_ble

用法

为了能够解密广告内容,您首先需要从官方Victron应用程序获取每个设备的加密密钥。此方法因平台而异,下面的说明如下

获取密钥

OSX

MacOS的bleak后端 使用蓝牙UUID地址而不是更传统的MAC地址来识别蓝牙设备。此UUID地址通常是扫描的设备和正在扫描的设备的唯一标识,因此不能用于从另一台计算机连接到同一设备。

如果您将在与您有Victron应用程序的同一台Mac计算机上使用victron-ble,请按照以下说明检索地址UUID和广告密钥

  1. 从Mac App Store安装Victron应用程序
  2. 至少配对一次您的设备以传输密钥
  3. 在终端中运行以下命令以转储已知密钥(通过Homebrew安装sqlite3
 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
❯

如果您打算在除了安装了Victron应用程序的计算机(例如Raspberry Pi)以外的其他非MacOS计算机上使用victron-ble,请按照以下说明获取蓝牙MAC地址和广告密钥

  1. 从Mac App Store安装Victron应用程序
  2. 至少配对一次您的设备以传输密钥
  3. 在终端中运行以下命令以转储已知密钥(通过Homebrew安装sqlite3
 sqlite3 ~/Library/Containers/com.victronenergy.victronconnect.mac/Data/Library/Application\ Support/Victron\ Energy/Victron\ Connect/d25b6546b47ebb21a04ff86a2c4fbb76.sqlite 'select macAddress,advertisementKey from advertisementKeys'

a0f478020fe1|0df4d0395b7d1a876c0c33ecb9e70dcd
❯

Linux

  1. 从Victron网站下载Victron AppImage应用程序。
  2. 至少配对一次您的设备以传输密钥
  3. 从终端运行以下命令以导出已知密钥(通过软件包管理器安装sqlite3
 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. 从Victron网站下载VictronConnect安装程序并安装。
  2. 至少配对一次您的设备以传输密钥
  3. 打开资源管理器,导航到%AppData%\Local\Victron Energy\Victron Connect\
  4. 在您选择的网页浏览器中打开SQLite Viewer
  5. 将资源管理器中的d25b6546b47ebb21a04ff86a2c4fbb76.sqlite文件拖放到SQLite Viewer窗口中

读取数据

该项目附带一个独立的CLI,可用于将设备数据打印到控制台。

# 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
...

要将此项目作为库使用,您可以导入特定于您的设备的解析器

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>)

开发

如果您想支持新设备,请收集以下信息并在GitHub上创建新的issue

  1. 运行victron-ble discover以找到要支持的设备的ID
  2. 运行victron-ble dump <ID>并收集官方应用程序即时读数的相应截图以识别当前值

关于拉取请求

阅读CONTRIBUTING.md文件。

贡献者

特别感谢https://github.com/rochacbruno/python-project-template提供的项目模板

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪一个,请了解有关安装包的更多信息。

源分发

victron_ble-0.6.0.tar.gz (20.2 kB 查看哈希)

上传时间:

构建分发

victron_ble-0.6.0-py3-none-any.whl (19.0 kB 查看哈希)

上传时间: Python 3

支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面