From 1467b704b884043435a9ea7f26fff84f75c6f217 Mon Sep 17 00:00:00 2001 From: Clyde Stubbs <2366188+clydebarrow@users.noreply.github.com> Date: Tue, 10 Jun 2025 18:47:08 +1000 Subject: [PATCH] [lvgl] Fix templated argument to `lvgl.is_idle` (#9014) --- esphome/components/lvgl/automation.py | 6 +++--- tests/components/lvgl/lvgl-package.yaml | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/esphome/components/lvgl/automation.py b/esphome/components/lvgl/automation.py index f49356604b..cc0f833ced 100644 --- a/esphome/components/lvgl/automation.py +++ b/esphome/components/lvgl/automation.py @@ -21,7 +21,7 @@ from .defines import ( literal, static_cast, ) -from .lv_validation import lv_bool, lv_color, lv_image, opacity +from .lv_validation import lv_bool, lv_color, lv_image, lv_milliseconds, opacity from .lvcode import ( LVGL_COMP_ARG, UPDATE_EVENT, @@ -129,14 +129,14 @@ async def lvgl_is_paused(config, condition_id, template_arg, args): LVGL_SCHEMA.extend( { cv.Required(CONF_TIMEOUT): cv.templatable( - cv.positive_time_period_milliseconds + lv_milliseconds, ) } ), ) async def lvgl_is_idle(config, condition_id, template_arg, args): lvgl = config[CONF_LVGL_ID] - timeout = await cg.templatable(config[CONF_TIMEOUT], [], cg.uint32) + timeout = await lv_milliseconds.process(config[CONF_TIMEOUT]) async with LambdaContext(LVGL_COMP_ARG, return_type=cg.bool_) as context: lv_add(ReturnStatement(lvgl_comp.is_idle(timeout))) var = cg.new_Pvariable( diff --git a/tests/components/lvgl/lvgl-package.yaml b/tests/components/lvgl/lvgl-package.yaml index c77983461d..d8452bdd2a 100644 --- a/tests/components/lvgl/lvgl-package.yaml +++ b/tests/components/lvgl/lvgl-package.yaml @@ -170,6 +170,12 @@ lvgl: lvgl.page.is_showing: page1 then: logger.log: "Yes, page1 showing" + - if: + condition: + lvgl.is_idle: + timeout: !lambda return 5000; + then: + logger.log: LVGL is idle on_unload: - logger.log: page unloaded - lvgl.widget.focus: mark