diff --git a/esphome/components/packet_interface/layers/basic_session.py b/esphome/components/packet_interface/layers/basic_session.py index d311b431a16..de32aaffd97 100644 --- a/esphome/components/packet_interface/layers/basic_session.py +++ b/esphome/components/packet_interface/layers/basic_session.py @@ -38,9 +38,12 @@ BASIC_SESSION_SCHEMA = cv.All( cv.GenerateID(): cv.declare_id(BasicSession), cv.Optional(CONF_KEEP_ALIVE, default="10s"): cv.All( cv.positive_time_period_milliseconds, - cv.Range(min=cv.TimePeriod(seconds=1)), + cv.Range(min=cv.TimePeriod(seconds=1), max=cv.TimePeriod(hours=1)), + ), + cv.Optional(CONF_TIMEOUT): cv.All( + cv.positive_time_period_milliseconds, + cv.Range(max=cv.TimePeriod(hours=3)), ), - cv.Optional(CONF_TIMEOUT): cv.positive_time_period_milliseconds, cv.Optional(CONF_BINARY_SENSOR): binary_sensor.binary_sensor_schema( device_class=DEVICE_CLASS_CONNECTIVITY, entity_category=ENTITY_CATEGORY_DIAGNOSTIC, diff --git a/tests/unit_tests/test_packet_interface.py b/tests/unit_tests/test_packet_interface.py index f7fc8d4b5a2..0688cb16e53 100644 --- a/tests/unit_tests/test_packet_interface.py +++ b/tests/unit_tests/test_packet_interface.py @@ -142,6 +142,10 @@ def test_session_timeout(setup_core) -> None: ) with pytest.raises(cv.Invalid): uart_packet_interface.CONFIG_SCHEMA({CONF_SESSION: {CONF_KEEP_ALIVE: "500ms"}}) + with pytest.raises(cv.Invalid): + uart_packet_interface.CONFIG_SCHEMA({CONF_SESSION: {CONF_KEEP_ALIVE: "2h"}}) + with pytest.raises(cv.Invalid): + uart_packet_interface.CONFIG_SCHEMA({CONF_SESSION: {"timeout": "4h"}}) def test_encryption_key_only(setup_core) -> None: