From 6ccdd70fa045ef3422d66ba396067c512b729afd Mon Sep 17 00:00:00 2001 From: Sandor Attila Gerendi Date: Thu, 28 Sep 2023 15:45:35 +0300 Subject: [PATCH] Update scanner.py Added output_callback init argument to Scanner. So one can divert the data received to an external function rather than print --- victron_ble/scanner.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/victron_ble/scanner.py b/victron_ble/scanner.py index d01310e..cbac316 100644 --- a/victron_ble/scanner.py +++ b/victron_ble/scanner.py @@ -64,10 +64,11 @@ def default(self, obj): class Scanner(BaseScanner): - def __init__(self, device_keys: dict[str, str] = {}): + def __init__(self, device_keys: dict[str, str] = {}, output_callback=None): super().__init__() self._device_keys = {k.lower(): v for k, v in device_keys.items()} self._known_devices: dict[str, Device] = {} + self._output_callback = output_callback async def start(self): logger.info(f"Reading data for {list(self._device_keys.keys())}") @@ -112,7 +113,10 @@ def callback(self, ble_device: BLEDevice, raw_data: bytes): "rssi": ble_device.rssi, "payload": parsed, } - print(json.dumps(blob, cls=DeviceDataEncoder, indent=2)) + if self._output_callback is not None: + self._output_callback(blob) + else: + print(json.dumps(blob, cls=DeviceDataEncoder, indent=2)) class DiscoveryScanner(BaseScanner):