mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +00:00 
			
		
		
		
	Let esphomeyaml know about class inheritance (#229)
* Allow overriding setup priority * Add inheritance tree * Global variables * Tests and better validation * Fix * Lint
This commit is contained in:
		| @@ -5,21 +5,25 @@ from esphomeyaml.components import mqtt | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml.const import CONF_ID, CONF_MQTT_ID, CONF_INTERNAL | ||||
| from esphomeyaml.helpers import Pvariable, esphomelib_ns, setup_mqtt_component, add, \ | ||||
|     TemplateArguments, get_variable | ||||
|     TemplateArguments, get_variable, Action, Nameable | ||||
|  | ||||
| PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ | ||||
|  | ||||
| }) | ||||
|  | ||||
| cover_ns = esphomelib_ns.namespace('cover') | ||||
| Cover = cover_ns.Cover | ||||
| MQTTCoverComponent = cover_ns.MQTTCoverComponent | ||||
| CoverState = cover_ns.CoverState | ||||
|  | ||||
| Cover = cover_ns.class_('Cover', Nameable) | ||||
| MQTTCoverComponent = cover_ns.class_('MQTTCoverComponent', mqtt.MQTTComponent) | ||||
|  | ||||
| CoverState = cover_ns.class_('CoverState') | ||||
| COVER_OPEN = cover_ns.COVER_OPEN | ||||
| COVER_CLOSED = cover_ns.COVER_CLOSED | ||||
| OpenAction = cover_ns.OpenAction | ||||
| CloseAction = cover_ns.CloseAction | ||||
| StopAction = cover_ns.StopAction | ||||
|  | ||||
| # Actions | ||||
| OpenAction = cover_ns.class_('OpenAction', Action) | ||||
| CloseAction = cover_ns.class_('CloseAction', Action) | ||||
| StopAction = cover_ns.class_('StopAction', Action) | ||||
|  | ||||
| COVER_SCHEMA = cv.MQTT_COMMAND_COMPONENT_SCHEMA.extend({ | ||||
|     cv.GenerateID(): cv.declare_variable_id(Cover), | ||||
| @@ -45,7 +49,7 @@ BUILD_FLAGS = '-DUSE_COVER' | ||||
|  | ||||
| CONF_COVER_OPEN = 'cover.open' | ||||
| COVER_OPEN_ACTION_SCHEMA = maybe_simple_id({ | ||||
|     vol.Required(CONF_ID): cv.use_variable_id(None), | ||||
|     vol.Required(CONF_ID): cv.use_variable_id(Cover), | ||||
| }) | ||||
|  | ||||
|  | ||||
| @@ -61,7 +65,7 @@ def cover_open_to_code(config, action_id, arg_type): | ||||
|  | ||||
| CONF_COVER_CLOSE = 'cover.close' | ||||
| COVER_CLOSE_ACTION_SCHEMA = maybe_simple_id({ | ||||
|     vol.Required(CONF_ID): cv.use_variable_id(None), | ||||
|     vol.Required(CONF_ID): cv.use_variable_id(Cover), | ||||
| }) | ||||
|  | ||||
|  | ||||
| @@ -77,7 +81,7 @@ def cover_close_to_code(config, action_id, arg_type): | ||||
|  | ||||
| CONF_COVER_STOP = 'cover.stop' | ||||
| COVER_STOP_ACTION_SCHEMA = maybe_simple_id({ | ||||
|     vol.Required(CONF_ID): cv.use_variable_id(None), | ||||
|     vol.Required(CONF_ID): cv.use_variable_id(Cover), | ||||
| }) | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -5,18 +5,21 @@ from esphomeyaml import automation | ||||
| from esphomeyaml.components import cover | ||||
| from esphomeyaml.const import CONF_CLOSE_ACTION, CONF_LAMBDA, CONF_MAKE_ID, CONF_NAME, \ | ||||
|     CONF_OPEN_ACTION, CONF_STOP_ACTION, CONF_OPTIMISTIC | ||||
| from esphomeyaml.helpers import App, Application, NoArg, add, process_lambda, variable, optional | ||||
| from esphomeyaml.helpers import App, Application, NoArg, add, process_lambda, variable, optional, \ | ||||
|     setup_component | ||||
|  | ||||
| MakeTemplateCover = Application.MakeTemplateCover | ||||
| MakeTemplateCover = Application.struct('MakeTemplateCover') | ||||
| TemplateCover = cover.cover_ns.class_('TemplateCover', cover.Cover) | ||||
|  | ||||
| PLATFORM_SCHEMA = cv.nameable(cover.COVER_PLATFORM_SCHEMA.extend({ | ||||
|     cv.GenerateID(CONF_MAKE_ID): cv.declare_variable_id(MakeTemplateCover), | ||||
|     cv.GenerateID(): cv.declare_variable_id(TemplateCover), | ||||
|     vol.Optional(CONF_LAMBDA): cv.lambda_, | ||||
|     vol.Optional(CONF_OPTIMISTIC): cv.boolean, | ||||
|     vol.Optional(CONF_OPEN_ACTION): automation.validate_automation(single=True), | ||||
|     vol.Optional(CONF_CLOSE_ACTION): automation.validate_automation(single=True), | ||||
|     vol.Optional(CONF_STOP_ACTION): automation.validate_automation(single=True), | ||||
| }), cv.has_at_least_one_key(CONF_LAMBDA, CONF_OPTIMISTIC)) | ||||
| }).extend(cv.COMPONENT_SCHEMA.schema), cv.has_at_least_one_key(CONF_LAMBDA, CONF_OPTIMISTIC)) | ||||
|  | ||||
|  | ||||
| def to_code(config): | ||||
| @@ -24,9 +27,9 @@ def to_code(config): | ||||
|     make = variable(config[CONF_MAKE_ID], rhs) | ||||
|  | ||||
|     cover.setup_cover(make.Ptemplate_, make.Pmqtt, config) | ||||
|     setup_component(make.Ptemplate_, config) | ||||
|  | ||||
|     if CONF_LAMBDA in config: | ||||
|         template_ = None | ||||
|         for template_ in process_lambda(config[CONF_LAMBDA], [], | ||||
|                                         return_type=optional.template(cover.CoverState)): | ||||
|             yield | ||||
|   | ||||
		Reference in New Issue
	
	Block a user