1
0
mirror of https://github.com/esphome/esphome.git synced 2025-09-09 14:52:20 +01:00

fix: update DynamicLamp to use availability state and improve warning handling

This commit is contained in:
Oliver Kleinecke
2025-02-15 13:06:30 +01:00
parent a0a906a97e
commit cf59fc5e01

View File

@@ -85,7 +85,7 @@ void DynamicLamp::dump_config() {
this->save_mode_ = 0; this->save_mode_ = 0;
} }
for (uint8_t i = 0; i < 16; i++) { for (uint8_t i = 0; i < 16; i++) {
if (this->available_outputs_[i].active) { if (this->available_outputs_[i].available) {
ESP_LOGCONFIG(TAG, "Using output with id %s as output number %" PRIu8 "", this->available_outputs_[i].output_id.c_str(), i); ESP_LOGCONFIG(TAG, "Using output with id %s as output number %" PRIu8 "", this->available_outputs_[i].output_id.c_str(), i);
} }
} }
@@ -102,6 +102,7 @@ void DynamicLamp::add_available_output(output::FloatOutput * output, std::string
} }
this->available_outputs_[counter] = LinkedOutput{ this->available_outputs_[counter] = LinkedOutput{
true, true,
false,
output_id, output_id,
counter, counter,
output, output,
@@ -119,21 +120,21 @@ void DynamicLamp::add_lamp_(std::string name) {
return; return;
} }
ESP_LOGW(TAG, "No more lamps available, max 16 lamps supported!"); ESP_LOGW(TAG, "No more lamps available, max 16 lamps supported!");
this->set_warning_state(true); this->status_set_warning();
return 0;
} }
void DynamicLamp::add_lamp_output_(std::string lamp_name, LinkedOutput output) { void DynamicLamp::add_lamp_output_(std::string lamp_name, LinkedOutput output) {
uint8_t i = 0;
while (i < 16) { while (i < 16) {
if (this->active_lamps_[i].name == lamp_name) { if (this->active_lamps_[i].name == lamp_name) {
this->active_lamps_[lamp_number].used_outputs[output.output_index] = true; this->active_lamps_[i].used_outputs[output.output_index] = true;
output.in_use = true; output.in_use = true;
ESP_LOGV(TAG, "Added output %s to lamp %s", output.output_id.c_str(), lamp_name.c_str()); ESP_LOGV(TAG, "Added output %s to lamp %s", output.output_id.c_str(), lamp_name.c_str());
return; return;
} }
i++; i++;
} }
this->set_warning_state(true); this->status_set_warning();
ESP_LOGW(TAG, "No lamp with name %s defined !", lamp_name.c_str()); ESP_LOGW(TAG, "No lamp with name %s defined !", lamp_name.c_str());
} }