mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +00:00 
			
		
		
		
	Fix fan speed restore issue on boot (#1867)
This commit is contained in:
		| @@ -55,7 +55,10 @@ void BinaryFan::loop() { | |||||||
|     ESP_LOGD(TAG, "Setting reverse direction: %s", ONOFF(enable)); |     ESP_LOGD(TAG, "Setting reverse direction: %s", ONOFF(enable)); | ||||||
|   } |   } | ||||||
| } | } | ||||||
| float BinaryFan::get_setup_priority() const { return setup_priority::DATA; } |  | ||||||
|  | // We need a higher priority than the FanState component to make sure that the traits are set | ||||||
|  | // when that component sets itself up. | ||||||
|  | float BinaryFan::get_setup_priority() const { return fan_->get_setup_priority() + 1.0f; } | ||||||
|  |  | ||||||
| }  // namespace binary | }  // namespace binary | ||||||
| }  // namespace esphome | }  // namespace esphome | ||||||
|   | |||||||
| @@ -39,7 +39,7 @@ void FanState::setup() { | |||||||
|   call.set_direction(recovered.direction); |   call.set_direction(recovered.direction); | ||||||
|   call.perform(); |   call.perform(); | ||||||
| } | } | ||||||
| float FanState::get_setup_priority() const { return setup_priority::HARDWARE - 1.0f; } | float FanState::get_setup_priority() const { return setup_priority::DATA - 1.0f; } | ||||||
| uint32_t FanState::hash_base() { return 418001110UL; } | uint32_t FanState::hash_base() { return 418001110UL; } | ||||||
|  |  | ||||||
| void FanStateCall::perform() const { | void FanStateCall::perform() const { | ||||||
|   | |||||||
| @@ -56,7 +56,10 @@ void SpeedFan::loop() { | |||||||
|     ESP_LOGD(TAG, "Setting reverse direction: %s", ONOFF(enable)); |     ESP_LOGD(TAG, "Setting reverse direction: %s", ONOFF(enable)); | ||||||
|   } |   } | ||||||
| } | } | ||||||
| float SpeedFan::get_setup_priority() const { return setup_priority::DATA; } |  | ||||||
|  | // We need a higher priority than the FanState component to make sure that the traits are set | ||||||
|  | // when that component sets itself up. | ||||||
|  | float SpeedFan::get_setup_priority() const { return fan_->get_setup_priority() + 1.0f; } | ||||||
|  |  | ||||||
| }  // namespace speed | }  // namespace speed | ||||||
| }  // namespace esphome | }  // namespace esphome | ||||||
|   | |||||||
| @@ -84,5 +84,9 @@ void TuyaFan::write_state() { | |||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // We need a higher priority than the FanState component to make sure that the traits are set | ||||||
|  | // when that component sets itself up. | ||||||
|  | float TuyaFan::get_setup_priority() const { return fan_->get_setup_priority() + 1.0f; } | ||||||
|  |  | ||||||
| }  // namespace tuya | }  // namespace tuya | ||||||
| }  // namespace esphome | }  // namespace esphome | ||||||
|   | |||||||
| @@ -11,6 +11,7 @@ class TuyaFan : public Component { | |||||||
|  public: |  public: | ||||||
|   TuyaFan(Tuya *parent, fan::FanState *fan, int speed_count) : parent_(parent), fan_(fan), speed_count_(speed_count) {} |   TuyaFan(Tuya *parent, fan::FanState *fan, int speed_count) : parent_(parent), fan_(fan), speed_count_(speed_count) {} | ||||||
|   void setup() override; |   void setup() override; | ||||||
|  |   float get_setup_priority() const override; | ||||||
|   void dump_config() override; |   void dump_config() override; | ||||||
|   void set_speed_id(uint8_t speed_id) { this->speed_id_ = speed_id; } |   void set_speed_id(uint8_t speed_id) { this->speed_id_ = speed_id; } | ||||||
|   void set_switch_id(uint8_t switch_id) { this->switch_id_ = switch_id; } |   void set_switch_id(uint8_t switch_id) { this->switch_id_ = switch_id; } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user