mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-29 22:24:26 +00:00 
			
		
		
		
	Decentralize Automation Generator Code (#182)
* Decentralize Automation Generator Code * Lint
This commit is contained in:
		| @@ -1,6 +1,10 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| from esphomeyaml.automation import maybe_simple_id, ACTION_REGISTRY | ||||
| 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 | ||||
| from esphomeyaml.helpers import Pvariable, esphomelib_ns, setup_mqtt_component, add, \ | ||||
|     TemplateArguments, get_variable | ||||
|  | ||||
| PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ | ||||
|  | ||||
| @@ -37,3 +41,50 @@ def setup_cover(cover_obj, mqtt_obj, config): | ||||
|  | ||||
|  | ||||
| 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), | ||||
| }) | ||||
|  | ||||
|  | ||||
| @ACTION_REGISTRY.register(CONF_COVER_OPEN, COVER_OPEN_ACTION_SCHEMA) | ||||
| def cover_open_to_code(config, action_id, arg_type): | ||||
|     template_arg = TemplateArguments(arg_type) | ||||
|     for var in get_variable(config[CONF_ID]): | ||||
|         yield None | ||||
|     rhs = var.make_open_action(template_arg) | ||||
|     type = OpenAction.template(arg_type) | ||||
|     yield Pvariable(action_id, rhs, type=type) | ||||
|  | ||||
|  | ||||
| CONF_COVER_CLOSE = 'cover.close' | ||||
| COVER_CLOSE_ACTION_SCHEMA = maybe_simple_id({ | ||||
|     vol.Required(CONF_ID): cv.use_variable_id(None), | ||||
| }) | ||||
|  | ||||
|  | ||||
| @ACTION_REGISTRY.register(CONF_COVER_CLOSE, COVER_CLOSE_ACTION_SCHEMA) | ||||
| def cover_close_to_code(config, action_id, arg_type): | ||||
|     template_arg = TemplateArguments(arg_type) | ||||
|     for var in get_variable(config[CONF_ID]): | ||||
|         yield None | ||||
|     rhs = var.make_close_action(template_arg) | ||||
|     type = CloseAction.template(arg_type) | ||||
|     yield Pvariable(action_id, rhs, type=type) | ||||
|  | ||||
|  | ||||
| CONF_COVER_STOP = 'cover.stop' | ||||
| COVER_STOP_ACTION_SCHEMA = maybe_simple_id({ | ||||
|     vol.Required(CONF_ID): cv.use_variable_id(None), | ||||
| }) | ||||
|  | ||||
|  | ||||
| @ACTION_REGISTRY.register(CONF_COVER_STOP, COVER_STOP_ACTION_SCHEMA) | ||||
| def cover_stop_to_code(config, action_id, arg_type): | ||||
|     template_arg = TemplateArguments(arg_type) | ||||
|     for var in get_variable(config[CONF_ID]): | ||||
|         yield None | ||||
|     rhs = var.make_stop_action(template_arg) | ||||
|     type = StopAction.template(arg_type) | ||||
|     yield Pvariable(action_id, rhs, type=type) | ||||
|   | ||||
| @@ -1,9 +1,11 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| from esphomeyaml import config_validation as cv, pins | ||||
| from esphomeyaml.automation import maybe_simple_id, ACTION_REGISTRY | ||||
| from esphomeyaml.const import CONF_ID, CONF_NUMBER, CONF_RUN_CYCLES, CONF_RUN_DURATION, \ | ||||
|     CONF_SLEEP_DURATION, CONF_WAKEUP_PIN | ||||
| from esphomeyaml.helpers import App, Pvariable, add, gpio_input_pin_expression, esphomelib_ns | ||||
| from esphomeyaml.helpers import App, Pvariable, add, gpio_input_pin_expression, esphomelib_ns, \ | ||||
|     TemplateArguments, get_variable | ||||
|  | ||||
|  | ||||
| def validate_pin_number(value): | ||||
| @@ -57,3 +59,35 @@ def to_code(config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_DEEP_SLEEP' | ||||
|  | ||||
|  | ||||
| CONF_DEEP_SLEEP_ENTER = 'deep_sleep.enter' | ||||
| DEEP_SLEEP_ENTER_ACTION_SCHEMA = maybe_simple_id({ | ||||
|     vol.Required(CONF_ID): cv.use_variable_id(DeepSleepComponent), | ||||
| }) | ||||
|  | ||||
|  | ||||
| @ACTION_REGISTRY.register(CONF_DEEP_SLEEP_ENTER, DEEP_SLEEP_ENTER_ACTION_SCHEMA) | ||||
| def deep_sleep_enter_to_code(config, action_id, arg_type): | ||||
|     template_arg = TemplateArguments(arg_type) | ||||
|     for var in get_variable(config[CONF_ID]): | ||||
|         yield None | ||||
|     rhs = var.make_enter_deep_sleep_action(template_arg) | ||||
|     type = EnterDeepSleepAction.template(arg_type) | ||||
|     yield Pvariable(action_id, rhs, type=type) | ||||
|  | ||||
|  | ||||
| CONF_DEEP_SLEEP_PREVENT = 'deep_sleep.prevent' | ||||
| DEEP_SLEEP_PREVENT_ACTION_SCHEMA = maybe_simple_id({ | ||||
|     vol.Required(CONF_ID): cv.use_variable_id(DeepSleepComponent), | ||||
| }) | ||||
|  | ||||
|  | ||||
| @ACTION_REGISTRY.register(CONF_DEEP_SLEEP_PREVENT, DEEP_SLEEP_PREVENT_ACTION_SCHEMA) | ||||
| def deep_sleep_prevent_to_code(config, action_id, arg_type): | ||||
|     template_arg = TemplateArguments(arg_type) | ||||
|     for var in get_variable(config[CONF_ID]): | ||||
|         yield None | ||||
|     rhs = var.make_prevent_deep_sleep_action(template_arg) | ||||
|     type = PreventDeepSleepAction.template(arg_type) | ||||
|     yield Pvariable(action_id, rhs, type=type) | ||||
|   | ||||
| @@ -1,9 +1,12 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| from esphomeyaml.automation import maybe_simple_id, ACTION_REGISTRY | ||||
| import esphomeyaml.config_validation as cv | ||||
| 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, CONF_INTERNAL | ||||
| from esphomeyaml.helpers import Application, Pvariable, add, esphomelib_ns, setup_mqtt_component | ||||
|     CONF_OSCILLATION_STATE_TOPIC, CONF_SPEED_COMMAND_TOPIC, CONF_SPEED_STATE_TOPIC, CONF_INTERNAL, \ | ||||
|     CONF_SPEED, CONF_OSCILLATING | ||||
| from esphomeyaml.helpers import Application, Pvariable, add, esphomelib_ns, setup_mqtt_component, \ | ||||
|     TemplateArguments, get_variable, templatable, bool_ | ||||
|  | ||||
| PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ | ||||
|  | ||||
| @@ -66,3 +69,62 @@ def setup_fan(fan_obj, mqtt_obj, config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_FAN' | ||||
|  | ||||
|  | ||||
| CONF_FAN_TOGGLE = 'fan.toggle' | ||||
| FAN_TOGGLE_ACTION_SCHEMA = maybe_simple_id({ | ||||
|     vol.Required(CONF_ID): cv.use_variable_id(None), | ||||
| }) | ||||
|  | ||||
|  | ||||
| @ACTION_REGISTRY.register(CONF_FAN_TOGGLE, FAN_TOGGLE_ACTION_SCHEMA) | ||||
| def fan_toggle_to_code(config, action_id, arg_type): | ||||
|     template_arg = TemplateArguments(arg_type) | ||||
|     for var in get_variable(config[CONF_ID]): | ||||
|         yield None | ||||
|     rhs = var.make_toggle_action(template_arg) | ||||
|     type = ToggleAction.template(arg_type) | ||||
|     yield Pvariable(action_id, rhs, type=type) | ||||
|  | ||||
|  | ||||
| CONF_FAN_TURN_OFF = 'fan.turn_off' | ||||
| FAN_TURN_OFF_ACTION_SCHEMA = maybe_simple_id({ | ||||
|     vol.Required(CONF_ID): cv.use_variable_id(None), | ||||
| }) | ||||
|  | ||||
|  | ||||
| @ACTION_REGISTRY.register(CONF_FAN_TURN_OFF, FAN_TURN_OFF_ACTION_SCHEMA) | ||||
| def fan_turn_off_to_code(config, action_id, arg_type): | ||||
|     template_arg = TemplateArguments(arg_type) | ||||
|     for var in get_variable(config[CONF_ID]): | ||||
|         yield None | ||||
|     rhs = var.make_turn_off_action(template_arg) | ||||
|     type = TurnOffAction.template(arg_type) | ||||
|     yield Pvariable(action_id, rhs, type=type) | ||||
|  | ||||
|  | ||||
| CONF_FAN_TURN_ON = 'fan.turn_on' | ||||
| FAN_TURN_ON_ACTION_SCHEMA = maybe_simple_id({ | ||||
|     vol.Required(CONF_ID): cv.use_variable_id(None), | ||||
|     vol.Optional(CONF_OSCILLATING): cv.templatable(cv.boolean), | ||||
|     vol.Optional(CONF_SPEED): cv.templatable(validate_fan_speed), | ||||
| }) | ||||
|  | ||||
|  | ||||
| @ACTION_REGISTRY.register(CONF_FAN_TURN_ON, FAN_TURN_ON_ACTION_SCHEMA) | ||||
| def fan_turn_on_to_code(config, action_id, arg_type): | ||||
|     template_arg = TemplateArguments(arg_type) | ||||
|     for var in get_variable(config[CONF_ID]): | ||||
|         yield None | ||||
|     rhs = var.make_turn_on_action(template_arg) | ||||
|     type = TurnOnAction.template(arg_type) | ||||
|     action = Pvariable(action_id, rhs, type=type) | ||||
|     if CONF_OSCILLATING in config: | ||||
|         for template_ in templatable(config[CONF_OSCILLATING], arg_type, bool_): | ||||
|             yield None | ||||
|         add(action.set_oscillating(template_)) | ||||
|     if CONF_SPEED in config: | ||||
|         for template_ in templatable(config[CONF_SPEED], arg_type, FanSpeed): | ||||
|             yield None | ||||
|         add(action.set_speed(template_)) | ||||
|     yield action | ||||
|   | ||||
| @@ -1,14 +1,16 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| from esphomeyaml.automation import maybe_simple_id, ACTION_REGISTRY | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml.const import CONF_ALPHA, CONF_BLUE, CONF_BRIGHTNESS, CONF_COLORS, \ | ||||
|     CONF_DEFAULT_TRANSITION_LENGTH, CONF_DURATION, CONF_EFFECTS, CONF_EFFECT_ID, \ | ||||
|     CONF_GAMMA_CORRECT, \ | ||||
|     CONF_GREEN, CONF_ID, CONF_INTERNAL, CONF_LAMBDA, CONF_MQTT_ID, CONF_NAME, CONF_NUM_LEDS, \ | ||||
|     CONF_RANDOM, CONF_RED, CONF_SPEED, CONF_STATE, CONF_TRANSITION_LENGTH, CONF_UPDATE_INTERVAL, \ | ||||
|     CONF_WHITE, CONF_WIDTH | ||||
|     CONF_GAMMA_CORRECT, CONF_GREEN, CONF_ID, CONF_INTERNAL, CONF_LAMBDA, CONF_MQTT_ID, CONF_NAME, \ | ||||
|     CONF_NUM_LEDS, CONF_RANDOM, CONF_RED, CONF_SPEED, CONF_STATE, CONF_TRANSITION_LENGTH, \ | ||||
|     CONF_UPDATE_INTERVAL, CONF_WHITE, CONF_WIDTH, CONF_FLASH_LENGTH, CONF_COLOR_TEMPERATURE, \ | ||||
|     CONF_EFFECT | ||||
| from esphomeyaml.helpers import Application, ArrayInitializer, Pvariable, RawExpression, \ | ||||
|     StructInitializer, add, add_job, esphomelib_ns, process_lambda, setup_mqtt_component | ||||
|     StructInitializer, add, add_job, esphomelib_ns, process_lambda, setup_mqtt_component, \ | ||||
|     get_variable, TemplateArguments, templatable, uint32, float_, std_string | ||||
|  | ||||
| PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ | ||||
|  | ||||
| @@ -338,3 +340,111 @@ def setup_light(light_obj, mqtt_obj, config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_LIGHT' | ||||
|  | ||||
|  | ||||
| CONF_LIGHT_TOGGLE = 'light.toggle' | ||||
| LIGHT_TOGGLE_ACTION_SCHEMA = maybe_simple_id({ | ||||
|     vol.Required(CONF_ID): cv.use_variable_id(None), | ||||
|     vol.Optional(CONF_TRANSITION_LENGTH): cv.templatable(cv.positive_time_period_milliseconds), | ||||
| }) | ||||
|  | ||||
|  | ||||
| @ACTION_REGISTRY.register(CONF_LIGHT_TOGGLE, LIGHT_TOGGLE_ACTION_SCHEMA) | ||||
| def light_toggle_to_code(config, action_id, arg_type): | ||||
|     template_arg = TemplateArguments(arg_type) | ||||
|     for var in get_variable(config[CONF_ID]): | ||||
|         yield None | ||||
|     rhs = var.make_toggle_action(template_arg) | ||||
|     type = ToggleAction.template(template_arg) | ||||
|     action = Pvariable(action_id, rhs, type=type) | ||||
|     if CONF_TRANSITION_LENGTH in config: | ||||
|         for template_ in templatable(config[CONF_TRANSITION_LENGTH], arg_type, uint32): | ||||
|             yield None | ||||
|         add(action.set_transition_length(template_)) | ||||
|     yield action | ||||
|  | ||||
|  | ||||
| CONF_LIGHT_TURN_OFF = 'light.turn_off' | ||||
| LIGHT_TURN_OFF_ACTION_SCHEMA = maybe_simple_id({ | ||||
|     vol.Required(CONF_ID): cv.use_variable_id(None), | ||||
|     vol.Optional(CONF_TRANSITION_LENGTH): cv.templatable(cv.positive_time_period_milliseconds), | ||||
| }) | ||||
|  | ||||
|  | ||||
| @ACTION_REGISTRY.register(CONF_LIGHT_TURN_OFF, LIGHT_TURN_OFF_ACTION_SCHEMA) | ||||
| def light_turn_off_to_code(config, action_id, arg_type): | ||||
|     template_arg = TemplateArguments(arg_type) | ||||
|     for var in get_variable(config[CONF_ID]): | ||||
|         yield None | ||||
|     rhs = var.make_turn_off_action(template_arg) | ||||
|     type = TurnOffAction.template(template_arg) | ||||
|     action = Pvariable(action_id, rhs, type=type) | ||||
|     if CONF_TRANSITION_LENGTH in config: | ||||
|         for template_ in templatable(config[CONF_TRANSITION_LENGTH], arg_type, uint32): | ||||
|             yield None | ||||
|         add(action.set_transition_length(template_)) | ||||
|     yield action | ||||
|  | ||||
|  | ||||
| CONF_LIGHT_TURN_ON = 'light.turn_on' | ||||
| LIGHT_TURN_ON_ACTION_SCHEMA = maybe_simple_id({ | ||||
|     vol.Required(CONF_ID): cv.use_variable_id(None), | ||||
|     vol.Exclusive(CONF_TRANSITION_LENGTH, 'transformer'): | ||||
|         cv.templatable(cv.positive_time_period_milliseconds), | ||||
|     vol.Exclusive(CONF_FLASH_LENGTH, 'transformer'): | ||||
|         cv.templatable(cv.positive_time_period_milliseconds), | ||||
|     vol.Optional(CONF_BRIGHTNESS): cv.templatable(cv.percentage), | ||||
|     vol.Optional(CONF_RED): cv.templatable(cv.percentage), | ||||
|     vol.Optional(CONF_GREEN): cv.templatable(cv.percentage), | ||||
|     vol.Optional(CONF_BLUE): cv.templatable(cv.percentage), | ||||
|     vol.Optional(CONF_WHITE): cv.templatable(cv.percentage), | ||||
|     vol.Optional(CONF_COLOR_TEMPERATURE): cv.templatable(cv.positive_float), | ||||
|     vol.Optional(CONF_EFFECT): cv.templatable(cv.string), | ||||
| }) | ||||
|  | ||||
|  | ||||
| @ACTION_REGISTRY.register(CONF_LIGHT_TURN_ON, LIGHT_TURN_ON_ACTION_SCHEMA) | ||||
| def light_turn_on_to_code(config, action_id, arg_type): | ||||
|     template_arg = TemplateArguments(arg_type) | ||||
|     for var in get_variable(config[CONF_ID]): | ||||
|         yield None | ||||
|     rhs = var.make_turn_on_action(template_arg) | ||||
|     type = TurnOnAction.template(template_arg) | ||||
|     action = Pvariable(action_id, rhs, type=type) | ||||
|     if CONF_TRANSITION_LENGTH in config: | ||||
|         for template_ in templatable(config[CONF_TRANSITION_LENGTH], arg_type, uint32): | ||||
|             yield None | ||||
|         add(action.set_transition_length(template_)) | ||||
|     if CONF_FLASH_LENGTH in config: | ||||
|         for template_ in templatable(config[CONF_FLASH_LENGTH], arg_type, uint32): | ||||
|             yield None | ||||
|         add(action.set_flash_length(template_)) | ||||
|     if CONF_BRIGHTNESS in config: | ||||
|         for template_ in templatable(config[CONF_BRIGHTNESS], arg_type, float_): | ||||
|             yield None | ||||
|         add(action.set_brightness(template_)) | ||||
|     if CONF_RED in config: | ||||
|         for template_ in templatable(config[CONF_RED], arg_type, float_): | ||||
|             yield None | ||||
|         add(action.set_red(template_)) | ||||
|     if CONF_GREEN in config: | ||||
|         for template_ in templatable(config[CONF_GREEN], arg_type, float_): | ||||
|             yield None | ||||
|         add(action.set_green(template_)) | ||||
|     if CONF_BLUE in config: | ||||
|         for template_ in templatable(config[CONF_BLUE], arg_type, float_): | ||||
|             yield None | ||||
|         add(action.set_blue(template_)) | ||||
|     if CONF_WHITE in config: | ||||
|         for template_ in templatable(config[CONF_WHITE], arg_type, float_): | ||||
|             yield None | ||||
|         add(action.set_white(template_)) | ||||
|     if CONF_COLOR_TEMPERATURE in config: | ||||
|         for template_ in templatable(config[CONF_COLOR_TEMPERATURE], arg_type, float_): | ||||
|             yield None | ||||
|         add(action.set_color_temperature(template_)) | ||||
|     if CONF_EFFECT in config: | ||||
|         for template_ in templatable(config[CONF_EFFECT], arg_type, std_string): | ||||
|             yield None | ||||
|         add(action.set_effect(template_)) | ||||
|     yield action | ||||
|   | ||||
| @@ -2,6 +2,7 @@ import re | ||||
|  | ||||
| import voluptuous as vol | ||||
|  | ||||
| from esphomeyaml.automation import ACTION_REGISTRY | ||||
| from esphomeyaml import automation | ||||
| from esphomeyaml.components import logger | ||||
| import esphomeyaml.config_validation as cv | ||||
| @@ -11,7 +12,8 @@ from esphomeyaml.const import CONF_BIRTH_MESSAGE, CONF_BROKER, CONF_CLIENT_ID, C | ||||
|     CONF_REBOOT_TIMEOUT, CONF_RETAIN, CONF_SHUTDOWN_MESSAGE, CONF_SSL_FINGERPRINTS, CONF_TOPIC, \ | ||||
|     CONF_TOPIC_PREFIX, CONF_TRIGGER_ID, CONF_USERNAME, CONF_WILL_MESSAGE | ||||
| from esphomeyaml.helpers import App, ArrayInitializer, Pvariable, RawExpression, \ | ||||
|     StructInitializer, TemplateArguments, add, esphomelib_ns, optional, std_string | ||||
|     StructInitializer, TemplateArguments, add, esphomelib_ns, optional, std_string, templatable, \ | ||||
|     uint8, bool_ | ||||
|  | ||||
|  | ||||
| def validate_message_just_topic(value): | ||||
| @@ -159,6 +161,39 @@ def to_code(config): | ||||
|         automation.build_automation(trigger, std_string, conf) | ||||
|  | ||||
|  | ||||
| CONF_MQTT_PUBLISH = 'mqtt.publish' | ||||
| MQTT_PUBLISH_ACTION_SCHEMA = vol.Schema({ | ||||
|     vol.Required(CONF_TOPIC): cv.templatable(cv.publish_topic), | ||||
|     vol.Required(CONF_PAYLOAD): cv.templatable(cv.mqtt_payload), | ||||
|     vol.Optional(CONF_QOS): cv.templatable(cv.mqtt_qos), | ||||
|     vol.Optional(CONF_RETAIN): cv.templatable(cv.boolean), | ||||
| }) | ||||
|  | ||||
|  | ||||
| @ACTION_REGISTRY.register(CONF_MQTT_PUBLISH, MQTT_PUBLISH_ACTION_SCHEMA) | ||||
| def mqtt_publish_action_to_code(config, action_id, arg_type): | ||||
|     template_arg = TemplateArguments(arg_type) | ||||
|     rhs = App.Pget_mqtt_client().Pmake_publish_action(template_arg) | ||||
|     type = MQTTPublishAction.template(template_arg) | ||||
|     action = Pvariable(action_id, rhs, type=type) | ||||
|     for template_ in templatable(config[CONF_TOPIC], arg_type, std_string): | ||||
|         yield None | ||||
|     add(action.set_topic(template_)) | ||||
|  | ||||
|     for template_ in templatable(config[CONF_PAYLOAD], arg_type, std_string): | ||||
|         yield None | ||||
|     add(action.set_payload(template_)) | ||||
|     if CONF_QOS in config: | ||||
|         for template_ in templatable(config[CONF_QOS], arg_type, uint8): | ||||
|             yield | ||||
|         add(action.set_qos(template_)) | ||||
|     if CONF_RETAIN in config: | ||||
|         for template_ in templatable(config[CONF_RETAIN], arg_type, bool_): | ||||
|             yield None | ||||
|         add(action.set_retain(template_)) | ||||
|     yield action | ||||
|  | ||||
|  | ||||
| def required_build_flags(config): | ||||
|     if CONF_SSL_FINGERPRINTS in config: | ||||
|         return '-DASYNC_TCP_SSL_ENABLED=1' | ||||
|   | ||||
| @@ -1,9 +1,11 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| from esphomeyaml.automation import maybe_simple_id, ACTION_REGISTRY | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml.components.power_supply import PowerSupplyComponent | ||||
| from esphomeyaml.const import CONF_INVERTED, CONF_MAX_POWER, CONF_POWER_SUPPLY | ||||
| from esphomeyaml.helpers import add, esphomelib_ns, get_variable | ||||
| from esphomeyaml.const import CONF_INVERTED, CONF_MAX_POWER, CONF_POWER_SUPPLY, CONF_ID, CONF_LEVEL | ||||
| from esphomeyaml.helpers import add, esphomelib_ns, get_variable, TemplateArguments, Pvariable, \ | ||||
|     templatable, bool_ | ||||
|  | ||||
| PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ | ||||
|  | ||||
| @@ -46,3 +48,56 @@ def setup_output_platform(obj, config, skip_power_supply=False): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_OUTPUT' | ||||
|  | ||||
|  | ||||
| CONF_OUTPUT_TURN_ON = 'output.turn_on' | ||||
| OUTPUT_TURN_OFF_ACTION = maybe_simple_id({ | ||||
|     vol.Required(CONF_ID): cv.use_variable_id(None), | ||||
| }) | ||||
|  | ||||
|  | ||||
| @ACTION_REGISTRY.register(CONF_OUTPUT_TURN_ON, OUTPUT_TURN_OFF_ACTION) | ||||
| def output_turn_on_to_code(config, action_id, arg_type): | ||||
|     template_arg = TemplateArguments(arg_type) | ||||
|     for var in get_variable(config[CONF_ID]): | ||||
|         yield None | ||||
|     rhs = var.make_turn_off_action(template_arg) | ||||
|     type = TurnOffAction.template(arg_type) | ||||
|     yield Pvariable(action_id, rhs, type=type) | ||||
|  | ||||
|  | ||||
| CONF_OUTPUT_TURN_OFF = 'output.turn_off' | ||||
| OUTPUT_TURN_ON_ACTION = maybe_simple_id({ | ||||
|     vol.Required(CONF_ID): cv.use_variable_id(None) | ||||
| }) | ||||
|  | ||||
|  | ||||
| @ACTION_REGISTRY.register(CONF_OUTPUT_TURN_OFF, OUTPUT_TURN_ON_ACTION) | ||||
| def output_turn_off_to_code(config, action_id, arg_type): | ||||
|     template_arg = TemplateArguments(arg_type) | ||||
|     for var in get_variable(config[CONF_ID]): | ||||
|         yield None | ||||
|     rhs = var.make_turn_on_action(template_arg) | ||||
|     type = TurnOnAction.template(arg_type) | ||||
|     yield Pvariable(action_id, rhs, type=type) | ||||
|  | ||||
|  | ||||
| CONF_OUTPUT_SET_LEVEL = 'output.set_level' | ||||
| OUTPUT_SET_LEVEL_ACTION = vol.Schema({ | ||||
|     vol.Required(CONF_ID): cv.use_variable_id(None), | ||||
|     vol.Required(CONF_LEVEL): cv.percentage, | ||||
| }) | ||||
|  | ||||
|  | ||||
| @ACTION_REGISTRY.register(CONF_OUTPUT_SET_LEVEL, OUTPUT_SET_LEVEL_ACTION) | ||||
| def output_set_level_to_code(config, action_id, arg_type): | ||||
|     template_arg = TemplateArguments(arg_type) | ||||
|     for var in get_variable(config[CONF_ID]): | ||||
|         yield None | ||||
|     rhs = var.make_set_level_action(template_arg) | ||||
|     type = SetLevelAction.template(arg_type) | ||||
|     action = Pvariable(action_id, rhs, type=type) | ||||
|     for template_ in templatable(config[CONF_LEVEL], arg_type, bool_): | ||||
|         yield None | ||||
|     add(action.set_level(template_)) | ||||
|     yield action | ||||
|   | ||||
| @@ -1,8 +1,10 @@ | ||||
| import voluptuous as vol | ||||
|  | ||||
| from esphomeyaml.automation import maybe_simple_id, ACTION_REGISTRY | ||||
| import esphomeyaml.config_validation as cv | ||||
| from esphomeyaml.const import CONF_ICON, CONF_ID, CONF_INVERTED, CONF_MQTT_ID, CONF_INTERNAL | ||||
| from esphomeyaml.helpers import App, Pvariable, add, esphomelib_ns, setup_mqtt_component | ||||
| from esphomeyaml.helpers import App, Pvariable, add, esphomelib_ns, setup_mqtt_component, \ | ||||
|     TemplateArguments, get_variable | ||||
|  | ||||
| PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend({ | ||||
|  | ||||
| @@ -50,3 +52,51 @@ def register_switch(var, config): | ||||
|  | ||||
|  | ||||
| BUILD_FLAGS = '-DUSE_SWITCH' | ||||
|  | ||||
|  | ||||
| CONF_SWITCH_TOGGLE = 'switch.toggle' | ||||
| SWITCH_TOGGLE_ACTION_SCHEMA = maybe_simple_id({ | ||||
|     vol.Required(CONF_ID): cv.use_variable_id(None), | ||||
| }) | ||||
|  | ||||
|  | ||||
| @ACTION_REGISTRY.register(CONF_SWITCH_TOGGLE, SWITCH_TOGGLE_ACTION_SCHEMA) | ||||
| def switch_toggle_to_code(config, action_id, arg_type): | ||||
|     template_arg = TemplateArguments(arg_type) | ||||
|     for var in get_variable(config[CONF_ID]): | ||||
|         yield None | ||||
|     rhs = var.make_toggle_action(template_arg) | ||||
|     type = ToggleAction.template(arg_type) | ||||
|     yield Pvariable(action_id, rhs, type=type) | ||||
|  | ||||
|  | ||||
| CONF_SWITCH_TURN_OFF = 'switch.turn_off' | ||||
| SWITCH_TURN_OFF_ACTION_SCHEMA = maybe_simple_id({ | ||||
|     vol.Required(CONF_ID): cv.use_variable_id(None), | ||||
| }) | ||||
|  | ||||
|  | ||||
| @ACTION_REGISTRY.register(CONF_SWITCH_TURN_OFF, SWITCH_TURN_OFF_ACTION_SCHEMA) | ||||
| def switch_turn_off_to_code(config, action_id, arg_type): | ||||
|     template_arg = TemplateArguments(arg_type) | ||||
|     for var in get_variable(config[CONF_ID]): | ||||
|         yield None | ||||
|     rhs = var.make_turn_off_action(template_arg) | ||||
|     type = TurnOffAction.template(arg_type) | ||||
|     yield Pvariable(action_id, rhs, type=type) | ||||
|  | ||||
|  | ||||
| CONF_SWITCH_TURN_ON = 'switch.turn_on' | ||||
| SWITCH_TURN_ON_ACTION_SCHEMA = maybe_simple_id({ | ||||
|     vol.Required(CONF_ID): cv.use_variable_id(None), | ||||
| }) | ||||
|  | ||||
|  | ||||
| @ACTION_REGISTRY.register(CONF_SWITCH_TURN_ON, SWITCH_TURN_ON_ACTION_SCHEMA) | ||||
| def switch_turn_on_to_code(config, action_id, arg_type): | ||||
|     template_arg = TemplateArguments(arg_type) | ||||
|     for var in get_variable(config[CONF_ID]): | ||||
|         yield None | ||||
|     rhs = var.make_turn_on_action(template_arg) | ||||
|     type = TurnOnAction.template(arg_type) | ||||
|     yield Pvariable(action_id, rhs, type=type) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user