#pragma once #include "esphome/core/automation.h" #include "haier_base.h" #include "hon_climate.h" namespace esphome { namespace haier { template class DisplayOnAction : public Action { public: DisplayOnAction(HaierClimateBase *parent) : parent_(parent) {} void play(Ts... x) { this->parent_->set_display_state(true); } protected: HaierClimateBase *parent_; }; template class DisplayOffAction : public Action { public: DisplayOffAction(HaierClimateBase *parent) : parent_(parent) {} void play(Ts... x) { this->parent_->set_display_state(false); } protected: HaierClimateBase *parent_; }; template class BeeperOnAction : public Action { public: BeeperOnAction(HonClimate *parent) : parent_(parent) {} void play(Ts... x) { this->parent_->set_beeper_state(true); } protected: HonClimate *parent_; }; template class BeeperOffAction : public Action { public: BeeperOffAction(HonClimate *parent) : parent_(parent) {} void play(Ts... x) { this->parent_->set_beeper_state(false); } protected: HonClimate *parent_; }; template class VerticalAirflowAction : public Action { public: VerticalAirflowAction(HonClimate *parent) : parent_(parent) {} TEMPLATABLE_VALUE(hon_protocol::VerticalSwingMode, direction) void play(Ts... x) { this->parent_->set_vertical_airflow(this->direction_.value(x...)); } protected: HonClimate *parent_; }; template class HorizontalAirflowAction : public Action { public: HorizontalAirflowAction(HonClimate *parent) : parent_(parent) {} TEMPLATABLE_VALUE(hon_protocol::HorizontalSwingMode, direction) void play(Ts... x) { this->parent_->set_horizontal_airflow(this->direction_.value(x...)); } protected: HonClimate *parent_; }; template class HealthOnAction : public Action { public: HealthOnAction(HaierClimateBase *parent) : parent_(parent) {} void play(Ts... x) { this->parent_->set_health_mode(true); } protected: HaierClimateBase *parent_; }; template class HealthOffAction : public Action { public: HealthOffAction(HaierClimateBase *parent) : parent_(parent) {} void play(Ts... x) { this->parent_->set_health_mode(false); } protected: HaierClimateBase *parent_; }; template class StartSelfCleaningAction : public Action { public: StartSelfCleaningAction(HonClimate *parent) : parent_(parent) {} void play(Ts... x) { this->parent_->start_self_cleaning(); } protected: HonClimate *parent_; }; template class StartSteriCleaningAction : public Action { public: StartSteriCleaningAction(HonClimate *parent) : parent_(parent) {} void play(Ts... x) { this->parent_->start_steri_cleaning(); } protected: HonClimate *parent_; }; template class PowerOnAction : public Action { public: PowerOnAction(HaierClimateBase *parent) : parent_(parent) {} void play(Ts... x) { this->parent_->send_power_on_command(); } protected: HaierClimateBase *parent_; }; template class PowerOffAction : public Action { public: PowerOffAction(HaierClimateBase *parent) : parent_(parent) {} void play(Ts... x) { this->parent_->send_power_off_command(); } protected: HaierClimateBase *parent_; }; template class PowerToggleAction : public Action { public: PowerToggleAction(HaierClimateBase *parent) : parent_(parent) {} void play(Ts... x) { this->parent_->toggle_power(); } protected: HaierClimateBase *parent_; }; } // namespace haier } // namespace esphome