mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +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)); | ||||
|   } | ||||
| } | ||||
| 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 esphome | ||||
|   | ||||
| @@ -39,7 +39,7 @@ void FanState::setup() { | ||||
|   call.set_direction(recovered.direction); | ||||
|   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; } | ||||
|  | ||||
| void FanStateCall::perform() const { | ||||
|   | ||||
| @@ -56,7 +56,10 @@ void SpeedFan::loop() { | ||||
|     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 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 esphome | ||||
|   | ||||
| @@ -11,6 +11,7 @@ class TuyaFan : public Component { | ||||
|  public: | ||||
|   TuyaFan(Tuya *parent, fan::FanState *fan, int speed_count) : parent_(parent), fan_(fan), speed_count_(speed_count) {} | ||||
|   void setup() override; | ||||
|   float get_setup_priority() const override; | ||||
|   void dump_config() override; | ||||
|   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; } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user