mirror of
https://github.com/esphome/esphome.git
synced 2025-09-26 15:12:21 +01:00
refactor: update DynamicLamp to use FloatOutput and adjust related methods for improved functionality
This commit is contained in:
@@ -1,14 +1,14 @@
|
|||||||
import esphome.codegen as cg
|
import esphome.codegen as cg
|
||||||
from esphome.components import light
|
from esphome.components import output
|
||||||
import esphome.config_validation as cv
|
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
|
from .. import CONF_DYNAMIC_LAMP_ID, DynamicLampComponent, dynamic_lamp_ns
|
||||||
|
|
||||||
DEPENDENCIES = ["dynamic_lamp"]
|
DEPENDENCIES = ["dynamic_lamp"]
|
||||||
|
|
||||||
DynamicLamp = dynamic_lamp_ns.class_(
|
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")
|
DynamicLampIdx = dynamic_lamp_ns.enum("DynamicLampIdx")
|
||||||
@@ -31,9 +31,9 @@ CHANNEL_OPTIONS = {
|
|||||||
"P": DynamicLampIdx.LAMP_16,
|
"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.GenerateID(CONF_DYNAMIC_LAMP_ID): cv.use_id(DynamicLampComponent),
|
||||||
cv.Required(CONF_CHANNEL): cv.enum(CHANNEL_OPTIONS, upper=True),
|
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):
|
async def to_code(config):
|
||||||
parent = await cg.get_variable(config[CONF_DYNAMIC_LAMP_ID])
|
parent = await cg.get_variable(config[CONF_DYNAMIC_LAMP_ID])
|
||||||
var = cg.new_Pvariable(
|
var = cg.new_Pvariable(
|
||||||
config[CONF_OUTPUT_ID],
|
config[CONF_ID],
|
||||||
parent,
|
parent,
|
||||||
config[CONF_CHANNEL],
|
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])
|
await cg.register_parented(var, config[CONF_DYNAMIC_LAMP_ID])
|
||||||
|
@@ -3,13 +3,12 @@
|
|||||||
namespace esphome {
|
namespace esphome {
|
||||||
namespace dynamic_lamp {
|
namespace dynamic_lamp {
|
||||||
|
|
||||||
void DynamicLamp::write_state(light::LightState *state) override {
|
void DynamicLamp::write_state(float state) {
|
||||||
float bright;
|
if (this->available_outputs_[this->lamp_].set_level(state))
|
||||||
state->current_values_as_brightness(&bright);
|
{
|
||||||
if (this->parent_->write_state_(this->lamp_, bright)) {
|
this->state_ = state;
|
||||||
this->state_ = state;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace dynamic_lamp
|
} // namespace dynamic_lamp
|
||||||
} // namespace esphome
|
} // namespace esphome
|
||||||
|
@@ -5,17 +5,12 @@
|
|||||||
namespace esphome {
|
namespace esphome {
|
||||||
namespace dynamic_lamp {
|
namespace dynamic_lamp {
|
||||||
|
|
||||||
class DynamicLamp : public light::LightOutput, public Parented<DynamicLampComponent> {
|
class DynamicLamp : public output::FloatOutput, public Parented<DynamicLampComponent> {
|
||||||
public:
|
public:
|
||||||
DynamicLamp(DynamicLampComponent *parent, DynamicLampIdx lamp) : parent_(parent), lamp_(lamp) {}
|
DynamicLamp(DynamicLampComponent *parent, DynamicLamp lamp) : parent_(parent), lamp_(lamp) {}
|
||||||
light::LightTraits get_traits() override {
|
|
||||||
auto traits = light::LightTraits();
|
|
||||||
traits.set_supported_color_modes({light::ColorMode::BRIGHTNESS});
|
|
||||||
return traits;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void write_state(light::LightState *state) override;
|
void write_state(float state) override;
|
||||||
DynamicLampComponent *parent_;
|
DynamicLampComponent *parent_;
|
||||||
DynamicLampIdx lamp_;
|
DynamicLampIdx lamp_;
|
||||||
float state_;
|
float state_;
|
||||||
|
Reference in New Issue
Block a user