mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 06:33:51 +00:00 
			
		
		
		
	Fix climate restore schema changed resulting in invalid restore (#2068)
Co-authored-by: Stefan Agner <stefan@agner.ch>
This commit is contained in:
		| @@ -312,8 +312,12 @@ void Climate::add_on_state_callback(std::function<void()> &&callback) { | ||||
|   this->state_callback_.add(std::move(callback)); | ||||
| } | ||||
|  | ||||
| // Random 32bit value; If this changes existing restore preferences are invalidated | ||||
| static const uint32_t RESTORE_STATE_VERSION = 0x848EA6ADUL; | ||||
|  | ||||
| optional<ClimateDeviceRestoreState> Climate::restore_state_() { | ||||
|   this->rtc_ = global_preferences.make_preference<ClimateDeviceRestoreState>(this->get_object_id_hash()); | ||||
|   this->rtc_ = | ||||
|       global_preferences.make_preference<ClimateDeviceRestoreState>(this->get_object_id_hash() ^ RESTORE_STATE_VERSION); | ||||
|   ClimateDeviceRestoreState recovered{}; | ||||
|   if (!this->rtc_.load(&recovered)) | ||||
|     return {}; | ||||
|   | ||||
| @@ -120,6 +120,7 @@ class ClimateCall { | ||||
| }; | ||||
|  | ||||
| /// Struct used to save the state of the climate device in restore memory. | ||||
| /// Make sure to update RESTORE_STATE_VERSION when changing the struct entries. | ||||
| struct ClimateDeviceRestoreState { | ||||
|   ClimateMode mode; | ||||
|   bool uses_custom_fan_mode{false}; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user