mirror of
https://github.com/esphome/esphome.git
synced 2025-02-24 22:08:17 +00:00
55 lines
1.1 KiB
C++
55 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include "esphome/core/component.h"
|
|
#include "esphome/components/fan/fan_state.h"
|
|
|
|
namespace esphome {
|
|
namespace demo {
|
|
|
|
enum class DemoFanType {
|
|
TYPE_1,
|
|
TYPE_2,
|
|
TYPE_3,
|
|
TYPE_4,
|
|
};
|
|
|
|
class DemoFan : public Component {
|
|
public:
|
|
void set_type(DemoFanType type) { type_ = type; }
|
|
void set_fan(fan::FanState *fan) { fan_ = fan; }
|
|
void setup() override {
|
|
fan::FanTraits traits{};
|
|
|
|
// oscillation
|
|
// speed
|
|
// direction
|
|
// speed_count
|
|
switch (type_) {
|
|
case DemoFanType::TYPE_1:
|
|
break;
|
|
case DemoFanType::TYPE_2:
|
|
traits.set_oscillation(true);
|
|
break;
|
|
case DemoFanType::TYPE_3:
|
|
traits.set_direction(true);
|
|
traits.set_speed(true);
|
|
traits.set_supported_speed_count(5);
|
|
break;
|
|
case DemoFanType::TYPE_4:
|
|
traits.set_direction(true);
|
|
traits.set_speed(true);
|
|
traits.set_supported_speed_count(100);
|
|
traits.set_oscillation(true);
|
|
break;
|
|
}
|
|
|
|
this->fan_->set_traits(traits);
|
|
}
|
|
|
|
fan::FanState *fan_;
|
|
DemoFanType type_;
|
|
};
|
|
|
|
} // namespace demo
|
|
} // namespace esphome
|