mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	Automation API & Cleanup
This commit is contained in:
		| @@ -1,26 +1,43 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml.const import CONF_OSCILLATION_COMMAND_TOPIC, CONF_OSCILLATION_STATE_TOPIC, \ | ||||
|     CONF_SPEED_COMMAND_TOPIC, CONF_SPEED_STATE_TOPIC | ||||
| from esphomeyaml.helpers import add, setup_mqtt_component | ||||
| from esphomeyaml.const import CONF_ID, CONF_MQTT_ID, CONF_OSCILLATION_COMMAND_TOPIC, \ | ||||
|     CONF_OSCILLATION_STATE_TOPIC, CONF_SPEED_COMMAND_TOPIC, CONF_SPEED_STATE_TOPIC | ||||
| from esphomeyaml.helpers import Application, Pvariable, add, esphomelib_ns, setup_mqtt_component | ||||
|  | ||||
| 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, | ||||
| }).extend(cv.MQTT_COMMAND_COMPONENT_SCHEMA.schema) | ||||
| }) | ||||
|  | ||||
| fan_ns = esphomelib_ns.namespace('fan') | ||||
| FanState = fan_ns.FanState | ||||
| MQTTFanComponent = fan_ns.MQTTFanComponent | ||||
| MakeFan = Application.MakeFan | ||||
|  | ||||
|  | ||||
| def setup_mqtt_fan(obj, config): | ||||
| def setup_fan_core_(fan_var, mqtt_var, config): | ||||
|     if CONF_OSCILLATION_STATE_TOPIC in config: | ||||
|         add(obj.set_custom_oscillation_state_topic(config[CONF_OSCILLATION_STATE_TOPIC])) | ||||
|         add(mqtt_var.set_custom_oscillation_state_topic(config[CONF_OSCILLATION_STATE_TOPIC])) | ||||
|     if CONF_OSCILLATION_COMMAND_TOPIC in config: | ||||
|         add(obj.set_custom_oscillation_command_topic(config[CONF_OSCILLATION_COMMAND_TOPIC])) | ||||
|         add(mqtt_var.set_custom_oscillation_command_topic(config[CONF_OSCILLATION_COMMAND_TOPIC])) | ||||
|     if CONF_SPEED_STATE_TOPIC in config: | ||||
|         add(obj.set_custom_speed_state_topic(config[CONF_SPEED_STATE_TOPIC])) | ||||
|         add(mqtt_var.set_custom_speed_state_topic(config[CONF_SPEED_STATE_TOPIC])) | ||||
|     if CONF_SPEED_COMMAND_TOPIC in config: | ||||
|         add(obj.set_custom_speed_command_topic(config[CONF_SPEED_COMMAND_TOPIC])) | ||||
|     setup_mqtt_component(obj, config) | ||||
|         add(mqtt_var.set_custom_speed_command_topic(config[CONF_SPEED_COMMAND_TOPIC])) | ||||
|     setup_mqtt_component(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) | ||||
|     setup_fan_core_(fan_var, mqtt_var, config) | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_FAN' | ||||
|   | ||||
| @@ -2,22 +2,23 @@ import voluptuous as vol | ||||
|  | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml.components import fan | ||||
| from esphomeyaml.const import CONF_ID, CONF_NAME, CONF_OSCILLATION_OUTPUT, CONF_OUTPUT | ||||
| from esphomeyaml.const import CONF_MAKE_ID, CONF_NAME, CONF_OSCILLATION_OUTPUT, CONF_OUTPUT | ||||
| from esphomeyaml.helpers import App, add, get_variable, variable | ||||
|  | ||||
| PLATFORM_SCHEMA = fan.PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID('binary_fan'): cv.register_variable_id, | ||||
|     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, | ||||
| }) | ||||
| }).extend(fan.FAN_SCHEMA.schema) | ||||
|  | ||||
|  | ||||
| def to_code(config): | ||||
|     output = get_variable(config[CONF_OUTPUT]) | ||||
|     rhs = App.make_fan(config[CONF_NAME]) | ||||
|     fan_struct = variable('Application::MakeFan', config[CONF_ID], rhs) | ||||
|     fan_struct = variable(fan.MakeFan, 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]) | ||||
|         add(fan_struct.Poutput.set_oscillation(oscillation_output)) | ||||
|     fan.setup_mqtt_fan(fan_struct.Pmqtt, config) | ||||
|  | ||||
|     fan.setup_fan(fan_struct.Pstate, fan_struct.Pmqtt, config) | ||||
|   | ||||
| @@ -2,13 +2,13 @@ import voluptuous as vol | ||||
|  | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml.components import fan | ||||
| from esphomeyaml.const import CONF_HIGH, CONF_ID, CONF_LOW, \ | ||||
|     CONF_MEDIUM, CONF_NAME, CONF_OSCILLATION_OUTPUT, CONF_OUTPUT, CONF_SPEED, \ | ||||
|     CONF_SPEED_COMMAND_TOPIC, CONF_SPEED_STATE_TOPIC | ||||
| from esphomeyaml.const import CONF_HIGH, CONF_LOW, CONF_MAKE_ID, CONF_MEDIUM, CONF_NAME, \ | ||||
|     CONF_OSCILLATION_OUTPUT, CONF_OUTPUT, CONF_SPEED, CONF_SPEED_COMMAND_TOPIC, \ | ||||
|     CONF_SPEED_STATE_TOPIC | ||||
| from esphomeyaml.helpers import App, add, get_variable, variable | ||||
|  | ||||
| PLATFORM_SCHEMA = fan.PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID('speed_fan'): cv.register_variable_id, | ||||
|     cv.GenerateID('speed_fan', CONF_MAKE_ID): cv.register_variable_id, | ||||
|     vol.Required(CONF_OUTPUT): cv.variable_id, | ||||
|     vol.Optional(CONF_SPEED_STATE_TOPIC): cv.publish_topic, | ||||
|     vol.Optional(CONF_SPEED_COMMAND_TOPIC): cv.subscribe_topic, | ||||
| @@ -18,13 +18,13 @@ PLATFORM_SCHEMA = fan.PLATFORM_SCHEMA.extend({ | ||||
|         vol.Required(CONF_MEDIUM): cv.zero_to_one_float, | ||||
|         vol.Required(CONF_HIGH): cv.zero_to_one_float, | ||||
|     }), | ||||
| }) | ||||
| }).extend(fan.FAN_SCHEMA.schema) | ||||
|  | ||||
|  | ||||
| def to_code(config): | ||||
|     output = get_variable(config[CONF_OUTPUT]) | ||||
|     rhs = App.make_fan(config[CONF_NAME]) | ||||
|     fan_struct = variable('Application::MakeFan', config[CONF_ID], rhs) | ||||
|     fan_struct = variable(fan.MakeFan, config[CONF_MAKE_ID], rhs) | ||||
|     if CONF_SPEED in config: | ||||
|         speeds = config[CONF_SPEED] | ||||
|         add(fan_struct.Poutput.set_speed(output, 0.0, | ||||
| @@ -37,4 +37,5 @@ def to_code(config): | ||||
|     if CONF_OSCILLATION_OUTPUT in config: | ||||
|         oscillation_output = get_variable(config[CONF_OSCILLATION_OUTPUT]) | ||||
|         add(fan_struct.Poutput.set_oscillation(oscillation_output)) | ||||
|     fan.setup_mqtt_fan(fan_struct.Pmqtt, config) | ||||
|  | ||||
|     fan.setup_fan(fan_struct.Pstate, fan_struct.Pmqtt, config) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user