diff --git a/esphome/components/dynamic_lamp/dynamic_lamp.cpp b/esphome/components/dynamic_lamp/dynamic_lamp.cpp index 83cc159c6b..ee174d3e28 100644 --- a/esphome/components/dynamic_lamp/dynamic_lamp.cpp +++ b/esphome/components/dynamic_lamp/dynamic_lamp.cpp @@ -97,7 +97,7 @@ void DynamicLamp::set_save_mode(uint8_t save_mode) { void DynamicLamp::add_available_output(output::FloatOutput * output, std::string output_id) { uint8_t counter = 0; - while (this->available_outputs_[counter].active) { + while (this->available_outputs_[counter].available) { counter++; } this->available_outputs_[counter] = LinkedOutput{ @@ -126,9 +126,9 @@ void DynamicLamp::add_lamp_(std::string name) { void DynamicLamp::add_lamp_output_(std::string lamp_name, LinkedOutput output) { while (i < 16) { if (this->active_lamps_[i].name == lamp_name) { - this->add_lamp_output_(i, output); this->active_lamps_[lamp_number].used_outputs[output.output_index] = true; - ESP_LOGV(TAG, "Added output %s to lamp %" PRIu8 "", output.output_id.c_str(), lamp_number); + output.in_use = true; + ESP_LOGV(TAG, "Added output %s to lamp %s", output.output_id.c_str(), lamp_name.c_str()); return; } i++; diff --git a/esphome/components/dynamic_lamp/dynamic_lamp.h b/esphome/components/dynamic_lamp/dynamic_lamp.h index f523f08192..ffc379c767 100644 --- a/esphome/components/dynamic_lamp/dynamic_lamp.h +++ b/esphome/components/dynamic_lamp/dynamic_lamp.h @@ -19,7 +19,8 @@ enum LinkedOutputModeIdx : uint8_t { }; struct LinkedOutput { - bool active = false; + bool available = false; + bool in_use = false; std::string output_id; uint8_t output_index; output::FloatOutput *output;