mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +00:00 
			
		
		
		
	New coroutine-based task execution
This commit is contained in:
		| @@ -7,11 +7,6 @@ PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ | ||||
|  | ||||
| }) | ||||
|  | ||||
| LIGHT_SCHEMA = cv.MQTT_COMMAND_COMPONENT_SCHEMA.extend({ | ||||
|     cv.GenerateID('light'): cv.register_variable_id, | ||||
|     cv.GenerateID('mqtt_light', CONF_MQTT_ID): cv.register_variable_id, | ||||
| }) | ||||
|  | ||||
| light_ns = esphomelib_ns.namespace('light') | ||||
| LightState = light_ns.LightState | ||||
| MQTTJSONLightComponent = light_ns.MQTTJSONLightComponent | ||||
| @@ -20,6 +15,11 @@ TurnOffAction = light_ns.TurnOffAction | ||||
| TurnOnAction = light_ns.TurnOnAction | ||||
| MakeLight = Application.MakeLight | ||||
|  | ||||
| LIGHT_SCHEMA = cv.MQTT_COMMAND_COMPONENT_SCHEMA.extend({ | ||||
|     cv.GenerateID(): cv.declare_variable_id(LightState), | ||||
|     cv.GenerateID(CONF_MQTT_ID): cv.declare_variable_id(MQTTJSONLightComponent), | ||||
| }) | ||||
|  | ||||
|  | ||||
| def setup_light_core_(light_var, mqtt_var, config): | ||||
|     if CONF_DEFAULT_TRANSITION_LENGTH in config: | ||||
| @@ -31,9 +31,8 @@ def setup_light_core_(light_var, mqtt_var, config): | ||||
|  | ||||
|  | ||||
| def setup_light(light_obj, mqtt_obj, config): | ||||
|     light_var = Pvariable(LightState, config[CONF_ID], light_obj, has_side_effects=False) | ||||
|     mqtt_var = Pvariable(MQTTJSONLightComponent, config[CONF_MQTT_ID], mqtt_obj, | ||||
|                          has_side_effects=False) | ||||
|     light_var = Pvariable(config[CONF_ID], light_obj, has_side_effects=False) | ||||
|     mqtt_var = Pvariable(config[CONF_MQTT_ID], mqtt_obj, has_side_effects=False) | ||||
|     setup_light_core_(light_var, mqtt_var, config) | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -6,13 +6,15 @@ from esphomeyaml.const import CONF_MAKE_ID, CONF_NAME, CONF_OUTPUT | ||||
| from esphomeyaml.helpers import App, get_variable, variable | ||||
|  | ||||
| PLATFORM_SCHEMA = light.PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID('binary_light', CONF_MAKE_ID): cv.register_variable_id, | ||||
|     vol.Required(CONF_OUTPUT): cv.variable_id, | ||||
|     cv.GenerateID(CONF_MAKE_ID): cv.declare_variable_id(light.MakeLight), | ||||
|     vol.Required(CONF_OUTPUT): cv.use_variable_id(None), | ||||
| }).extend(light.LIGHT_SCHEMA.schema) | ||||
|  | ||||
|  | ||||
| def to_code(config): | ||||
|     output = get_variable(config[CONF_OUTPUT]) | ||||
|     output = None | ||||
|     for output in get_variable(config[CONF_OUTPUT]): | ||||
|         yield | ||||
|     rhs = App.make_binary_light(config[CONF_NAME], output) | ||||
|     light_struct = variable(light.MakeLight, config[CONF_MAKE_ID], rhs) | ||||
|     light_struct = variable(config[CONF_MAKE_ID], rhs) | ||||
|     light.setup_light(light_struct.Pstate, light_struct.Pmqtt, config) | ||||
|   | ||||
| @@ -3,6 +3,7 @@ import voluptuous as vol | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml import pins | ||||
| from esphomeyaml.components import light | ||||
| from esphomeyaml.components.power_supply import PowerSupplyComponent | ||||
| from esphomeyaml.const import CONF_CHIPSET, CONF_DEFAULT_TRANSITION_LENGTH, CONF_GAMMA_CORRECT, \ | ||||
|     CONF_MAKE_ID, CONF_MAX_REFRESH_RATE, CONF_NAME, CONF_NUM_LEDS, CONF_PIN, CONF_POWER_SUPPLY, \ | ||||
|     CONF_RGB_ORDER | ||||
| @@ -52,8 +53,10 @@ def validate(value): | ||||
|     return value | ||||
|  | ||||
|  | ||||
| MakeFastLEDLight = Application.MakeFastLEDLight | ||||
|  | ||||
| PLATFORM_SCHEMA = vol.All(light.PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID('fast_led_clockless_light', CONF_MAKE_ID): cv.register_variable_id, | ||||
|     cv.GenerateID(CONF_MAKE_ID): cv.declare_variable_id(MakeFastLEDLight), | ||||
|  | ||||
|     vol.Required(CONF_CHIPSET): vol.All(vol.Upper, cv.one_of(*TYPES)), | ||||
|     vol.Required(CONF_PIN): pins.output_pin, | ||||
| @@ -64,15 +67,13 @@ PLATFORM_SCHEMA = vol.All(light.PLATFORM_SCHEMA.extend({ | ||||
|  | ||||
|     vol.Optional(CONF_GAMMA_CORRECT): cv.positive_float, | ||||
|     vol.Optional(CONF_DEFAULT_TRANSITION_LENGTH): cv.positive_time_period_milliseconds, | ||||
|     vol.Optional(CONF_POWER_SUPPLY): cv.variable_id, | ||||
|     vol.Optional(CONF_POWER_SUPPLY): cv.use_variable_id(PowerSupplyComponent), | ||||
| }).extend(light.LIGHT_SCHEMA.schema), validate) | ||||
|  | ||||
| MakeFastLEDLight = Application.MakeFastLEDLight | ||||
|  | ||||
|  | ||||
| def to_code(config): | ||||
|     rhs = App.make_fast_led_light(config[CONF_NAME]) | ||||
|     make = variable(MakeFastLEDLight, config[CONF_MAKE_ID], rhs) | ||||
|     make = variable(config[CONF_MAKE_ID], rhs) | ||||
|     fast_led = make.Pfast_led | ||||
|  | ||||
|     rgb_order = None | ||||
| @@ -86,7 +87,9 @@ def to_code(config): | ||||
|         add(fast_led.set_max_refresh_rate(config[CONF_MAX_REFRESH_RATE])) | ||||
|  | ||||
|     if CONF_POWER_SUPPLY in config: | ||||
|         power_supply = get_variable(config[CONF_POWER_SUPPLY]) | ||||
|         power_supply = None | ||||
|         for power_supply in get_variable(config[CONF_POWER_SUPPLY]): | ||||
|             yield | ||||
|         add(fast_led.set_power_supply(power_supply)) | ||||
|  | ||||
|     light.setup_light(make.Pstate, make.Pmqtt, config) | ||||
|   | ||||
| @@ -3,6 +3,7 @@ import voluptuous as vol | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml import pins | ||||
| from esphomeyaml.components import light | ||||
| from esphomeyaml.components.power_supply import PowerSupplyComponent | ||||
| from esphomeyaml.const import CONF_CHIPSET, CONF_CLOCK_PIN, CONF_DATA_PIN, \ | ||||
|     CONF_DEFAULT_TRANSITION_LENGTH, CONF_GAMMA_CORRECT, CONF_MAKE_ID, CONF_MAX_REFRESH_RATE, \ | ||||
|     CONF_NAME, CONF_NUM_LEDS, CONF_POWER_SUPPLY, CONF_RGB_ORDER | ||||
| @@ -29,8 +30,10 @@ RGB_ORDERS = [ | ||||
|     'BGR', | ||||
| ] | ||||
|  | ||||
| MakeFastLEDLight = Application.MakeFastLEDLight | ||||
|  | ||||
| PLATFORM_SCHEMA = light.PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID('fast_led_spi_light', CONF_MAKE_ID): cv.register_variable_id, | ||||
|     cv.GenerateID(CONF_MAKE_ID): cv.declare_variable_id(MakeFastLEDLight), | ||||
|  | ||||
|     vol.Required(CONF_CHIPSET): vol.All(vol.Upper, cv.one_of(*CHIPSETS)), | ||||
|     vol.Required(CONF_DATA_PIN): pins.output_pin, | ||||
| @@ -42,15 +45,13 @@ PLATFORM_SCHEMA = light.PLATFORM_SCHEMA.extend({ | ||||
|  | ||||
|     vol.Optional(CONF_GAMMA_CORRECT): cv.positive_float, | ||||
|     vol.Optional(CONF_DEFAULT_TRANSITION_LENGTH): cv.positive_time_period_milliseconds, | ||||
|     vol.Optional(CONF_POWER_SUPPLY): cv.variable_id, | ||||
|     vol.Optional(CONF_POWER_SUPPLY): cv.use_variable_id(PowerSupplyComponent), | ||||
| }).extend(light.LIGHT_SCHEMA.schema) | ||||
|  | ||||
| MakeFastLEDLight = Application.MakeFastLEDLight | ||||
|  | ||||
|  | ||||
| def to_code(config): | ||||
|     rhs = App.make_fast_led_light(config[CONF_NAME]) | ||||
|     make = variable(MakeFastLEDLight, config[CONF_MAKE_ID], rhs) | ||||
|     make = variable(config[CONF_MAKE_ID], rhs) | ||||
|     fast_led = make.Pfast_led | ||||
|  | ||||
|     rgb_order = None | ||||
| @@ -66,7 +67,9 @@ def to_code(config): | ||||
|         add(fast_led.set_max_refresh_rate(config[CONF_MAX_REFRESH_RATE])) | ||||
|  | ||||
|     if CONF_POWER_SUPPLY in config: | ||||
|         power_supply = get_variable(config[CONF_POWER_SUPPLY]) | ||||
|         power_supply = None | ||||
|         for power_supply in get_variable(config[CONF_POWER_SUPPLY]): | ||||
|             yield | ||||
|         add(fast_led.set_power_supply(power_supply)) | ||||
|  | ||||
|         light.setup_light(make.Pstate, make.Pmqtt, config) | ||||
|   | ||||
| @@ -7,15 +7,17 @@ from esphomeyaml.const import CONF_DEFAULT_TRANSITION_LENGTH, CONF_GAMMA_CORRECT | ||||
| from esphomeyaml.helpers import App, get_variable, variable | ||||
|  | ||||
| PLATFORM_SCHEMA = light.PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID('monochromatic_light', CONF_MAKE_ID): cv.register_variable_id, | ||||
|     vol.Required(CONF_OUTPUT): cv.variable_id, | ||||
|     cv.GenerateID(CONF_MAKE_ID): cv.declare_variable_id(light.MakeLight), | ||||
|     vol.Required(CONF_OUTPUT): cv.use_variable_id(None), | ||||
|     vol.Optional(CONF_GAMMA_CORRECT): cv.positive_float, | ||||
|     vol.Optional(CONF_DEFAULT_TRANSITION_LENGTH): cv.positive_time_period_milliseconds, | ||||
| }).extend(light.LIGHT_SCHEMA.schema) | ||||
|  | ||||
|  | ||||
| def to_code(config): | ||||
|     output = get_variable(config[CONF_OUTPUT]) | ||||
|     output = None | ||||
|     for output in get_variable(config[CONF_OUTPUT]): | ||||
|         yield | ||||
|     rhs = App.make_monochromatic_light(config[CONF_NAME], output) | ||||
|     light_struct = variable(light.MakeLight, config[CONF_MAKE_ID], rhs) | ||||
|     light_struct = variable(config[CONF_MAKE_ID], rhs) | ||||
|     light.setup_light(light_struct.Pstate, light_struct.Pmqtt, config) | ||||
|   | ||||
| @@ -7,19 +7,25 @@ from esphomeyaml.const import CONF_BLUE, CONF_DEFAULT_TRANSITION_LENGTH, CONF_GA | ||||
| from esphomeyaml.helpers import App, get_variable, variable | ||||
|  | ||||
| PLATFORM_SCHEMA = light.PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID('rgb_light', CONF_MAKE_ID): cv.register_variable_id, | ||||
|     vol.Required(CONF_RED): cv.variable_id, | ||||
|     vol.Required(CONF_GREEN): cv.variable_id, | ||||
|     vol.Required(CONF_BLUE): cv.variable_id, | ||||
|     cv.GenerateID(CONF_MAKE_ID): cv.declare_variable_id(light.MakeLight), | ||||
|     vol.Required(CONF_RED): cv.use_variable_id(None), | ||||
|     vol.Required(CONF_GREEN): cv.use_variable_id(None), | ||||
|     vol.Required(CONF_BLUE): cv.use_variable_id(None), | ||||
|     vol.Optional(CONF_GAMMA_CORRECT): cv.positive_float, | ||||
|     vol.Optional(CONF_DEFAULT_TRANSITION_LENGTH): cv.positive_time_period_milliseconds, | ||||
| }).extend(light.LIGHT_SCHEMA.schema) | ||||
|  | ||||
|  | ||||
| def to_code(config): | ||||
|     red = get_variable(config[CONF_RED]) | ||||
|     green = get_variable(config[CONF_GREEN]) | ||||
|     blue = get_variable(config[CONF_BLUE]) | ||||
|     red = None | ||||
|     for red in get_variable(config[CONF_RED]): | ||||
|         yield | ||||
|     green = None | ||||
|     for green in get_variable(config[CONF_GREEN]): | ||||
|         yield | ||||
|     blue = None | ||||
|     for blue in get_variable(config[CONF_BLUE]): | ||||
|         yield | ||||
|     rhs = App.make_rgb_light(config[CONF_NAME], red, green, blue) | ||||
|     light_struct = variable(light.MakeLight, config[CONF_MAKE_ID], rhs) | ||||
|     light_struct = variable(config[CONF_MAKE_ID], rhs) | ||||
|     light.setup_light(light_struct.Pstate, light_struct.Pmqtt, config) | ||||
|   | ||||
| @@ -7,21 +7,29 @@ from esphomeyaml.const import CONF_BLUE, CONF_DEFAULT_TRANSITION_LENGTH, CONF_GA | ||||
| from esphomeyaml.helpers import App, get_variable, variable | ||||
|  | ||||
| PLATFORM_SCHEMA = light.PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID('rgbw_light', CONF_MAKE_ID): cv.register_variable_id, | ||||
|     vol.Required(CONF_RED): cv.variable_id, | ||||
|     vol.Required(CONF_GREEN): cv.variable_id, | ||||
|     vol.Required(CONF_BLUE): cv.variable_id, | ||||
|     vol.Required(CONF_WHITE): cv.variable_id, | ||||
|     cv.GenerateID(CONF_MAKE_ID): cv.declare_variable_id(light.MakeLight), | ||||
|     vol.Required(CONF_RED): cv.use_variable_id(None), | ||||
|     vol.Required(CONF_GREEN): cv.use_variable_id(None), | ||||
|     vol.Required(CONF_BLUE): cv.use_variable_id(None), | ||||
|     vol.Required(CONF_WHITE): cv.use_variable_id(None), | ||||
|     vol.Optional(CONF_GAMMA_CORRECT): cv.positive_float, | ||||
|     vol.Optional(CONF_DEFAULT_TRANSITION_LENGTH): cv.positive_time_period_milliseconds, | ||||
| }).extend(light.LIGHT_SCHEMA.schema) | ||||
|  | ||||
|  | ||||
| def to_code(config): | ||||
|     red = get_variable(config[CONF_RED]) | ||||
|     green = get_variable(config[CONF_GREEN]) | ||||
|     blue = get_variable(config[CONF_BLUE]) | ||||
|     white = get_variable(config[CONF_WHITE]) | ||||
|     red = None | ||||
|     for red in get_variable(config[CONF_RED]): | ||||
|         yield | ||||
|     green = None | ||||
|     for green in get_variable(config[CONF_GREEN]): | ||||
|         yield | ||||
|     blue = None | ||||
|     for blue in get_variable(config[CONF_BLUE]): | ||||
|         yield | ||||
|     white = None | ||||
|     for white in get_variable(config[CONF_WHITE]): | ||||
|         yield | ||||
|     rhs = App.make_rgbw_light(config[CONF_NAME], red, green, blue, white) | ||||
|     light_struct = variable(light.MakeLight, config[CONF_MAKE_ID], rhs) | ||||
|     light_struct = variable(config[CONF_MAKE_ID], rhs) | ||||
|     light.setup_light(light_struct.Pstate, light_struct.Pmqtt, config) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user