diff --git a/esphome/components/dynamic_lamp/output/__init__.py b/esphome/components/dynamic_lamp/output/__init__.py index a5925d90f6..36987b5c44 100644 --- a/esphome/components/dynamic_lamp/output/__init__.py +++ b/esphome/components/dynamic_lamp/output/__init__.py @@ -1,14 +1,14 @@ import esphome.codegen as cg -from esphome.components import light +from esphome.components import output import esphome.config_validation as cv -from esphome.const import CONF_CHANNEL, CONF_OUTPUT_ID +from esphome.const import CONF_CHANNEL, CONF_ID from .. import CONF_DYNAMIC_LAMP_ID, DynamicLampComponent, dynamic_lamp_ns DEPENDENCIES = ["dynamic_lamp"] DynamicLamp = dynamic_lamp_ns.class_( - "DynamicLamp", light.LightOutput, cg.Parented.template(DynamicLampComponent) + "DynamicLamp", output.FloatOutput, cg.Parented.template(DynamicLampComponent) ) DynamicLampIdx = dynamic_lamp_ns.enum("DynamicLampIdx") @@ -31,9 +31,9 @@ CHANNEL_OPTIONS = { "P": DynamicLampIdx.LAMP_16, } -CONFIG_SCHEMA = light.BRIGHTNESS_ONLY_LIGHT_SCHEMA.extend( +CONFIG_SCHEMA = output.FLOAT_OUTPUT_SCHEMA.extend( { - cv.Required(CONF_OUTPUT_ID): cv.declare_id(DynamicLamp), + cv.Required(CONF_ID): cv.declare_id(DynamicLamp), cv.GenerateID(CONF_DYNAMIC_LAMP_ID): cv.use_id(DynamicLampComponent), cv.Required(CONF_CHANNEL): cv.enum(CHANNEL_OPTIONS, upper=True), } @@ -43,9 +43,9 @@ CONFIG_SCHEMA = light.BRIGHTNESS_ONLY_LIGHT_SCHEMA.extend( async def to_code(config): parent = await cg.get_variable(config[CONF_DYNAMIC_LAMP_ID]) var = cg.new_Pvariable( - config[CONF_OUTPUT_ID], + config[CONF_ID], parent, config[CONF_CHANNEL], ) - await light.register_light(var, config) + await output.register_output(var, config) await cg.register_parented(var, config[CONF_DYNAMIC_LAMP_ID]) diff --git a/esphome/components/dynamic_lamp/output/dynamic_lamp_output.cpp b/esphome/components/dynamic_lamp/output/dynamic_lamp_output.cpp index 24e41f9e53..8889c9556f 100644 --- a/esphome/components/dynamic_lamp/output/dynamic_lamp_output.cpp +++ b/esphome/components/dynamic_lamp/output/dynamic_lamp_output.cpp @@ -3,13 +3,12 @@ namespace esphome { namespace dynamic_lamp { -void DynamicLamp::write_state(light::LightState *state) override { - float bright; - state->current_values_as_brightness(&bright); - if (this->parent_->write_state_(this->lamp_, bright)) { - this->state_ = state; - } +void DynamicLamp::write_state(float state) { + if (this->available_outputs_[this->lamp_].set_level(state)) + { + this->state_ = state; } +} } // namespace dynamic_lamp } // namespace esphome diff --git a/esphome/components/dynamic_lamp/output/dynamic_lamp_output.h b/esphome/components/dynamic_lamp/output/dynamic_lamp_output.h index 06fba47d96..e012e625e2 100644 --- a/esphome/components/dynamic_lamp/output/dynamic_lamp_output.h +++ b/esphome/components/dynamic_lamp/output/dynamic_lamp_output.h @@ -5,17 +5,12 @@ namespace esphome { namespace dynamic_lamp { -class DynamicLamp : public light::LightOutput, public Parented { +class DynamicLamp : public output::FloatOutput, public Parented { public: - DynamicLamp(DynamicLampComponent *parent, DynamicLampIdx lamp) : parent_(parent), lamp_(lamp) {} - light::LightTraits get_traits() override { - auto traits = light::LightTraits(); - traits.set_supported_color_modes({light::ColorMode::BRIGHTNESS}); - return traits; - } + DynamicLamp(DynamicLampComponent *parent, DynamicLamp lamp) : parent_(parent), lamp_(lamp) {} protected: - void write_state(light::LightState *state) override; + void write_state(float state) override; DynamicLampComponent *parent_; DynamicLampIdx lamp_; float state_;