Fix fan speed restore issue on boot (#1867)

This commit is contained in:
wifwucite 2021-09-08 05:30:17 +02:00 committed by GitHub
parent b0533db2eb
commit 1be106c0b5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 14 additions and 3 deletions

View file

@ -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

View file

@ -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 {

View file

@ -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

View file

@ -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

View file

@ -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; }