From 3c82aedc53a0a6e75f675187466f985ee9d67ff7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eric=20H=C3=A4rtel?= <60009336+Haerteleric@users.noreply.github.com> Date: Fri, 10 Nov 2023 01:26:10 +0100 Subject: [PATCH] added a Baudrate Variable to config for Baudrate selection (#229) * added a Baudrate Variable to config for Baudrate selection * changed default baudrate for backw. compatibility * ran pre-commit * Include baudrate in unit tests --------- Co-authored-by: puddly <32534428+puddly@users.noreply.github.com> --- tests/test_uart.py | 5 ++++- zigpy_deconz/config.py | 7 +++++++ zigpy_deconz/uart.py | 10 ++++------ 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/tests/test_uart.py b/tests/test_uart.py index 6049043..7082869 100644 --- a/tests/test_uart.py +++ b/tests/test_uart.py @@ -8,6 +8,7 @@ import zigpy.serial from zigpy_deconz import uart +from zigpy_deconz.config import CONF_DEVICE_BAUDRATE @pytest.fixture @@ -27,7 +28,9 @@ async def mock_conn(loop, protocol_factory, **kwargs): monkeypatch.setattr(zigpy.serial, "create_serial_connection", mock_conn) - await uart.connect({CONF_DEVICE_PATH: "/dev/null"}, api) + await uart.connect( + {CONF_DEVICE_PATH: "/dev/null", CONF_DEVICE_BAUDRATE: 115200}, api + ) def test_send(gw): diff --git a/zigpy_deconz/config.py b/zigpy_deconz/config.py index 7e1b8f4..58911bc 100644 --- a/zigpy_deconz/config.py +++ b/zigpy_deconz/config.py @@ -26,8 +26,15 @@ CONF_WATCHDOG_TTL = "watchdog_ttl" CONF_WATCHDOG_TTL_DEFAULT = 600 +CONF_DEVICE_BAUDRATE = "baudrate" + +SCHEMA_DEVICE = SCHEMA_DEVICE.extend( + {vol.Optional(CONF_DEVICE_BAUDRATE, default=38400): int} +) + CONFIG_SCHEMA = CONFIG_SCHEMA.extend( { + vol.Required(CONF_DEVICE): SCHEMA_DEVICE, vol.Optional(CONF_WATCHDOG_TTL, default=CONF_WATCHDOG_TTL_DEFAULT): vol.All( int, vol.Range(min=180) ), diff --git a/zigpy_deconz/uart.py b/zigpy_deconz/uart.py index 5209d80..2bb25c9 100644 --- a/zigpy_deconz/uart.py +++ b/zigpy_deconz/uart.py @@ -5,13 +5,11 @@ import logging from typing import Callable, Dict -from zigpy.config import CONF_DEVICE_PATH import zigpy.serial -LOGGER = logging.getLogger(__name__) - +from zigpy_deconz.config import CONF_DEVICE_BAUDRATE, CONF_DEVICE_PATH -DECONZ_BAUDRATE = 38400 +LOGGER = logging.getLogger(__name__) class Gateway(asyncio.Protocol): @@ -124,7 +122,7 @@ def _checksum(self, data): return bytes(ret) -async def connect(config: Dict[str, str], api: Callable) -> Gateway: +async def connect(config: Dict[str, any], api: Callable) -> Gateway: loop = asyncio.get_running_loop() connected_future = loop.create_future() protocol = Gateway(api, connected_future) @@ -135,7 +133,7 @@ async def connect(config: Dict[str, str], api: Callable) -> Gateway: loop=loop, protocol_factory=lambda: protocol, url=config[CONF_DEVICE_PATH], - baudrate=DECONZ_BAUDRATE, + baudrate=config[CONF_DEVICE_BAUDRATE], xonxoff=False, )