mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +00:00 
			
		
		
		
	Remove deprecated fan speeds (#3397)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
This commit is contained in:
		| @@ -12,9 +12,6 @@ | ||||
| #ifdef USE_HOMEASSISTANT_TIME | ||||
| #include "esphome/components/homeassistant/time/homeassistant_time.h" | ||||
| #endif | ||||
| #ifdef USE_FAN | ||||
| #include "esphome/components/fan/fan_helpers.h" | ||||
| #endif | ||||
|  | ||||
| namespace esphome { | ||||
| namespace api { | ||||
| @@ -253,9 +250,6 @@ void APIConnection::cover_command(const CoverCommandRequest &msg) { | ||||
| #endif | ||||
|  | ||||
| #ifdef USE_FAN | ||||
| // Shut-up about usage of deprecated speed_level_to_enum/speed_enum_to_level functions for a bit. | ||||
| #pragma GCC diagnostic push | ||||
| #pragma GCC diagnostic ignored "-Wdeprecated-declarations" | ||||
| bool APIConnection::send_fan_state(fan::Fan *fan) { | ||||
|   if (!this->state_subscription_) | ||||
|     return false; | ||||
| @@ -268,7 +262,6 @@ bool APIConnection::send_fan_state(fan::Fan *fan) { | ||||
|     resp.oscillating = fan->oscillating; | ||||
|   if (traits.supports_speed()) { | ||||
|     resp.speed_level = fan->speed; | ||||
|     resp.speed = static_cast<enums::FanSpeed>(fan::speed_level_to_enum(fan->speed, traits.supported_speed_count())); | ||||
|   } | ||||
|   if (traits.supports_direction()) | ||||
|     resp.direction = static_cast<enums::FanDirection>(fan->direction); | ||||
| @@ -295,8 +288,6 @@ void APIConnection::fan_command(const FanCommandRequest &msg) { | ||||
|   if (fan == nullptr) | ||||
|     return; | ||||
|  | ||||
|   auto traits = fan->get_traits(); | ||||
|  | ||||
|   auto call = fan->make_call(); | ||||
|   if (msg.has_state) | ||||
|     call.set_state(msg.state); | ||||
| @@ -305,14 +296,11 @@ void APIConnection::fan_command(const FanCommandRequest &msg) { | ||||
|   if (msg.has_speed_level) { | ||||
|     // Prefer level | ||||
|     call.set_speed(msg.speed_level); | ||||
|   } else if (msg.has_speed) { | ||||
|     call.set_speed(fan::speed_enum_to_level(static_cast<fan::FanSpeed>(msg.speed), traits.supported_speed_count())); | ||||
|   } | ||||
|   if (msg.has_direction) | ||||
|     call.set_direction(static_cast<fan::FanDirection>(msg.direction)); | ||||
|   call.perform(); | ||||
| } | ||||
| #pragma GCC diagnostic pop | ||||
| #endif | ||||
|  | ||||
| #ifdef USE_LIGHT | ||||
|   | ||||
| @@ -1,5 +1,4 @@ | ||||
| #include "fan.h" | ||||
| #include "fan_helpers.h" | ||||
| #include "esphome/core/log.h" | ||||
|  | ||||
| namespace esphome { | ||||
| @@ -61,22 +60,6 @@ void FanCall::validate_() { | ||||
|   } | ||||
| } | ||||
|  | ||||
| // This whole method is deprecated, don't warn about usage of deprecated methods inside of it. | ||||
| #pragma GCC diagnostic push | ||||
| #pragma GCC diagnostic ignored "-Wdeprecated-declarations" | ||||
| FanCall &FanCall::set_speed(const char *legacy_speed) { | ||||
|   const auto supported_speed_count = this->parent_.get_traits().supported_speed_count(); | ||||
|   if (strcasecmp(legacy_speed, "low") == 0) { | ||||
|     this->set_speed(fan::speed_enum_to_level(FAN_SPEED_LOW, supported_speed_count)); | ||||
|   } else if (strcasecmp(legacy_speed, "medium") == 0) { | ||||
|     this->set_speed(fan::speed_enum_to_level(FAN_SPEED_MEDIUM, supported_speed_count)); | ||||
|   } else if (strcasecmp(legacy_speed, "high") == 0) { | ||||
|     this->set_speed(fan::speed_enum_to_level(FAN_SPEED_HIGH, supported_speed_count)); | ||||
|   } | ||||
|   return *this; | ||||
| } | ||||
| #pragma GCC diagnostic pop | ||||
|  | ||||
| FanCall FanRestoreState::to_call(Fan &fan) { | ||||
|   auto call = fan.make_call(); | ||||
|   call.set_state(this->state); | ||||
|   | ||||
| @@ -16,13 +16,6 @@ namespace fan { | ||||
|     (obj)->dump_traits_(TAG, prefix); \ | ||||
|   } | ||||
|  | ||||
| /// Simple enum to represent the speed of a fan. - DEPRECATED - Will be deleted soon | ||||
| enum ESPDEPRECATED("FanSpeed is deprecated.", "2021.9") FanSpeed { | ||||
|   FAN_SPEED_LOW = 0,     ///< The fan is running on low speed. | ||||
|   FAN_SPEED_MEDIUM = 1,  ///< The fan is running on medium speed. | ||||
|   FAN_SPEED_HIGH = 2     ///< The fan is running on high/full speed. | ||||
| }; | ||||
|  | ||||
| /// Simple enum to represent the direction of a fan. | ||||
| enum class FanDirection { FORWARD = 0, REVERSE = 1 }; | ||||
|  | ||||
|   | ||||
| @@ -1,23 +0,0 @@ | ||||
| #include <cassert> | ||||
| #include "fan_helpers.h" | ||||
|  | ||||
| namespace esphome { | ||||
| namespace fan { | ||||
|  | ||||
| // This whole file is deprecated, don't warn about usage of deprecated types in here. | ||||
| #pragma GCC diagnostic ignored "-Wdeprecated-declarations" | ||||
|  | ||||
| FanSpeed speed_level_to_enum(int speed_level, int supported_speed_levels) { | ||||
|   const auto speed_ratio = static_cast<float>(speed_level) / (supported_speed_levels + 1); | ||||
|   const auto legacy_level = clamp<int>(static_cast<int>(ceilf(speed_ratio * 3)), 1, 3); | ||||
|   return static_cast<FanSpeed>(legacy_level - 1); | ||||
| } | ||||
|  | ||||
| int speed_enum_to_level(FanSpeed speed, int supported_speed_levels) { | ||||
|   const auto enum_level = static_cast<int>(speed) + 1; | ||||
|   const auto speed_level = roundf(enum_level / 3.0f * supported_speed_levels); | ||||
|   return static_cast<int>(speed_level); | ||||
| } | ||||
|  | ||||
| }  // namespace fan | ||||
| }  // namespace esphome | ||||
| @@ -1,20 +0,0 @@ | ||||
| #pragma once | ||||
|  | ||||
| #include "fan.h" | ||||
|  | ||||
| namespace esphome { | ||||
| namespace fan { | ||||
|  | ||||
| // Shut-up about usage of deprecated FanSpeed for a bit. | ||||
| #pragma GCC diagnostic push | ||||
| #pragma GCC diagnostic ignored "-Wdeprecated-declarations" | ||||
|  | ||||
| ESPDEPRECATED("FanSpeed and speed_level_to_enum() are deprecated.", "2021.9") | ||||
| FanSpeed speed_level_to_enum(int speed_level, int supported_speed_levels); | ||||
| ESPDEPRECATED("FanSpeed and speed_enum_to_level() are deprecated.", "2021.9") | ||||
| int speed_enum_to_level(FanSpeed speed, int supported_speed_levels); | ||||
|  | ||||
| #pragma GCC diagnostic pop | ||||
|  | ||||
| }  // namespace fan | ||||
| }  // namespace esphome | ||||
| @@ -1,5 +1,4 @@ | ||||
| #include "hbridge_fan.h" | ||||
| #include "esphome/components/fan/fan_helpers.h" | ||||
| #include "esphome/core/log.h" | ||||
|  | ||||
| namespace esphome { | ||||
|   | ||||
| @@ -5,7 +5,6 @@ | ||||
|  | ||||
| #ifdef USE_MQTT | ||||
| #ifdef USE_FAN | ||||
| #include "esphome/components/fan/fan_helpers.h" | ||||
|  | ||||
| namespace esphome { | ||||
| namespace mqtt { | ||||
| @@ -88,17 +87,6 @@ void MQTTFanComponent::setup() { | ||||
|                     }); | ||||
|   } | ||||
|  | ||||
|   if (this->state_->get_traits().supports_speed()) { | ||||
|     this->subscribe(this->get_speed_command_topic(), [this](const std::string &topic, const std::string &payload) { | ||||
| #pragma GCC diagnostic push | ||||
| #pragma GCC diagnostic ignored "-Wdeprecated-declarations" | ||||
|       this->state_->make_call() | ||||
|           .set_speed(payload.c_str())  // NOLINT(clang-diagnostic-deprecated-declarations) | ||||
|           .perform(); | ||||
| #pragma GCC diagnostic pop | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   auto f = std::bind(&MQTTFanComponent::publish_state, this); | ||||
|   this->state_->add_on_state_callback([this, f]() { this->defer("send", f); }); | ||||
| } | ||||
| @@ -113,8 +101,6 @@ void MQTTFanComponent::dump_config() { | ||||
|   if (this->state_->get_traits().supports_speed()) { | ||||
|     ESP_LOGCONFIG(TAG, "  Speed Level State Topic: '%s'", this->get_speed_level_state_topic().c_str()); | ||||
|     ESP_LOGCONFIG(TAG, "  Speed Level Command Topic: '%s'", this->get_speed_level_command_topic().c_str()); | ||||
|     ESP_LOGCONFIG(TAG, "  Speed State Topic: '%s'", this->get_speed_state_topic().c_str()); | ||||
|     ESP_LOGCONFIG(TAG, "  Speed Command Topic: '%s'", this->get_speed_command_topic().c_str()); | ||||
|   } | ||||
| } | ||||
|  | ||||
| @@ -126,10 +112,8 @@ void MQTTFanComponent::send_discovery(JsonObject root, mqtt::SendDiscoveryConfig | ||||
|     root[MQTT_OSCILLATION_STATE_TOPIC] = this->get_oscillation_state_topic(); | ||||
|   } | ||||
|   if (this->state_->get_traits().supports_speed()) { | ||||
|     root["speed_level_command_topic"] = this->get_speed_level_command_topic(); | ||||
|     root["speed_level_state_topic"] = this->get_speed_level_state_topic(); | ||||
|     root[MQTT_SPEED_COMMAND_TOPIC] = this->get_speed_command_topic(); | ||||
|     root[MQTT_SPEED_STATE_TOPIC] = this->get_speed_state_topic(); | ||||
|     root[MQTT_PERCENTAGE_COMMAND_TOPIC] = this->get_speed_level_command_topic(); | ||||
|     root[MQTT_PERCENTAGE_STATE_TOPIC] = this->get_speed_level_state_topic(); | ||||
|   } | ||||
| } | ||||
| bool MQTTFanComponent::publish_state() { | ||||
| @@ -148,31 +132,6 @@ bool MQTTFanComponent::publish_state() { | ||||
|     bool success = this->publish(this->get_speed_level_state_topic(), payload); | ||||
|     failed = failed || !success; | ||||
|   } | ||||
|   if (traits.supports_speed()) { | ||||
|     const char *payload; | ||||
| #pragma GCC diagnostic push | ||||
| #pragma GCC diagnostic ignored "-Wdeprecated-declarations" | ||||
|     // NOLINTNEXTLINE(clang-diagnostic-deprecated-declarations) | ||||
|     switch (fan::speed_level_to_enum(this->state_->speed, traits.supported_speed_count())) { | ||||
|       case FAN_SPEED_LOW: {  // NOLINT(clang-diagnostic-deprecated-declarations) | ||||
|         payload = "low"; | ||||
|         break; | ||||
|       } | ||||
|       case FAN_SPEED_MEDIUM: {  // NOLINT(clang-diagnostic-deprecated-declarations) | ||||
|         payload = "medium"; | ||||
|         break; | ||||
|       } | ||||
|       default: | ||||
|       case FAN_SPEED_HIGH: {  // NOLINT(clang-diagnostic-deprecated-declarations) | ||||
|         payload = "high"; | ||||
|         break; | ||||
|       } | ||||
|     } | ||||
| #pragma GCC diagnostic pop | ||||
|     bool success = this->publish(this->get_speed_state_topic(), payload); | ||||
|     failed = failed || !success; | ||||
|   } | ||||
|  | ||||
|   return !failed; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,5 +1,4 @@ | ||||
| #include "speed_fan.h" | ||||
| #include "esphome/components/fan/fan_helpers.h" | ||||
| #include "esphome/core/log.h" | ||||
|  | ||||
| namespace esphome { | ||||
|   | ||||
| @@ -1,5 +1,4 @@ | ||||
| #include "esphome/core/log.h" | ||||
| #include "esphome/components/fan/fan_helpers.h" | ||||
| #include "tuya_fan.h" | ||||
|  | ||||
| namespace esphome { | ||||
|   | ||||
| @@ -21,10 +21,6 @@ | ||||
| #include "esphome/components/logger/logger.h" | ||||
| #endif | ||||
|  | ||||
| #ifdef USE_FAN | ||||
| #include "esphome/components/fan/fan_helpers.h" | ||||
| #endif | ||||
|  | ||||
| #ifdef USE_CLIMATE | ||||
| #include "esphome/components/climate/climate.h" | ||||
| #endif | ||||
| @@ -482,22 +478,6 @@ std::string WebServer::fan_json(fan::Fan *obj, JsonDetail start_config) { | ||||
|     if (traits.supports_speed()) { | ||||
|       root["speed_level"] = obj->speed; | ||||
|       root["speed_count"] = traits.supported_speed_count(); | ||||
|  | ||||
| #pragma GCC diagnostic push | ||||
| #pragma GCC diagnostic ignored "-Wdeprecated-declarations" | ||||
|       // NOLINTNEXTLINE(clang-diagnostic-deprecated-declarations) | ||||
|       switch (fan::speed_level_to_enum(obj->speed, traits.supported_speed_count())) { | ||||
|         case fan::FAN_SPEED_LOW:  // NOLINT(clang-diagnostic-deprecated-declarations) | ||||
|           root["speed"] = "low"; | ||||
|           break; | ||||
|         case fan::FAN_SPEED_MEDIUM:  // NOLINT(clang-diagnostic-deprecated-declarations) | ||||
|           root["speed"] = "medium"; | ||||
|           break; | ||||
|         case fan::FAN_SPEED_HIGH:  // NOLINT(clang-diagnostic-deprecated-declarations) | ||||
|           root["speed"] = "high"; | ||||
|           break; | ||||
|       } | ||||
| #pragma GCC diagnostic pop | ||||
|     } | ||||
|     if (obj->get_traits().supports_oscillation()) | ||||
|       root["oscillation"] = obj->oscillating; | ||||
| @@ -518,10 +498,6 @@ void WebServer::handle_fan_request(AsyncWebServerRequest *request, const UrlMatc | ||||
|       auto call = obj->turn_on(); | ||||
|       if (request->hasParam("speed")) { | ||||
|         String speed = request->getParam("speed")->value(); | ||||
| #pragma GCC diagnostic push | ||||
| #pragma GCC diagnostic ignored "-Wdeprecated-declarations" | ||||
|         call.set_speed(speed.c_str());  // NOLINT(clang-diagnostic-deprecated-declarations) | ||||
| #pragma GCC diagnostic pop | ||||
|       } | ||||
|       if (request->hasParam("speed_level")) { | ||||
|         String speed_level = request->getParam("speed_level")->value(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user