From a36e1aab8eb0ad1aaee4b9a4c6c55dd0a2aad730 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 13 May 2025 17:29:00 +1200 Subject: [PATCH] [cover] Update components to use ``cover_schema(...)`` (#8770) --- esphome/components/am43/cover/__init__.py | 9 +-- esphome/components/copy/cover/__init__.py | 19 ++--- esphome/components/current_based/cover.py | 73 ++++++++++--------- esphome/components/endstop/cover.py | 33 +++++---- esphome/components/feedback/cover.py | 71 +++++++++--------- esphome/components/he60r/cover.py | 9 +-- esphome/components/template/cover/__init__.py | 48 ++++++------ esphome/components/time_based/cover.py | 33 +++++---- esphome/components/tormatic/cover.py | 9 +-- esphome/components/tuya/cover/__init__.py | 17 ++--- 10 files changed, 164 insertions(+), 157 deletions(-) diff --git a/esphome/components/am43/cover/__init__.py b/esphome/components/am43/cover/__init__.py index d60f9cd4e7..e4ecf1444f 100644 --- a/esphome/components/am43/cover/__init__.py +++ b/esphome/components/am43/cover/__init__.py @@ -1,7 +1,7 @@ import esphome.codegen as cg from esphome.components import ble_client, cover import esphome.config_validation as cv -from esphome.const import CONF_ID, CONF_PIN +from esphome.const import CONF_PIN CODEOWNERS = ["@buxtronix"] DEPENDENCIES = ["ble_client"] @@ -15,9 +15,9 @@ Am43Component = am43_ns.class_( ) CONFIG_SCHEMA = ( - cover.COVER_SCHEMA.extend( + cover.cover_schema(Am43Component) + .extend( { - cv.GenerateID(): cv.declare_id(Am43Component), cv.Optional(CONF_PIN, default=8888): cv.int_range(min=0, max=0xFFFF), cv.Optional(CONF_INVERT_POSITION, default=False): cv.boolean, } @@ -28,9 +28,8 @@ CONFIG_SCHEMA = ( async def to_code(config): - var = cg.new_Pvariable(config[CONF_ID]) + var = await cover.new_cover(config) cg.add(var.set_pin(config[CONF_PIN])) cg.add(var.set_invert_position(config[CONF_INVERT_POSITION])) await cg.register_component(var, config) - await cover.register_cover(var, config) await ble_client.register_ble_node(var, config) diff --git a/esphome/components/copy/cover/__init__.py b/esphome/components/copy/cover/__init__.py index 7db9034d02..ff5bef5668 100644 --- a/esphome/components/copy/cover/__init__.py +++ b/esphome/components/copy/cover/__init__.py @@ -5,7 +5,6 @@ from esphome.const import ( CONF_DEVICE_CLASS, CONF_ENTITY_CATEGORY, CONF_ICON, - CONF_ID, CONF_SOURCE_ID, ) from esphome.core.entity_helpers import inherit_property_from @@ -15,12 +14,15 @@ from .. import copy_ns CopyCover = copy_ns.class_("CopyCover", cover.Cover, cg.Component) -CONFIG_SCHEMA = cover.COVER_SCHEMA.extend( - { - cv.GenerateID(): cv.declare_id(CopyCover), - cv.Required(CONF_SOURCE_ID): cv.use_id(cover.Cover), - } -).extend(cv.COMPONENT_SCHEMA) +CONFIG_SCHEMA = ( + cover.cover_schema(CopyCover) + .extend( + { + cv.Required(CONF_SOURCE_ID): cv.use_id(cover.Cover), + } + ) + .extend(cv.COMPONENT_SCHEMA) +) FINAL_VALIDATE_SCHEMA = cv.All( inherit_property_from(CONF_ICON, CONF_SOURCE_ID), @@ -30,8 +32,7 @@ FINAL_VALIDATE_SCHEMA = cv.All( async def to_code(config): - var = cg.new_Pvariable(config[CONF_ID]) - await cover.register_cover(var, config) + var = await cover.new_cover(config) await cg.register_component(var, config) source = await cg.get_variable(config[CONF_SOURCE_ID]) diff --git a/esphome/components/current_based/cover.py b/esphome/components/current_based/cover.py index 75f083ef14..99952adb12 100644 --- a/esphome/components/current_based/cover.py +++ b/esphome/components/current_based/cover.py @@ -5,7 +5,6 @@ import esphome.config_validation as cv from esphome.const import ( CONF_CLOSE_ACTION, CONF_CLOSE_DURATION, - CONF_ID, CONF_MAX_DURATION, CONF_OPEN_ACTION, CONF_OPEN_DURATION, @@ -30,45 +29,47 @@ CurrentBasedCover = current_based_ns.class_( "CurrentBasedCover", cover.Cover, cg.Component ) -CONFIG_SCHEMA = cover.COVER_SCHEMA.extend( - { - cv.GenerateID(): cv.declare_id(CurrentBasedCover), - cv.Required(CONF_STOP_ACTION): automation.validate_automation(single=True), - cv.Required(CONF_OPEN_SENSOR): cv.use_id(sensor.Sensor), - cv.Required(CONF_OPEN_MOVING_CURRENT_THRESHOLD): cv.float_range( - min=0, min_included=False - ), - cv.Optional(CONF_OPEN_OBSTACLE_CURRENT_THRESHOLD): cv.float_range( - min=0, min_included=False - ), - cv.Required(CONF_OPEN_ACTION): automation.validate_automation(single=True), - cv.Required(CONF_OPEN_DURATION): cv.positive_time_period_milliseconds, - cv.Required(CONF_CLOSE_SENSOR): cv.use_id(sensor.Sensor), - cv.Required(CONF_CLOSE_MOVING_CURRENT_THRESHOLD): cv.float_range( - min=0, min_included=False - ), - cv.Optional(CONF_CLOSE_OBSTACLE_CURRENT_THRESHOLD): cv.float_range( - min=0, min_included=False - ), - cv.Required(CONF_CLOSE_ACTION): automation.validate_automation(single=True), - cv.Required(CONF_CLOSE_DURATION): cv.positive_time_period_milliseconds, - cv.Optional(CONF_OBSTACLE_ROLLBACK, default="10%"): cv.percentage, - cv.Optional(CONF_MAX_DURATION): cv.positive_time_period_milliseconds, - cv.Optional(CONF_MALFUNCTION_DETECTION, default=True): cv.boolean, - cv.Optional(CONF_MALFUNCTION_ACTION): automation.validate_automation( - single=True - ), - cv.Optional( - CONF_START_SENSING_DELAY, default="500ms" - ): cv.positive_time_period_milliseconds, - } -).extend(cv.COMPONENT_SCHEMA) +CONFIG_SCHEMA = ( + cover.cover_schema(CurrentBasedCover) + .extend( + { + cv.Required(CONF_STOP_ACTION): automation.validate_automation(single=True), + cv.Required(CONF_OPEN_SENSOR): cv.use_id(sensor.Sensor), + cv.Required(CONF_OPEN_MOVING_CURRENT_THRESHOLD): cv.float_range( + min=0, min_included=False + ), + cv.Optional(CONF_OPEN_OBSTACLE_CURRENT_THRESHOLD): cv.float_range( + min=0, min_included=False + ), + cv.Required(CONF_OPEN_ACTION): automation.validate_automation(single=True), + cv.Required(CONF_OPEN_DURATION): cv.positive_time_period_milliseconds, + cv.Required(CONF_CLOSE_SENSOR): cv.use_id(sensor.Sensor), + cv.Required(CONF_CLOSE_MOVING_CURRENT_THRESHOLD): cv.float_range( + min=0, min_included=False + ), + cv.Optional(CONF_CLOSE_OBSTACLE_CURRENT_THRESHOLD): cv.float_range( + min=0, min_included=False + ), + cv.Required(CONF_CLOSE_ACTION): automation.validate_automation(single=True), + cv.Required(CONF_CLOSE_DURATION): cv.positive_time_period_milliseconds, + cv.Optional(CONF_OBSTACLE_ROLLBACK, default="10%"): cv.percentage, + cv.Optional(CONF_MAX_DURATION): cv.positive_time_period_milliseconds, + cv.Optional(CONF_MALFUNCTION_DETECTION, default=True): cv.boolean, + cv.Optional(CONF_MALFUNCTION_ACTION): automation.validate_automation( + single=True + ), + cv.Optional( + CONF_START_SENSING_DELAY, default="500ms" + ): cv.positive_time_period_milliseconds, + } + ) + .extend(cv.COMPONENT_SCHEMA) +) async def to_code(config): - var = cg.new_Pvariable(config[CONF_ID]) + var = await cover.new_cover(config) await cg.register_component(var, config) - await cover.register_cover(var, config) await automation.build_automation( var.get_stop_trigger(), [], config[CONF_STOP_ACTION] diff --git a/esphome/components/endstop/cover.py b/esphome/components/endstop/cover.py index 286c876ff6..c16680b6af 100644 --- a/esphome/components/endstop/cover.py +++ b/esphome/components/endstop/cover.py @@ -6,7 +6,6 @@ from esphome.const import ( CONF_CLOSE_ACTION, CONF_CLOSE_DURATION, CONF_CLOSE_ENDSTOP, - CONF_ID, CONF_MAX_DURATION, CONF_OPEN_ACTION, CONF_OPEN_DURATION, @@ -17,25 +16,27 @@ from esphome.const import ( endstop_ns = cg.esphome_ns.namespace("endstop") EndstopCover = endstop_ns.class_("EndstopCover", cover.Cover, cg.Component) -CONFIG_SCHEMA = cover.COVER_SCHEMA.extend( - { - cv.GenerateID(): cv.declare_id(EndstopCover), - cv.Required(CONF_STOP_ACTION): automation.validate_automation(single=True), - cv.Required(CONF_OPEN_ENDSTOP): cv.use_id(binary_sensor.BinarySensor), - cv.Required(CONF_OPEN_ACTION): automation.validate_automation(single=True), - cv.Required(CONF_OPEN_DURATION): cv.positive_time_period_milliseconds, - cv.Required(CONF_CLOSE_ACTION): automation.validate_automation(single=True), - cv.Required(CONF_CLOSE_ENDSTOP): cv.use_id(binary_sensor.BinarySensor), - cv.Required(CONF_CLOSE_DURATION): cv.positive_time_period_milliseconds, - cv.Optional(CONF_MAX_DURATION): cv.positive_time_period_milliseconds, - } -).extend(cv.COMPONENT_SCHEMA) +CONFIG_SCHEMA = ( + cover.cover_schema(EndstopCover) + .extend( + { + cv.Required(CONF_STOP_ACTION): automation.validate_automation(single=True), + cv.Required(CONF_OPEN_ENDSTOP): cv.use_id(binary_sensor.BinarySensor), + cv.Required(CONF_OPEN_ACTION): automation.validate_automation(single=True), + cv.Required(CONF_OPEN_DURATION): cv.positive_time_period_milliseconds, + cv.Required(CONF_CLOSE_ACTION): automation.validate_automation(single=True), + cv.Required(CONF_CLOSE_ENDSTOP): cv.use_id(binary_sensor.BinarySensor), + cv.Required(CONF_CLOSE_DURATION): cv.positive_time_period_milliseconds, + cv.Optional(CONF_MAX_DURATION): cv.positive_time_period_milliseconds, + } + ) + .extend(cv.COMPONENT_SCHEMA) +) async def to_code(config): - var = cg.new_Pvariable(config[CONF_ID]) + var = await cover.new_cover(config) await cg.register_component(var, config) - await cover.register_cover(var, config) await automation.build_automation( var.get_stop_trigger(), [], config[CONF_STOP_ACTION] diff --git a/esphome/components/feedback/cover.py b/esphome/components/feedback/cover.py index b90374f6e8..856818280f 100644 --- a/esphome/components/feedback/cover.py +++ b/esphome/components/feedback/cover.py @@ -7,7 +7,6 @@ from esphome.const import ( CONF_CLOSE_ACTION, CONF_CLOSE_DURATION, CONF_CLOSE_ENDSTOP, - CONF_ID, CONF_MAX_DURATION, CONF_OPEN_ACTION, CONF_OPEN_DURATION, @@ -50,36 +49,43 @@ def validate_infer_endstop(config): return config -CONFIG_FEEDBACK_COVER_BASE_SCHEMA = cover.COVER_SCHEMA.extend( - { - cv.GenerateID(): cv.declare_id(FeedbackCover), - cv.Required(CONF_STOP_ACTION): automation.validate_automation(single=True), - cv.Required(CONF_OPEN_ACTION): automation.validate_automation(single=True), - cv.Required(CONF_OPEN_DURATION): cv.positive_time_period_milliseconds, - cv.Optional(CONF_OPEN_ENDSTOP): cv.use_id(binary_sensor.BinarySensor), - cv.Optional(CONF_OPEN_SENSOR): cv.use_id(binary_sensor.BinarySensor), - cv.Optional(CONF_OPEN_OBSTACLE_SENSOR): cv.use_id(binary_sensor.BinarySensor), - cv.Required(CONF_CLOSE_ACTION): automation.validate_automation(single=True), - cv.Required(CONF_CLOSE_DURATION): cv.positive_time_period_milliseconds, - cv.Optional(CONF_CLOSE_ENDSTOP): cv.use_id(binary_sensor.BinarySensor), - cv.Optional(CONF_CLOSE_SENSOR): cv.use_id(binary_sensor.BinarySensor), - cv.Optional(CONF_CLOSE_OBSTACLE_SENSOR): cv.use_id(binary_sensor.BinarySensor), - cv.Optional(CONF_MAX_DURATION): cv.positive_time_period_milliseconds, - cv.Optional(CONF_HAS_BUILT_IN_ENDSTOP, default=False): cv.boolean, - cv.Optional(CONF_ASSUMED_STATE): cv.boolean, - cv.Optional( - CONF_UPDATE_INTERVAL, "1000ms" - ): cv.positive_time_period_milliseconds, - cv.Optional(CONF_INFER_ENDSTOP_FROM_MOVEMENT, False): cv.boolean, - cv.Optional( - CONF_DIRECTION_CHANGE_WAIT_TIME - ): cv.positive_time_period_milliseconds, - cv.Optional( - CONF_ACCELERATION_WAIT_TIME, "0s" - ): cv.positive_time_period_milliseconds, - cv.Optional(CONF_OBSTACLE_ROLLBACK, default="10%"): cv.percentage, - }, -).extend(cv.COMPONENT_SCHEMA) +CONFIG_FEEDBACK_COVER_BASE_SCHEMA = ( + cover.cover_schema(FeedbackCover) + .extend( + { + cv.Required(CONF_STOP_ACTION): automation.validate_automation(single=True), + cv.Required(CONF_OPEN_ACTION): automation.validate_automation(single=True), + cv.Required(CONF_OPEN_DURATION): cv.positive_time_period_milliseconds, + cv.Optional(CONF_OPEN_ENDSTOP): cv.use_id(binary_sensor.BinarySensor), + cv.Optional(CONF_OPEN_SENSOR): cv.use_id(binary_sensor.BinarySensor), + cv.Optional(CONF_OPEN_OBSTACLE_SENSOR): cv.use_id( + binary_sensor.BinarySensor + ), + cv.Required(CONF_CLOSE_ACTION): automation.validate_automation(single=True), + cv.Required(CONF_CLOSE_DURATION): cv.positive_time_period_milliseconds, + cv.Optional(CONF_CLOSE_ENDSTOP): cv.use_id(binary_sensor.BinarySensor), + cv.Optional(CONF_CLOSE_SENSOR): cv.use_id(binary_sensor.BinarySensor), + cv.Optional(CONF_CLOSE_OBSTACLE_SENSOR): cv.use_id( + binary_sensor.BinarySensor + ), + cv.Optional(CONF_MAX_DURATION): cv.positive_time_period_milliseconds, + cv.Optional(CONF_HAS_BUILT_IN_ENDSTOP, default=False): cv.boolean, + cv.Optional(CONF_ASSUMED_STATE): cv.boolean, + cv.Optional( + CONF_UPDATE_INTERVAL, "1000ms" + ): cv.positive_time_period_milliseconds, + cv.Optional(CONF_INFER_ENDSTOP_FROM_MOVEMENT, False): cv.boolean, + cv.Optional( + CONF_DIRECTION_CHANGE_WAIT_TIME + ): cv.positive_time_period_milliseconds, + cv.Optional( + CONF_ACCELERATION_WAIT_TIME, "0s" + ): cv.positive_time_period_milliseconds, + cv.Optional(CONF_OBSTACLE_ROLLBACK, default="10%"): cv.percentage, + }, + ) + .extend(cv.COMPONENT_SCHEMA) +) CONFIG_SCHEMA = cv.All( @@ -90,9 +96,8 @@ CONFIG_SCHEMA = cv.All( async def to_code(config): - var = cg.new_Pvariable(config[CONF_ID]) + var = await cover.new_cover(config) await cg.register_component(var, config) - await cover.register_cover(var, config) # STOP await automation.build_automation( diff --git a/esphome/components/he60r/cover.py b/esphome/components/he60r/cover.py index a483d2a571..a3a1b19f5a 100644 --- a/esphome/components/he60r/cover.py +++ b/esphome/components/he60r/cover.py @@ -1,17 +1,17 @@ import esphome.codegen as cg from esphome.components import cover, uart import esphome.config_validation as cv -from esphome.const import CONF_CLOSE_DURATION, CONF_ID, CONF_OPEN_DURATION +from esphome.const import CONF_CLOSE_DURATION, CONF_OPEN_DURATION he60r_ns = cg.esphome_ns.namespace("he60r") HE60rCover = he60r_ns.class_("HE60rCover", cover.Cover, cg.Component) CONFIG_SCHEMA = ( - cover.COVER_SCHEMA.extend(uart.UART_DEVICE_SCHEMA) + cover.cover_schema(HE60rCover) + .extend(uart.UART_DEVICE_SCHEMA) .extend(cv.COMPONENT_SCHEMA) .extend( { - cv.GenerateID(): cv.declare_id(HE60rCover), cv.Optional( CONF_OPEN_DURATION, default="15s" ): cv.positive_time_period_milliseconds, @@ -34,9 +34,8 @@ FINAL_VALIDATE_SCHEMA = uart.final_validate_device_schema( async def to_code(config): - var = cg.new_Pvariable(config[CONF_ID]) + var = await cover.new_cover(config) await cg.register_component(var, config) - await cover.register_cover(var, config) await uart.register_uart_device(var, config) cg.add(var.set_close_duration(config[CONF_CLOSE_DURATION])) diff --git a/esphome/components/template/cover/__init__.py b/esphome/components/template/cover/__init__.py index 5129e6b1af..a4fb0b7021 100644 --- a/esphome/components/template/cover/__init__.py +++ b/esphome/components/template/cover/__init__.py @@ -34,31 +34,37 @@ RESTORE_MODES = { CONF_HAS_POSITION = "has_position" CONF_TOGGLE_ACTION = "toggle_action" -CONFIG_SCHEMA = cover.COVER_SCHEMA.extend( - { - cv.GenerateID(): cv.declare_id(TemplateCover), - cv.Optional(CONF_LAMBDA): cv.returning_lambda, - cv.Optional(CONF_OPTIMISTIC, default=False): cv.boolean, - cv.Optional(CONF_ASSUMED_STATE, default=False): cv.boolean, - cv.Optional(CONF_HAS_POSITION, default=False): cv.boolean, - cv.Optional(CONF_OPEN_ACTION): automation.validate_automation(single=True), - cv.Optional(CONF_CLOSE_ACTION): automation.validate_automation(single=True), - cv.Optional(CONF_STOP_ACTION): automation.validate_automation(single=True), - cv.Optional(CONF_TILT_ACTION): automation.validate_automation(single=True), - cv.Optional(CONF_TILT_LAMBDA): cv.returning_lambda, - cv.Optional(CONF_TOGGLE_ACTION): automation.validate_automation(single=True), - cv.Optional(CONF_POSITION_ACTION): automation.validate_automation(single=True), - cv.Optional(CONF_RESTORE_MODE, default="RESTORE"): cv.enum( - RESTORE_MODES, upper=True - ), - } -).extend(cv.COMPONENT_SCHEMA) +CONFIG_SCHEMA = ( + cover.cover_schema(TemplateCover) + .extend( + { + cv.Optional(CONF_LAMBDA): cv.returning_lambda, + cv.Optional(CONF_OPTIMISTIC, default=False): cv.boolean, + cv.Optional(CONF_ASSUMED_STATE, default=False): cv.boolean, + cv.Optional(CONF_HAS_POSITION, default=False): cv.boolean, + cv.Optional(CONF_OPEN_ACTION): automation.validate_automation(single=True), + cv.Optional(CONF_CLOSE_ACTION): automation.validate_automation(single=True), + cv.Optional(CONF_STOP_ACTION): automation.validate_automation(single=True), + cv.Optional(CONF_TILT_ACTION): automation.validate_automation(single=True), + cv.Optional(CONF_TILT_LAMBDA): cv.returning_lambda, + cv.Optional(CONF_TOGGLE_ACTION): automation.validate_automation( + single=True + ), + cv.Optional(CONF_POSITION_ACTION): automation.validate_automation( + single=True + ), + cv.Optional(CONF_RESTORE_MODE, default="RESTORE"): cv.enum( + RESTORE_MODES, upper=True + ), + } + ) + .extend(cv.COMPONENT_SCHEMA) +) async def to_code(config): - var = cg.new_Pvariable(config[CONF_ID]) + var = await cover.new_cover(config) await cg.register_component(var, config) - await cover.register_cover(var, config) if CONF_LAMBDA in config: template_ = await cg.process_lambda( config[CONF_LAMBDA], [], return_type=cg.optional.template(float) diff --git a/esphome/components/time_based/cover.py b/esphome/components/time_based/cover.py index c723345370..d14332d453 100644 --- a/esphome/components/time_based/cover.py +++ b/esphome/components/time_based/cover.py @@ -6,7 +6,6 @@ from esphome.const import ( CONF_ASSUMED_STATE, CONF_CLOSE_ACTION, CONF_CLOSE_DURATION, - CONF_ID, CONF_OPEN_ACTION, CONF_OPEN_DURATION, CONF_STOP_ACTION, @@ -18,25 +17,27 @@ TimeBasedCover = time_based_ns.class_("TimeBasedCover", cover.Cover, cg.Componen CONF_HAS_BUILT_IN_ENDSTOP = "has_built_in_endstop" CONF_MANUAL_CONTROL = "manual_control" -CONFIG_SCHEMA = cover.COVER_SCHEMA.extend( - { - cv.GenerateID(): cv.declare_id(TimeBasedCover), - cv.Required(CONF_STOP_ACTION): automation.validate_automation(single=True), - cv.Required(CONF_OPEN_ACTION): automation.validate_automation(single=True), - cv.Required(CONF_OPEN_DURATION): cv.positive_time_period_milliseconds, - cv.Required(CONF_CLOSE_ACTION): automation.validate_automation(single=True), - cv.Required(CONF_CLOSE_DURATION): cv.positive_time_period_milliseconds, - cv.Optional(CONF_HAS_BUILT_IN_ENDSTOP, default=False): cv.boolean, - cv.Optional(CONF_MANUAL_CONTROL, default=False): cv.boolean, - cv.Optional(CONF_ASSUMED_STATE, default=True): cv.boolean, - } -).extend(cv.COMPONENT_SCHEMA) +CONFIG_SCHEMA = ( + cover.cover_schema(TimeBasedCover) + .extend( + { + cv.Required(CONF_STOP_ACTION): automation.validate_automation(single=True), + cv.Required(CONF_OPEN_ACTION): automation.validate_automation(single=True), + cv.Required(CONF_OPEN_DURATION): cv.positive_time_period_milliseconds, + cv.Required(CONF_CLOSE_ACTION): automation.validate_automation(single=True), + cv.Required(CONF_CLOSE_DURATION): cv.positive_time_period_milliseconds, + cv.Optional(CONF_HAS_BUILT_IN_ENDSTOP, default=False): cv.boolean, + cv.Optional(CONF_MANUAL_CONTROL, default=False): cv.boolean, + cv.Optional(CONF_ASSUMED_STATE, default=True): cv.boolean, + } + ) + .extend(cv.COMPONENT_SCHEMA) +) async def to_code(config): - var = cg.new_Pvariable(config[CONF_ID]) + var = await cover.new_cover(config) await cg.register_component(var, config) - await cover.register_cover(var, config) await automation.build_automation( var.get_stop_trigger(), [], config[CONF_STOP_ACTION] diff --git a/esphome/components/tormatic/cover.py b/esphome/components/tormatic/cover.py index 627ae6b63d..447920326b 100644 --- a/esphome/components/tormatic/cover.py +++ b/esphome/components/tormatic/cover.py @@ -1,17 +1,17 @@ import esphome.codegen as cg from esphome.components import cover, uart import esphome.config_validation as cv -from esphome.const import CONF_CLOSE_DURATION, CONF_ID, CONF_OPEN_DURATION +from esphome.const import CONF_CLOSE_DURATION, CONF_OPEN_DURATION tormatic_ns = cg.esphome_ns.namespace("tormatic") Tormatic = tormatic_ns.class_("Tormatic", cover.Cover, cg.PollingComponent) CONFIG_SCHEMA = ( - cover.COVER_SCHEMA.extend(uart.UART_DEVICE_SCHEMA) + cover.cover_schema(Tormatic) + .extend(uart.UART_DEVICE_SCHEMA) .extend(cv.polling_component_schema("300ms")) .extend( { - cv.GenerateID(): cv.declare_id(Tormatic), cv.Optional( CONF_OPEN_DURATION, default="15s" ): cv.positive_time_period_milliseconds, @@ -34,9 +34,8 @@ FINAL_VALIDATE_SCHEMA = uart.final_validate_device_schema( async def to_code(config): - var = cg.new_Pvariable(config[CONF_ID]) + var = await cover.new_cover(config) await cg.register_component(var, config) - await cover.register_cover(var, config) await uart.register_uart_device(var, config) cg.add(var.set_close_duration(config[CONF_CLOSE_DURATION])) diff --git a/esphome/components/tuya/cover/__init__.py b/esphome/components/tuya/cover/__init__.py index 61029b6daa..8c610c0272 100644 --- a/esphome/components/tuya/cover/__init__.py +++ b/esphome/components/tuya/cover/__init__.py @@ -1,12 +1,7 @@ import esphome.codegen as cg from esphome.components import cover import esphome.config_validation as cv -from esphome.const import ( - CONF_MAX_VALUE, - CONF_MIN_VALUE, - CONF_OUTPUT_ID, - CONF_RESTORE_MODE, -) +from esphome.const import CONF_MAX_VALUE, CONF_MIN_VALUE, CONF_RESTORE_MODE from .. import CONF_TUYA_ID, Tuya, tuya_ns @@ -38,9 +33,9 @@ def validate_range(config): CONFIG_SCHEMA = cv.All( - cover.COVER_SCHEMA.extend( + cover.cover_schema(TuyaCover) + .extend( { - cv.GenerateID(CONF_OUTPUT_ID): cv.declare_id(TuyaCover), cv.GenerateID(CONF_TUYA_ID): cv.use_id(Tuya), cv.Optional(CONF_CONTROL_DATAPOINT): cv.uint8_t, cv.Optional(CONF_DIRECTION_DATAPOINT): cv.uint8_t, @@ -54,15 +49,15 @@ CONFIG_SCHEMA = cv.All( RESTORE_MODES, upper=True ), }, - ).extend(cv.COMPONENT_SCHEMA), + ) + .extend(cv.COMPONENT_SCHEMA), validate_range, ) async def to_code(config): - var = cg.new_Pvariable(config[CONF_OUTPUT_ID]) + var = await cover.new_cover(config) await cg.register_component(var, config) - await cover.register_cover(var, config) if CONF_CONTROL_DATAPOINT in config: cg.add(var.set_control_id(config[CONF_CONTROL_DATAPOINT]))