From fb95c7061da60ac0e7f08633bcc6c284933f9276 Mon Sep 17 00:00:00 2001 From: Viktor Walter Date: Sat, 10 Jun 2023 15:29:16 +0200 Subject: [PATCH 1/3] Making the device selectable for the find_device function --- src/veles/device/find.py | 6 +++--- src/veles/device/generic.py | 9 ++++++--- src/veles/device/sensor_wired.py | 2 +- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/veles/device/find.py b/src/veles/device/find.py index fa1e35d..310cf1e 100644 --- a/src/veles/device/find.py +++ b/src/veles/device/find.py @@ -1,5 +1,5 @@ from typing import Final, Dict, Any, TypeVar, Type, Iterable -from .generic import Device, NoResponseError +from .generic import Device from .sensor_wired import SensorWiredIAQ, SensorWiredRHT # links device identifiers to its class @@ -11,10 +11,10 @@ DEVICE_IDENTIFIERS: Final[Dict[int, Device]] = { T = TypeVar("T", bound=Device) -def find_devices(device_cls: Type[T], address_space: Iterable[Any]) -> list[T]: +def find_devices(device_cls: Type[T], address_space: Iterable[Any], dev="/dev/rs485", baudrate=19200) -> list[T]: """ Look for devices in given address space """ - return list(filter(device_cls.probe, address_space)) + return list(filter(lambda x: device_cls.probe(x,dev,baudrate), address_space)) # TODO add device args diff --git a/src/veles/device/generic.py b/src/veles/device/generic.py index dcc43ed..513187a 100644 --- a/src/veles/device/generic.py +++ b/src/veles/device/generic.py @@ -3,8 +3,10 @@ from dataclasses import dataclass from typing import Dict, Any from abc import ABC, abstractmethod +import sys +py310 = sys.version_info.minor >= 10 or sys.version_info.major > 3 -@dataclass(slots=True) +@dataclass(**({"slots": True} if py310 else {})) class ReadoutErrorCounter: """Class used to track readout errors""" @@ -51,15 +53,16 @@ class Device(ABC): """ @classmethod - def probe(cls, address) -> bool: + def probe(cls, address, dev="/dev/rs485", baudrate=19200) -> bool: """ Probe given address, return True if device detected, False otherwise """ # try instantiating; this raises NoResponseError # if device not detected + print(f'Probing address {address}') try: - _ = cls(address) + _ = cls(address,dev,baudrate) except NoResponseError: return False return True diff --git a/src/veles/device/sensor_wired.py b/src/veles/device/sensor_wired.py index a82986c..056332e 100644 --- a/src/veles/device/sensor_wired.py +++ b/src/veles/device/sensor_wired.py @@ -83,7 +83,7 @@ class SensorWiredIAQ(ModbusRTUDevice): deleted_registers = list(filter(lambda x: sensor in x, self.input_registers)) _ = list((self.input_registers.pop(x) for x in deleted_registers)) - def __init__(self, modbus_address, baudrate=19200, dev="/dev/rs485"): + def __init__(self, modbus_address, dev="/dev/rs485", baudrate=19200): super().__init__(modbus_address, baudrate, dev) # detect sensor configuration and modify input_registers accordingly # Check if VOC sensor present From 84b02a024fb71d0a19ad8a718535cb6b6761b8fb Mon Sep 17 00:00:00 2001 From: Viktor Walter Date: Sat, 10 Jun 2023 15:33:00 +0200 Subject: [PATCH 2/3] Removing changes that should be in separate PR --- src/veles/device/find.py | 2 +- src/veles/device/generic.py | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/veles/device/find.py b/src/veles/device/find.py index 310cf1e..fe2f48d 100644 --- a/src/veles/device/find.py +++ b/src/veles/device/find.py @@ -1,5 +1,5 @@ from typing import Final, Dict, Any, TypeVar, Type, Iterable -from .generic import Device +from .generic import Device, NoResponseError from .sensor_wired import SensorWiredIAQ, SensorWiredRHT # links device identifiers to its class diff --git a/src/veles/device/generic.py b/src/veles/device/generic.py index 513187a..9beaa8e 100644 --- a/src/veles/device/generic.py +++ b/src/veles/device/generic.py @@ -3,10 +3,7 @@ from dataclasses import dataclass from typing import Dict, Any from abc import ABC, abstractmethod -import sys -py310 = sys.version_info.minor >= 10 or sys.version_info.major > 3 - -@dataclass(**({"slots": True} if py310 else {})) +@dataclass(slots=True) class ReadoutErrorCounter: """Class used to track readout errors""" From 021d0a6b9bcab26272f75eb19f37509024c2b23e Mon Sep 17 00:00:00 2001 From: Viktor Walter Date: Sat, 10 Jun 2023 15:39:05 +0200 Subject: [PATCH 3/3] Removing unnecessary change in generic.py --- src/veles/device/generic.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/veles/device/generic.py b/src/veles/device/generic.py index 9beaa8e..f5b9662 100644 --- a/src/veles/device/generic.py +++ b/src/veles/device/generic.py @@ -3,6 +3,7 @@ from dataclasses import dataclass from typing import Dict, Any from abc import ABC, abstractmethod + @dataclass(slots=True) class ReadoutErrorCounter: """Class used to track readout errors"""