mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	light: add RESTORE_AND_OFF/RESTORE_AND_ON LightRestoreMode (#3238)
This commit is contained in:
		| @@ -52,6 +52,8 @@ RESTORE_MODES = { | ||||
|     "ALWAYS_ON": LightRestoreMode.LIGHT_ALWAYS_ON, | ||||
|     "RESTORE_INVERTED_DEFAULT_OFF": LightRestoreMode.LIGHT_RESTORE_INVERTED_DEFAULT_OFF, | ||||
|     "RESTORE_INVERTED_DEFAULT_ON": LightRestoreMode.LIGHT_RESTORE_INVERTED_DEFAULT_ON, | ||||
|     "RESTORE_AND_OFF": LightRestoreMode.LIGHT_RESTORE_AND_OFF, | ||||
|     "RESTORE_AND_ON": LightRestoreMode.LIGHT_RESTORE_AND_ON, | ||||
| } | ||||
|  | ||||
| LIGHT_SCHEMA = cv.ENTITY_BASE_SCHEMA.extend(cv.MQTT_COMMAND_COMPONENT_SCHEMA).extend( | ||||
|   | ||||
| @@ -68,6 +68,12 @@ void LightState::setup() { | ||||
|         recovered.state = !recovered.state; | ||||
|       } | ||||
|       break; | ||||
|     case LIGHT_RESTORE_AND_OFF: | ||||
|     case LIGHT_RESTORE_AND_ON: | ||||
|       this->rtc_ = global_preferences->make_preference<LightStateRTCState>(this->get_object_id_hash()); | ||||
|       this->rtc_.load(&recovered); | ||||
|       recovered.state = (this->restore_mode_ == LIGHT_RESTORE_AND_ON); | ||||
|       break; | ||||
|     case LIGHT_ALWAYS_OFF: | ||||
|       recovered.state = false; | ||||
|       break; | ||||
|   | ||||
| @@ -22,6 +22,8 @@ enum LightRestoreMode { | ||||
|   LIGHT_ALWAYS_ON, | ||||
|   LIGHT_RESTORE_INVERTED_DEFAULT_OFF, | ||||
|   LIGHT_RESTORE_INVERTED_DEFAULT_ON, | ||||
|   LIGHT_RESTORE_AND_OFF, | ||||
|   LIGHT_RESTORE_AND_ON, | ||||
| }; | ||||
|  | ||||
| /** This class represents the communication layer between the front-end MQTT layer and the | ||||
|   | ||||
		Reference in New Issue
	
	Block a user