Files
esphome-lsm6ds/esphome/components/template/fan/template_fan.cpp
T

40 lines
1.2 KiB
C++

#include "template_fan.h"
#include "esphome/core/log.h"
namespace esphome::template_ {
static const char *const TAG = "template.fan";
void TemplateFan::setup() {
// Construct traits before restore so preset modes can be looked up by index
this->traits_ =
fan::FanTraits(this->has_oscillating_, this->speed_count_ > 0, this->has_direction_, this->speed_count_);
auto restore = this->restore_state_();
if (restore.has_value()) {
restore->apply(*this);
}
}
void TemplateFan::dump_config() { LOG_FAN("", "Template Fan", this); }
void TemplateFan::control(const fan::FanCall &call) {
auto call_state = call.get_state();
if (call_state.has_value())
this->state = *call_state;
auto call_speed = call.get_speed();
if (call_speed.has_value() && (this->speed_count_ > 0))
this->speed = *call_speed;
auto call_oscillating = call.get_oscillating();
if (call_oscillating.has_value() && this->has_oscillating_)
this->oscillating = *call_oscillating;
auto call_direction = call.get_direction();
if (call_direction.has_value() && this->has_direction_)
this->direction = *call_direction;
this->apply_preset_mode_(call);
this->publish_state();
}
} // namespace esphome::template_