Skip to content

Commit 38c2451

Browse files
authored
Merge pull request #1 from humppafreak/add-dcdc-converter
Add dcdc converter
2 parents 10584a4 + 1633613 commit 38c2451

File tree

2 files changed

+45
-1
lines changed

2 files changed

+45
-1
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ Currently supported:
1111

1212
* BMV 712 Battery Monitors.
1313
* BlueSolar MPPT chargers (but untested in production).
14+
* Orion Smart DC/DC chargers/converters.
1415

1516
## Installation
1617

plugin.py

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from typing import Optional
99

1010
from bleak.backends.device import BLEDevice
11-
from victron_ble.devices import AuxMode, BatteryMonitor, SolarCharger
11+
from victron_ble.devices import AuxMode, BatteryMonitor, SolarCharger, DcDcConverter
1212
from victron_ble.exceptions import AdvertisementKeyMissingError, UnknownDeviceError
1313
from victron_ble.scanner import Scanner
1414

@@ -51,6 +51,7 @@ def callback(self, bl_device: BLEDevice, raw_data: bytes):
5151
transformers = {
5252
BatteryMonitor: self.transform_battery_data,
5353
SolarCharger: self.transform_solar_charger_data,
54+
DcDcConverter: self.transform_dcdc_converter_data,
5455
}
5556
for device_type, transformer in transformers.items():
5657
if isinstance(device, device_type):
@@ -172,6 +173,48 @@ def transform_solar_charger_data(
172173
],
173174
}
174175

176+
def transform_dcdc_converter_data(
177+
self,
178+
bl_device: BLEDevice,
179+
cfg_device: ConfiguredDevice,
180+
data: DcDcConverter,
181+
id_: str,
182+
):
183+
return {
184+
"updates": [
185+
{
186+
"source": {
187+
"label": "Victron",
188+
"type": "Bluetooth",
189+
"src": bl_device.address,
190+
},
191+
"timestamp": datetime.datetime.utcnow().isoformat() + "Z",
192+
"values": [
193+
{
194+
"path": f"electrical.converters.{id_}.chargingMode",
195+
"value": data.get_charge_state().name.lower(),
196+
},
197+
{
198+
"path": f"electrical.converters.{id_}.chargerError",
199+
"value": data.get_charger_error().name.lower(),
200+
},
201+
{
202+
"path": f"electrical.converters.{id_}.input.voltage",
203+
"value": data.get_input_voltage(),
204+
},
205+
{
206+
"path": f"electrical.converters.{id_}.output.voltage",
207+
"value": data.get_output_voltage(),
208+
},
209+
{
210+
"path": f"electrical.converters.{id_}.chargerOffReason",
211+
"value": data.get_off_reason().name.lower(),
212+
},
213+
],
214+
},
215+
],
216+
}
217+
175218

176219
async def monitor(devices):
177220
scanner = SignalKScanner(devices)

0 commit comments

Comments
 (0)