ESPHome 2025.12.0-dev
Loading...
Searching...
No Matches
speed_fan.cpp
Go to the documentation of this file.
1#include "speed_fan.h"
2#include "esphome/core/log.h"
3
4namespace esphome {
5namespace speed {
6
7static const char *const TAG = "speed.fan";
8
10 auto restore = this->restore_state_();
11 if (restore.has_value()) {
12 restore->apply(*this);
13 this->write_state_();
14 }
15
16 // Construct traits
17 this->traits_ = fan::FanTraits(this->oscillating_ != nullptr, true, this->direction_ != nullptr, this->speed_count_);
19}
20
21void SpeedFan::dump_config() { LOG_FAN("", "Speed Fan", this); }
22
24 if (call.get_state().has_value())
25 this->state = *call.get_state();
26 if (call.get_speed().has_value())
27 this->speed = *call.get_speed();
28 if (call.get_oscillating().has_value())
29 this->oscillating = *call.get_oscillating();
30 if (call.get_direction().has_value())
31 this->direction = *call.get_direction();
33
34 this->write_state_();
35 this->publish_state();
36}
37
39 float speed = this->state ? static_cast<float>(this->speed) / static_cast<float>(this->speed_count_) : 0.0f;
40 this->output_->set_level(speed);
41 if (this->oscillating_ != nullptr)
43 if (this->direction_ != nullptr)
45}
46
47} // namespace speed
48} // namespace esphome
optional< bool > get_state() const
Definition fan.h:49
const char * get_preset_mode() const
Definition fan.h:75
optional< bool > get_oscillating() const
Definition fan.h:58
optional< int > get_speed() const
Definition fan.h:63
optional< FanDirection > get_direction() const
Definition fan.h:72
void publish_state()
Definition fan.cpp:167
bool set_preset_mode_(const char *preset_mode)
Set the preset mode (finds and stores pointer from traits). Returns true if changed.
Definition fan.cpp:145
FanDirection direction
The current direction of the fan.
Definition fan.h:113
bool oscillating
The current oscillation state of the fan.
Definition fan.h:109
bool state
The current on/off state of the fan.
Definition fan.h:107
int speed
The current fan speed level.
Definition fan.h:111
optional< FanRestoreState > restore_state_()
Definition fan.cpp:194
void set_supported_preset_modes(std::initializer_list< const char * > preset_modes)
Set the preset modes supported by the fan (from initializer list).
Definition fan_traits.h:36
virtual void set_state(bool state)
Enable or disable this binary output.
void set_level(float state)
Set the level of this float output, this is called from the front-end.
void control(const fan::FanCall &call) override
Definition speed_fan.cpp:23
fan::FanTraits traits_
Definition speed_fan.h:30
std::vector< const char * > preset_modes_
Definition speed_fan.h:31
output::BinaryOutput * oscillating_
Definition speed_fan.h:27
output::FloatOutput * output_
Definition speed_fan.h:26
void dump_config() override
Definition speed_fan.cpp:21
output::BinaryOutput * direction_
Definition speed_fan.h:28
void setup() override
Definition speed_fan.cpp:9
int speed
Definition fan.h:1
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7