diff --git a/esphome/components/dynamic_lamp/dynamic_lamp.cpp b/esphome/components/dynamic_lamp/dynamic_lamp.cpp index c99fa4bc97..21da94d5a7 100644 --- a/esphome/components/dynamic_lamp/dynamic_lamp.cpp +++ b/esphome/components/dynamic_lamp/dynamic_lamp.cpp @@ -416,8 +416,9 @@ bool DynamicLampComponent::write_state_(uint8_t lamp_number, float state) { return false; } -unsigned char* DynamicLampComponent::get_lamp_name(uint8_t lamp_number) { - return this->active_lamps_[lamp_number].name; +std::string DynamicLampComponent::get_lamp_name(uint8_t lamp_number) { + std::string str(this->active_lamps_[lamp_number].name, this->active_lamps_[lamp_number].name + sizeof this->active_lamps_[lamp_number].name / sizeof this->active_lamps_[lamp_number].name[0]); + return str; } void DynamicLampComponent::set_lamp_values_(uint8_t lamp_number, bool active, uint16_t selected_outputs, uint8_t mode, uint8_t mode_value) { diff --git a/esphome/components/dynamic_lamp/dynamic_lamp.h b/esphome/components/dynamic_lamp/dynamic_lamp.h index 167c37530a..a0f95ce761 100644 --- a/esphome/components/dynamic_lamp/dynamic_lamp.h +++ b/esphome/components/dynamic_lamp/dynamic_lamp.h @@ -104,7 +104,7 @@ class DynamicLampComponent : public Component { void set_save_mode(uint8_t save_mode); void add_lamp(std::string name); void remove_lamp(std::string name); - unsigned char* get_lamp_name(uint8_t lamp_number); + std::string get_lamp_name(uint8_t lamp_number); void add_output_to_lamp(std::string lamp_name, LinkedOutput *output); void remove_output_from_lamp(std::string lamp_name, LinkedOutput *output); std::array get_lamp_outputs(uint8_t lamp_number);