Add support for multiple serial devices

This commit is contained in:
2022-06-30 09:20:13 -07:00
parent f6c206e0b1
commit 87e337a69d
8 changed files with 85 additions and 23 deletions

View File

@ -15,6 +15,7 @@ from barcode_server.notifier import BarcodeNotifier
from barcode_server.notifier.http import HttpNotifier
from barcode_server.notifier.mqtt import MQTTNotifier
from barcode_server.notifier.serial import SerialNotifier
from barcode_server.notifier.file import FileNotifier
from barcode_server.notifier.ws import WebsocketNotifier
from barcode_server.stats import REST_TIME_DEVICES, WEBSOCKET_CLIENT_COUNT
from barcode_server.util import input_device_to_dict
@ -23,7 +24,7 @@ LOGGER = logging.getLogger(__name__)
routes = web.RouteTableDef()
class Webserver:
class WebServer:
def __init__(self, config: AppConfig, barcode_reader: BarcodeReader):
self.config = config
@ -35,9 +36,8 @@ class Webserver:
self.barcode_reader = barcode_reader
self.barcode_reader.add_listener(self.on_barcode)
self.usb = {}
self.notifiers: Dict[str, BarcodeNotifier] = {}
if config.HTTP_URL.value is not None:
http_notifier = HttpNotifier(
config.HTTP_METHOD.value,
@ -58,13 +58,12 @@ class Webserver:
)
self.notifiers["mqtt"] = mqtt_notifier
if config.SERIAL_PATH.value is not None:
self.usb = serial.Serial(config.SERIAL_PATH.value, 9600, timeout=2)
serial_notifier = SerialNotifier(config.SERIAL_PATH.value, self.usb)
if config.SERIAL_PATH_A.value is not None:
serial_notifier = SerialNotifier(config.SERIAL_PATH_A.value, config.SERIAL_PATH_B.value)
self.notifiers["serial"] = serial_notifier
if config.FILE_PATH.value is not None:
file_notifier = SerialNotifier(config.FILE_PATH.value)
file_notifier = FileNotifier(config.FILE_PATH.value)
self.notifiers["file"] = file_notifier
async def start(self):