#include "output_switch.h" #include "esphome/core/log.h" namespace esphome { namespace output { static const char *const TAG = "output.switch"; void OutputSwitch::dump_config() { LOG_SWITCH("", "Output Switch", this); } void OutputSwitch::setup() { bool initial_state = false; switch (this->restore_mode_) { case OUTPUT_SWITCH_RESTORE_DEFAULT_OFF: initial_state = this->get_initial_state().value_or(false); break; case OUTPUT_SWITCH_RESTORE_DEFAULT_ON: initial_state = this->get_initial_state().value_or(true); break; case OUTPUT_SWITCH_RESTORE_INVERTED_DEFAULT_OFF: initial_state = !this->get_initial_state().value_or(true); break; case OUTPUT_SWITCH_RESTORE_INVERTED_DEFAULT_ON: initial_state = !this->get_initial_state().value_or(false); break; case OUTPUT_SWITCH_ALWAYS_OFF: initial_state = false; break; case OUTPUT_SWITCH_ALWAYS_ON: initial_state = true; break; } if (initial_state) { this->turn_on(); } else { this->turn_off(); } } void OutputSwitch::write_state(bool state) { if (state) { this->output_->turn_on(); } else { this->output_->turn_off(); } this->publish_state(state); } } // namespace output } // namespace esphome