#pragma once #include "aircon.h" #include "esphome/core/automation.h" #include "esphome/core/component.h" namespace esphome { namespace aux_airconditioner { class AirCon; // **************************************** DISPLAY ACTIONS **************************************** template class AirConDisplayOffAction : public Action { public: explicit AirConDisplayOffAction(AirCon *ac) : ac_(ac) {} void play(Ts... x) override { this->ac_->action_display_off(); } protected: AirCon *ac_; }; template class AirConDisplayOnAction : public Action { public: explicit AirConDisplayOnAction(AirCon *ac) : ac_(ac) {} void play(Ts... x) override { this->ac_->action_display_on(); } protected: AirCon *ac_; }; // **************************************** VERTICAL LOUVER ACTIONS **************************************** template class AirConVLouverSwingAction : public Action { public: explicit AirConVLouverSwingAction(AirCon *ac) : ac_(ac) {} void play(Ts... x) override { this->ac_->action_set_vlouver_swing(); } protected: AirCon *ac_; }; template class AirConVLouverStopAction : public Action { public: explicit AirConVLouverStopAction(AirCon *ac) : ac_(ac) {} void play(Ts... x) override { this->ac_->action_set_vlouver_stop(); } protected: AirCon *ac_; }; template class AirConVLouverTopAction : public Action { public: explicit AirConVLouverTopAction(AirCon *ac) : ac_(ac) {} void play(Ts... x) override { this->ac_->action_set_vlouver_top_position(); } protected: AirCon *ac_; }; template class AirConVLouverMiddleAboveAction : public Action { public: explicit AirConVLouverMiddleAboveAction(AirCon *ac) : ac_(ac) {} void play(Ts... x) override { this->ac_->action_set_vlouver_middle_above_position(); } protected: AirCon *ac_; }; template class AirConVLouverMiddleAction : public Action { public: explicit AirConVLouverMiddleAction(AirCon *ac) : ac_(ac) {} void play(Ts... x) override { this->ac_->action_set_vlouver_middle_position(); } protected: AirCon *ac_; }; template class AirConVLouverMiddleBelowAction : public Action { public: explicit AirConVLouverMiddleBelowAction(AirCon *ac) : ac_(ac) {} void play(Ts... x) override { this->ac_->action_set_vlouver_middle_below_position(); } protected: AirCon *ac_; }; template class AirConVLouverBottomAction : public Action { public: explicit AirConVLouverBottomAction(AirCon *ac) : ac_(ac) {} void play(Ts... x) override { this->ac_->action_set_vlouver_bottom(); } protected: AirCon *ac_; }; template class AirConVLouverSetAction : public Action { public: AirConVLouverSetAction(AirCon *ac) : ac_(ac) {} TEMPLATABLE_VALUE(uint8_t, value); void play(Ts... x) { this->ac_->action_set_vlouver_position((vlouver_esphome_position_t)this->value_.value(x...)); } protected: AirCon *ac_; }; // **************************************** POWER LIMITATION ACTIONS **************************************** template class AirConPowerLimitationOffAction : public Action { public: explicit AirConPowerLimitationOffAction(AirCon *ac) : ac_(ac) {} void play(Ts... x) override { this->ac_->action_power_limitation_off(); } protected: AirCon *ac_; }; template class AirConPowerLimitationOnAction : public Action { public: AirConPowerLimitationOnAction(AirCon *ac) : ac_(ac) {} TEMPLATABLE_VALUE(uint8_t, value); void play(Ts... x) { this->ac_->action_power_limitation_on(this->value_.value(x...)); } protected: AirCon *ac_; }; } // namespace aux_airconditioner } // namespace esphome