mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	Add light.on_state trigger (#2868)
This commit is contained in:
		| @@ -14,6 +14,7 @@ from esphome.const import ( | ||||
|     CONF_RESTORE_MODE, | ||||
|     CONF_ON_TURN_OFF, | ||||
|     CONF_ON_TURN_ON, | ||||
|     CONF_ON_STATE, | ||||
|     CONF_TRIGGER_ID, | ||||
|     CONF_COLD_WHITE_COLOR_TEMPERATURE, | ||||
|     CONF_WARM_WHITE_COLOR_TEMPERATURE, | ||||
| @@ -37,6 +38,7 @@ from .types import (  # noqa | ||||
|     AddressableLight, | ||||
|     LightTurnOnTrigger, | ||||
|     LightTurnOffTrigger, | ||||
|     LightStateTrigger, | ||||
| ) | ||||
|  | ||||
| CODEOWNERS = ["@esphome/core"] | ||||
| @@ -69,6 +71,11 @@ LIGHT_SCHEMA = cv.ENTITY_BASE_SCHEMA.extend(cv.MQTT_COMMAND_COMPONENT_SCHEMA).ex | ||||
|                 cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(LightTurnOffTrigger), | ||||
|             } | ||||
|         ), | ||||
|         cv.Optional(CONF_ON_STATE): auto.validate_automation( | ||||
|             { | ||||
|                 cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(LightStateTrigger), | ||||
|             } | ||||
|         ), | ||||
|     } | ||||
| ) | ||||
|  | ||||
| @@ -151,6 +158,9 @@ async def setup_light_core_(light_var, output_var, config): | ||||
|     for conf in config.get(CONF_ON_TURN_OFF, []): | ||||
|         trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], light_var) | ||||
|         await auto.build_automation(trigger, [], conf) | ||||
|     for conf in config.get(CONF_ON_STATE, []): | ||||
|         trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], light_var) | ||||
|         await auto.build_automation(trigger, [], conf) | ||||
|  | ||||
|     if CONF_COLOR_CORRECT in config: | ||||
|         cg.add(output_var.set_correction(*config[CONF_COLOR_CORRECT])) | ||||
|   | ||||
| @@ -141,6 +141,13 @@ class LightTurnOffTrigger : public Trigger<> { | ||||
|   } | ||||
| }; | ||||
|  | ||||
| class LightStateTrigger : public Trigger<> { | ||||
|  public: | ||||
|   LightStateTrigger(LightState *a_light) { | ||||
|     a_light->add_new_remote_values_callback([this]() { this->trigger(); }); | ||||
|   } | ||||
| }; | ||||
|  | ||||
| // This is slightly ugly, but we can't log in headers, and can't make this a static method on AddressableSet | ||||
| // due to the template. It's just a temporary warning anyway. | ||||
| void addressableset_warn_about_scale(const char *field); | ||||
|   | ||||
| @@ -41,6 +41,7 @@ LightTurnOnTrigger = light_ns.class_( | ||||
| LightTurnOffTrigger = light_ns.class_( | ||||
|     "LightTurnOffTrigger", automation.Trigger.template() | ||||
| ) | ||||
| LightStateTrigger = light_ns.class_("LightStateTrigger", automation.Trigger.template()) | ||||
|  | ||||
| # Effects | ||||
| LightEffect = light_ns.class_("LightEffect") | ||||
|   | ||||
		Reference in New Issue
	
	Block a user