#pragma once #include "esphome/core/component.h" #include "esphome/core/automation.h" #include "esphome/components/climate/climate.h" #include "esphome/components/remote_base/remote_base.h" #include "esphome/components/remote_transmitter/remote_transmitter.h" #include "esphome/components/sensor/sensor.h" #include "esphome/components/switch/switch.h" namespace esphome { namespace toshiba { class ToshibaClimate : public climate::Climate, public Component { public: void setup() override; void set_transmitter(remote_transmitter::RemoteTransmitterComponent *transmitter) { this->transmitter_ = transmitter; } void set_supports_cool(bool supports_cool) { this->supports_cool_ = supports_cool; } void set_supports_heat(bool supports_heat) { this->supports_heat_ = supports_heat; } void set_sensor(sensor::Sensor *sensor) { this->sensor_ = sensor; } void fix_louvre(); void swing_louvre(); void set_purifier(bool mode) {this->pure_ = mode; this->transmit_state_();} bool get_purifier() {return this->pure_;} protected: /// Override control to change settings of the climate device. void control(const climate::ClimateCall &call) override; /// Return the traits of this controller. climate::ClimateTraits traits() override; /// Transmit via IR the state of this climate controller. void transmit_state_(); bool supports_cool_{true}; bool supports_heat_{true}; bool pure_{true}; remote_transmitter::RemoteTransmitterComponent *transmitter_; sensor::Sensor *sensor_{nullptr}; }; } // namespace toshiba } // namespace esphome