38 lines
1.1 KiB
C++
38 lines
1.1 KiB
C++
#include "template_fan.h"
|
|
#include "esphome/core/log.h"
|
|
|
|
namespace esphome {
|
|
namespace template_ {
|
|
|
|
static const char *const TAG = "template.fan";
|
|
|
|
void TemplateFan::setup() {
|
|
auto restore = this->restore_state_();
|
|
if (restore.has_value()) {
|
|
restore->apply(*this);
|
|
}
|
|
|
|
// Construct traits
|
|
this->traits_ =
|
|
fan::FanTraits(this->has_oscillating_, this->speed_count_ > 0, this->has_direction_, this->speed_count_);
|
|
this->traits_.set_supported_preset_modes(this->preset_modes_);
|
|
}
|
|
|
|
void TemplateFan::dump_config() { LOG_FAN("", "Template Fan", this); }
|
|
|
|
void TemplateFan::control(const fan::FanCall &call) {
|
|
if (call.get_state().has_value())
|
|
this->state = *call.get_state();
|
|
if (call.get_speed().has_value() && (this->speed_count_ > 0))
|
|
this->speed = *call.get_speed();
|
|
if (call.get_oscillating().has_value() && this->has_oscillating_)
|
|
this->oscillating = *call.get_oscillating();
|
|
if (call.get_direction().has_value() && this->has_direction_)
|
|
this->direction = *call.get_direction();
|
|
this->preset_mode = call.get_preset_mode();
|
|
|
|
this->publish_state();
|
|
}
|
|
|
|
} // namespace template_
|
|
} // namespace esphome
|