Emit MQTT events from Victron Energy Solar Charger via victron-ble bluetooth lib
Emit MQTT events from Victron Energy Smart Devices via victron-ble
Tested with:
Scrrenshot from Home Assistant:
More screenshots here: https://github.com/jedie/jedie.github.io/blob/master/screenshots/victron-ble2mqtt/README.md
victron_ble
used Bleak and the Linux backend of Bleak communicates with BlueZ over DBus. So you have to install this, e.g.:
~$ sudo apt install bluez
Clone the sources and just call the CLI to create a Python Virtualenv, e.g.:
~$ git clone https://github.com/jedie/victron-ble2mqtt.git
~$ cd victron-ble2mqtt
~/victron-ble2mqtt$ ./cli.py --help
Usage: ./cli.py [OPTIONS] COMMAND [ARGS]...
╭─ Options ────────────────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────────────────────╮
│ debug-read Read data from devices and print them. Device keys are used from config file, if │
│ not given. │
│ discover Discover Victron devices with Instant Readout │
│ edit-settings Edit the settings file. On first call: Create the default one. │
│ print-settings Display (anonymized) MQTT server username and password │
│ publish-loop Publish MQTT messages in endless loop (Entrypoint from systemd) │
│ systemd-debug Print Systemd service template + context + rendered file content. │
│ systemd-remove Remove Systemd service file. (May need sudo) │
│ systemd-setup Write Systemd service file, enable it and (re-)start the service. (May need │
│ sudo) │
│ systemd-status Display status of systemd service. (May need sudo) │
│ systemd-stop Stops the systemd service. (May need sudo) │
│ version Print version and exit │
│ wifi-info Just display the WiFi info │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
Usage: ./dev-cli.py [OPTIONS] COMMAND [ARGS]...
╭─ Options ────────────────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────────────────────╮
│ check-code-style Check code style by calling darker + flake8 │
│ coverage Run tests and show coverage report. │
│ fix-code-style Fix code style of all cli_base source code files via darker │
│ install Run pip-sync and install 'cli_base' via pip as editable. │
│ mypy Run Mypy (configured in pyproject.toml) │
│ pip-audit Run pip-audit check against current requirements files │
│ publish Build and upload this project to PyPi │
│ test Run unittests │
│ tox Run tox │
│ update Update "requirements*.txt" dependencies files │
│ update-test-snapshot-files Update all test snapshot files (by remove and recreate all snapshot │
│ files) │
│ version Print version and exit │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
Detect your device first, e.g.:
~/victron-ble2mqtt$ ./cli.py discover
...
{
'name': 'SmartSolar HQ2248AM79D',
'address': 'E7:37:97:XX:XX:XX',
'details': {
'path': '/org/bluez/hci0/dev_E7_37_97_XX_XX_XX',
'props': {
'Address': 'E7:37:97:XX:XX:XX',
'AddressType': 'random',
'Name': 'SmartSolar HQ2248AM79D',
'Alias': 'SmartSolar HQ2248AM79D',
'Paired': False,
'Trusted': False,
'Blocked': False,
'LegacyPairing': False,
'RSSI': -89,
'Connected': False,
'UUIDs': [],
'Adapter': '/org/bluez/hci0',
'ManufacturerData': {737: bytearray(b'...')},
'ServicesResolved': False
}
}
}
...
(Hit Ctrl-C to abort)
You need the device keys of all Victron Energy Smart Devices you want to monitor.
The easiest way to get the keys: Install the official Victron Smartphone App and copy&paste the keys:
SmartSolar Bluetooth Interface
SHOW
at Instant readout via Bluetooth
/ Encryption data
(I send the key via Signal as "my note" and use the Desktop Signal app to receive the key on my Computer)
See also: https://community.victronenergy.com/questions/187303/victron-bluetooth-advertising-protocol.html
Just call edit-settings
command, e.g.:
~/victron-ble2mqtt$ ./cli.py edit-settings
At least insert your MQTT settings and all devices keys.
Start publish MQTT endless look, just call publish-loop
command, e.g.:
~/victron-ble2mqtt$ ./cli.py publish-loop -vv
Check systemd setup:
~/victron-ble2mqtt$ ./cli.py systemd-debug
Setup services:
~/victron-ble2mqtt$ ./cli.py systemd-setup
After this the MQTT publising runs and will be started on boot.
Check the services:
~/victron-ble2mqtt$ ./cli.py systemd-status
You must edit your settings:
device_address
(The Device MAC address) was removeddevice_key
is replaced by device_keys
a list of device keysJust insert the keys of all Victron Energy Smart Devices you want to monitor.