mirror of
https://github.com/esphome/esphome.git
synced 2025-07-28 14:16:40 +00:00
[cover] Update components to use `cover_schema(...)
` (#8770)
This commit is contained in:
parent
864ae7a56c
commit
a36e1aab8e
@ -1,7 +1,7 @@
|
|||||||
import esphome.codegen as cg
|
import esphome.codegen as cg
|
||||||
from esphome.components import ble_client, cover
|
from esphome.components import ble_client, cover
|
||||||
import esphome.config_validation as cv
|
import esphome.config_validation as cv
|
||||||
from esphome.const import CONF_ID, CONF_PIN
|
from esphome.const import CONF_PIN
|
||||||
|
|
||||||
CODEOWNERS = ["@buxtronix"]
|
CODEOWNERS = ["@buxtronix"]
|
||||||
DEPENDENCIES = ["ble_client"]
|
DEPENDENCIES = ["ble_client"]
|
||||||
@ -15,9 +15,9 @@ Am43Component = am43_ns.class_(
|
|||||||
)
|
)
|
||||||
|
|
||||||
CONFIG_SCHEMA = (
|
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_PIN, default=8888): cv.int_range(min=0, max=0xFFFF),
|
||||||
cv.Optional(CONF_INVERT_POSITION, default=False): cv.boolean,
|
cv.Optional(CONF_INVERT_POSITION, default=False): cv.boolean,
|
||||||
}
|
}
|
||||||
@ -28,9 +28,8 @@ CONFIG_SCHEMA = (
|
|||||||
|
|
||||||
|
|
||||||
async def to_code(config):
|
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_pin(config[CONF_PIN]))
|
||||||
cg.add(var.set_invert_position(config[CONF_INVERT_POSITION]))
|
cg.add(var.set_invert_position(config[CONF_INVERT_POSITION]))
|
||||||
await cg.register_component(var, config)
|
await cg.register_component(var, config)
|
||||||
await cover.register_cover(var, config)
|
|
||||||
await ble_client.register_ble_node(var, config)
|
await ble_client.register_ble_node(var, config)
|
||||||
|
@ -5,7 +5,6 @@ from esphome.const import (
|
|||||||
CONF_DEVICE_CLASS,
|
CONF_DEVICE_CLASS,
|
||||||
CONF_ENTITY_CATEGORY,
|
CONF_ENTITY_CATEGORY,
|
||||||
CONF_ICON,
|
CONF_ICON,
|
||||||
CONF_ID,
|
|
||||||
CONF_SOURCE_ID,
|
CONF_SOURCE_ID,
|
||||||
)
|
)
|
||||||
from esphome.core.entity_helpers import inherit_property_from
|
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)
|
CopyCover = copy_ns.class_("CopyCover", cover.Cover, cg.Component)
|
||||||
|
|
||||||
|
|
||||||
CONFIG_SCHEMA = cover.COVER_SCHEMA.extend(
|
CONFIG_SCHEMA = (
|
||||||
{
|
cover.cover_schema(CopyCover)
|
||||||
cv.GenerateID(): cv.declare_id(CopyCover),
|
.extend(
|
||||||
cv.Required(CONF_SOURCE_ID): cv.use_id(cover.Cover),
|
{
|
||||||
}
|
cv.Required(CONF_SOURCE_ID): cv.use_id(cover.Cover),
|
||||||
).extend(cv.COMPONENT_SCHEMA)
|
}
|
||||||
|
)
|
||||||
|
.extend(cv.COMPONENT_SCHEMA)
|
||||||
|
)
|
||||||
|
|
||||||
FINAL_VALIDATE_SCHEMA = cv.All(
|
FINAL_VALIDATE_SCHEMA = cv.All(
|
||||||
inherit_property_from(CONF_ICON, CONF_SOURCE_ID),
|
inherit_property_from(CONF_ICON, CONF_SOURCE_ID),
|
||||||
@ -30,8 +32,7 @@ FINAL_VALIDATE_SCHEMA = cv.All(
|
|||||||
|
|
||||||
|
|
||||||
async def to_code(config):
|
async def to_code(config):
|
||||||
var = cg.new_Pvariable(config[CONF_ID])
|
var = await cover.new_cover(config)
|
||||||
await cover.register_cover(var, config)
|
|
||||||
await cg.register_component(var, config)
|
await cg.register_component(var, config)
|
||||||
|
|
||||||
source = await cg.get_variable(config[CONF_SOURCE_ID])
|
source = await cg.get_variable(config[CONF_SOURCE_ID])
|
||||||
|
@ -5,7 +5,6 @@ import esphome.config_validation as cv
|
|||||||
from esphome.const import (
|
from esphome.const import (
|
||||||
CONF_CLOSE_ACTION,
|
CONF_CLOSE_ACTION,
|
||||||
CONF_CLOSE_DURATION,
|
CONF_CLOSE_DURATION,
|
||||||
CONF_ID,
|
|
||||||
CONF_MAX_DURATION,
|
CONF_MAX_DURATION,
|
||||||
CONF_OPEN_ACTION,
|
CONF_OPEN_ACTION,
|
||||||
CONF_OPEN_DURATION,
|
CONF_OPEN_DURATION,
|
||||||
@ -30,45 +29,47 @@ CurrentBasedCover = current_based_ns.class_(
|
|||||||
"CurrentBasedCover", cover.Cover, cg.Component
|
"CurrentBasedCover", cover.Cover, cg.Component
|
||||||
)
|
)
|
||||||
|
|
||||||
CONFIG_SCHEMA = cover.COVER_SCHEMA.extend(
|
CONFIG_SCHEMA = (
|
||||||
{
|
cover.cover_schema(CurrentBasedCover)
|
||||||
cv.GenerateID(): cv.declare_id(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_STOP_ACTION): automation.validate_automation(single=True),
|
||||||
cv.Required(CONF_OPEN_MOVING_CURRENT_THRESHOLD): cv.float_range(
|
cv.Required(CONF_OPEN_SENSOR): cv.use_id(sensor.Sensor),
|
||||||
min=0, min_included=False
|
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.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_OPEN_ACTION): automation.validate_automation(single=True),
|
||||||
cv.Required(CONF_CLOSE_SENSOR): cv.use_id(sensor.Sensor),
|
cv.Required(CONF_OPEN_DURATION): cv.positive_time_period_milliseconds,
|
||||||
cv.Required(CONF_CLOSE_MOVING_CURRENT_THRESHOLD): cv.float_range(
|
cv.Required(CONF_CLOSE_SENSOR): cv.use_id(sensor.Sensor),
|
||||||
min=0, min_included=False
|
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.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.Required(CONF_CLOSE_ACTION): automation.validate_automation(single=True),
|
||||||
cv.Optional(CONF_OBSTACLE_ROLLBACK, default="10%"): cv.percentage,
|
cv.Required(CONF_CLOSE_DURATION): cv.positive_time_period_milliseconds,
|
||||||
cv.Optional(CONF_MAX_DURATION): cv.positive_time_period_milliseconds,
|
cv.Optional(CONF_OBSTACLE_ROLLBACK, default="10%"): cv.percentage,
|
||||||
cv.Optional(CONF_MALFUNCTION_DETECTION, default=True): cv.boolean,
|
cv.Optional(CONF_MAX_DURATION): cv.positive_time_period_milliseconds,
|
||||||
cv.Optional(CONF_MALFUNCTION_ACTION): automation.validate_automation(
|
cv.Optional(CONF_MALFUNCTION_DETECTION, default=True): cv.boolean,
|
||||||
single=True
|
cv.Optional(CONF_MALFUNCTION_ACTION): automation.validate_automation(
|
||||||
),
|
single=True
|
||||||
cv.Optional(
|
),
|
||||||
CONF_START_SENSING_DELAY, default="500ms"
|
cv.Optional(
|
||||||
): cv.positive_time_period_milliseconds,
|
CONF_START_SENSING_DELAY, default="500ms"
|
||||||
}
|
): cv.positive_time_period_milliseconds,
|
||||||
).extend(cv.COMPONENT_SCHEMA)
|
}
|
||||||
|
)
|
||||||
|
.extend(cv.COMPONENT_SCHEMA)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
async def to_code(config):
|
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 cg.register_component(var, config)
|
||||||
await cover.register_cover(var, config)
|
|
||||||
|
|
||||||
await automation.build_automation(
|
await automation.build_automation(
|
||||||
var.get_stop_trigger(), [], config[CONF_STOP_ACTION]
|
var.get_stop_trigger(), [], config[CONF_STOP_ACTION]
|
||||||
|
@ -6,7 +6,6 @@ from esphome.const import (
|
|||||||
CONF_CLOSE_ACTION,
|
CONF_CLOSE_ACTION,
|
||||||
CONF_CLOSE_DURATION,
|
CONF_CLOSE_DURATION,
|
||||||
CONF_CLOSE_ENDSTOP,
|
CONF_CLOSE_ENDSTOP,
|
||||||
CONF_ID,
|
|
||||||
CONF_MAX_DURATION,
|
CONF_MAX_DURATION,
|
||||||
CONF_OPEN_ACTION,
|
CONF_OPEN_ACTION,
|
||||||
CONF_OPEN_DURATION,
|
CONF_OPEN_DURATION,
|
||||||
@ -17,25 +16,27 @@ from esphome.const import (
|
|||||||
endstop_ns = cg.esphome_ns.namespace("endstop")
|
endstop_ns = cg.esphome_ns.namespace("endstop")
|
||||||
EndstopCover = endstop_ns.class_("EndstopCover", cover.Cover, cg.Component)
|
EndstopCover = endstop_ns.class_("EndstopCover", cover.Cover, cg.Component)
|
||||||
|
|
||||||
CONFIG_SCHEMA = cover.COVER_SCHEMA.extend(
|
CONFIG_SCHEMA = (
|
||||||
{
|
cover.cover_schema(EndstopCover)
|
||||||
cv.GenerateID(): cv.declare_id(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_STOP_ACTION): automation.validate_automation(single=True),
|
||||||
cv.Required(CONF_OPEN_ACTION): automation.validate_automation(single=True),
|
cv.Required(CONF_OPEN_ENDSTOP): cv.use_id(binary_sensor.BinarySensor),
|
||||||
cv.Required(CONF_OPEN_DURATION): cv.positive_time_period_milliseconds,
|
cv.Required(CONF_OPEN_ACTION): automation.validate_automation(single=True),
|
||||||
cv.Required(CONF_CLOSE_ACTION): automation.validate_automation(single=True),
|
cv.Required(CONF_OPEN_DURATION): cv.positive_time_period_milliseconds,
|
||||||
cv.Required(CONF_CLOSE_ENDSTOP): 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.Required(CONF_CLOSE_ENDSTOP): cv.use_id(binary_sensor.BinarySensor),
|
||||||
cv.Optional(CONF_MAX_DURATION): cv.positive_time_period_milliseconds,
|
cv.Required(CONF_CLOSE_DURATION): cv.positive_time_period_milliseconds,
|
||||||
}
|
cv.Optional(CONF_MAX_DURATION): cv.positive_time_period_milliseconds,
|
||||||
).extend(cv.COMPONENT_SCHEMA)
|
}
|
||||||
|
)
|
||||||
|
.extend(cv.COMPONENT_SCHEMA)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
async def to_code(config):
|
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 cg.register_component(var, config)
|
||||||
await cover.register_cover(var, config)
|
|
||||||
|
|
||||||
await automation.build_automation(
|
await automation.build_automation(
|
||||||
var.get_stop_trigger(), [], config[CONF_STOP_ACTION]
|
var.get_stop_trigger(), [], config[CONF_STOP_ACTION]
|
||||||
|
@ -7,7 +7,6 @@ from esphome.const import (
|
|||||||
CONF_CLOSE_ACTION,
|
CONF_CLOSE_ACTION,
|
||||||
CONF_CLOSE_DURATION,
|
CONF_CLOSE_DURATION,
|
||||||
CONF_CLOSE_ENDSTOP,
|
CONF_CLOSE_ENDSTOP,
|
||||||
CONF_ID,
|
|
||||||
CONF_MAX_DURATION,
|
CONF_MAX_DURATION,
|
||||||
CONF_OPEN_ACTION,
|
CONF_OPEN_ACTION,
|
||||||
CONF_OPEN_DURATION,
|
CONF_OPEN_DURATION,
|
||||||
@ -50,36 +49,43 @@ def validate_infer_endstop(config):
|
|||||||
return config
|
return config
|
||||||
|
|
||||||
|
|
||||||
CONFIG_FEEDBACK_COVER_BASE_SCHEMA = cover.COVER_SCHEMA.extend(
|
CONFIG_FEEDBACK_COVER_BASE_SCHEMA = (
|
||||||
{
|
cover.cover_schema(FeedbackCover)
|
||||||
cv.GenerateID(): cv.declare_id(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_STOP_ACTION): automation.validate_automation(single=True),
|
||||||
cv.Required(CONF_OPEN_DURATION): cv.positive_time_period_milliseconds,
|
cv.Required(CONF_OPEN_ACTION): automation.validate_automation(single=True),
|
||||||
cv.Optional(CONF_OPEN_ENDSTOP): cv.use_id(binary_sensor.BinarySensor),
|
cv.Required(CONF_OPEN_DURATION): cv.positive_time_period_milliseconds,
|
||||||
cv.Optional(CONF_OPEN_SENSOR): cv.use_id(binary_sensor.BinarySensor),
|
cv.Optional(CONF_OPEN_ENDSTOP): cv.use_id(binary_sensor.BinarySensor),
|
||||||
cv.Optional(CONF_OPEN_OBSTACLE_SENSOR): cv.use_id(binary_sensor.BinarySensor),
|
cv.Optional(CONF_OPEN_SENSOR): cv.use_id(binary_sensor.BinarySensor),
|
||||||
cv.Required(CONF_CLOSE_ACTION): automation.validate_automation(single=True),
|
cv.Optional(CONF_OPEN_OBSTACLE_SENSOR): cv.use_id(
|
||||||
cv.Required(CONF_CLOSE_DURATION): cv.positive_time_period_milliseconds,
|
binary_sensor.BinarySensor
|
||||||
cv.Optional(CONF_CLOSE_ENDSTOP): cv.use_id(binary_sensor.BinarySensor),
|
),
|
||||||
cv.Optional(CONF_CLOSE_SENSOR): cv.use_id(binary_sensor.BinarySensor),
|
cv.Required(CONF_CLOSE_ACTION): automation.validate_automation(single=True),
|
||||||
cv.Optional(CONF_CLOSE_OBSTACLE_SENSOR): 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,
|
cv.Optional(CONF_CLOSE_ENDSTOP): cv.use_id(binary_sensor.BinarySensor),
|
||||||
cv.Optional(CONF_HAS_BUILT_IN_ENDSTOP, default=False): cv.boolean,
|
cv.Optional(CONF_CLOSE_SENSOR): cv.use_id(binary_sensor.BinarySensor),
|
||||||
cv.Optional(CONF_ASSUMED_STATE): cv.boolean,
|
cv.Optional(CONF_CLOSE_OBSTACLE_SENSOR): cv.use_id(
|
||||||
cv.Optional(
|
binary_sensor.BinarySensor
|
||||||
CONF_UPDATE_INTERVAL, "1000ms"
|
),
|
||||||
): cv.positive_time_period_milliseconds,
|
cv.Optional(CONF_MAX_DURATION): cv.positive_time_period_milliseconds,
|
||||||
cv.Optional(CONF_INFER_ENDSTOP_FROM_MOVEMENT, False): cv.boolean,
|
cv.Optional(CONF_HAS_BUILT_IN_ENDSTOP, default=False): cv.boolean,
|
||||||
cv.Optional(
|
cv.Optional(CONF_ASSUMED_STATE): cv.boolean,
|
||||||
CONF_DIRECTION_CHANGE_WAIT_TIME
|
cv.Optional(
|
||||||
): cv.positive_time_period_milliseconds,
|
CONF_UPDATE_INTERVAL, "1000ms"
|
||||||
cv.Optional(
|
): cv.positive_time_period_milliseconds,
|
||||||
CONF_ACCELERATION_WAIT_TIME, "0s"
|
cv.Optional(CONF_INFER_ENDSTOP_FROM_MOVEMENT, False): cv.boolean,
|
||||||
): cv.positive_time_period_milliseconds,
|
cv.Optional(
|
||||||
cv.Optional(CONF_OBSTACLE_ROLLBACK, default="10%"): cv.percentage,
|
CONF_DIRECTION_CHANGE_WAIT_TIME
|
||||||
},
|
): cv.positive_time_period_milliseconds,
|
||||||
).extend(cv.COMPONENT_SCHEMA)
|
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(
|
CONFIG_SCHEMA = cv.All(
|
||||||
@ -90,9 +96,8 @@ CONFIG_SCHEMA = cv.All(
|
|||||||
|
|
||||||
|
|
||||||
async def to_code(config):
|
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 cg.register_component(var, config)
|
||||||
await cover.register_cover(var, config)
|
|
||||||
|
|
||||||
# STOP
|
# STOP
|
||||||
await automation.build_automation(
|
await automation.build_automation(
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
import esphome.codegen as cg
|
import esphome.codegen as cg
|
||||||
from esphome.components import cover, uart
|
from esphome.components import cover, uart
|
||||||
import esphome.config_validation as cv
|
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")
|
he60r_ns = cg.esphome_ns.namespace("he60r")
|
||||||
HE60rCover = he60r_ns.class_("HE60rCover", cover.Cover, cg.Component)
|
HE60rCover = he60r_ns.class_("HE60rCover", cover.Cover, cg.Component)
|
||||||
|
|
||||||
CONFIG_SCHEMA = (
|
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.COMPONENT_SCHEMA)
|
||||||
.extend(
|
.extend(
|
||||||
{
|
{
|
||||||
cv.GenerateID(): cv.declare_id(HE60rCover),
|
|
||||||
cv.Optional(
|
cv.Optional(
|
||||||
CONF_OPEN_DURATION, default="15s"
|
CONF_OPEN_DURATION, default="15s"
|
||||||
): cv.positive_time_period_milliseconds,
|
): cv.positive_time_period_milliseconds,
|
||||||
@ -34,9 +34,8 @@ FINAL_VALIDATE_SCHEMA = uart.final_validate_device_schema(
|
|||||||
|
|
||||||
|
|
||||||
async def to_code(config):
|
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 cg.register_component(var, config)
|
||||||
await cover.register_cover(var, config)
|
|
||||||
await uart.register_uart_device(var, config)
|
await uart.register_uart_device(var, config)
|
||||||
|
|
||||||
cg.add(var.set_close_duration(config[CONF_CLOSE_DURATION]))
|
cg.add(var.set_close_duration(config[CONF_CLOSE_DURATION]))
|
||||||
|
@ -34,31 +34,37 @@ RESTORE_MODES = {
|
|||||||
CONF_HAS_POSITION = "has_position"
|
CONF_HAS_POSITION = "has_position"
|
||||||
CONF_TOGGLE_ACTION = "toggle_action"
|
CONF_TOGGLE_ACTION = "toggle_action"
|
||||||
|
|
||||||
CONFIG_SCHEMA = cover.COVER_SCHEMA.extend(
|
CONFIG_SCHEMA = (
|
||||||
{
|
cover.cover_schema(TemplateCover)
|
||||||
cv.GenerateID(): cv.declare_id(TemplateCover),
|
.extend(
|
||||||
cv.Optional(CONF_LAMBDA): cv.returning_lambda,
|
{
|
||||||
cv.Optional(CONF_OPTIMISTIC, default=False): cv.boolean,
|
cv.Optional(CONF_LAMBDA): cv.returning_lambda,
|
||||||
cv.Optional(CONF_ASSUMED_STATE, default=False): cv.boolean,
|
cv.Optional(CONF_OPTIMISTIC, default=False): cv.boolean,
|
||||||
cv.Optional(CONF_HAS_POSITION, default=False): cv.boolean,
|
cv.Optional(CONF_ASSUMED_STATE, default=False): cv.boolean,
|
||||||
cv.Optional(CONF_OPEN_ACTION): automation.validate_automation(single=True),
|
cv.Optional(CONF_HAS_POSITION, default=False): cv.boolean,
|
||||||
cv.Optional(CONF_CLOSE_ACTION): automation.validate_automation(single=True),
|
cv.Optional(CONF_OPEN_ACTION): automation.validate_automation(single=True),
|
||||||
cv.Optional(CONF_STOP_ACTION): automation.validate_automation(single=True),
|
cv.Optional(CONF_CLOSE_ACTION): automation.validate_automation(single=True),
|
||||||
cv.Optional(CONF_TILT_ACTION): automation.validate_automation(single=True),
|
cv.Optional(CONF_STOP_ACTION): automation.validate_automation(single=True),
|
||||||
cv.Optional(CONF_TILT_LAMBDA): cv.returning_lambda,
|
cv.Optional(CONF_TILT_ACTION): automation.validate_automation(single=True),
|
||||||
cv.Optional(CONF_TOGGLE_ACTION): automation.validate_automation(single=True),
|
cv.Optional(CONF_TILT_LAMBDA): cv.returning_lambda,
|
||||||
cv.Optional(CONF_POSITION_ACTION): automation.validate_automation(single=True),
|
cv.Optional(CONF_TOGGLE_ACTION): automation.validate_automation(
|
||||||
cv.Optional(CONF_RESTORE_MODE, default="RESTORE"): cv.enum(
|
single=True
|
||||||
RESTORE_MODES, upper=True
|
),
|
||||||
),
|
cv.Optional(CONF_POSITION_ACTION): automation.validate_automation(
|
||||||
}
|
single=True
|
||||||
).extend(cv.COMPONENT_SCHEMA)
|
),
|
||||||
|
cv.Optional(CONF_RESTORE_MODE, default="RESTORE"): cv.enum(
|
||||||
|
RESTORE_MODES, upper=True
|
||||||
|
),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.extend(cv.COMPONENT_SCHEMA)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
async def to_code(config):
|
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 cg.register_component(var, config)
|
||||||
await cover.register_cover(var, config)
|
|
||||||
if CONF_LAMBDA in config:
|
if CONF_LAMBDA in config:
|
||||||
template_ = await cg.process_lambda(
|
template_ = await cg.process_lambda(
|
||||||
config[CONF_LAMBDA], [], return_type=cg.optional.template(float)
|
config[CONF_LAMBDA], [], return_type=cg.optional.template(float)
|
||||||
|
@ -6,7 +6,6 @@ from esphome.const import (
|
|||||||
CONF_ASSUMED_STATE,
|
CONF_ASSUMED_STATE,
|
||||||
CONF_CLOSE_ACTION,
|
CONF_CLOSE_ACTION,
|
||||||
CONF_CLOSE_DURATION,
|
CONF_CLOSE_DURATION,
|
||||||
CONF_ID,
|
|
||||||
CONF_OPEN_ACTION,
|
CONF_OPEN_ACTION,
|
||||||
CONF_OPEN_DURATION,
|
CONF_OPEN_DURATION,
|
||||||
CONF_STOP_ACTION,
|
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_HAS_BUILT_IN_ENDSTOP = "has_built_in_endstop"
|
||||||
CONF_MANUAL_CONTROL = "manual_control"
|
CONF_MANUAL_CONTROL = "manual_control"
|
||||||
|
|
||||||
CONFIG_SCHEMA = cover.COVER_SCHEMA.extend(
|
CONFIG_SCHEMA = (
|
||||||
{
|
cover.cover_schema(TimeBasedCover)
|
||||||
cv.GenerateID(): cv.declare_id(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_STOP_ACTION): automation.validate_automation(single=True),
|
||||||
cv.Required(CONF_OPEN_DURATION): cv.positive_time_period_milliseconds,
|
cv.Required(CONF_OPEN_ACTION): automation.validate_automation(single=True),
|
||||||
cv.Required(CONF_CLOSE_ACTION): automation.validate_automation(single=True),
|
cv.Required(CONF_OPEN_DURATION): cv.positive_time_period_milliseconds,
|
||||||
cv.Required(CONF_CLOSE_DURATION): cv.positive_time_period_milliseconds,
|
cv.Required(CONF_CLOSE_ACTION): automation.validate_automation(single=True),
|
||||||
cv.Optional(CONF_HAS_BUILT_IN_ENDSTOP, default=False): cv.boolean,
|
cv.Required(CONF_CLOSE_DURATION): cv.positive_time_period_milliseconds,
|
||||||
cv.Optional(CONF_MANUAL_CONTROL, default=False): cv.boolean,
|
cv.Optional(CONF_HAS_BUILT_IN_ENDSTOP, default=False): cv.boolean,
|
||||||
cv.Optional(CONF_ASSUMED_STATE, default=True): cv.boolean,
|
cv.Optional(CONF_MANUAL_CONTROL, default=False): cv.boolean,
|
||||||
}
|
cv.Optional(CONF_ASSUMED_STATE, default=True): cv.boolean,
|
||||||
).extend(cv.COMPONENT_SCHEMA)
|
}
|
||||||
|
)
|
||||||
|
.extend(cv.COMPONENT_SCHEMA)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
async def to_code(config):
|
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 cg.register_component(var, config)
|
||||||
await cover.register_cover(var, config)
|
|
||||||
|
|
||||||
await automation.build_automation(
|
await automation.build_automation(
|
||||||
var.get_stop_trigger(), [], config[CONF_STOP_ACTION]
|
var.get_stop_trigger(), [], config[CONF_STOP_ACTION]
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
import esphome.codegen as cg
|
import esphome.codegen as cg
|
||||||
from esphome.components import cover, uart
|
from esphome.components import cover, uart
|
||||||
import esphome.config_validation as cv
|
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_ns = cg.esphome_ns.namespace("tormatic")
|
||||||
Tormatic = tormatic_ns.class_("Tormatic", cover.Cover, cg.PollingComponent)
|
Tormatic = tormatic_ns.class_("Tormatic", cover.Cover, cg.PollingComponent)
|
||||||
|
|
||||||
CONFIG_SCHEMA = (
|
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.polling_component_schema("300ms"))
|
||||||
.extend(
|
.extend(
|
||||||
{
|
{
|
||||||
cv.GenerateID(): cv.declare_id(Tormatic),
|
|
||||||
cv.Optional(
|
cv.Optional(
|
||||||
CONF_OPEN_DURATION, default="15s"
|
CONF_OPEN_DURATION, default="15s"
|
||||||
): cv.positive_time_period_milliseconds,
|
): cv.positive_time_period_milliseconds,
|
||||||
@ -34,9 +34,8 @@ FINAL_VALIDATE_SCHEMA = uart.final_validate_device_schema(
|
|||||||
|
|
||||||
|
|
||||||
async def to_code(config):
|
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 cg.register_component(var, config)
|
||||||
await cover.register_cover(var, config)
|
|
||||||
await uart.register_uart_device(var, config)
|
await uart.register_uart_device(var, config)
|
||||||
|
|
||||||
cg.add(var.set_close_duration(config[CONF_CLOSE_DURATION]))
|
cg.add(var.set_close_duration(config[CONF_CLOSE_DURATION]))
|
||||||
|
@ -1,12 +1,7 @@
|
|||||||
import esphome.codegen as cg
|
import esphome.codegen as cg
|
||||||
from esphome.components import cover
|
from esphome.components import cover
|
||||||
import esphome.config_validation as cv
|
import esphome.config_validation as cv
|
||||||
from esphome.const import (
|
from esphome.const import CONF_MAX_VALUE, CONF_MIN_VALUE, CONF_RESTORE_MODE
|
||||||
CONF_MAX_VALUE,
|
|
||||||
CONF_MIN_VALUE,
|
|
||||||
CONF_OUTPUT_ID,
|
|
||||||
CONF_RESTORE_MODE,
|
|
||||||
)
|
|
||||||
|
|
||||||
from .. import CONF_TUYA_ID, Tuya, tuya_ns
|
from .. import CONF_TUYA_ID, Tuya, tuya_ns
|
||||||
|
|
||||||
@ -38,9 +33,9 @@ def validate_range(config):
|
|||||||
|
|
||||||
|
|
||||||
CONFIG_SCHEMA = cv.All(
|
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.GenerateID(CONF_TUYA_ID): cv.use_id(Tuya),
|
||||||
cv.Optional(CONF_CONTROL_DATAPOINT): cv.uint8_t,
|
cv.Optional(CONF_CONTROL_DATAPOINT): cv.uint8_t,
|
||||||
cv.Optional(CONF_DIRECTION_DATAPOINT): cv.uint8_t,
|
cv.Optional(CONF_DIRECTION_DATAPOINT): cv.uint8_t,
|
||||||
@ -54,15 +49,15 @@ CONFIG_SCHEMA = cv.All(
|
|||||||
RESTORE_MODES, upper=True
|
RESTORE_MODES, upper=True
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
).extend(cv.COMPONENT_SCHEMA),
|
)
|
||||||
|
.extend(cv.COMPONENT_SCHEMA),
|
||||||
validate_range,
|
validate_range,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
async def to_code(config):
|
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 cg.register_component(var, config)
|
||||||
await cover.register_cover(var, config)
|
|
||||||
|
|
||||||
if CONF_CONTROL_DATAPOINT in config:
|
if CONF_CONTROL_DATAPOINT in config:
|
||||||
cg.add(var.set_control_id(config[CONF_CONTROL_DATAPOINT]))
|
cg.add(var.set_control_id(config[CONF_CONTROL_DATAPOINT]))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user