mirror of
https://github.com/esphome/esphome.git
synced 2025-07-28 14:16:40 +00:00
[valve] Move to use `valve_schema(..)
instead of
VALVE_SCHEMA
` (#8730)
This commit is contained in:
parent
2b3757dff8
commit
23fb1bed61
@ -35,23 +35,30 @@ RESTORE_MODES = {
|
|||||||
CONF_HAS_POSITION = "has_position"
|
CONF_HAS_POSITION = "has_position"
|
||||||
CONF_TOGGLE_ACTION = "toggle_action"
|
CONF_TOGGLE_ACTION = "toggle_action"
|
||||||
|
|
||||||
CONFIG_SCHEMA = valve.VALVE_SCHEMA.extend(
|
CONFIG_SCHEMA = (
|
||||||
{
|
valve.valve_schema(TemplateValve)
|
||||||
cv.GenerateID(): cv.declare_id(TemplateValve),
|
.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_TOGGLE_ACTION): automation.validate_automation(single=True),
|
cv.Optional(CONF_STOP_ACTION): automation.validate_automation(single=True),
|
||||||
cv.Optional(CONF_POSITION_ACTION): automation.validate_automation(single=True),
|
cv.Optional(CONF_TOGGLE_ACTION): automation.validate_automation(
|
||||||
cv.Optional(CONF_RESTORE_MODE, default="NO_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="NO_RESTORE"): cv.enum(
|
||||||
|
RESTORE_MODES, upper=True
|
||||||
|
),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.extend(cv.COMPONENT_SCHEMA)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
async def to_code(config):
|
async def to_code(config):
|
||||||
|
@ -5,6 +5,8 @@ from esphome.components import mqtt, web_server
|
|||||||
import esphome.config_validation as cv
|
import esphome.config_validation as cv
|
||||||
from esphome.const import (
|
from esphome.const import (
|
||||||
CONF_DEVICE_CLASS,
|
CONF_DEVICE_CLASS,
|
||||||
|
CONF_ENTITY_CATEGORY,
|
||||||
|
CONF_ICON,
|
||||||
CONF_ID,
|
CONF_ID,
|
||||||
CONF_MQTT_ID,
|
CONF_MQTT_ID,
|
||||||
CONF_ON_OPEN,
|
CONF_ON_OPEN,
|
||||||
@ -20,6 +22,7 @@ from esphome.const import (
|
|||||||
DEVICE_CLASS_WATER,
|
DEVICE_CLASS_WATER,
|
||||||
)
|
)
|
||||||
from esphome.core import CORE, coroutine_with_priority
|
from esphome.core import CORE, coroutine_with_priority
|
||||||
|
from esphome.cpp_generator import MockObjClass
|
||||||
from esphome.cpp_helpers import setup_entity
|
from esphome.cpp_helpers import setup_entity
|
||||||
|
|
||||||
IS_PLATFORM_COMPONENT = True
|
IS_PLATFORM_COMPONENT = True
|
||||||
@ -71,7 +74,7 @@ ValveClosedTrigger = valve_ns.class_(
|
|||||||
|
|
||||||
CONF_ON_CLOSED = "on_closed"
|
CONF_ON_CLOSED = "on_closed"
|
||||||
|
|
||||||
VALVE_SCHEMA = (
|
_VALVE_SCHEMA = (
|
||||||
cv.ENTITY_BASE_SCHEMA.extend(web_server.WEBSERVER_SORTING_SCHEMA)
|
cv.ENTITY_BASE_SCHEMA.extend(web_server.WEBSERVER_SORTING_SCHEMA)
|
||||||
.extend(cv.MQTT_COMMAND_COMPONENT_SCHEMA)
|
.extend(cv.MQTT_COMMAND_COMPONENT_SCHEMA)
|
||||||
.extend(
|
.extend(
|
||||||
@ -100,7 +103,30 @@ VALVE_SCHEMA = (
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
async def setup_valve_core_(var, config):
|
def valve_schema(
|
||||||
|
class_: MockObjClass = cv.UNDEFINED,
|
||||||
|
*,
|
||||||
|
device_class: str = cv.UNDEFINED,
|
||||||
|
entity_category: str = cv.UNDEFINED,
|
||||||
|
icon: str = cv.UNDEFINED,
|
||||||
|
) -> cv.Schema:
|
||||||
|
schema = {}
|
||||||
|
|
||||||
|
if class_ is not cv.UNDEFINED:
|
||||||
|
schema[cv.GenerateID()] = cv.declare_id(class_)
|
||||||
|
|
||||||
|
for key, default, validator in [
|
||||||
|
(CONF_DEVICE_CLASS, device_class, cv.one_of(*DEVICE_CLASSES, lower=True)),
|
||||||
|
(CONF_ENTITY_CATEGORY, entity_category, cv.entity_category),
|
||||||
|
(CONF_ICON, icon, cv.icon),
|
||||||
|
]:
|
||||||
|
if default is not cv.UNDEFINED:
|
||||||
|
schema[cv.Optional(key, default=default)] = validator
|
||||||
|
|
||||||
|
return _VALVE_SCHEMA.extend(schema)
|
||||||
|
|
||||||
|
|
||||||
|
async def _setup_valve_core(var, config):
|
||||||
await setup_entity(var, config)
|
await setup_entity(var, config)
|
||||||
|
|
||||||
if device_class_config := config.get(CONF_DEVICE_CLASS):
|
if device_class_config := config.get(CONF_DEVICE_CLASS):
|
||||||
@ -132,7 +158,7 @@ async def register_valve(var, config):
|
|||||||
if not CORE.has_id(config[CONF_ID]):
|
if not CORE.has_id(config[CONF_ID]):
|
||||||
var = cg.Pvariable(config[CONF_ID], var)
|
var = cg.Pvariable(config[CONF_ID], var)
|
||||||
cg.add(cg.App.register_valve(var))
|
cg.add(cg.App.register_valve(var))
|
||||||
await setup_valve_core_(var, config)
|
await _setup_valve_core(var, config)
|
||||||
|
|
||||||
|
|
||||||
async def new_valve(config, *args):
|
async def new_valve(config, *args):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user