diff --git a/esphome/components/dynamic_lamp/dynamic_lamp.cpp b/esphome/components/dynamic_lamp/dynamic_lamp.cpp index 45b60703c3..83cc159c6b 100644 --- a/esphome/components/dynamic_lamp/dynamic_lamp.cpp +++ b/esphome/components/dynamic_lamp/dynamic_lamp.cpp @@ -115,6 +115,7 @@ void DynamicLamp::add_lamp_(std::string name) { this->lamp_count_++; this->active_lamps_[this->lamp_count_].active = true; this->active_lamps_[this->lamp_count_].name = name; + this->active_lamps_[this->lamp_count_].lamp_index = this->lamp_count_; return; } ESP_LOGW(TAG, "No more lamps available, max 16 lamps supported!"); diff --git a/esphome/components/dynamic_lamp/dynamic_lamp.h b/esphome/components/dynamic_lamp/dynamic_lamp.h index d4e5579476..f523f08192 100644 --- a/esphome/components/dynamic_lamp/dynamic_lamp.h +++ b/esphome/components/dynamic_lamp/dynamic_lamp.h @@ -33,6 +33,7 @@ struct LinkedOutput { struct CombinedLamp { bool active = false; std::string name = ""; + uint8_t lamp_index; bool used_outputs[16]; }; @@ -48,7 +49,7 @@ class DynamicLamp : public Component { void begin(); void add_lamp_(std::string name); std::array get_lamp_outputs_(uint8_t lamp_number); - void add_lamp_output_(uint8_t lamp_number, LinkedOutput output); + void add_lamp_output_(std::string lamp_name, LinkedOutput output); void restore_lamp_values_(uint8_t lamp_number); void set_lamp_values_(uint8_t lamp_number, bool active, uint16_t selected_outputs, uint8_t mode, uint8_t mode_value); std::string_view ltrim_(std::string_view str);