diff --git a/components/tclac/tclac.cpp b/components/tclac/tclac.cpp index 13d5542..c7e6408 100644 --- a/components/tclac/tclac.cpp +++ b/components/tclac/tclac.cpp @@ -32,7 +32,15 @@ ClimateTraits tclacClimate::traits() { // climate::CLIMATE_FAN_FOCUS, // ||||| // climate::CLIMATE_FAN_DIFFUSE // POWER [7] // }); + + traits.set_supported_modes(this->supported_modes_); + traits.set_supported_fan_modes(this->supported_fan_modes_); + traits.set_supported_swing_modes(this->supported_swing_modes_); + traits.add_supported_fan_mode(climate::CLIMATE_FAN_AUTO); // Автоматический режим вентилятора доступен всегда + traits.add_supported_swing_mode(climate::CLIMATE_SWING_OFF); // Выключенный режим качания заслонок доступен всегда + traits.add_supported_mode(climate::CLIMATE_MODE_OFF); // Выключенный режим кондиционера доступен всегда + traits.add_supported_mode(climate::CLIMATE_MODE_AUTO); // Автоматический режим кондиционера тоже traits.set_visual_min_temperature(MIN_SET_TEMPERATURE); traits.set_visual_max_temperature(MAX_SET_TEMPERATURE); @@ -624,10 +632,7 @@ void tclacClimate::set_vertical_swing_direction(VerticalSwingDirection direction } void tclacClimate::set_supported_modes(const std::set &modes) { - auto traits_ = climate::ClimateTraits(); - this->traits_.set_supported_modes(modes); - this->traits_.add_supported_mode(climate::CLIMATE_MODE_OFF); // Выключенный режим доступен всегда - this->traits_.add_supported_mode(climate::CLIMATE_MODE_AUTO); // Автоматический режим тоже + this->supported_modes_ = modes; } void tclacClimate::set_horizontal_swing_direction(HorizontalSwingDirection direction) { @@ -635,19 +640,13 @@ void tclacClimate::set_horizontal_swing_direction(HorizontalSwingDirection direc } void tclacClimate::set_supported_fan_modes(const std::set &modes){ - auto traits_ = climate::ClimateTraits(); - this->traits_.set_supported_fan_modes(modes); - this->traits_.add_supported_fan_mode(climate::CLIMATE_FAN_AUTO); // Автоматический режим доступен всегда + this->supported_fan_modes_ = modes; } void tclacClimate::set_supported_swing_modes(const std::set &modes) { - auto traits_ = climate::ClimateTraits(); - this->traits_.set_supported_swing_modes(modes); - this->traits_.add_supported_swing_mode(climate::CLIMATE_SWING_OFF); // Выключенный режим доступен всегда + this->supported_swing_modes_ = modes; } - - // Заготовки функций запроса состояния, может пригодиться в будущем, если делать обратную связь. Очень не хочется, будет очень костыльно. //bool tclacClimate::get_beeper_state() const { return this->beeper_status_; } diff --git a/components/tclac/tclac.h b/components/tclac/tclac.h index a07f178..f2318d7 100644 --- a/components/tclac/tclac.h +++ b/components/tclac/tclac.h @@ -143,16 +143,16 @@ class tclacClimate : public climate::Climate, public esphome::uart::UARTDevice, void set_supported_fan_modes(const std::set &modes); void set_supported_swing_modes(const std::set &modes); - protected: GPIOPin *rx_led_pin_; GPIOPin *tx_led_pin_; ClimateTraits traits() override; -// std::set supported_modes_{}; + std::set supported_modes_{}; AirflowVerticalDirection vertical_direction_; + std::set supported_fan_modes_{}; AirflowHorizontalDirection horizontal_direction_; VerticalSwingDirection vertical_swing_direction_; -// std::set supported_swing_modes_{}; + std::set supported_swing_modes_{}; HorizontalSwingDirection horizontal_swing_direction_; };