def mqtt_publish_json_action_to_code(config, action_id, arg_type): template_arg = TemplateArguments(arg_type) rhs = App.Pget_mqtt_client().Pmake_publish_json_action(template_arg) type = MQTTPublishJsonAction.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 lambda_ in process_lambda(config[CONF_PAYLOAD], [(arg_type, 'x'), (JsonObjectRef, 'root')]): yield None add(action.set_payload(lambda_)) if CONF_QOS in config: add(action.set_qos(config[CONF_QOS])) if CONF_RETAIN in config: add(action.set_retain(config[CONF_RETAIN])) yield action
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 build_action(full_config, arg_type): from esphomeyaml.components import light, mqtt, switch template_arg = TemplateArguments(arg_type) # Keep pylint from freaking out var = None action_id = full_config[CONF_ACTION_ID] key, config = next( (k, v) for k, v in full_config.items() if k in ACTION_KEYS) if key == CONF_DELAY: rhs = App.register_component(DelayAction.new(template_arg)) type = DelayAction.template(template_arg) action = Pvariable(action_id, rhs, type=type) for template_ in templatable(config, arg_type, uint32): yield add(action.set_delay(template_)) yield action elif key == CONF_LAMBDA: for lambda_ in process_lambda(config, [(arg_type, 'x')]): yield None rhs = LambdaAction.new(template_arg, lambda_) type = LambdaAction.template(template_arg) yield Pvariable(action_id, rhs, type=type) elif key == CONF_MQTT_PUBLISH: rhs = App.Pget_mqtt_client().Pmake_publish_action(template_arg) type = mqtt.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 elif key == CONF_LIGHT_TOGGLE: for var in get_variable(config[CONF_ID]): yield None rhs = var.make_toggle_action(template_arg) type = light.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 elif key == CONF_LIGHT_TURN_OFF: for var in get_variable(config[CONF_ID]): yield None rhs = var.make_turn_off_action(template_arg) type = light.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 elif key == CONF_LIGHT_TURN_ON: for var in get_variable(config[CONF_ID]): yield None rhs = var.make_turn_on_action(template_arg) type = light.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 elif key == CONF_SWITCH_TOGGLE: for var in get_variable(config[CONF_ID]): yield None rhs = var.make_toggle_action(template_arg) type = switch.ToggleAction.template(arg_type) yield Pvariable(action_id, rhs, type=type) elif key == CONF_SWITCH_TURN_OFF: for var in get_variable(config[CONF_ID]): yield None rhs = var.make_turn_off_action(template_arg) type = switch.TurnOffAction.template(arg_type) yield Pvariable(action_id, rhs, type=type) elif key == CONF_SWITCH_TURN_ON: for var in get_variable(config[CONF_ID]): yield None rhs = var.make_turn_on_action(template_arg) type = switch.TurnOnAction.template(arg_type) yield Pvariable(action_id, rhs, type=type) elif key == CONF_COVER_OPEN: for var in get_variable(config[CONF_ID]): yield None rhs = var.make_open_action(template_arg) type = cover.OpenAction.template(arg_type) yield Pvariable(action_id, rhs, type=type) elif key == CONF_COVER_CLOSE: for var in get_variable(config[CONF_ID]): yield None rhs = var.make_close_action(template_arg) type = cover.CloseAction.template(arg_type) yield Pvariable(action_id, rhs, type=type) elif key == CONF_COVER_STOP: for var in get_variable(config[CONF_ID]): yield None rhs = var.make_stop_action(template_arg) type = cover.StopAction.template(arg_type) yield Pvariable(action_id, rhs, type=type) elif key == CONF_FAN_TOGGLE: for var in get_variable(config[CONF_ID]): yield None rhs = var.make_toggle_action(template_arg) type = fan.ToggleAction.template(arg_type) yield Pvariable(action_id, rhs, type=type) elif key == CONF_FAN_TURN_OFF: for var in get_variable(config[CONF_ID]): yield None rhs = var.make_turn_off_action(template_arg) type = fan.TurnOffAction.template(arg_type) yield Pvariable(action_id, rhs, type=type) elif key == CONF_FAN_TURN_ON: for var in get_variable(config[CONF_ID]): yield None rhs = var.make_turn_on_action(template_arg) type = fan.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, fan.FanSpeed): yield None add(action.set_speed(template_)) yield action elif key == CONF_OUTPUT_TURN_OFF: for var in get_variable(config[CONF_ID]): yield None rhs = var.make_turn_off_action(template_arg) type = output.TurnOffAction.template(arg_type) yield Pvariable(action_id, rhs, type=type) elif key == CONF_OUTPUT_TURN_ON: for var in get_variable(config[CONF_ID]): yield None rhs = var.make_turn_on_action(template_arg) type = output.TurnOnAction.template(arg_type) yield Pvariable(action_id, rhs, type=type) elif key == CONF_OUTPUT_SET_LEVEL: for var in get_variable(config[CONF_ID]): yield None rhs = var.make_set_level_action(template_arg) type = output.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 elif key == CONF_IF: for conditions in build_conditions(config[CONF_CONDITION], arg_type): yield None rhs = IfAction.new(template_arg, conditions) type = IfAction.template(template_arg) action = Pvariable(action_id, rhs, type=type) if CONF_THEN in config: for actions in build_actions(config[CONF_THEN], arg_type): yield None add(action.add_then(actions)) if CONF_ELSE in config: for actions in build_actions(config[CONF_ELSE], arg_type): yield None add(action.add_else(actions)) yield action elif key == CONF_DEEP_SLEEP_ENTER: for var in get_variable(config[CONF_ID]): yield None rhs = var.make_enter_deep_sleep_action(template_arg) type = deep_sleep.EnterDeepSleepAction.template(arg_type) yield Pvariable(action_id, rhs, type=type) elif key == CONF_DEEP_SLEEP_PREVENT: for var in get_variable(config[CONF_ID]): yield None rhs = var.make_prevent_deep_sleep_action(template_arg) type = deep_sleep.PreventDeepSleepAction.template(arg_type) yield Pvariable(action_id, rhs, type=type) else: raise ESPHomeYAMLError(u"Unsupported action {}".format(config))
def build_action(config, arg_type): from esphomeyaml.components import light, mqtt, switch template_arg = TemplateArguments(arg_type) # Keep pylint from freaking out var = None if CONF_DELAY in config: rhs = App.register_component(DelayAction.new(template_arg)) type = DelayAction.template(template_arg) action = Pvariable(config[CONF_ACTION_ID], rhs, type=type) template_ = None for template_ in templatable(config[CONF_DELAY], arg_type, uint32): yield add(action.set_delay(template_)) yield action elif CONF_LAMBDA in config: lambda_ = None for lambda_ in process_lambda(config[CONF_LAMBDA], [(arg_type, 'x')]): yield None rhs = LambdaAction.new(template_arg, lambda_) type = LambdaAction.template(template_arg) yield Pvariable(config[CONF_ACTION_ID], rhs, type=type) elif CONF_MQTT_PUBLISH in config: conf = config[CONF_MQTT_PUBLISH] rhs = App.Pget_mqtt_client().Pmake_publish_action(template_arg) type = mqtt.MQTTPublishAction.template(template_arg) action = Pvariable(config[CONF_ACTION_ID], rhs, type=type) template_ = None for template_ in templatable(conf[CONF_TOPIC], arg_type, std_string): yield None add(action.set_topic(template_)) template_ = None for template_ in templatable(conf[CONF_PAYLOAD], arg_type, std_string): yield None add(action.set_payload(template_)) if CONF_QOS in conf: template_ = None for template_ in templatable(conf[CONF_QOS], arg_type, uint8): yield add(action.set_qos(template_)) if CONF_RETAIN in conf: template_ = None for template_ in templatable(conf[CONF_RETAIN], arg_type, bool_): yield None add(action.set_retain(template_)) yield action elif CONF_LIGHT_TOGGLE in config: conf = config[CONF_LIGHT_TOGGLE] for var in get_variable(conf[CONF_ID]): yield None rhs = var.make_toggle_action(template_arg) type = light.ToggleAction.template(template_arg) action = Pvariable(config[CONF_ACTION_ID], rhs, type=type) if CONF_TRANSITION_LENGTH in conf: template_ = None for template_ in templatable(conf[CONF_TRANSITION_LENGTH], arg_type, uint32): yield None add(action.set_transition_length(template_)) yield action elif CONF_LIGHT_TURN_OFF in config: conf = config[CONF_LIGHT_TURN_OFF] for var in get_variable(conf[CONF_ID]): yield None rhs = var.make_turn_off_action(template_arg) type = light.TurnOffAction.template(template_arg) action = Pvariable(config[CONF_ACTION_ID], rhs, type=type) if CONF_TRANSITION_LENGTH in conf: template_ = None for template_ in templatable(conf[CONF_TRANSITION_LENGTH], arg_type, uint32): yield None add(action.set_transition_length(template_)) yield action elif CONF_LIGHT_TURN_ON in config: conf = config[CONF_LIGHT_TURN_ON] for var in get_variable(conf[CONF_ID]): yield None rhs = var.make_turn_on_action(template_arg) type = light.TurnOnAction.template(template_arg) action = Pvariable(config[CONF_ACTION_ID], rhs, type=type) if CONF_TRANSITION_LENGTH in conf: template_ = None for template_ in templatable(conf[CONF_TRANSITION_LENGTH], arg_type, uint32): yield None add(action.set_transition_length(template_)) if CONF_FLASH_LENGTH in conf: template_ = None for template_ in templatable(conf[CONF_FLASH_LENGTH], arg_type, uint32): yield None add(action.set_flash_length(template_)) if CONF_BRIGHTNESS in conf: template_ = None for template_ in templatable(conf[CONF_BRIGHTNESS], arg_type, float_): yield None add(action.set_brightness(template_)) if CONF_RED in conf: template_ = None for template_ in templatable(conf[CONF_RED], arg_type, float_): yield None add(action.set_red(template_)) if CONF_GREEN in conf: template_ = None for template_ in templatable(conf[CONF_GREEN], arg_type, float_): yield None add(action.set_green(template_)) if CONF_BLUE in conf: template_ = None for template_ in templatable(conf[CONF_BLUE], arg_type, float_): yield None add(action.set_blue(template_)) if CONF_WHITE in conf: template_ = None for template_ in templatable(conf[CONF_WHITE], arg_type, float_): yield None add(action.set_white(template_)) if CONF_EFFECT in conf: template_ = None for template_ in templatable(conf[CONF_EFFECT], arg_type, std_string): yield None add(action.set_effect(template_)) yield action elif CONF_SWITCH_TOGGLE in config: conf = config[CONF_SWITCH_TOGGLE] for var in get_variable(conf[CONF_ID]): yield None rhs = var.make_toggle_action(template_arg) type = switch.ToggleAction.template(arg_type) yield Pvariable(config[CONF_ACTION_ID], rhs, type=type) elif CONF_SWITCH_TURN_OFF in config: conf = config[CONF_SWITCH_TURN_OFF] for var in get_variable(conf[CONF_ID]): yield None rhs = var.make_turn_off_action(template_arg) type = switch.TurnOffAction.template(arg_type) yield Pvariable(config[CONF_ACTION_ID], rhs, type=type) elif CONF_SWITCH_TURN_ON in config: conf = config[CONF_SWITCH_TURN_ON] for var in get_variable(conf[CONF_ID]): yield None rhs = var.make_turn_on_action(template_arg) type = switch.TurnOnAction.template(arg_type) yield Pvariable(config[CONF_ACTION_ID], rhs, type=type) elif CONF_COVER_OPEN in config: conf = config[CONF_COVER_OPEN] for var in get_variable(conf[CONF_ID]): yield None rhs = var.make_open_action(template_arg) type = cover.OpenAction.template(arg_type) yield Pvariable(config[CONF_ACTION_ID], rhs, type=type) elif CONF_COVER_CLOSE in config: conf = config[CONF_COVER_CLOSE] for var in get_variable(conf[CONF_ID]): yield None rhs = var.make_close_action(template_arg) type = cover.CloseAction.template(arg_type) yield Pvariable(config[CONF_ACTION_ID], rhs, type=type) elif CONF_COVER_STOP in config: conf = config[CONF_COVER_STOP] for var in get_variable(conf[CONF_ID]): yield None rhs = var.make_stop_action(template_arg) type = cover.StopAction.template(arg_type) yield Pvariable(config[CONF_ACTION_ID], rhs, type=type) elif CONF_FAN_TOGGLE in config: conf = config[CONF_FAN_TOGGLE] for var in get_variable(conf[CONF_ID]): yield None rhs = var.make_toggle_action(template_arg) type = fan.ToggleAction.template(arg_type) yield Pvariable(config[CONF_ACTION_ID], rhs, type=type) elif CONF_FAN_TURN_OFF in config: conf = config[CONF_FAN_TURN_OFF] for var in get_variable(conf[CONF_ID]): yield None rhs = var.make_turn_off_action(template_arg) type = fan.TurnOffAction.template(arg_type) yield Pvariable(config[CONF_ACTION_ID], rhs, type=type) elif CONF_FAN_TURN_ON in config: conf = config[CONF_FAN_TURN_ON] for var in get_variable(conf[CONF_ID]): yield None rhs = var.make_turn_on_action(template_arg) type = fan.TurnOnAction.template(arg_type) action = Pvariable(config[CONF_ACTION_ID], rhs, type=type) if CONF_OSCILLATING in config: template_ = None for template_ in templatable(conf[CONF_OSCILLATING], arg_type, bool_): yield None add(action.set_oscillating(template_)) if CONF_SPEED in config: template_ = None for template_ in templatable(conf[CONF_SPEED], arg_type, fan.FanSpeed): yield None add(action.set_speed(template_)) yield action else: raise ESPHomeYAMLError(u"Unsupported action {}".format(config))