mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 15:12:06 +00:00 
			
		
		
		
	New coroutine-based task execution
This commit is contained in:
		| @@ -9,13 +9,6 @@ PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ | ||||
|  | ||||
| }) | ||||
|  | ||||
| FAN_SCHEMA = cv.MQTT_COMMAND_COMPONENT_SCHEMA.extend({ | ||||
|     cv.GenerateID('fan'): cv.register_variable_id, | ||||
|     cv.GenerateID('mqtt_fan', CONF_MQTT_ID): cv.register_variable_id, | ||||
|     vol.Optional(CONF_OSCILLATION_STATE_TOPIC): cv.publish_topic, | ||||
|     vol.Optional(CONF_OSCILLATION_COMMAND_TOPIC): cv.subscribe_topic, | ||||
| }) | ||||
|  | ||||
| fan_ns = esphomelib_ns.namespace('fan') | ||||
| FanState = fan_ns.FanState | ||||
| MQTTFanComponent = fan_ns.MQTTFanComponent | ||||
| @@ -29,6 +22,13 @@ FAN_SPEED_LOW = fan_ns.FAN_SPEED_LOW | ||||
| FAN_SPEED_MEDIUM = fan_ns.FAN_SPEED_MEDIUM | ||||
| FAN_SPEED_HIGH = fan_ns.FAN_SPEED_HIGH | ||||
|  | ||||
| FAN_SCHEMA = cv.MQTT_COMMAND_COMPONENT_SCHEMA.extend({ | ||||
|     cv.GenerateID(): cv.declare_variable_id(FanState), | ||||
|     cv.GenerateID(CONF_MQTT_ID): cv.declare_variable_id(MQTTFanComponent), | ||||
|     vol.Optional(CONF_OSCILLATION_STATE_TOPIC): cv.publish_topic, | ||||
|     vol.Optional(CONF_OSCILLATION_COMMAND_TOPIC): cv.subscribe_topic, | ||||
| }) | ||||
|  | ||||
|  | ||||
| FAN_SPEEDS = { | ||||
|     'OFF': FAN_SPEED_OFF, | ||||
| @@ -55,8 +55,8 @@ def setup_fan_core_(fan_var, mqtt_var, config): | ||||
|  | ||||
|  | ||||
| def setup_fan(fan_obj, mqtt_obj, config): | ||||
|     fan_var = Pvariable(FanState, config[CONF_ID], fan_obj, has_side_effects=False) | ||||
|     mqtt_var = Pvariable(MQTTFanComponent, config[CONF_MQTT_ID], mqtt_obj, has_side_effects=False) | ||||
|     fan_var = Pvariable(config[CONF_ID], fan_obj, has_side_effects=False) | ||||
|     mqtt_var = Pvariable(config[CONF_MQTT_ID], mqtt_obj, has_side_effects=False) | ||||
|     setup_fan_core_(fan_var, mqtt_var, config) | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -6,19 +6,24 @@ from esphomeyaml.const import CONF_MAKE_ID, CONF_NAME, CONF_OSCILLATION_OUTPUT, | ||||
| from esphomeyaml.helpers import App, add, get_variable, variable | ||||
|  | ||||
| PLATFORM_SCHEMA = fan.PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID('binary_fan', CONF_MAKE_ID): cv.register_variable_id, | ||||
|     vol.Required(CONF_OUTPUT): cv.variable_id, | ||||
|     vol.Optional(CONF_OSCILLATION_OUTPUT): cv.variable_id, | ||||
|     cv.GenerateID(CONF_MAKE_ID): cv.declare_variable_id(fan.MakeFan), | ||||
|     vol.Required(CONF_OUTPUT): cv.use_variable_id(None), | ||||
|     vol.Optional(CONF_OSCILLATION_OUTPUT): cv.use_variable_id(None), | ||||
| }).extend(fan.FAN_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_fan(config[CONF_NAME]) | ||||
|     fan_struct = variable(fan.MakeFan, config[CONF_MAKE_ID], rhs) | ||||
|     fan_struct = variable(config[CONF_MAKE_ID], rhs) | ||||
|     add(fan_struct.Poutput.set_binary(output)) | ||||
|     if CONF_OSCILLATION_OUTPUT in config: | ||||
|         oscillation_output = get_variable(config[CONF_OSCILLATION_OUTPUT]) | ||||
|         oscillation_output = None | ||||
|         for oscillation_output in get_variable(config[CONF_OSCILLATION_OUTPUT]): | ||||
|             yield | ||||
|         add(fan_struct.Poutput.set_oscillation(oscillation_output)) | ||||
|  | ||||
|     fan.setup_fan(fan_struct.Pstate, fan_struct.Pmqtt, config) | ||||
|   | ||||
| @@ -8,11 +8,11 @@ from esphomeyaml.const import CONF_HIGH, CONF_LOW, CONF_MAKE_ID, CONF_MEDIUM, CO | ||||
| from esphomeyaml.helpers import App, add, get_variable, variable | ||||
|  | ||||
| PLATFORM_SCHEMA = fan.PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID('speed_fan', CONF_MAKE_ID): cv.register_variable_id, | ||||
|     vol.Required(CONF_OUTPUT): cv.variable_id, | ||||
|     cv.GenerateID(CONF_MAKE_ID): cv.declare_variable_id(fan.MakeFan), | ||||
|     vol.Required(CONF_OUTPUT): cv.use_variable_id(None), | ||||
|     vol.Optional(CONF_SPEED_STATE_TOPIC): cv.publish_topic, | ||||
|     vol.Optional(CONF_SPEED_COMMAND_TOPIC): cv.subscribe_topic, | ||||
|     vol.Optional(CONF_OSCILLATION_OUTPUT): cv.variable_id, | ||||
|     vol.Optional(CONF_OSCILLATION_OUTPUT): cv.use_variable_id(None), | ||||
|     vol.Optional(CONF_SPEED): vol.Schema({ | ||||
|         vol.Required(CONF_LOW): cv.percentage, | ||||
|         vol.Required(CONF_MEDIUM): cv.percentage, | ||||
| @@ -22,9 +22,11 @@ PLATFORM_SCHEMA = fan.PLATFORM_SCHEMA.extend({ | ||||
|  | ||||
|  | ||||
| def to_code(config): | ||||
|     output = get_variable(config[CONF_OUTPUT]) | ||||
|     output = None | ||||
|     for output in get_variable(config[CONF_OUTPUT]): | ||||
|         yield | ||||
|     rhs = App.make_fan(config[CONF_NAME]) | ||||
|     fan_struct = variable(fan.MakeFan, config[CONF_MAKE_ID], rhs) | ||||
|     fan_struct = variable(config[CONF_MAKE_ID], rhs) | ||||
|     if CONF_SPEED in config: | ||||
|         speeds = config[CONF_SPEED] | ||||
|         add(fan_struct.Poutput.set_speed(output, 0.0, | ||||
| @@ -35,7 +37,9 @@ def to_code(config): | ||||
|         add(fan_struct.Poutput.set_speed(output)) | ||||
|  | ||||
|     if CONF_OSCILLATION_OUTPUT in config: | ||||
|         oscillation_output = get_variable(config[CONF_OSCILLATION_OUTPUT]) | ||||
|         oscillation_output = None | ||||
|         for oscillation_output in get_variable(config[CONF_OSCILLATION_OUTPUT]): | ||||
|             yield | ||||
|         add(fan_struct.Poutput.set_oscillation(oscillation_output)) | ||||
|  | ||||
|     fan.setup_fan(fan_struct.Pstate, fan_struct.Pmqtt, config) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user