From 5f697bb0d6ac937861ff6262acae607dde88ac77 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Fri, 16 Oct 2026 10:51:36 -1000 Subject: [PATCH] [espectre] Use Apply entities for the recalibrate button and traffic select --- esphome/components/espectre/button/__init__.py | 10 ++++------ esphome/components/espectre/select/__init__.py | 17 ++++++++--------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/esphome/components/espectre/button/__init__.py b/esphome/components/espectre/button/__init__.py index c6a167324e0..0edb2a56fc9 100644 --- a/esphome/components/espectre/button/__init__.py +++ b/esphome/components/espectre/button/__init__.py @@ -1,20 +1,18 @@ -import esphome.codegen as cg from esphome.components import button import esphome.config_validation as cv from esphome.const import ENTITY_CATEGORY_CONFIG from esphome.types import ConfigType -from .. import CONF_ESPECTRE_ID, ESPectreComponent, espectre_ns +from .. import CONF_ESPECTRE_ID, ESPectreComponent DEPENDENCIES = ["espectre"] -RecalibrateButton = espectre_ns.class_("RecalibrateButton", button.Button) CONFIG_SCHEMA = button.button_schema( - RecalibrateButton, entity_category=ENTITY_CATEGORY_CONFIG + button.ApplyButton, entity_category=ENTITY_CATEGORY_CONFIG ).extend({cv.GenerateID(CONF_ESPECTRE_ID): cv.use_id(ESPectreComponent)}) async def to_code(config: ConfigType) -> None: - var = await button.new_button(config) - await cg.register_parented(var, config[CONF_ESPECTRE_ID]) + buttons = button.sub_buttons(config, parent=config[CONF_ESPECTRE_ID]) + await buttons.create(config, None, apply="recalibrate()") diff --git a/esphome/components/espectre/select/__init__.py b/esphome/components/espectre/select/__init__.py index 8a4835e58b5..31d73533896 100644 --- a/esphome/components/espectre/select/__init__.py +++ b/esphome/components/espectre/select/__init__.py @@ -9,24 +9,23 @@ from .. import ( CONF_ESPECTRE_ID, DOMAIN, ESPectreComponent, - espectre_ns, supported_traffic_generator_modes, ) DEPENDENCIES = ["espectre"] -TrafficModeSelect = espectre_ns.class_( - "TrafficModeSelect", select.Select, cg.Parented.template(ESPectreComponent) -) CONFIG_SCHEMA = select.select_schema( - TrafficModeSelect, entity_category=ENTITY_CATEGORY_CONFIG + select.ApplySelect, entity_category=ENTITY_CATEGORY_CONFIG ).extend({cv.GenerateID(CONF_ESPECTRE_ID): cv.use_id(ESPectreComponent)}) async def to_code(config: ConfigType) -> None: options = supported_traffic_generator_modes(CORE.config[DOMAIN]) - var = await select.new_select(config, options=options) - await cg.register_parented(var, config[CONF_ESPECTRE_ID]) - parent = await cg.get_variable(config[CONF_ESPECTRE_ID]) - cg.add(parent.set_traffic_mode_select(var)) + hub = await cg.get_variable(config[CONF_ESPECTRE_ID]) + await select.sub_selects(config, parent=hub).create( + config, + hub.set_traffic_mode_select, + options=options, + apply="request_traffic_generator_mode(entity->option_at(index))", + )