mirror of
https://github.com/esphome/esphome.git
synced 2024-12-22 13:34:54 +01:00
Convert core components to async-def coroutine syntax (#1658)
Co-authored-by: Guillermo Ruffino <glm.net@gmail.com> Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
This commit is contained in:
parent
514d11d46f
commit
aebad04c0b
29 changed files with 313 additions and 359 deletions
|
@ -68,9 +68,9 @@ CONFIG_SCHEMA = cv.Schema(
|
||||||
|
|
||||||
|
|
||||||
@coroutine_with_priority(40.0)
|
@coroutine_with_priority(40.0)
|
||||||
def to_code(config):
|
async def to_code(config):
|
||||||
var = cg.new_Pvariable(config[CONF_ID])
|
var = cg.new_Pvariable(config[CONF_ID])
|
||||||
yield cg.register_component(var, config)
|
await cg.register_component(var, config)
|
||||||
|
|
||||||
cg.add(var.set_port(config[CONF_PORT]))
|
cg.add(var.set_port(config[CONF_PORT]))
|
||||||
cg.add(var.set_password(config[CONF_PASSWORD]))
|
cg.add(var.set_password(config[CONF_PASSWORD]))
|
||||||
|
@ -90,7 +90,7 @@ def to_code(config):
|
||||||
conf[CONF_TRIGGER_ID], templ, conf[CONF_SERVICE], service_arg_names
|
conf[CONF_TRIGGER_ID], templ, conf[CONF_SERVICE], service_arg_names
|
||||||
)
|
)
|
||||||
cg.add(var.register_user_service(trigger))
|
cg.add(var.register_user_service(trigger))
|
||||||
yield automation.build_automation(trigger, func_args, conf)
|
await automation.build_automation(trigger, func_args, conf)
|
||||||
|
|
||||||
cg.add_define("USE_API")
|
cg.add_define("USE_API")
|
||||||
cg.add_global(api_ns.using)
|
cg.add_global(api_ns.using)
|
||||||
|
@ -116,21 +116,21 @@ HOMEASSISTANT_SERVICE_ACTION_SCHEMA = cv.Schema(
|
||||||
HomeAssistantServiceCallAction,
|
HomeAssistantServiceCallAction,
|
||||||
HOMEASSISTANT_SERVICE_ACTION_SCHEMA,
|
HOMEASSISTANT_SERVICE_ACTION_SCHEMA,
|
||||||
)
|
)
|
||||||
def homeassistant_service_to_code(config, action_id, template_arg, args):
|
async def homeassistant_service_to_code(config, action_id, template_arg, args):
|
||||||
serv = yield cg.get_variable(config[CONF_ID])
|
serv = await cg.get_variable(config[CONF_ID])
|
||||||
var = cg.new_Pvariable(action_id, template_arg, serv, False)
|
var = cg.new_Pvariable(action_id, template_arg, serv, False)
|
||||||
templ = yield cg.templatable(config[CONF_SERVICE], args, None)
|
templ = await cg.templatable(config[CONF_SERVICE], args, None)
|
||||||
cg.add(var.set_service(templ))
|
cg.add(var.set_service(templ))
|
||||||
for key, value in config[CONF_DATA].items():
|
for key, value in config[CONF_DATA].items():
|
||||||
templ = yield cg.templatable(value, args, None)
|
templ = await cg.templatable(value, args, None)
|
||||||
cg.add(var.add_data(key, templ))
|
cg.add(var.add_data(key, templ))
|
||||||
for key, value in config[CONF_DATA_TEMPLATE].items():
|
for key, value in config[CONF_DATA_TEMPLATE].items():
|
||||||
templ = yield cg.templatable(value, args, None)
|
templ = await cg.templatable(value, args, None)
|
||||||
cg.add(var.add_data_template(key, templ))
|
cg.add(var.add_data_template(key, templ))
|
||||||
for key, value in config[CONF_VARIABLES].items():
|
for key, value in config[CONF_VARIABLES].items():
|
||||||
templ = yield cg.templatable(value, args, None)
|
templ = await cg.templatable(value, args, None)
|
||||||
cg.add(var.add_variable(key, templ))
|
cg.add(var.add_variable(key, templ))
|
||||||
yield var
|
return var
|
||||||
|
|
||||||
|
|
||||||
def validate_homeassistant_event(value):
|
def validate_homeassistant_event(value):
|
||||||
|
@ -159,21 +159,21 @@ HOMEASSISTANT_EVENT_ACTION_SCHEMA = cv.Schema(
|
||||||
HomeAssistantServiceCallAction,
|
HomeAssistantServiceCallAction,
|
||||||
HOMEASSISTANT_EVENT_ACTION_SCHEMA,
|
HOMEASSISTANT_EVENT_ACTION_SCHEMA,
|
||||||
)
|
)
|
||||||
def homeassistant_event_to_code(config, action_id, template_arg, args):
|
async def homeassistant_event_to_code(config, action_id, template_arg, args):
|
||||||
serv = yield cg.get_variable(config[CONF_ID])
|
serv = await cg.get_variable(config[CONF_ID])
|
||||||
var = cg.new_Pvariable(action_id, template_arg, serv, True)
|
var = cg.new_Pvariable(action_id, template_arg, serv, True)
|
||||||
templ = yield cg.templatable(config[CONF_EVENT], args, None)
|
templ = await cg.templatable(config[CONF_EVENT], args, None)
|
||||||
cg.add(var.set_service(templ))
|
cg.add(var.set_service(templ))
|
||||||
for key, value in config[CONF_DATA].items():
|
for key, value in config[CONF_DATA].items():
|
||||||
templ = yield cg.templatable(value, args, None)
|
templ = await cg.templatable(value, args, None)
|
||||||
cg.add(var.add_data(key, templ))
|
cg.add(var.add_data(key, templ))
|
||||||
for key, value in config[CONF_DATA_TEMPLATE].items():
|
for key, value in config[CONF_DATA_TEMPLATE].items():
|
||||||
templ = yield cg.templatable(value, args, None)
|
templ = await cg.templatable(value, args, None)
|
||||||
cg.add(var.add_data_template(key, templ))
|
cg.add(var.add_data_template(key, templ))
|
||||||
for key, value in config[CONF_VARIABLES].items():
|
for key, value in config[CONF_VARIABLES].items():
|
||||||
templ = yield cg.templatable(value, args, None)
|
templ = await cg.templatable(value, args, None)
|
||||||
cg.add(var.add_variable(key, templ))
|
cg.add(var.add_variable(key, templ))
|
||||||
yield var
|
return var
|
||||||
|
|
||||||
|
|
||||||
HOMEASSISTANT_TAG_SCANNED_ACTION_SCHEMA = cv.maybe_simple_value(
|
HOMEASSISTANT_TAG_SCANNED_ACTION_SCHEMA = cv.maybe_simple_value(
|
||||||
|
@ -190,15 +190,15 @@ HOMEASSISTANT_TAG_SCANNED_ACTION_SCHEMA = cv.maybe_simple_value(
|
||||||
HomeAssistantServiceCallAction,
|
HomeAssistantServiceCallAction,
|
||||||
HOMEASSISTANT_TAG_SCANNED_ACTION_SCHEMA,
|
HOMEASSISTANT_TAG_SCANNED_ACTION_SCHEMA,
|
||||||
)
|
)
|
||||||
def homeassistant_tag_scanned_to_code(config, action_id, template_arg, args):
|
async def homeassistant_tag_scanned_to_code(config, action_id, template_arg, args):
|
||||||
serv = yield cg.get_variable(config[CONF_ID])
|
serv = await cg.get_variable(config[CONF_ID])
|
||||||
var = cg.new_Pvariable(action_id, template_arg, serv, True)
|
var = cg.new_Pvariable(action_id, template_arg, serv, True)
|
||||||
cg.add(var.set_service("esphome.tag_scanned"))
|
cg.add(var.set_service("esphome.tag_scanned"))
|
||||||
templ = yield cg.templatable(config[CONF_TAG], args, cg.std_string)
|
templ = await cg.templatable(config[CONF_TAG], args, cg.std_string)
|
||||||
cg.add(var.add_data("tag_id", templ))
|
cg.add(var.add_data("tag_id", templ))
|
||||||
yield var
|
return var
|
||||||
|
|
||||||
|
|
||||||
@automation.register_condition("api.connected", APIConnectedCondition, {})
|
@automation.register_condition("api.connected", APIConnectedCondition, {})
|
||||||
def api_connected_to_code(config, condition_id, template_arg, args):
|
async def api_connected_to_code(config, condition_id, template_arg, args):
|
||||||
yield cg.new_Pvariable(condition_id, template_arg)
|
return cg.new_Pvariable(condition_id, template_arg)
|
||||||
|
|
|
@ -11,7 +11,6 @@ from esphome.const import (
|
||||||
CONF_DIV_RATIO,
|
CONF_DIV_RATIO,
|
||||||
CONF_CAPACITANCE,
|
CONF_CAPACITANCE,
|
||||||
)
|
)
|
||||||
from esphome.core import coroutine
|
|
||||||
|
|
||||||
AUTO_LOAD = ["sensor", "binary_sensor"]
|
AUTO_LOAD = ["sensor", "binary_sensor"]
|
||||||
MULTI_CONF = True
|
MULTI_CONF = True
|
||||||
|
@ -40,11 +39,10 @@ AS3935_SCHEMA = cv.Schema(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def setup_as3935(var, config):
|
||||||
def setup_as3935(var, config):
|
await cg.register_component(var, config)
|
||||||
yield cg.register_component(var, config)
|
|
||||||
|
|
||||||
irq_pin = yield cg.gpio_pin_expression(config[CONF_IRQ_PIN])
|
irq_pin = await cg.gpio_pin_expression(config[CONF_IRQ_PIN])
|
||||||
cg.add(var.set_irq_pin(irq_pin))
|
cg.add(var.set_irq_pin(irq_pin))
|
||||||
cg.add(var.set_indoor(config[CONF_INDOOR]))
|
cg.add(var.set_indoor(config[CONF_INDOOR]))
|
||||||
cg.add(var.set_noise_level(config[CONF_NOISE_LEVEL]))
|
cg.add(var.set_noise_level(config[CONF_NOISE_LEVEL]))
|
||||||
|
|
|
@ -6,7 +6,7 @@ CODEOWNERS = ["@OttoWinter"]
|
||||||
|
|
||||||
|
|
||||||
@coroutine_with_priority(200.0)
|
@coroutine_with_priority(200.0)
|
||||||
def to_code(config):
|
async def to_code(config):
|
||||||
if CORE.is_esp32:
|
if CORE.is_esp32:
|
||||||
# https://github.com/esphome/AsyncTCP/blob/master/library.json
|
# https://github.com/esphome/AsyncTCP/blob/master/library.json
|
||||||
cg.add_library("esphome/AsyncTCP-esphome", "1.2.2")
|
cg.add_library("esphome/AsyncTCP-esphome", "1.2.2")
|
||||||
|
|
|
@ -51,7 +51,7 @@ from esphome.const import (
|
||||||
DEVICE_CLASS_VIBRATION,
|
DEVICE_CLASS_VIBRATION,
|
||||||
DEVICE_CLASS_WINDOW,
|
DEVICE_CLASS_WINDOW,
|
||||||
)
|
)
|
||||||
from esphome.core import CORE, coroutine, coroutine_with_priority
|
from esphome.core import CORE, coroutine_with_priority
|
||||||
from esphome.util import Registry
|
from esphome.util import Registry
|
||||||
|
|
||||||
CODEOWNERS = ["@esphome/core"]
|
CODEOWNERS = ["@esphome/core"]
|
||||||
|
@ -381,8 +381,7 @@ BINARY_SENSOR_SCHEMA = cv.MQTT_COMPONENT_SCHEMA.extend(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def setup_binary_sensor_core_(var, config):
|
||||||
def setup_binary_sensor_core_(var, config):
|
|
||||||
cg.add(var.set_name(config[CONF_NAME]))
|
cg.add(var.set_name(config[CONF_NAME]))
|
||||||
if CONF_INTERNAL in config:
|
if CONF_INTERNAL in config:
|
||||||
cg.add(var.set_internal(config[CONF_INTERNAL]))
|
cg.add(var.set_internal(config[CONF_INTERNAL]))
|
||||||
|
@ -391,28 +390,28 @@ def setup_binary_sensor_core_(var, config):
|
||||||
if CONF_INVERTED in config:
|
if CONF_INVERTED in config:
|
||||||
cg.add(var.set_inverted(config[CONF_INVERTED]))
|
cg.add(var.set_inverted(config[CONF_INVERTED]))
|
||||||
if CONF_FILTERS in config:
|
if CONF_FILTERS in config:
|
||||||
filters = yield cg.build_registry_list(FILTER_REGISTRY, config[CONF_FILTERS])
|
filters = await cg.build_registry_list(FILTER_REGISTRY, config[CONF_FILTERS])
|
||||||
cg.add(var.add_filters(filters))
|
cg.add(var.add_filters(filters))
|
||||||
|
|
||||||
for conf in config.get(CONF_ON_PRESS, []):
|
for conf in config.get(CONF_ON_PRESS, []):
|
||||||
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
||||||
yield automation.build_automation(trigger, [], conf)
|
await automation.build_automation(trigger, [], conf)
|
||||||
|
|
||||||
for conf in config.get(CONF_ON_RELEASE, []):
|
for conf in config.get(CONF_ON_RELEASE, []):
|
||||||
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
||||||
yield automation.build_automation(trigger, [], conf)
|
await automation.build_automation(trigger, [], conf)
|
||||||
|
|
||||||
for conf in config.get(CONF_ON_CLICK, []):
|
for conf in config.get(CONF_ON_CLICK, []):
|
||||||
trigger = cg.new_Pvariable(
|
trigger = cg.new_Pvariable(
|
||||||
conf[CONF_TRIGGER_ID], var, conf[CONF_MIN_LENGTH], conf[CONF_MAX_LENGTH]
|
conf[CONF_TRIGGER_ID], var, conf[CONF_MIN_LENGTH], conf[CONF_MAX_LENGTH]
|
||||||
)
|
)
|
||||||
yield automation.build_automation(trigger, [], conf)
|
await automation.build_automation(trigger, [], conf)
|
||||||
|
|
||||||
for conf in config.get(CONF_ON_DOUBLE_CLICK, []):
|
for conf in config.get(CONF_ON_DOUBLE_CLICK, []):
|
||||||
trigger = cg.new_Pvariable(
|
trigger = cg.new_Pvariable(
|
||||||
conf[CONF_TRIGGER_ID], var, conf[CONF_MIN_LENGTH], conf[CONF_MAX_LENGTH]
|
conf[CONF_TRIGGER_ID], var, conf[CONF_MIN_LENGTH], conf[CONF_MAX_LENGTH]
|
||||||
)
|
)
|
||||||
yield automation.build_automation(trigger, [], conf)
|
await automation.build_automation(trigger, [], conf)
|
||||||
|
|
||||||
for conf in config.get(CONF_ON_MULTI_CLICK, []):
|
for conf in config.get(CONF_ON_MULTI_CLICK, []):
|
||||||
timings = []
|
timings = []
|
||||||
|
@ -428,31 +427,29 @@ def setup_binary_sensor_core_(var, config):
|
||||||
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var, timings)
|
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var, timings)
|
||||||
if CONF_INVALID_COOLDOWN in conf:
|
if CONF_INVALID_COOLDOWN in conf:
|
||||||
cg.add(trigger.set_invalid_cooldown(conf[CONF_INVALID_COOLDOWN]))
|
cg.add(trigger.set_invalid_cooldown(conf[CONF_INVALID_COOLDOWN]))
|
||||||
yield cg.register_component(trigger, conf)
|
await cg.register_component(trigger, conf)
|
||||||
yield automation.build_automation(trigger, [], conf)
|
await automation.build_automation(trigger, [], conf)
|
||||||
|
|
||||||
for conf in config.get(CONF_ON_STATE, []):
|
for conf in config.get(CONF_ON_STATE, []):
|
||||||
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
||||||
yield automation.build_automation(trigger, [(bool, "x")], conf)
|
await automation.build_automation(trigger, [(bool, "x")], conf)
|
||||||
|
|
||||||
if CONF_MQTT_ID in config:
|
if CONF_MQTT_ID in config:
|
||||||
mqtt_ = cg.new_Pvariable(config[CONF_MQTT_ID], var)
|
mqtt_ = cg.new_Pvariable(config[CONF_MQTT_ID], var)
|
||||||
yield mqtt.register_mqtt_component(mqtt_, config)
|
await mqtt.register_mqtt_component(mqtt_, config)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def register_binary_sensor(var, config):
|
||||||
def register_binary_sensor(var, config):
|
|
||||||
if not CORE.has_id(config[CONF_ID]):
|
if not CORE.has_id(config[CONF_ID]):
|
||||||
var = cg.Pvariable(config[CONF_ID], var)
|
var = cg.Pvariable(config[CONF_ID], var)
|
||||||
cg.add(cg.App.register_binary_sensor(var))
|
cg.add(cg.App.register_binary_sensor(var))
|
||||||
yield setup_binary_sensor_core_(var, config)
|
await setup_binary_sensor_core_(var, config)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def new_binary_sensor(config):
|
||||||
def new_binary_sensor(config):
|
|
||||||
var = cg.new_Pvariable(config[CONF_ID], config[CONF_NAME])
|
var = cg.new_Pvariable(config[CONF_ID], config[CONF_NAME])
|
||||||
yield register_binary_sensor(var, config)
|
await register_binary_sensor(var, config)
|
||||||
yield var
|
return var
|
||||||
|
|
||||||
|
|
||||||
BINARY_SENSOR_CONDITION_SCHEMA = maybe_simple_id(
|
BINARY_SENSOR_CONDITION_SCHEMA = maybe_simple_id(
|
||||||
|
@ -483,6 +480,6 @@ def binary_sensor_is_off_to_code(config, condition_id, template_arg, args):
|
||||||
|
|
||||||
|
|
||||||
@coroutine_with_priority(100.0)
|
@coroutine_with_priority(100.0)
|
||||||
def to_code(config):
|
async def to_code(config):
|
||||||
cg.add_define("USE_BINARY_SENSOR")
|
cg.add_define("USE_BINARY_SENSOR")
|
||||||
cg.add_global(binary_sensor_ns.using)
|
cg.add_global(binary_sensor_ns.using)
|
||||||
|
|
|
@ -23,9 +23,9 @@ CONFIG_SCHEMA = cv.Schema(
|
||||||
|
|
||||||
|
|
||||||
@coroutine_with_priority(64.0)
|
@coroutine_with_priority(64.0)
|
||||||
def to_code(config):
|
async def to_code(config):
|
||||||
paren = yield cg.get_variable(config[CONF_WEB_SERVER_BASE_ID])
|
paren = await cg.get_variable(config[CONF_WEB_SERVER_BASE_ID])
|
||||||
|
|
||||||
var = cg.new_Pvariable(config[CONF_ID], paren)
|
var = cg.new_Pvariable(config[CONF_ID], paren)
|
||||||
yield cg.register_component(var, config)
|
await cg.register_component(var, config)
|
||||||
cg.add_define("USE_CAPTIVE_PORTAL")
|
cg.add_define("USE_CAPTIVE_PORTAL")
|
||||||
|
|
|
@ -19,7 +19,7 @@ from esphome.const import (
|
||||||
CONF_FAN_MODE,
|
CONF_FAN_MODE,
|
||||||
CONF_SWING_MODE,
|
CONF_SWING_MODE,
|
||||||
)
|
)
|
||||||
from esphome.core import CORE, coroutine, coroutine_with_priority
|
from esphome.core import CORE, coroutine_with_priority
|
||||||
|
|
||||||
IS_PLATFORM_COMPONENT = True
|
IS_PLATFORM_COMPONENT = True
|
||||||
|
|
||||||
|
@ -85,8 +85,7 @@ CLIMATE_SCHEMA = cv.MQTT_COMMAND_COMPONENT_SCHEMA.extend(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def setup_climate_core_(var, config):
|
||||||
def setup_climate_core_(var, config):
|
|
||||||
cg.add(var.set_name(config[CONF_NAME]))
|
cg.add(var.set_name(config[CONF_NAME]))
|
||||||
if CONF_INTERNAL in config:
|
if CONF_INTERNAL in config:
|
||||||
cg.add(var.set_internal(config[CONF_INTERNAL]))
|
cg.add(var.set_internal(config[CONF_INTERNAL]))
|
||||||
|
@ -100,15 +99,14 @@ def setup_climate_core_(var, config):
|
||||||
|
|
||||||
if CONF_MQTT_ID in config:
|
if CONF_MQTT_ID in config:
|
||||||
mqtt_ = cg.new_Pvariable(config[CONF_MQTT_ID], var)
|
mqtt_ = cg.new_Pvariable(config[CONF_MQTT_ID], var)
|
||||||
yield mqtt.register_mqtt_component(mqtt_, config)
|
await mqtt.register_mqtt_component(mqtt_, config)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def register_climate(var, config):
|
||||||
def register_climate(var, config):
|
|
||||||
if not CORE.has_id(config[CONF_ID]):
|
if not CORE.has_id(config[CONF_ID]):
|
||||||
var = cg.Pvariable(config[CONF_ID], var)
|
var = cg.Pvariable(config[CONF_ID], var)
|
||||||
cg.add(cg.App.register_climate(var))
|
cg.add(cg.App.register_climate(var))
|
||||||
yield setup_climate_core_(var, config)
|
await setup_climate_core_(var, config)
|
||||||
|
|
||||||
|
|
||||||
CLIMATE_CONTROL_ACTION_SCHEMA = cv.Schema(
|
CLIMATE_CONTROL_ACTION_SCHEMA = cv.Schema(
|
||||||
|
@ -128,40 +126,40 @@ CLIMATE_CONTROL_ACTION_SCHEMA = cv.Schema(
|
||||||
@automation.register_action(
|
@automation.register_action(
|
||||||
"climate.control", ControlAction, CLIMATE_CONTROL_ACTION_SCHEMA
|
"climate.control", ControlAction, CLIMATE_CONTROL_ACTION_SCHEMA
|
||||||
)
|
)
|
||||||
def climate_control_to_code(config, action_id, template_arg, args):
|
async def climate_control_to_code(config, action_id, template_arg, args):
|
||||||
paren = yield cg.get_variable(config[CONF_ID])
|
paren = await cg.get_variable(config[CONF_ID])
|
||||||
var = cg.new_Pvariable(action_id, template_arg, paren)
|
var = cg.new_Pvariable(action_id, template_arg, paren)
|
||||||
if CONF_MODE in config:
|
if CONF_MODE in config:
|
||||||
template_ = yield cg.templatable(config[CONF_MODE], args, ClimateMode)
|
template_ = await cg.templatable(config[CONF_MODE], args, ClimateMode)
|
||||||
cg.add(var.set_mode(template_))
|
cg.add(var.set_mode(template_))
|
||||||
if CONF_TARGET_TEMPERATURE in config:
|
if CONF_TARGET_TEMPERATURE in config:
|
||||||
template_ = yield cg.templatable(config[CONF_TARGET_TEMPERATURE], args, float)
|
template_ = await cg.templatable(config[CONF_TARGET_TEMPERATURE], args, float)
|
||||||
cg.add(var.set_target_temperature(template_))
|
cg.add(var.set_target_temperature(template_))
|
||||||
if CONF_TARGET_TEMPERATURE_LOW in config:
|
if CONF_TARGET_TEMPERATURE_LOW in config:
|
||||||
template_ = yield cg.templatable(
|
template_ = await cg.templatable(
|
||||||
config[CONF_TARGET_TEMPERATURE_LOW], args, float
|
config[CONF_TARGET_TEMPERATURE_LOW], args, float
|
||||||
)
|
)
|
||||||
cg.add(var.set_target_temperature_low(template_))
|
cg.add(var.set_target_temperature_low(template_))
|
||||||
if CONF_TARGET_TEMPERATURE_HIGH in config:
|
if CONF_TARGET_TEMPERATURE_HIGH in config:
|
||||||
template_ = yield cg.templatable(
|
template_ = await cg.templatable(
|
||||||
config[CONF_TARGET_TEMPERATURE_HIGH], args, float
|
config[CONF_TARGET_TEMPERATURE_HIGH], args, float
|
||||||
)
|
)
|
||||||
cg.add(var.set_target_temperature_high(template_))
|
cg.add(var.set_target_temperature_high(template_))
|
||||||
if CONF_AWAY in config:
|
if CONF_AWAY in config:
|
||||||
template_ = yield cg.templatable(config[CONF_AWAY], args, bool)
|
template_ = await cg.templatable(config[CONF_AWAY], args, bool)
|
||||||
cg.add(var.set_away(template_))
|
cg.add(var.set_away(template_))
|
||||||
if CONF_FAN_MODE in config:
|
if CONF_FAN_MODE in config:
|
||||||
template_ = yield cg.templatable(config[CONF_FAN_MODE], args, ClimateFanMode)
|
template_ = await cg.templatable(config[CONF_FAN_MODE], args, ClimateFanMode)
|
||||||
cg.add(var.set_fan_mode(template_))
|
cg.add(var.set_fan_mode(template_))
|
||||||
if CONF_SWING_MODE in config:
|
if CONF_SWING_MODE in config:
|
||||||
template_ = yield cg.templatable(
|
template_ = await cg.templatable(
|
||||||
config[CONF_SWING_MODE], args, ClimateSwingMode
|
config[CONF_SWING_MODE], args, ClimateSwingMode
|
||||||
)
|
)
|
||||||
cg.add(var.set_swing_mode(template_))
|
cg.add(var.set_swing_mode(template_))
|
||||||
yield var
|
return var
|
||||||
|
|
||||||
|
|
||||||
@coroutine_with_priority(100.0)
|
@coroutine_with_priority(100.0)
|
||||||
def to_code(config):
|
async def to_code(config):
|
||||||
cg.add_define("USE_CLIMATE")
|
cg.add_define("USE_CLIMATE")
|
||||||
cg.add_global(climate_ns.using)
|
cg.add_global(climate_ns.using)
|
||||||
|
|
|
@ -9,7 +9,6 @@ from esphome.components import (
|
||||||
)
|
)
|
||||||
from esphome.components.remote_base import CONF_RECEIVER_ID, CONF_TRANSMITTER_ID
|
from esphome.components.remote_base import CONF_RECEIVER_ID, CONF_TRANSMITTER_ID
|
||||||
from esphome.const import CONF_SUPPORTS_COOL, CONF_SUPPORTS_HEAT, CONF_SENSOR
|
from esphome.const import CONF_SUPPORTS_COOL, CONF_SUPPORTS_HEAT, CONF_SENSOR
|
||||||
from esphome.core import coroutine
|
|
||||||
|
|
||||||
AUTO_LOAD = ["sensor", "remote_base"]
|
AUTO_LOAD = ["sensor", "remote_base"]
|
||||||
CODEOWNERS = ["@glmnet"]
|
CODEOWNERS = ["@glmnet"]
|
||||||
|
@ -39,19 +38,18 @@ CLIMATE_IR_WITH_RECEIVER_SCHEMA = CLIMATE_IR_SCHEMA.extend(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def register_climate_ir(var, config):
|
||||||
def register_climate_ir(var, config):
|
await cg.register_component(var, config)
|
||||||
yield cg.register_component(var, config)
|
await climate.register_climate(var, config)
|
||||||
yield climate.register_climate(var, config)
|
|
||||||
|
|
||||||
cg.add(var.set_supports_cool(config[CONF_SUPPORTS_COOL]))
|
cg.add(var.set_supports_cool(config[CONF_SUPPORTS_COOL]))
|
||||||
cg.add(var.set_supports_heat(config[CONF_SUPPORTS_HEAT]))
|
cg.add(var.set_supports_heat(config[CONF_SUPPORTS_HEAT]))
|
||||||
if CONF_SENSOR in config:
|
if CONF_SENSOR in config:
|
||||||
sens = yield cg.get_variable(config[CONF_SENSOR])
|
sens = await cg.get_variable(config[CONF_SENSOR])
|
||||||
cg.add(var.set_sensor(sens))
|
cg.add(var.set_sensor(sens))
|
||||||
if CONF_RECEIVER_ID in config:
|
if CONF_RECEIVER_ID in config:
|
||||||
receiver = yield cg.get_variable(config[CONF_RECEIVER_ID])
|
receiver = await cg.get_variable(config[CONF_RECEIVER_ID])
|
||||||
cg.add(receiver.register_listener(var))
|
cg.add(receiver.register_listener(var))
|
||||||
|
|
||||||
transmitter = yield cg.get_variable(config[CONF_TRANSMITTER_ID])
|
transmitter = await cg.get_variable(config[CONF_TRANSMITTER_ID])
|
||||||
cg.add(var.set_transmitter(transmitter))
|
cg.add(var.set_transmitter(transmitter))
|
||||||
|
|
|
@ -14,7 +14,7 @@ from esphome.const import (
|
||||||
CONF_MQTT_ID,
|
CONF_MQTT_ID,
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
)
|
)
|
||||||
from esphome.core import CORE, coroutine, coroutine_with_priority
|
from esphome.core import CORE, coroutine_with_priority
|
||||||
|
|
||||||
IS_PLATFORM_COMPONENT = True
|
IS_PLATFORM_COMPONENT = True
|
||||||
|
|
||||||
|
@ -73,8 +73,7 @@ COVER_SCHEMA = cv.MQTT_COMMAND_COMPONENT_SCHEMA.extend(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def setup_cover_core_(var, config):
|
||||||
def setup_cover_core_(var, config):
|
|
||||||
cg.add(var.set_name(config[CONF_NAME]))
|
cg.add(var.set_name(config[CONF_NAME]))
|
||||||
if CONF_INTERNAL in config:
|
if CONF_INTERNAL in config:
|
||||||
cg.add(var.set_internal(config[CONF_INTERNAL]))
|
cg.add(var.set_internal(config[CONF_INTERNAL]))
|
||||||
|
@ -83,15 +82,14 @@ def setup_cover_core_(var, config):
|
||||||
|
|
||||||
if CONF_MQTT_ID in config:
|
if CONF_MQTT_ID in config:
|
||||||
mqtt_ = cg.new_Pvariable(config[CONF_MQTT_ID], var)
|
mqtt_ = cg.new_Pvariable(config[CONF_MQTT_ID], var)
|
||||||
yield mqtt.register_mqtt_component(mqtt_, config)
|
await mqtt.register_mqtt_component(mqtt_, config)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def register_cover(var, config):
|
||||||
def register_cover(var, config):
|
|
||||||
if not CORE.has_id(config[CONF_ID]):
|
if not CORE.has_id(config[CONF_ID]):
|
||||||
var = cg.Pvariable(config[CONF_ID], var)
|
var = cg.Pvariable(config[CONF_ID], var)
|
||||||
cg.add(cg.App.register_cover(var))
|
cg.add(cg.App.register_cover(var))
|
||||||
yield setup_cover_core_(var, config)
|
await setup_cover_core_(var, config)
|
||||||
|
|
||||||
|
|
||||||
COVER_ACTION_SCHEMA = maybe_simple_id(
|
COVER_ACTION_SCHEMA = maybe_simple_id(
|
||||||
|
@ -102,21 +100,21 @@ COVER_ACTION_SCHEMA = maybe_simple_id(
|
||||||
|
|
||||||
|
|
||||||
@automation.register_action("cover.open", OpenAction, COVER_ACTION_SCHEMA)
|
@automation.register_action("cover.open", OpenAction, COVER_ACTION_SCHEMA)
|
||||||
def cover_open_to_code(config, action_id, template_arg, args):
|
async def cover_open_to_code(config, action_id, template_arg, args):
|
||||||
paren = yield cg.get_variable(config[CONF_ID])
|
paren = await cg.get_variable(config[CONF_ID])
|
||||||
yield cg.new_Pvariable(action_id, template_arg, paren)
|
return cg.new_Pvariable(action_id, template_arg, paren)
|
||||||
|
|
||||||
|
|
||||||
@automation.register_action("cover.close", CloseAction, COVER_ACTION_SCHEMA)
|
@automation.register_action("cover.close", CloseAction, COVER_ACTION_SCHEMA)
|
||||||
def cover_close_to_code(config, action_id, template_arg, args):
|
async def cover_close_to_code(config, action_id, template_arg, args):
|
||||||
paren = yield cg.get_variable(config[CONF_ID])
|
paren = await cg.get_variable(config[CONF_ID])
|
||||||
yield cg.new_Pvariable(action_id, template_arg, paren)
|
return cg.new_Pvariable(action_id, template_arg, paren)
|
||||||
|
|
||||||
|
|
||||||
@automation.register_action("cover.stop", StopAction, COVER_ACTION_SCHEMA)
|
@automation.register_action("cover.stop", StopAction, COVER_ACTION_SCHEMA)
|
||||||
def cover_stop_to_code(config, action_id, template_arg, args):
|
async def cover_stop_to_code(config, action_id, template_arg, args):
|
||||||
paren = yield cg.get_variable(config[CONF_ID])
|
paren = await cg.get_variable(config[CONF_ID])
|
||||||
yield cg.new_Pvariable(action_id, template_arg, paren)
|
return cg.new_Pvariable(action_id, template_arg, paren)
|
||||||
|
|
||||||
|
|
||||||
COVER_CONTROL_ACTION_SCHEMA = cv.Schema(
|
COVER_CONTROL_ACTION_SCHEMA = cv.Schema(
|
||||||
|
@ -131,25 +129,25 @@ COVER_CONTROL_ACTION_SCHEMA = cv.Schema(
|
||||||
|
|
||||||
|
|
||||||
@automation.register_action("cover.control", ControlAction, COVER_CONTROL_ACTION_SCHEMA)
|
@automation.register_action("cover.control", ControlAction, COVER_CONTROL_ACTION_SCHEMA)
|
||||||
def cover_control_to_code(config, action_id, template_arg, args):
|
async def cover_control_to_code(config, action_id, template_arg, args):
|
||||||
paren = yield cg.get_variable(config[CONF_ID])
|
paren = await cg.get_variable(config[CONF_ID])
|
||||||
var = cg.new_Pvariable(action_id, template_arg, paren)
|
var = cg.new_Pvariable(action_id, template_arg, paren)
|
||||||
if CONF_STOP in config:
|
if CONF_STOP in config:
|
||||||
template_ = yield cg.templatable(config[CONF_STOP], args, bool)
|
template_ = await cg.templatable(config[CONF_STOP], args, bool)
|
||||||
cg.add(var.set_stop(template_))
|
cg.add(var.set_stop(template_))
|
||||||
if CONF_STATE in config:
|
if CONF_STATE in config:
|
||||||
template_ = yield cg.templatable(config[CONF_STATE], args, float)
|
template_ = await cg.templatable(config[CONF_STATE], args, float)
|
||||||
cg.add(var.set_position(template_))
|
cg.add(var.set_position(template_))
|
||||||
if CONF_POSITION in config:
|
if CONF_POSITION in config:
|
||||||
template_ = yield cg.templatable(config[CONF_POSITION], args, float)
|
template_ = await cg.templatable(config[CONF_POSITION], args, float)
|
||||||
cg.add(var.set_position(template_))
|
cg.add(var.set_position(template_))
|
||||||
if CONF_TILT in config:
|
if CONF_TILT in config:
|
||||||
template_ = yield cg.templatable(config[CONF_TILT], args, float)
|
template_ = await cg.templatable(config[CONF_TILT], args, float)
|
||||||
cg.add(var.set_tilt(template_))
|
cg.add(var.set_tilt(template_))
|
||||||
yield var
|
return var
|
||||||
|
|
||||||
|
|
||||||
@coroutine_with_priority(100.0)
|
@coroutine_with_priority(100.0)
|
||||||
def to_code(config):
|
async def to_code(config):
|
||||||
cg.add_define("USE_COVER")
|
cg.add_define("USE_COVER")
|
||||||
cg.add_global(cover_ns.using)
|
cg.add_global(cover_ns.using)
|
||||||
|
|
|
@ -3,7 +3,7 @@ import esphome.config_validation as cv
|
||||||
from esphome import core, automation
|
from esphome import core, automation
|
||||||
from esphome.automation import maybe_simple_id
|
from esphome.automation import maybe_simple_id
|
||||||
from esphome.const import CONF_ID, CONF_LAMBDA, CONF_PAGES, CONF_PAGE_ID, CONF_ROTATION
|
from esphome.const import CONF_ID, CONF_LAMBDA, CONF_PAGES, CONF_PAGE_ID, CONF_ROTATION
|
||||||
from esphome.core import coroutine, coroutine_with_priority
|
from esphome.core import coroutine_with_priority
|
||||||
|
|
||||||
IS_PLATFORM_COMPONENT = True
|
IS_PLATFORM_COMPONENT = True
|
||||||
|
|
||||||
|
@ -60,14 +60,13 @@ FULL_DISPLAY_SCHEMA = BASIC_DISPLAY_SCHEMA.extend(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def setup_display_core_(var, config):
|
||||||
def setup_display_core_(var, config):
|
|
||||||
if CONF_ROTATION in config:
|
if CONF_ROTATION in config:
|
||||||
cg.add(var.set_rotation(DISPLAY_ROTATIONS[config[CONF_ROTATION]]))
|
cg.add(var.set_rotation(DISPLAY_ROTATIONS[config[CONF_ROTATION]]))
|
||||||
if CONF_PAGES in config:
|
if CONF_PAGES in config:
|
||||||
pages = []
|
pages = []
|
||||||
for conf in config[CONF_PAGES]:
|
for conf in config[CONF_PAGES]:
|
||||||
lambda_ = yield cg.process_lambda(
|
lambda_ = await cg.process_lambda(
|
||||||
conf[CONF_LAMBDA], [(DisplayBufferRef, "it")], return_type=cg.void
|
conf[CONF_LAMBDA], [(DisplayBufferRef, "it")], return_type=cg.void
|
||||||
)
|
)
|
||||||
page = cg.new_Pvariable(conf[CONF_ID], lambda_)
|
page = cg.new_Pvariable(conf[CONF_ID], lambda_)
|
||||||
|
@ -75,9 +74,8 @@ def setup_display_core_(var, config):
|
||||||
cg.add(var.set_pages(pages))
|
cg.add(var.set_pages(pages))
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def register_display(var, config):
|
||||||
def register_display(var, config):
|
await setup_display_core_(var, config)
|
||||||
yield setup_display_core_(var, config)
|
|
||||||
|
|
||||||
|
|
||||||
@automation.register_action(
|
@automation.register_action(
|
||||||
|
@ -89,15 +87,15 @@ def register_display(var, config):
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
def display_page_show_to_code(config, action_id, template_arg, args):
|
async def display_page_show_to_code(config, action_id, template_arg, args):
|
||||||
var = cg.new_Pvariable(action_id, template_arg)
|
var = cg.new_Pvariable(action_id, template_arg)
|
||||||
if isinstance(config[CONF_ID], core.Lambda):
|
if isinstance(config[CONF_ID], core.Lambda):
|
||||||
template_ = yield cg.templatable(config[CONF_ID], args, DisplayPagePtr)
|
template_ = await cg.templatable(config[CONF_ID], args, DisplayPagePtr)
|
||||||
cg.add(var.set_page(template_))
|
cg.add(var.set_page(template_))
|
||||||
else:
|
else:
|
||||||
paren = yield cg.get_variable(config[CONF_ID])
|
paren = await cg.get_variable(config[CONF_ID])
|
||||||
cg.add(var.set_page(paren))
|
cg.add(var.set_page(paren))
|
||||||
yield var
|
return var
|
||||||
|
|
||||||
|
|
||||||
@automation.register_action(
|
@automation.register_action(
|
||||||
|
@ -109,9 +107,9 @@ def display_page_show_to_code(config, action_id, template_arg, args):
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
def display_page_show_next_to_code(config, action_id, template_arg, args):
|
async def display_page_show_next_to_code(config, action_id, template_arg, args):
|
||||||
paren = yield cg.get_variable(config[CONF_ID])
|
paren = await cg.get_variable(config[CONF_ID])
|
||||||
yield cg.new_Pvariable(action_id, template_arg, paren)
|
return cg.new_Pvariable(action_id, template_arg, paren)
|
||||||
|
|
||||||
|
|
||||||
@automation.register_action(
|
@automation.register_action(
|
||||||
|
@ -123,9 +121,9 @@ def display_page_show_next_to_code(config, action_id, template_arg, args):
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
def display_page_show_previous_to_code(config, action_id, template_arg, args):
|
async def display_page_show_previous_to_code(config, action_id, template_arg, args):
|
||||||
paren = yield cg.get_variable(config[CONF_ID])
|
paren = await cg.get_variable(config[CONF_ID])
|
||||||
yield cg.new_Pvariable(action_id, template_arg, paren)
|
return cg.new_Pvariable(action_id, template_arg, paren)
|
||||||
|
|
||||||
|
|
||||||
@automation.register_condition(
|
@automation.register_condition(
|
||||||
|
@ -149,5 +147,5 @@ def display_is_displaying_page_to_code(config, condition_id, template_arg, args)
|
||||||
|
|
||||||
|
|
||||||
@coroutine_with_priority(100.0)
|
@coroutine_with_priority(100.0)
|
||||||
def to_code(config):
|
async def to_code(config):
|
||||||
cg.add_global(display_ns.using)
|
cg.add_global(display_ns.using)
|
||||||
|
|
|
@ -18,7 +18,7 @@ from esphome.const import (
|
||||||
CONF_ON_TURN_ON,
|
CONF_ON_TURN_ON,
|
||||||
CONF_TRIGGER_ID,
|
CONF_TRIGGER_ID,
|
||||||
)
|
)
|
||||||
from esphome.core import CORE, coroutine, coroutine_with_priority
|
from esphome.core import CORE, coroutine_with_priority
|
||||||
|
|
||||||
IS_PLATFORM_COMPONENT = True
|
IS_PLATFORM_COMPONENT = True
|
||||||
|
|
||||||
|
@ -64,15 +64,14 @@ FAN_SCHEMA = cv.MQTT_COMMAND_COMPONENT_SCHEMA.extend(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def setup_fan_core_(var, config):
|
||||||
def setup_fan_core_(var, config):
|
|
||||||
cg.add(var.set_name(config[CONF_NAME]))
|
cg.add(var.set_name(config[CONF_NAME]))
|
||||||
if CONF_INTERNAL in config:
|
if CONF_INTERNAL in config:
|
||||||
cg.add(var.set_internal(config[CONF_INTERNAL]))
|
cg.add(var.set_internal(config[CONF_INTERNAL]))
|
||||||
|
|
||||||
if CONF_MQTT_ID in config:
|
if CONF_MQTT_ID in config:
|
||||||
mqtt_ = cg.new_Pvariable(config[CONF_MQTT_ID], var)
|
mqtt_ = cg.new_Pvariable(config[CONF_MQTT_ID], var)
|
||||||
yield mqtt.register_mqtt_component(mqtt_, config)
|
await mqtt.register_mqtt_component(mqtt_, config)
|
||||||
|
|
||||||
if CONF_OSCILLATION_STATE_TOPIC in config:
|
if CONF_OSCILLATION_STATE_TOPIC in config:
|
||||||
cg.add(
|
cg.add(
|
||||||
|
@ -95,26 +94,24 @@ def setup_fan_core_(var, config):
|
||||||
|
|
||||||
for conf in config.get(CONF_ON_TURN_ON, []):
|
for conf in config.get(CONF_ON_TURN_ON, []):
|
||||||
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
||||||
yield automation.build_automation(trigger, [], conf)
|
await automation.build_automation(trigger, [], conf)
|
||||||
for conf in config.get(CONF_ON_TURN_OFF, []):
|
for conf in config.get(CONF_ON_TURN_OFF, []):
|
||||||
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
||||||
yield automation.build_automation(trigger, [], conf)
|
await automation.build_automation(trigger, [], conf)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def register_fan(var, config):
|
||||||
def register_fan(var, config):
|
|
||||||
if not CORE.has_id(config[CONF_ID]):
|
if not CORE.has_id(config[CONF_ID]):
|
||||||
var = cg.Pvariable(config[CONF_ID], var)
|
var = cg.Pvariable(config[CONF_ID], var)
|
||||||
cg.add(cg.App.register_fan(var))
|
cg.add(cg.App.register_fan(var))
|
||||||
yield cg.register_component(var, config)
|
await cg.register_component(var, config)
|
||||||
yield setup_fan_core_(var, config)
|
await setup_fan_core_(var, config)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def create_fan_state(config):
|
||||||
def create_fan_state(config):
|
|
||||||
var = cg.new_Pvariable(config[CONF_ID])
|
var = cg.new_Pvariable(config[CONF_ID])
|
||||||
yield register_fan(var, config)
|
await register_fan(var, config)
|
||||||
yield var
|
return var
|
||||||
|
|
||||||
|
|
||||||
FAN_ACTION_SCHEMA = maybe_simple_id(
|
FAN_ACTION_SCHEMA = maybe_simple_id(
|
||||||
|
@ -125,15 +122,15 @@ FAN_ACTION_SCHEMA = maybe_simple_id(
|
||||||
|
|
||||||
|
|
||||||
@automation.register_action("fan.toggle", ToggleAction, FAN_ACTION_SCHEMA)
|
@automation.register_action("fan.toggle", ToggleAction, FAN_ACTION_SCHEMA)
|
||||||
def fan_toggle_to_code(config, action_id, template_arg, args):
|
async def fan_toggle_to_code(config, action_id, template_arg, args):
|
||||||
paren = yield cg.get_variable(config[CONF_ID])
|
paren = await cg.get_variable(config[CONF_ID])
|
||||||
yield cg.new_Pvariable(action_id, template_arg, paren)
|
return cg.new_Pvariable(action_id, template_arg, paren)
|
||||||
|
|
||||||
|
|
||||||
@automation.register_action("fan.turn_off", TurnOffAction, FAN_ACTION_SCHEMA)
|
@automation.register_action("fan.turn_off", TurnOffAction, FAN_ACTION_SCHEMA)
|
||||||
def fan_turn_off_to_code(config, action_id, template_arg, args):
|
async def fan_turn_off_to_code(config, action_id, template_arg, args):
|
||||||
paren = yield cg.get_variable(config[CONF_ID])
|
paren = await cg.get_variable(config[CONF_ID])
|
||||||
yield cg.new_Pvariable(action_id, template_arg, paren)
|
return cg.new_Pvariable(action_id, template_arg, paren)
|
||||||
|
|
||||||
|
|
||||||
@automation.register_action(
|
@automation.register_action(
|
||||||
|
@ -147,19 +144,19 @@ def fan_turn_off_to_code(config, action_id, template_arg, args):
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
def fan_turn_on_to_code(config, action_id, template_arg, args):
|
async def fan_turn_on_to_code(config, action_id, template_arg, args):
|
||||||
paren = yield cg.get_variable(config[CONF_ID])
|
paren = await cg.get_variable(config[CONF_ID])
|
||||||
var = cg.new_Pvariable(action_id, template_arg, paren)
|
var = cg.new_Pvariable(action_id, template_arg, paren)
|
||||||
if CONF_OSCILLATING in config:
|
if CONF_OSCILLATING in config:
|
||||||
template_ = yield cg.templatable(config[CONF_OSCILLATING], args, bool)
|
template_ = await cg.templatable(config[CONF_OSCILLATING], args, bool)
|
||||||
cg.add(var.set_oscillating(template_))
|
cg.add(var.set_oscillating(template_))
|
||||||
if CONF_SPEED in config:
|
if CONF_SPEED in config:
|
||||||
template_ = yield cg.templatable(config[CONF_SPEED], args, int)
|
template_ = await cg.templatable(config[CONF_SPEED], args, int)
|
||||||
cg.add(var.set_speed(template_))
|
cg.add(var.set_speed(template_))
|
||||||
yield var
|
return var
|
||||||
|
|
||||||
|
|
||||||
@coroutine_with_priority(100.0)
|
@coroutine_with_priority(100.0)
|
||||||
def to_code(config):
|
async def to_code(config):
|
||||||
cg.add_define("USE_FAN")
|
cg.add_define("USE_FAN")
|
||||||
cg.add_global(fan_ns.using)
|
cg.add_global(fan_ns.using)
|
||||||
|
|
|
@ -29,7 +29,7 @@ CONFIG_SCHEMA = cv.Schema(
|
||||||
|
|
||||||
# Run with low priority so that namespaces are registered first
|
# Run with low priority so that namespaces are registered first
|
||||||
@coroutine_with_priority(-100.0)
|
@coroutine_with_priority(-100.0)
|
||||||
def to_code(config):
|
async def to_code(config):
|
||||||
type_ = cg.RawExpression(config[CONF_TYPE])
|
type_ = cg.RawExpression(config[CONF_TYPE])
|
||||||
template_args = cg.TemplateArguments(type_)
|
template_args = cg.TemplateArguments(type_)
|
||||||
res_type = GlobalsComponent.template(template_args)
|
res_type = GlobalsComponent.template(template_args)
|
||||||
|
@ -40,7 +40,7 @@ def to_code(config):
|
||||||
|
|
||||||
rhs = GlobalsComponent.new(template_args, initial_value)
|
rhs = GlobalsComponent.new(template_args, initial_value)
|
||||||
glob = cg.Pvariable(config[CONF_ID], rhs, res_type)
|
glob = cg.Pvariable(config[CONF_ID], rhs, res_type)
|
||||||
yield cg.register_component(glob, config)
|
await cg.register_component(glob, config)
|
||||||
|
|
||||||
if config[CONF_RESTORE_VALUE]:
|
if config[CONF_RESTORE_VALUE]:
|
||||||
value = config[CONF_ID].id
|
value = config[CONF_ID].id
|
||||||
|
@ -60,12 +60,12 @@ def to_code(config):
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
def globals_set_to_code(config, action_id, template_arg, args):
|
async def globals_set_to_code(config, action_id, template_arg, args):
|
||||||
full_id, paren = yield cg.get_variable_with_full_id(config[CONF_ID])
|
full_id, paren = await cg.get_variable_with_full_id(config[CONF_ID])
|
||||||
template_arg = cg.TemplateArguments(full_id.type, *template_arg)
|
template_arg = cg.TemplateArguments(full_id.type, *template_arg)
|
||||||
var = cg.new_Pvariable(action_id, template_arg, paren)
|
var = cg.new_Pvariable(action_id, template_arg, paren)
|
||||||
templ = yield cg.templatable(
|
templ = await cg.templatable(
|
||||||
config[CONF_VALUE], args, None, to_exp=cg.RawExpression
|
config[CONF_VALUE], args, None, to_exp=cg.RawExpression
|
||||||
)
|
)
|
||||||
cg.add(var.set_value(templ))
|
cg.add(var.set_value(templ))
|
||||||
yield var
|
return var
|
||||||
|
|
|
@ -12,7 +12,7 @@ from esphome.const import (
|
||||||
CONF_I2C_ID,
|
CONF_I2C_ID,
|
||||||
CONF_MULTIPLEXER,
|
CONF_MULTIPLEXER,
|
||||||
)
|
)
|
||||||
from esphome.core import coroutine, coroutine_with_priority
|
from esphome.core import coroutine_with_priority
|
||||||
|
|
||||||
CODEOWNERS = ["@esphome/core"]
|
CODEOWNERS = ["@esphome/core"]
|
||||||
i2c_ns = cg.esphome_ns.namespace("i2c")
|
i2c_ns = cg.esphome_ns.namespace("i2c")
|
||||||
|
@ -42,10 +42,10 @@ I2CMULTIPLEXER_SCHEMA = cv.Schema(
|
||||||
|
|
||||||
|
|
||||||
@coroutine_with_priority(1.0)
|
@coroutine_with_priority(1.0)
|
||||||
def to_code(config):
|
async def to_code(config):
|
||||||
cg.add_global(i2c_ns.using)
|
cg.add_global(i2c_ns.using)
|
||||||
var = cg.new_Pvariable(config[CONF_ID])
|
var = cg.new_Pvariable(config[CONF_ID])
|
||||||
yield cg.register_component(var, config)
|
await cg.register_component(var, config)
|
||||||
|
|
||||||
cg.add(var.set_sda_pin(config[CONF_SDA]))
|
cg.add(var.set_sda_pin(config[CONF_SDA]))
|
||||||
cg.add(var.set_scl_pin(config[CONF_SCL]))
|
cg.add(var.set_scl_pin(config[CONF_SCL]))
|
||||||
|
@ -72,19 +72,18 @@ def i2c_device_schema(default_address):
|
||||||
return cv.Schema(schema)
|
return cv.Schema(schema)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def register_i2c_device(var, config):
|
||||||
def register_i2c_device(var, config):
|
|
||||||
"""Register an i2c device with the given config.
|
"""Register an i2c device with the given config.
|
||||||
|
|
||||||
Sets the i2c bus to use and the i2c address.
|
Sets the i2c bus to use and the i2c address.
|
||||||
|
|
||||||
This is a coroutine, you need to await it with a 'yield' expression!
|
This is a coroutine, you need to await it with a 'yield' expression!
|
||||||
"""
|
"""
|
||||||
parent = yield cg.get_variable(config[CONF_I2C_ID])
|
parent = await cg.get_variable(config[CONF_I2C_ID])
|
||||||
cg.add(var.set_i2c_parent(parent))
|
cg.add(var.set_i2c_parent(parent))
|
||||||
cg.add(var.set_i2c_address(config[CONF_ADDRESS]))
|
cg.add(var.set_i2c_address(config[CONF_ADDRESS]))
|
||||||
if CONF_MULTIPLEXER in config:
|
if CONF_MULTIPLEXER in config:
|
||||||
multiplexer = yield cg.get_variable(config[CONF_MULTIPLEXER][CONF_ID])
|
multiplexer = await cg.get_variable(config[CONF_MULTIPLEXER][CONF_ID])
|
||||||
cg.add(
|
cg.add(
|
||||||
var.set_i2c_multiplexer(multiplexer, config[CONF_MULTIPLEXER][CONF_CHANNEL])
|
var.set_i2c_multiplexer(multiplexer, config[CONF_MULTIPLEXER][CONF_CHANNEL])
|
||||||
)
|
)
|
||||||
|
|
|
@ -6,7 +6,7 @@ json_ns = cg.esphome_ns.namespace("json")
|
||||||
|
|
||||||
|
|
||||||
@coroutine_with_priority(1.0)
|
@coroutine_with_priority(1.0)
|
||||||
def to_code(config):
|
async def to_code(config):
|
||||||
cg.add_library("ArduinoJson-esphomelib", "5.13.3")
|
cg.add_library("ArduinoJson-esphomelib", "5.13.3")
|
||||||
cg.add_define("USE_JSON")
|
cg.add_define("USE_JSON")
|
||||||
cg.add_global(json_ns.using)
|
cg.add_global(json_ns.using)
|
||||||
|
|
|
@ -17,7 +17,7 @@ from esphome.const import (
|
||||||
CONF_ON_TURN_ON,
|
CONF_ON_TURN_ON,
|
||||||
CONF_TRIGGER_ID,
|
CONF_TRIGGER_ID,
|
||||||
)
|
)
|
||||||
from esphome.core import coroutine, coroutine_with_priority
|
from esphome.core import coroutine_with_priority
|
||||||
from .automation import light_control_to_code # noqa
|
from .automation import light_control_to_code # noqa
|
||||||
from .effects import (
|
from .effects import (
|
||||||
validate_effects,
|
validate_effects,
|
||||||
|
@ -102,8 +102,7 @@ ADDRESSABLE_LIGHT_SCHEMA = RGB_LIGHT_SCHEMA.extend(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def setup_light_core_(light_var, output_var, config):
|
||||||
def setup_light_core_(light_var, output_var, config):
|
|
||||||
cg.add(light_var.set_restore_mode(config[CONF_RESTORE_MODE]))
|
cg.add(light_var.set_restore_mode(config[CONF_RESTORE_MODE]))
|
||||||
if CONF_INTERNAL in config:
|
if CONF_INTERNAL in config:
|
||||||
cg.add(light_var.set_internal(config[CONF_INTERNAL]))
|
cg.add(light_var.set_internal(config[CONF_INTERNAL]))
|
||||||
|
@ -115,39 +114,38 @@ def setup_light_core_(light_var, output_var, config):
|
||||||
)
|
)
|
||||||
if CONF_GAMMA_CORRECT in config:
|
if CONF_GAMMA_CORRECT in config:
|
||||||
cg.add(light_var.set_gamma_correct(config[CONF_GAMMA_CORRECT]))
|
cg.add(light_var.set_gamma_correct(config[CONF_GAMMA_CORRECT]))
|
||||||
effects = yield cg.build_registry_list(
|
effects = await cg.build_registry_list(
|
||||||
EFFECTS_REGISTRY, config.get(CONF_EFFECTS, [])
|
EFFECTS_REGISTRY, config.get(CONF_EFFECTS, [])
|
||||||
)
|
)
|
||||||
cg.add(light_var.add_effects(effects))
|
cg.add(light_var.add_effects(effects))
|
||||||
|
|
||||||
for conf in config.get(CONF_ON_TURN_ON, []):
|
for conf in config.get(CONF_ON_TURN_ON, []):
|
||||||
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], light_var)
|
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], light_var)
|
||||||
yield auto.build_automation(trigger, [], conf)
|
await auto.build_automation(trigger, [], conf)
|
||||||
for conf in config.get(CONF_ON_TURN_OFF, []):
|
for conf in config.get(CONF_ON_TURN_OFF, []):
|
||||||
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], light_var)
|
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], light_var)
|
||||||
yield auto.build_automation(trigger, [], conf)
|
await auto.build_automation(trigger, [], conf)
|
||||||
|
|
||||||
if CONF_COLOR_CORRECT in config:
|
if CONF_COLOR_CORRECT in config:
|
||||||
cg.add(output_var.set_correction(*config[CONF_COLOR_CORRECT]))
|
cg.add(output_var.set_correction(*config[CONF_COLOR_CORRECT]))
|
||||||
|
|
||||||
if CONF_POWER_SUPPLY in config:
|
if CONF_POWER_SUPPLY in config:
|
||||||
var_ = yield cg.get_variable(config[CONF_POWER_SUPPLY])
|
var_ = await cg.get_variable(config[CONF_POWER_SUPPLY])
|
||||||
cg.add(output_var.set_power_supply(var_))
|
cg.add(output_var.set_power_supply(var_))
|
||||||
|
|
||||||
if CONF_MQTT_ID in config:
|
if CONF_MQTT_ID in config:
|
||||||
mqtt_ = cg.new_Pvariable(config[CONF_MQTT_ID], light_var)
|
mqtt_ = cg.new_Pvariable(config[CONF_MQTT_ID], light_var)
|
||||||
yield mqtt.register_mqtt_component(mqtt_, config)
|
await mqtt.register_mqtt_component(mqtt_, config)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def register_light(output_var, config):
|
||||||
def register_light(output_var, config):
|
|
||||||
light_var = cg.new_Pvariable(config[CONF_ID], config[CONF_NAME], output_var)
|
light_var = cg.new_Pvariable(config[CONF_ID], config[CONF_NAME], output_var)
|
||||||
cg.add(cg.App.register_light(light_var))
|
cg.add(cg.App.register_light(light_var))
|
||||||
yield cg.register_component(light_var, config)
|
await cg.register_component(light_var, config)
|
||||||
yield setup_light_core_(light_var, output_var, config)
|
await setup_light_core_(light_var, output_var, config)
|
||||||
|
|
||||||
|
|
||||||
@coroutine_with_priority(100.0)
|
@coroutine_with_priority(100.0)
|
||||||
def to_code(config):
|
async def to_code(config):
|
||||||
cg.add_define("USE_LIGHT")
|
cg.add_define("USE_LIGHT")
|
||||||
cg.add_global(light_ns.using)
|
cg.add_global(light_ns.using)
|
||||||
|
|
|
@ -127,7 +127,7 @@ CONFIG_SCHEMA = cv.All(
|
||||||
|
|
||||||
|
|
||||||
@coroutine_with_priority(90.0)
|
@coroutine_with_priority(90.0)
|
||||||
def to_code(config):
|
async def to_code(config):
|
||||||
baud_rate = config[CONF_BAUD_RATE]
|
baud_rate = config[CONF_BAUD_RATE]
|
||||||
rhs = Logger.new(
|
rhs = Logger.new(
|
||||||
baud_rate,
|
baud_rate,
|
||||||
|
@ -177,13 +177,13 @@ def to_code(config):
|
||||||
cg.add_build_flag("-DUSE_STORE_LOG_STR_IN_FLASH")
|
cg.add_build_flag("-DUSE_STORE_LOG_STR_IN_FLASH")
|
||||||
|
|
||||||
# Register at end for safe mode
|
# Register at end for safe mode
|
||||||
yield cg.register_component(log, config)
|
await cg.register_component(log, config)
|
||||||
|
|
||||||
for conf in config.get(CONF_ON_MESSAGE, []):
|
for conf in config.get(CONF_ON_MESSAGE, []):
|
||||||
trigger = cg.new_Pvariable(
|
trigger = cg.new_Pvariable(
|
||||||
conf[CONF_TRIGGER_ID], log, LOG_LEVEL_SEVERITY.index(conf[CONF_LEVEL])
|
conf[CONF_TRIGGER_ID], log, LOG_LEVEL_SEVERITY.index(conf[CONF_LEVEL])
|
||||||
)
|
)
|
||||||
yield automation.build_automation(
|
await automation.build_automation(
|
||||||
trigger,
|
trigger,
|
||||||
[
|
[
|
||||||
(cg.int_, "level"),
|
(cg.int_, "level"),
|
||||||
|
@ -242,11 +242,11 @@ LOGGER_LOG_ACTION_SCHEMA = cv.All(
|
||||||
|
|
||||||
|
|
||||||
@automation.register_action(CONF_LOGGER_LOG, LambdaAction, LOGGER_LOG_ACTION_SCHEMA)
|
@automation.register_action(CONF_LOGGER_LOG, LambdaAction, LOGGER_LOG_ACTION_SCHEMA)
|
||||||
def logger_log_action_to_code(config, action_id, template_arg, args):
|
async def logger_log_action_to_code(config, action_id, template_arg, args):
|
||||||
esp_log = LOG_LEVEL_TO_ESP_LOG[config[CONF_LEVEL]]
|
esp_log = LOG_LEVEL_TO_ESP_LOG[config[CONF_LEVEL]]
|
||||||
args_ = [cg.RawExpression(str(x)) for x in config[CONF_ARGS]]
|
args_ = [cg.RawExpression(str(x)) for x in config[CONF_ARGS]]
|
||||||
|
|
||||||
text = str(cg.statement(esp_log(config[CONF_TAG], config[CONF_FORMAT], *args_)))
|
text = str(cg.statement(esp_log(config[CONF_TAG], config[CONF_FORMAT], *args_)))
|
||||||
|
|
||||||
lambda_ = yield cg.process_lambda(Lambda(text), args, return_type=cg.void)
|
lambda_ = await cg.process_lambda(Lambda(text), args, return_type=cg.void)
|
||||||
yield cg.new_Pvariable(action_id, template_arg, lambda_)
|
return cg.new_Pvariable(action_id, template_arg, lambda_)
|
||||||
|
|
|
@ -37,7 +37,7 @@ from esphome.const import (
|
||||||
CONF_USERNAME,
|
CONF_USERNAME,
|
||||||
CONF_WILL_MESSAGE,
|
CONF_WILL_MESSAGE,
|
||||||
)
|
)
|
||||||
from esphome.core import coroutine_with_priority, coroutine, CORE
|
from esphome.core import coroutine_with_priority, CORE
|
||||||
|
|
||||||
DEPENDENCIES = ["network"]
|
DEPENDENCIES = ["network"]
|
||||||
AUTO_LOAD = ["json", "async_tcp"]
|
AUTO_LOAD = ["json", "async_tcp"]
|
||||||
|
@ -207,9 +207,9 @@ def exp_mqtt_message(config):
|
||||||
|
|
||||||
|
|
||||||
@coroutine_with_priority(40.0)
|
@coroutine_with_priority(40.0)
|
||||||
def to_code(config):
|
async def to_code(config):
|
||||||
var = cg.new_Pvariable(config[CONF_ID])
|
var = cg.new_Pvariable(config[CONF_ID])
|
||||||
yield cg.register_component(var, config)
|
await cg.register_component(var, config)
|
||||||
|
|
||||||
# https://github.com/OttoWinter/async-mqtt-client/blob/master/library.json
|
# https://github.com/OttoWinter/async-mqtt-client/blob/master/library.json
|
||||||
cg.add_library("AsyncMqttClient-esphome", "0.8.4")
|
cg.add_library("AsyncMqttClient-esphome", "0.8.4")
|
||||||
|
@ -279,12 +279,12 @@ def to_code(config):
|
||||||
cg.add(trig.set_qos(conf[CONF_QOS]))
|
cg.add(trig.set_qos(conf[CONF_QOS]))
|
||||||
if CONF_PAYLOAD in conf:
|
if CONF_PAYLOAD in conf:
|
||||||
cg.add(trig.set_payload(conf[CONF_PAYLOAD]))
|
cg.add(trig.set_payload(conf[CONF_PAYLOAD]))
|
||||||
yield cg.register_component(trig, conf)
|
await cg.register_component(trig, conf)
|
||||||
yield automation.build_automation(trig, [(cg.std_string, "x")], conf)
|
await automation.build_automation(trig, [(cg.std_string, "x")], conf)
|
||||||
|
|
||||||
for conf in config.get(CONF_ON_JSON_MESSAGE, []):
|
for conf in config.get(CONF_ON_JSON_MESSAGE, []):
|
||||||
trig = cg.new_Pvariable(conf[CONF_TRIGGER_ID], conf[CONF_TOPIC], conf[CONF_QOS])
|
trig = cg.new_Pvariable(conf[CONF_TRIGGER_ID], conf[CONF_TOPIC], conf[CONF_QOS])
|
||||||
yield automation.build_automation(trig, [(cg.JsonObjectConstRef, "x")], conf)
|
await automation.build_automation(trig, [(cg.JsonObjectConstRef, "x")], conf)
|
||||||
|
|
||||||
|
|
||||||
MQTT_PUBLISH_ACTION_SCHEMA = cv.Schema(
|
MQTT_PUBLISH_ACTION_SCHEMA = cv.Schema(
|
||||||
|
@ -301,19 +301,19 @@ MQTT_PUBLISH_ACTION_SCHEMA = cv.Schema(
|
||||||
@automation.register_action(
|
@automation.register_action(
|
||||||
"mqtt.publish", MQTTPublishAction, MQTT_PUBLISH_ACTION_SCHEMA
|
"mqtt.publish", MQTTPublishAction, MQTT_PUBLISH_ACTION_SCHEMA
|
||||||
)
|
)
|
||||||
def mqtt_publish_action_to_code(config, action_id, template_arg, args):
|
async def mqtt_publish_action_to_code(config, action_id, template_arg, args):
|
||||||
paren = yield cg.get_variable(config[CONF_ID])
|
paren = await cg.get_variable(config[CONF_ID])
|
||||||
var = cg.new_Pvariable(action_id, template_arg, paren)
|
var = cg.new_Pvariable(action_id, template_arg, paren)
|
||||||
template_ = yield cg.templatable(config[CONF_TOPIC], args, cg.std_string)
|
template_ = await cg.templatable(config[CONF_TOPIC], args, cg.std_string)
|
||||||
cg.add(var.set_topic(template_))
|
cg.add(var.set_topic(template_))
|
||||||
|
|
||||||
template_ = yield cg.templatable(config[CONF_PAYLOAD], args, cg.std_string)
|
template_ = await cg.templatable(config[CONF_PAYLOAD], args, cg.std_string)
|
||||||
cg.add(var.set_payload(template_))
|
cg.add(var.set_payload(template_))
|
||||||
template_ = yield cg.templatable(config[CONF_QOS], args, cg.uint8)
|
template_ = await cg.templatable(config[CONF_QOS], args, cg.uint8)
|
||||||
cg.add(var.set_qos(template_))
|
cg.add(var.set_qos(template_))
|
||||||
template_ = yield cg.templatable(config[CONF_RETAIN], args, bool)
|
template_ = await cg.templatable(config[CONF_RETAIN], args, bool)
|
||||||
cg.add(var.set_retain(template_))
|
cg.add(var.set_retain(template_))
|
||||||
yield var
|
return var
|
||||||
|
|
||||||
|
|
||||||
MQTT_PUBLISH_JSON_ACTION_SCHEMA = cv.Schema(
|
MQTT_PUBLISH_JSON_ACTION_SCHEMA = cv.Schema(
|
||||||
|
@ -330,20 +330,20 @@ MQTT_PUBLISH_JSON_ACTION_SCHEMA = cv.Schema(
|
||||||
@automation.register_action(
|
@automation.register_action(
|
||||||
"mqtt.publish_json", MQTTPublishJsonAction, MQTT_PUBLISH_JSON_ACTION_SCHEMA
|
"mqtt.publish_json", MQTTPublishJsonAction, MQTT_PUBLISH_JSON_ACTION_SCHEMA
|
||||||
)
|
)
|
||||||
def mqtt_publish_json_action_to_code(config, action_id, template_arg, args):
|
async def mqtt_publish_json_action_to_code(config, action_id, template_arg, args):
|
||||||
paren = yield cg.get_variable(config[CONF_ID])
|
paren = await cg.get_variable(config[CONF_ID])
|
||||||
var = cg.new_Pvariable(action_id, template_arg, paren)
|
var = cg.new_Pvariable(action_id, template_arg, paren)
|
||||||
template_ = yield cg.templatable(config[CONF_TOPIC], args, cg.std_string)
|
template_ = await cg.templatable(config[CONF_TOPIC], args, cg.std_string)
|
||||||
cg.add(var.set_topic(template_))
|
cg.add(var.set_topic(template_))
|
||||||
|
|
||||||
args_ = args + [(cg.JsonObjectRef, "root")]
|
args_ = args + [(cg.JsonObjectRef, "root")]
|
||||||
lambda_ = yield cg.process_lambda(config[CONF_PAYLOAD], args_, return_type=cg.void)
|
lambda_ = await cg.process_lambda(config[CONF_PAYLOAD], args_, return_type=cg.void)
|
||||||
cg.add(var.set_payload(lambda_))
|
cg.add(var.set_payload(lambda_))
|
||||||
template_ = yield cg.templatable(config[CONF_QOS], args, cg.uint8)
|
template_ = await cg.templatable(config[CONF_QOS], args, cg.uint8)
|
||||||
cg.add(var.set_qos(template_))
|
cg.add(var.set_qos(template_))
|
||||||
template_ = yield cg.templatable(config[CONF_RETAIN], args, bool)
|
template_ = await cg.templatable(config[CONF_RETAIN], args, bool)
|
||||||
cg.add(var.set_retain(template_))
|
cg.add(var.set_retain(template_))
|
||||||
yield var
|
return var
|
||||||
|
|
||||||
|
|
||||||
def get_default_topic_for(data, component_type, name, suffix):
|
def get_default_topic_for(data, component_type, name, suffix):
|
||||||
|
@ -356,9 +356,8 @@ def get_default_topic_for(data, component_type, name, suffix):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def register_mqtt_component(var, config):
|
||||||
def register_mqtt_component(var, config):
|
await cg.register_component(var, {})
|
||||||
yield cg.register_component(var, {})
|
|
||||||
|
|
||||||
if CONF_RETAIN in config:
|
if CONF_RETAIN in config:
|
||||||
cg.add(var.set_retain(config[CONF_RETAIN]))
|
cg.add(var.set_retain(config[CONF_RETAIN]))
|
||||||
|
@ -391,6 +390,6 @@ def register_mqtt_component(var, config):
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
def mqtt_connected_to_code(config, condition_id, template_arg, args):
|
async def mqtt_connected_to_code(config, condition_id, template_arg, args):
|
||||||
paren = yield cg.get_variable(config[CONF_ID])
|
paren = await cg.get_variable(config[CONF_ID])
|
||||||
yield cg.new_Pvariable(condition_id, template_arg, paren)
|
return cg.new_Pvariable(condition_id, template_arg, paren)
|
||||||
|
|
|
@ -11,7 +11,7 @@ from esphome.const import (
|
||||||
CONF_MIN_POWER,
|
CONF_MIN_POWER,
|
||||||
CONF_POWER_SUPPLY,
|
CONF_POWER_SUPPLY,
|
||||||
)
|
)
|
||||||
from esphome.core import CORE, coroutine
|
from esphome.core import CORE
|
||||||
|
|
||||||
|
|
||||||
CODEOWNERS = ["@esphome/core"]
|
CODEOWNERS = ["@esphome/core"]
|
||||||
|
@ -43,12 +43,11 @@ TurnOnAction = output_ns.class_("TurnOnAction", automation.Action)
|
||||||
SetLevelAction = output_ns.class_("SetLevelAction", automation.Action)
|
SetLevelAction = output_ns.class_("SetLevelAction", automation.Action)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def setup_output_platform_(obj, config):
|
||||||
def setup_output_platform_(obj, config):
|
|
||||||
if CONF_INVERTED in config:
|
if CONF_INVERTED in config:
|
||||||
cg.add(obj.set_inverted(config[CONF_INVERTED]))
|
cg.add(obj.set_inverted(config[CONF_INVERTED]))
|
||||||
if CONF_POWER_SUPPLY in config:
|
if CONF_POWER_SUPPLY in config:
|
||||||
power_supply_ = yield cg.get_variable(config[CONF_POWER_SUPPLY])
|
power_supply_ = await cg.get_variable(config[CONF_POWER_SUPPLY])
|
||||||
cg.add(obj.set_power_supply(power_supply_))
|
cg.add(obj.set_power_supply(power_supply_))
|
||||||
if CONF_MAX_POWER in config:
|
if CONF_MAX_POWER in config:
|
||||||
cg.add(obj.set_max_power(config[CONF_MAX_POWER]))
|
cg.add(obj.set_max_power(config[CONF_MAX_POWER]))
|
||||||
|
@ -56,11 +55,10 @@ def setup_output_platform_(obj, config):
|
||||||
cg.add(obj.set_min_power(config[CONF_MIN_POWER]))
|
cg.add(obj.set_min_power(config[CONF_MIN_POWER]))
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def register_output(var, config):
|
||||||
def register_output(var, config):
|
|
||||||
if not CORE.has_id(config[CONF_ID]):
|
if not CORE.has_id(config[CONF_ID]):
|
||||||
var = cg.Pvariable(config[CONF_ID], var)
|
var = cg.Pvariable(config[CONF_ID], var)
|
||||||
yield setup_output_platform_(var, config)
|
await setup_output_platform_(var, config)
|
||||||
|
|
||||||
|
|
||||||
BINARY_OUTPUT_ACTION_SCHEMA = maybe_simple_id(
|
BINARY_OUTPUT_ACTION_SCHEMA = maybe_simple_id(
|
||||||
|
@ -71,17 +69,17 @@ BINARY_OUTPUT_ACTION_SCHEMA = maybe_simple_id(
|
||||||
|
|
||||||
|
|
||||||
@automation.register_action("output.turn_on", TurnOnAction, BINARY_OUTPUT_ACTION_SCHEMA)
|
@automation.register_action("output.turn_on", TurnOnAction, BINARY_OUTPUT_ACTION_SCHEMA)
|
||||||
def output_turn_on_to_code(config, action_id, template_arg, args):
|
async def output_turn_on_to_code(config, action_id, template_arg, args):
|
||||||
paren = yield cg.get_variable(config[CONF_ID])
|
paren = await cg.get_variable(config[CONF_ID])
|
||||||
yield cg.new_Pvariable(action_id, template_arg, paren)
|
return cg.new_Pvariable(action_id, template_arg, paren)
|
||||||
|
|
||||||
|
|
||||||
@automation.register_action(
|
@automation.register_action(
|
||||||
"output.turn_off", TurnOffAction, BINARY_OUTPUT_ACTION_SCHEMA
|
"output.turn_off", TurnOffAction, BINARY_OUTPUT_ACTION_SCHEMA
|
||||||
)
|
)
|
||||||
def output_turn_off_to_code(config, action_id, template_arg, args):
|
async def output_turn_off_to_code(config, action_id, template_arg, args):
|
||||||
paren = yield cg.get_variable(config[CONF_ID])
|
paren = await cg.get_variable(config[CONF_ID])
|
||||||
yield cg.new_Pvariable(action_id, template_arg, paren)
|
return cg.new_Pvariable(action_id, template_arg, paren)
|
||||||
|
|
||||||
|
|
||||||
@automation.register_action(
|
@automation.register_action(
|
||||||
|
@ -94,12 +92,12 @@ def output_turn_off_to_code(config, action_id, template_arg, args):
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
def output_set_level_to_code(config, action_id, template_arg, args):
|
async def output_set_level_to_code(config, action_id, template_arg, args):
|
||||||
paren = yield cg.get_variable(config[CONF_ID])
|
paren = await cg.get_variable(config[CONF_ID])
|
||||||
var = cg.new_Pvariable(action_id, template_arg, paren)
|
var = cg.new_Pvariable(action_id, template_arg, paren)
|
||||||
template_ = yield cg.templatable(config[CONF_LEVEL], args, float)
|
template_ = await cg.templatable(config[CONF_LEVEL], args, float)
|
||||||
cg.add(var.set_level(template_))
|
cg.add(var.set_level(template_))
|
||||||
yield var
|
return var
|
||||||
|
|
||||||
|
|
||||||
def to_code(config):
|
def to_code(config):
|
||||||
|
|
|
@ -45,7 +45,7 @@ from esphome.const import (
|
||||||
DEVICE_CLASS_TIMESTAMP,
|
DEVICE_CLASS_TIMESTAMP,
|
||||||
DEVICE_CLASS_VOLTAGE,
|
DEVICE_CLASS_VOLTAGE,
|
||||||
)
|
)
|
||||||
from esphome.core import CORE, coroutine, coroutine_with_priority
|
from esphome.core import CORE, coroutine_with_priority
|
||||||
from esphome.util import Registry
|
from esphome.util import Registry
|
||||||
|
|
||||||
CODEOWNERS = ["@esphome/core"]
|
CODEOWNERS = ["@esphome/core"]
|
||||||
|
@ -441,13 +441,11 @@ def calibrate_polynomial_filter_to_code(config, filter_id):
|
||||||
yield cg.new_Pvariable(filter_id, res)
|
yield cg.new_Pvariable(filter_id, res)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def build_filters(config):
|
||||||
def build_filters(config):
|
return await cg.build_registry_list(FILTER_REGISTRY, config)
|
||||||
yield cg.build_registry_list(FILTER_REGISTRY, config)
|
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def setup_sensor_core_(var, config):
|
||||||
def setup_sensor_core_(var, config):
|
|
||||||
cg.add(var.set_name(config[CONF_NAME]))
|
cg.add(var.set_name(config[CONF_NAME]))
|
||||||
if CONF_INTERNAL in config:
|
if CONF_INTERNAL in config:
|
||||||
cg.add(var.set_internal(config[CONF_INTERNAL]))
|
cg.add(var.set_internal(config[CONF_INTERNAL]))
|
||||||
|
@ -461,29 +459,29 @@ def setup_sensor_core_(var, config):
|
||||||
cg.add(var.set_accuracy_decimals(config[CONF_ACCURACY_DECIMALS]))
|
cg.add(var.set_accuracy_decimals(config[CONF_ACCURACY_DECIMALS]))
|
||||||
cg.add(var.set_force_update(config[CONF_FORCE_UPDATE]))
|
cg.add(var.set_force_update(config[CONF_FORCE_UPDATE]))
|
||||||
if config.get(CONF_FILTERS): # must exist and not be empty
|
if config.get(CONF_FILTERS): # must exist and not be empty
|
||||||
filters = yield build_filters(config[CONF_FILTERS])
|
filters = await build_filters(config[CONF_FILTERS])
|
||||||
cg.add(var.set_filters(filters))
|
cg.add(var.set_filters(filters))
|
||||||
|
|
||||||
for conf in config.get(CONF_ON_VALUE, []):
|
for conf in config.get(CONF_ON_VALUE, []):
|
||||||
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
||||||
yield automation.build_automation(trigger, [(float, "x")], conf)
|
await automation.build_automation(trigger, [(float, "x")], conf)
|
||||||
for conf in config.get(CONF_ON_RAW_VALUE, []):
|
for conf in config.get(CONF_ON_RAW_VALUE, []):
|
||||||
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
||||||
yield automation.build_automation(trigger, [(float, "x")], conf)
|
await automation.build_automation(trigger, [(float, "x")], conf)
|
||||||
for conf in config.get(CONF_ON_VALUE_RANGE, []):
|
for conf in config.get(CONF_ON_VALUE_RANGE, []):
|
||||||
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
||||||
yield cg.register_component(trigger, conf)
|
await cg.register_component(trigger, conf)
|
||||||
if CONF_ABOVE in conf:
|
if CONF_ABOVE in conf:
|
||||||
template_ = yield cg.templatable(conf[CONF_ABOVE], [(float, "x")], float)
|
template_ = await cg.templatable(conf[CONF_ABOVE], [(float, "x")], float)
|
||||||
cg.add(trigger.set_min(template_))
|
cg.add(trigger.set_min(template_))
|
||||||
if CONF_BELOW in conf:
|
if CONF_BELOW in conf:
|
||||||
template_ = yield cg.templatable(conf[CONF_BELOW], [(float, "x")], float)
|
template_ = await cg.templatable(conf[CONF_BELOW], [(float, "x")], float)
|
||||||
cg.add(trigger.set_max(template_))
|
cg.add(trigger.set_max(template_))
|
||||||
yield automation.build_automation(trigger, [(float, "x")], conf)
|
await automation.build_automation(trigger, [(float, "x")], conf)
|
||||||
|
|
||||||
if CONF_MQTT_ID in config:
|
if CONF_MQTT_ID in config:
|
||||||
mqtt_ = cg.new_Pvariable(config[CONF_MQTT_ID], var)
|
mqtt_ = cg.new_Pvariable(config[CONF_MQTT_ID], var)
|
||||||
yield mqtt.register_mqtt_component(mqtt_, config)
|
await mqtt.register_mqtt_component(mqtt_, config)
|
||||||
|
|
||||||
if CONF_EXPIRE_AFTER in config:
|
if CONF_EXPIRE_AFTER in config:
|
||||||
if config[CONF_EXPIRE_AFTER] is None:
|
if config[CONF_EXPIRE_AFTER] is None:
|
||||||
|
@ -492,19 +490,17 @@ def setup_sensor_core_(var, config):
|
||||||
cg.add(mqtt_.set_expire_after(config[CONF_EXPIRE_AFTER]))
|
cg.add(mqtt_.set_expire_after(config[CONF_EXPIRE_AFTER]))
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def register_sensor(var, config):
|
||||||
def register_sensor(var, config):
|
|
||||||
if not CORE.has_id(config[CONF_ID]):
|
if not CORE.has_id(config[CONF_ID]):
|
||||||
var = cg.Pvariable(config[CONF_ID], var)
|
var = cg.Pvariable(config[CONF_ID], var)
|
||||||
cg.add(cg.App.register_sensor(var))
|
cg.add(cg.App.register_sensor(var))
|
||||||
yield setup_sensor_core_(var, config)
|
await setup_sensor_core_(var, config)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def new_sensor(config):
|
||||||
def new_sensor(config):
|
|
||||||
var = cg.new_Pvariable(config[CONF_ID])
|
var = cg.new_Pvariable(config[CONF_ID])
|
||||||
yield register_sensor(var, config)
|
await register_sensor(var, config)
|
||||||
yield var
|
return var
|
||||||
|
|
||||||
|
|
||||||
SENSOR_IN_RANGE_CONDITION_SCHEMA = cv.All(
|
SENSOR_IN_RANGE_CONDITION_SCHEMA = cv.All(
|
||||||
|
@ -520,8 +516,8 @@ SENSOR_IN_RANGE_CONDITION_SCHEMA = cv.All(
|
||||||
@automation.register_condition(
|
@automation.register_condition(
|
||||||
"sensor.in_range", SensorInRangeCondition, SENSOR_IN_RANGE_CONDITION_SCHEMA
|
"sensor.in_range", SensorInRangeCondition, SENSOR_IN_RANGE_CONDITION_SCHEMA
|
||||||
)
|
)
|
||||||
def sensor_in_range_to_code(config, condition_id, template_arg, args):
|
async def sensor_in_range_to_code(config, condition_id, template_arg, args):
|
||||||
paren = yield cg.get_variable(config[CONF_ID])
|
paren = await cg.get_variable(config[CONF_ID])
|
||||||
var = cg.new_Pvariable(condition_id, template_arg, paren)
|
var = cg.new_Pvariable(condition_id, template_arg, paren)
|
||||||
|
|
||||||
if CONF_ABOVE in config:
|
if CONF_ABOVE in config:
|
||||||
|
@ -529,7 +525,7 @@ def sensor_in_range_to_code(config, condition_id, template_arg, args):
|
||||||
if CONF_BELOW in config:
|
if CONF_BELOW in config:
|
||||||
cg.add(var.set_max(config[CONF_BELOW]))
|
cg.add(var.set_max(config[CONF_BELOW]))
|
||||||
|
|
||||||
yield var
|
return var
|
||||||
|
|
||||||
|
|
||||||
def _mean(xs):
|
def _mean(xs):
|
||||||
|
@ -618,6 +614,6 @@ def _lstsq(a, b):
|
||||||
|
|
||||||
|
|
||||||
@coroutine_with_priority(40.0)
|
@coroutine_with_priority(40.0)
|
||||||
def to_code(config):
|
async def to_code(config):
|
||||||
cg.add_define("USE_SENSOR")
|
cg.add_define("USE_SENSOR")
|
||||||
cg.add_global(sensor_ns.using)
|
cg.add_global(sensor_ns.using)
|
||||||
|
|
|
@ -9,7 +9,7 @@ from esphome.const import (
|
||||||
CONF_SPI_ID,
|
CONF_SPI_ID,
|
||||||
CONF_CS_PIN,
|
CONF_CS_PIN,
|
||||||
)
|
)
|
||||||
from esphome.core import coroutine, coroutine_with_priority
|
from esphome.core import coroutine_with_priority
|
||||||
|
|
||||||
CODEOWNERS = ["@esphome/core"]
|
CODEOWNERS = ["@esphome/core"]
|
||||||
spi_ns = cg.esphome_ns.namespace("spi")
|
spi_ns = cg.esphome_ns.namespace("spi")
|
||||||
|
@ -31,18 +31,18 @@ CONFIG_SCHEMA = cv.All(
|
||||||
|
|
||||||
|
|
||||||
@coroutine_with_priority(1.0)
|
@coroutine_with_priority(1.0)
|
||||||
def to_code(config):
|
async def to_code(config):
|
||||||
cg.add_global(spi_ns.using)
|
cg.add_global(spi_ns.using)
|
||||||
var = cg.new_Pvariable(config[CONF_ID])
|
var = cg.new_Pvariable(config[CONF_ID])
|
||||||
yield cg.register_component(var, config)
|
await cg.register_component(var, config)
|
||||||
|
|
||||||
clk = yield cg.gpio_pin_expression(config[CONF_CLK_PIN])
|
clk = await cg.gpio_pin_expression(config[CONF_CLK_PIN])
|
||||||
cg.add(var.set_clk(clk))
|
cg.add(var.set_clk(clk))
|
||||||
if CONF_MISO_PIN in config:
|
if CONF_MISO_PIN in config:
|
||||||
miso = yield cg.gpio_pin_expression(config[CONF_MISO_PIN])
|
miso = await cg.gpio_pin_expression(config[CONF_MISO_PIN])
|
||||||
cg.add(var.set_miso(miso))
|
cg.add(var.set_miso(miso))
|
||||||
if CONF_MOSI_PIN in config:
|
if CONF_MOSI_PIN in config:
|
||||||
mosi = yield cg.gpio_pin_expression(config[CONF_MOSI_PIN])
|
mosi = await cg.gpio_pin_expression(config[CONF_MOSI_PIN])
|
||||||
cg.add(var.set_mosi(mosi))
|
cg.add(var.set_mosi(mosi))
|
||||||
|
|
||||||
|
|
||||||
|
@ -61,10 +61,9 @@ def spi_device_schema(cs_pin_required=True):
|
||||||
return cv.Schema(schema)
|
return cv.Schema(schema)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def register_spi_device(var, config):
|
||||||
def register_spi_device(var, config):
|
parent = await cg.get_variable(config[CONF_SPI_ID])
|
||||||
parent = yield cg.get_variable(config[CONF_SPI_ID])
|
|
||||||
cg.add(var.set_spi_parent(parent))
|
cg.add(var.set_spi_parent(parent))
|
||||||
if CONF_CS_PIN in config:
|
if CONF_CS_PIN in config:
|
||||||
pin = yield cg.gpio_pin_expression(config[CONF_CS_PIN])
|
pin = await cg.gpio_pin_expression(config[CONF_CS_PIN])
|
||||||
cg.add(var.set_cs_pin(pin))
|
cg.add(var.set_cs_pin(pin))
|
||||||
|
|
|
@ -16,10 +16,10 @@ CONFIG_SCHEMA = cv.Schema(
|
||||||
|
|
||||||
|
|
||||||
@coroutine_with_priority(80.0)
|
@coroutine_with_priority(80.0)
|
||||||
def to_code(config):
|
async def to_code(config):
|
||||||
pin = yield cg.gpio_pin_expression(config[CONF_PIN])
|
pin = await cg.gpio_pin_expression(config[CONF_PIN])
|
||||||
rhs = StatusLED.new(pin)
|
rhs = StatusLED.new(pin)
|
||||||
var = cg.Pvariable(config[CONF_ID], rhs)
|
var = cg.Pvariable(config[CONF_ID], rhs)
|
||||||
yield cg.register_component(var, config)
|
await cg.register_component(var, config)
|
||||||
cg.add(var.pre_setup())
|
cg.add(var.pre_setup())
|
||||||
cg.add_define("USE_STATUS_LED")
|
cg.add_define("USE_STATUS_LED")
|
||||||
|
|
|
@ -14,7 +14,7 @@ from esphome.const import (
|
||||||
CONF_MQTT_ID,
|
CONF_MQTT_ID,
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
)
|
)
|
||||||
from esphome.core import CORE, coroutine, coroutine_with_priority
|
from esphome.core import CORE, coroutine_with_priority
|
||||||
|
|
||||||
CODEOWNERS = ["@esphome/core"]
|
CODEOWNERS = ["@esphome/core"]
|
||||||
IS_PLATFORM_COMPONENT = True
|
IS_PLATFORM_COMPONENT = True
|
||||||
|
@ -57,8 +57,7 @@ SWITCH_SCHEMA = cv.MQTT_COMMAND_COMPONENT_SCHEMA.extend(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def setup_switch_core_(var, config):
|
||||||
def setup_switch_core_(var, config):
|
|
||||||
cg.add(var.set_name(config[CONF_NAME]))
|
cg.add(var.set_name(config[CONF_NAME]))
|
||||||
if CONF_INTERNAL in config:
|
if CONF_INTERNAL in config:
|
||||||
cg.add(var.set_internal(config[CONF_INTERNAL]))
|
cg.add(var.set_internal(config[CONF_INTERNAL]))
|
||||||
|
@ -68,22 +67,21 @@ def setup_switch_core_(var, config):
|
||||||
cg.add(var.set_inverted(config[CONF_INVERTED]))
|
cg.add(var.set_inverted(config[CONF_INVERTED]))
|
||||||
for conf in config.get(CONF_ON_TURN_ON, []):
|
for conf in config.get(CONF_ON_TURN_ON, []):
|
||||||
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
||||||
yield automation.build_automation(trigger, [], conf)
|
await automation.build_automation(trigger, [], conf)
|
||||||
for conf in config.get(CONF_ON_TURN_OFF, []):
|
for conf in config.get(CONF_ON_TURN_OFF, []):
|
||||||
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
||||||
yield automation.build_automation(trigger, [], conf)
|
await automation.build_automation(trigger, [], conf)
|
||||||
|
|
||||||
if CONF_MQTT_ID in config:
|
if CONF_MQTT_ID in config:
|
||||||
mqtt_ = cg.new_Pvariable(config[CONF_MQTT_ID], var)
|
mqtt_ = cg.new_Pvariable(config[CONF_MQTT_ID], var)
|
||||||
yield mqtt.register_mqtt_component(mqtt_, config)
|
await mqtt.register_mqtt_component(mqtt_, config)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def register_switch(var, config):
|
||||||
def register_switch(var, config):
|
|
||||||
if not CORE.has_id(config[CONF_ID]):
|
if not CORE.has_id(config[CONF_ID]):
|
||||||
var = cg.Pvariable(config[CONF_ID], var)
|
var = cg.Pvariable(config[CONF_ID], var)
|
||||||
cg.add(cg.App.register_switch(var))
|
cg.add(cg.App.register_switch(var))
|
||||||
yield setup_switch_core_(var, config)
|
await setup_switch_core_(var, config)
|
||||||
|
|
||||||
|
|
||||||
SWITCH_ACTION_SCHEMA = maybe_simple_id(
|
SWITCH_ACTION_SCHEMA = maybe_simple_id(
|
||||||
|
@ -96,24 +94,24 @@ SWITCH_ACTION_SCHEMA = maybe_simple_id(
|
||||||
@automation.register_action("switch.toggle", ToggleAction, SWITCH_ACTION_SCHEMA)
|
@automation.register_action("switch.toggle", ToggleAction, SWITCH_ACTION_SCHEMA)
|
||||||
@automation.register_action("switch.turn_off", TurnOffAction, SWITCH_ACTION_SCHEMA)
|
@automation.register_action("switch.turn_off", TurnOffAction, SWITCH_ACTION_SCHEMA)
|
||||||
@automation.register_action("switch.turn_on", TurnOnAction, SWITCH_ACTION_SCHEMA)
|
@automation.register_action("switch.turn_on", TurnOnAction, SWITCH_ACTION_SCHEMA)
|
||||||
def switch_toggle_to_code(config, action_id, template_arg, args):
|
async def switch_toggle_to_code(config, action_id, template_arg, args):
|
||||||
paren = yield cg.get_variable(config[CONF_ID])
|
paren = await cg.get_variable(config[CONF_ID])
|
||||||
yield cg.new_Pvariable(action_id, template_arg, paren)
|
return cg.new_Pvariable(action_id, template_arg, paren)
|
||||||
|
|
||||||
|
|
||||||
@automation.register_condition("switch.is_on", SwitchCondition, SWITCH_ACTION_SCHEMA)
|
@automation.register_condition("switch.is_on", SwitchCondition, SWITCH_ACTION_SCHEMA)
|
||||||
def switch_is_on_to_code(config, condition_id, template_arg, args):
|
async def switch_is_on_to_code(config, condition_id, template_arg, args):
|
||||||
paren = yield cg.get_variable(config[CONF_ID])
|
paren = await cg.get_variable(config[CONF_ID])
|
||||||
yield cg.new_Pvariable(condition_id, template_arg, paren, True)
|
return cg.new_Pvariable(condition_id, template_arg, paren, True)
|
||||||
|
|
||||||
|
|
||||||
@automation.register_condition("switch.is_off", SwitchCondition, SWITCH_ACTION_SCHEMA)
|
@automation.register_condition("switch.is_off", SwitchCondition, SWITCH_ACTION_SCHEMA)
|
||||||
def switch_is_off_to_code(config, condition_id, template_arg, args):
|
async def switch_is_off_to_code(config, condition_id, template_arg, args):
|
||||||
paren = yield cg.get_variable(config[CONF_ID])
|
paren = await cg.get_variable(config[CONF_ID])
|
||||||
yield cg.new_Pvariable(condition_id, template_arg, paren, False)
|
return cg.new_Pvariable(condition_id, template_arg, paren, False)
|
||||||
|
|
||||||
|
|
||||||
@coroutine_with_priority(100.0)
|
@coroutine_with_priority(100.0)
|
||||||
def to_code(config):
|
async def to_code(config):
|
||||||
cg.add_global(switch_ns.using)
|
cg.add_global(switch_ns.using)
|
||||||
cg.add_define("USE_SWITCH")
|
cg.add_define("USE_SWITCH")
|
||||||
|
|
|
@ -12,7 +12,7 @@ from esphome.const import (
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
CONF_STATE,
|
CONF_STATE,
|
||||||
)
|
)
|
||||||
from esphome.core import CORE, coroutine, coroutine_with_priority
|
from esphome.core import CORE, coroutine_with_priority
|
||||||
|
|
||||||
IS_PLATFORM_COMPONENT = True
|
IS_PLATFORM_COMPONENT = True
|
||||||
|
|
||||||
|
@ -46,8 +46,7 @@ TEXT_SENSOR_SCHEMA = cv.MQTT_COMPONENT_SCHEMA.extend(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def setup_text_sensor_core_(var, config):
|
||||||
def setup_text_sensor_core_(var, config):
|
|
||||||
cg.add(var.set_name(config[CONF_NAME]))
|
cg.add(var.set_name(config[CONF_NAME]))
|
||||||
if CONF_INTERNAL in config:
|
if CONF_INTERNAL in config:
|
||||||
cg.add(var.set_internal(config[CONF_INTERNAL]))
|
cg.add(var.set_internal(config[CONF_INTERNAL]))
|
||||||
|
@ -56,23 +55,22 @@ def setup_text_sensor_core_(var, config):
|
||||||
|
|
||||||
for conf in config.get(CONF_ON_VALUE, []):
|
for conf in config.get(CONF_ON_VALUE, []):
|
||||||
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
|
||||||
yield automation.build_automation(trigger, [(cg.std_string, "x")], conf)
|
await automation.build_automation(trigger, [(cg.std_string, "x")], conf)
|
||||||
|
|
||||||
if CONF_MQTT_ID in config:
|
if CONF_MQTT_ID in config:
|
||||||
mqtt_ = cg.new_Pvariable(config[CONF_MQTT_ID], var)
|
mqtt_ = cg.new_Pvariable(config[CONF_MQTT_ID], var)
|
||||||
yield mqtt.register_mqtt_component(mqtt_, config)
|
await mqtt.register_mqtt_component(mqtt_, config)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def register_text_sensor(var, config):
|
||||||
def register_text_sensor(var, config):
|
|
||||||
if not CORE.has_id(config[CONF_ID]):
|
if not CORE.has_id(config[CONF_ID]):
|
||||||
var = cg.Pvariable(config[CONF_ID], var)
|
var = cg.Pvariable(config[CONF_ID], var)
|
||||||
cg.add(cg.App.register_text_sensor(var))
|
cg.add(cg.App.register_text_sensor(var))
|
||||||
yield setup_text_sensor_core_(var, config)
|
await setup_text_sensor_core_(var, config)
|
||||||
|
|
||||||
|
|
||||||
@coroutine_with_priority(100.0)
|
@coroutine_with_priority(100.0)
|
||||||
def to_code(config):
|
async def to_code(config):
|
||||||
cg.add_define("USE_TEXT_SENSOR")
|
cg.add_define("USE_TEXT_SENSOR")
|
||||||
cg.add_global(text_sensor_ns.using)
|
cg.add_global(text_sensor_ns.using)
|
||||||
|
|
||||||
|
@ -87,9 +85,9 @@ def to_code(config):
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
def text_sensor_state_to_code(config, condition_id, template_arg, args):
|
async def text_sensor_state_to_code(config, condition_id, template_arg, args):
|
||||||
paren = yield cg.get_variable(config[CONF_ID])
|
paren = await cg.get_variable(config[CONF_ID])
|
||||||
var = cg.new_Pvariable(condition_id, template_arg, paren)
|
var = cg.new_Pvariable(condition_id, template_arg, paren)
|
||||||
templ = yield cg.templatable(config[CONF_STATE], args, cg.std_string)
|
templ = await cg.templatable(config[CONF_STATE], args, cg.std_string)
|
||||||
cg.add(var.set_state(templ))
|
cg.add(var.set_state(templ))
|
||||||
yield var
|
return var
|
||||||
|
|
|
@ -28,7 +28,7 @@ from esphome.const import (
|
||||||
CONF_HOUR,
|
CONF_HOUR,
|
||||||
CONF_MINUTE,
|
CONF_MINUTE,
|
||||||
)
|
)
|
||||||
from esphome.core import coroutine, coroutine_with_priority
|
from esphome.core import coroutine_with_priority
|
||||||
from esphome.automation import Condition
|
from esphome.automation import Condition
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
@ -380,8 +380,7 @@ TIME_SCHEMA = cv.Schema(
|
||||||
).extend(cv.polling_component_schema("15min"))
|
).extend(cv.polling_component_schema("15min"))
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def setup_time_core_(time_var, config):
|
||||||
def setup_time_core_(time_var, config):
|
|
||||||
cg.add(time_var.set_timezone(config[CONF_TIMEZONE]))
|
cg.add(time_var.set_timezone(config[CONF_TIMEZONE]))
|
||||||
|
|
||||||
for conf in config.get(CONF_ON_TIME, []):
|
for conf in config.get(CONF_ON_TIME, []):
|
||||||
|
@ -400,23 +399,22 @@ def setup_time_core_(time_var, config):
|
||||||
days_of_week = conf.get(CONF_DAYS_OF_WEEK, list(range(1, 8)))
|
days_of_week = conf.get(CONF_DAYS_OF_WEEK, list(range(1, 8)))
|
||||||
cg.add(trigger.add_days_of_week(days_of_week))
|
cg.add(trigger.add_days_of_week(days_of_week))
|
||||||
|
|
||||||
yield cg.register_component(trigger, conf)
|
await cg.register_component(trigger, conf)
|
||||||
yield automation.build_automation(trigger, [], conf)
|
await automation.build_automation(trigger, [], conf)
|
||||||
|
|
||||||
for conf in config.get(CONF_ON_TIME_SYNC, []):
|
for conf in config.get(CONF_ON_TIME_SYNC, []):
|
||||||
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], time_var)
|
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], time_var)
|
||||||
|
|
||||||
yield cg.register_component(trigger, conf)
|
await cg.register_component(trigger, conf)
|
||||||
yield automation.build_automation(trigger, [], conf)
|
await automation.build_automation(trigger, [], conf)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def register_time(time_var, config):
|
||||||
def register_time(time_var, config):
|
await setup_time_core_(time_var, config)
|
||||||
yield setup_time_core_(time_var, config)
|
|
||||||
|
|
||||||
|
|
||||||
@coroutine_with_priority(100.0)
|
@coroutine_with_priority(100.0)
|
||||||
def to_code(config):
|
async def to_code(config):
|
||||||
cg.add_define("USE_TIME")
|
cg.add_define("USE_TIME")
|
||||||
cg.add_global(time_ns.using)
|
cg.add_global(time_ns.using)
|
||||||
|
|
||||||
|
@ -430,6 +428,6 @@ def to_code(config):
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
def time_has_time_to_code(config, condition_id, template_arg, args):
|
async def time_has_time_to_code(config, condition_id, template_arg, args):
|
||||||
paren = yield cg.get_variable(config[CONF_ID])
|
paren = await cg.get_variable(config[CONF_ID])
|
||||||
yield cg.new_Pvariable(condition_id, template_arg, paren)
|
return cg.new_Pvariable(condition_id, template_arg, paren)
|
||||||
|
|
|
@ -11,7 +11,7 @@ from esphome.const import (
|
||||||
CONF_RX_BUFFER_SIZE,
|
CONF_RX_BUFFER_SIZE,
|
||||||
CONF_INVERT,
|
CONF_INVERT,
|
||||||
)
|
)
|
||||||
from esphome.core import CORE, coroutine
|
from esphome.core import CORE
|
||||||
|
|
||||||
CODEOWNERS = ["@esphome/core"]
|
CODEOWNERS = ["@esphome/core"]
|
||||||
uart_ns = cg.esphome_ns.namespace("uart")
|
uart_ns = cg.esphome_ns.namespace("uart")
|
||||||
|
@ -73,10 +73,10 @@ CONFIG_SCHEMA = cv.All(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def to_code(config):
|
async def to_code(config):
|
||||||
cg.add_global(uart_ns.using)
|
cg.add_global(uart_ns.using)
|
||||||
var = cg.new_Pvariable(config[CONF_ID])
|
var = cg.new_Pvariable(config[CONF_ID])
|
||||||
yield cg.register_component(var, config)
|
await cg.register_component(var, config)
|
||||||
|
|
||||||
cg.add(var.set_baud_rate(config[CONF_BAUD_RATE]))
|
cg.add(var.set_baud_rate(config[CONF_BAUD_RATE]))
|
||||||
|
|
||||||
|
@ -100,13 +100,12 @@ UART_DEVICE_SCHEMA = cv.Schema(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def register_uart_device(var, config):
|
||||||
def register_uart_device(var, config):
|
|
||||||
"""Register a UART device, setting up all the internal values.
|
"""Register a UART device, setting up all the internal values.
|
||||||
|
|
||||||
This is a coroutine, you need to await it with a 'yield' expression!
|
This is a coroutine, you need to await it with a 'yield' expression!
|
||||||
"""
|
"""
|
||||||
parent = yield cg.get_variable(config[CONF_UART_ID])
|
parent = await cg.get_variable(config[CONF_UART_ID])
|
||||||
cg.add(var.set_uart_parent(parent))
|
cg.add(var.set_uart_parent(parent))
|
||||||
|
|
||||||
|
|
||||||
|
@ -121,16 +120,16 @@ def register_uart_device(var, config):
|
||||||
key=CONF_DATA,
|
key=CONF_DATA,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
def uart_write_to_code(config, action_id, template_arg, args):
|
async def uart_write_to_code(config, action_id, template_arg, args):
|
||||||
var = cg.new_Pvariable(action_id, template_arg)
|
var = cg.new_Pvariable(action_id, template_arg)
|
||||||
yield cg.register_parented(var, config[CONF_ID])
|
await cg.register_parented(var, config[CONF_ID])
|
||||||
data = config[CONF_DATA]
|
data = config[CONF_DATA]
|
||||||
if isinstance(data, bytes):
|
if isinstance(data, bytes):
|
||||||
data = list(data)
|
data = list(data)
|
||||||
|
|
||||||
if cg.is_template(data):
|
if cg.is_template(data):
|
||||||
templ = yield cg.templatable(data, args, cg.std_vector.template(cg.uint8))
|
templ = await cg.templatable(data, args, cg.std_vector.template(cg.uint8))
|
||||||
cg.add(var.set_data_template(templ))
|
cg.add(var.set_data_template(templ))
|
||||||
else:
|
else:
|
||||||
cg.add(var.set_data_static(data))
|
cg.add(var.set_data_static(data))
|
||||||
yield var
|
return var
|
||||||
|
|
|
@ -46,11 +46,11 @@ CONFIG_SCHEMA = cv.Schema(
|
||||||
|
|
||||||
|
|
||||||
@coroutine_with_priority(40.0)
|
@coroutine_with_priority(40.0)
|
||||||
def to_code(config):
|
async def to_code(config):
|
||||||
paren = yield cg.get_variable(config[CONF_WEB_SERVER_BASE_ID])
|
paren = await cg.get_variable(config[CONF_WEB_SERVER_BASE_ID])
|
||||||
|
|
||||||
var = cg.new_Pvariable(config[CONF_ID], paren)
|
var = cg.new_Pvariable(config[CONF_ID], paren)
|
||||||
yield cg.register_component(var, config)
|
await cg.register_component(var, config)
|
||||||
|
|
||||||
cg.add(paren.set_port(config[CONF_PORT]))
|
cg.add(paren.set_port(config[CONF_PORT]))
|
||||||
cg.add_define("WEBSERVER_PORT", config[CONF_PORT])
|
cg.add_define("WEBSERVER_PORT", config[CONF_PORT])
|
||||||
|
|
|
@ -19,9 +19,9 @@ CONFIG_SCHEMA = cv.Schema(
|
||||||
|
|
||||||
|
|
||||||
@coroutine_with_priority(65.0)
|
@coroutine_with_priority(65.0)
|
||||||
def to_code(config):
|
async def to_code(config):
|
||||||
var = cg.new_Pvariable(config[CONF_ID])
|
var = cg.new_Pvariable(config[CONF_ID])
|
||||||
yield cg.register_component(var, config)
|
await cg.register_component(var, config)
|
||||||
|
|
||||||
if CORE.is_esp32:
|
if CORE.is_esp32:
|
||||||
cg.add_library("FS", None)
|
cg.add_library("FS", None)
|
||||||
|
|
|
@ -277,7 +277,7 @@ def wifi_network(config, static_ip):
|
||||||
|
|
||||||
|
|
||||||
@coroutine_with_priority(60.0)
|
@coroutine_with_priority(60.0)
|
||||||
def to_code(config):
|
async def to_code(config):
|
||||||
var = cg.new_Pvariable(config[CONF_ID])
|
var = cg.new_Pvariable(config[CONF_ID])
|
||||||
cg.add(var.set_use_address(config[CONF_USE_ADDRESS]))
|
cg.add(var.set_use_address(config[CONF_USE_ADDRESS]))
|
||||||
|
|
||||||
|
@ -305,9 +305,9 @@ def to_code(config):
|
||||||
add_mdns_library()
|
add_mdns_library()
|
||||||
|
|
||||||
# Register at end for OTA safe mode
|
# Register at end for OTA safe mode
|
||||||
yield cg.register_component(var, config)
|
await cg.register_component(var, config)
|
||||||
|
|
||||||
|
|
||||||
@automation.register_condition("wifi.connected", WiFiConnectedCondition, cv.Schema({}))
|
@automation.register_condition("wifi.connected", WiFiConnectedCondition, cv.Schema({}))
|
||||||
def wifi_connected_to_code(config, condition_id, template_arg, args):
|
async def wifi_connected_to_code(config, condition_id, template_arg, args):
|
||||||
yield cg.new_Pvariable(condition_id, template_arg)
|
return cg.new_Pvariable(condition_id, template_arg)
|
||||||
|
|
|
@ -575,8 +575,7 @@ async def get_variable_with_full_id(id_: ID) -> Tuple[ID, "MockObj"]:
|
||||||
return await CORE.get_variable_with_full_id(id_)
|
return await CORE.get_variable_with_full_id(id_)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def process_lambda(
|
||||||
def process_lambda(
|
|
||||||
value: Lambda,
|
value: Lambda,
|
||||||
parameters: List[Tuple[SafeExpType, str]],
|
parameters: List[Tuple[SafeExpType, str]],
|
||||||
capture: str = "=",
|
capture: str = "=",
|
||||||
|
@ -596,11 +595,10 @@ def process_lambda(
|
||||||
from esphome.components.globals import GlobalsComponent
|
from esphome.components.globals import GlobalsComponent
|
||||||
|
|
||||||
if value is None:
|
if value is None:
|
||||||
yield
|
|
||||||
return
|
return
|
||||||
parts = value.parts[:]
|
parts = value.parts[:]
|
||||||
for i, id in enumerate(value.requires_ids):
|
for i, id in enumerate(value.requires_ids):
|
||||||
full_id, var = yield get_variable_with_full_id(id)
|
full_id, var = await get_variable_with_full_id(id)
|
||||||
if (
|
if (
|
||||||
full_id is not None
|
full_id is not None
|
||||||
and isinstance(full_id.type, MockObjClass)
|
and isinstance(full_id.type, MockObjClass)
|
||||||
|
@ -620,7 +618,7 @@ def process_lambda(
|
||||||
location.line += value.content_offset
|
location.line += value.content_offset
|
||||||
else:
|
else:
|
||||||
location = None
|
location = None
|
||||||
yield LambdaExpression(parts, parameters, capture, return_type, location)
|
return LambdaExpression(parts, parameters, capture, return_type, location)
|
||||||
|
|
||||||
|
|
||||||
def is_template(value):
|
def is_template(value):
|
||||||
|
@ -628,8 +626,7 @@ def is_template(value):
|
||||||
return isinstance(value, Lambda)
|
return isinstance(value, Lambda)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def templatable(
|
||||||
def templatable(
|
|
||||||
value: Any,
|
value: Any,
|
||||||
args: List[Tuple[SafeExpType, str]],
|
args: List[Tuple[SafeExpType, str]],
|
||||||
output_type: Optional[SafeExpType],
|
output_type: Optional[SafeExpType],
|
||||||
|
@ -647,15 +644,12 @@ def templatable(
|
||||||
:return: The potentially templated value.
|
:return: The potentially templated value.
|
||||||
"""
|
"""
|
||||||
if is_template(value):
|
if is_template(value):
|
||||||
lambda_ = yield process_lambda(value, args, return_type=output_type)
|
return await process_lambda(value, args, return_type=output_type)
|
||||||
yield lambda_
|
|
||||||
else:
|
|
||||||
if to_exp is None:
|
if to_exp is None:
|
||||||
yield value
|
return value
|
||||||
elif isinstance(to_exp, dict):
|
if isinstance(to_exp, dict):
|
||||||
yield to_exp[value]
|
return to_exp[value]
|
||||||
else:
|
return to_exp(value)
|
||||||
yield to_exp(value)
|
|
||||||
|
|
||||||
|
|
||||||
class MockObj(Expression):
|
class MockObj(Expression):
|
||||||
|
|
|
@ -14,8 +14,7 @@ from esphome.cpp_types import App, GPIOPin
|
||||||
from esphome.util import Registry, RegistryEntry
|
from esphome.util import Registry, RegistryEntry
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def gpio_pin_expression(conf):
|
||||||
def gpio_pin_expression(conf):
|
|
||||||
"""Generate an expression for the given pin option.
|
"""Generate an expression for the given pin option.
|
||||||
|
|
||||||
This is a coroutine, you must await it with a 'yield' expression!
|
This is a coroutine, you must await it with a 'yield' expression!
|
||||||
|
@ -26,17 +25,15 @@ def gpio_pin_expression(conf):
|
||||||
|
|
||||||
for key, (func, _) in pins.PIN_SCHEMA_REGISTRY.items():
|
for key, (func, _) in pins.PIN_SCHEMA_REGISTRY.items():
|
||||||
if key in conf:
|
if key in conf:
|
||||||
yield coroutine(func)(conf)
|
return await coroutine(func)(conf)
|
||||||
return
|
|
||||||
|
|
||||||
number = conf[CONF_NUMBER]
|
number = conf[CONF_NUMBER]
|
||||||
mode = conf[CONF_MODE]
|
mode = conf[CONF_MODE]
|
||||||
inverted = conf.get(CONF_INVERTED)
|
inverted = conf.get(CONF_INVERTED)
|
||||||
yield GPIOPin.new(number, RawExpression(mode), inverted)
|
return GPIOPin.new(number, RawExpression(mode), inverted)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def register_component(var, config):
|
||||||
def register_component(var, config):
|
|
||||||
"""Register the given obj as a component.
|
"""Register the given obj as a component.
|
||||||
|
|
||||||
This is a coroutine, you must await it with a 'yield' expression!
|
This is a coroutine, you must await it with a 'yield' expression!
|
||||||
|
@ -57,13 +54,12 @@ def register_component(var, config):
|
||||||
if CONF_UPDATE_INTERVAL in config:
|
if CONF_UPDATE_INTERVAL in config:
|
||||||
add(var.set_update_interval(config[CONF_UPDATE_INTERVAL]))
|
add(var.set_update_interval(config[CONF_UPDATE_INTERVAL]))
|
||||||
add(App.register_component(var))
|
add(App.register_component(var))
|
||||||
yield var
|
return var
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def register_parented(var, value):
|
||||||
def register_parented(var, value):
|
|
||||||
if isinstance(value, ID):
|
if isinstance(value, ID):
|
||||||
paren = yield get_variable(value)
|
paren = await get_variable(value)
|
||||||
else:
|
else:
|
||||||
paren = value
|
paren = value
|
||||||
add(var.set_parent(paren))
|
add(var.set_parent(paren))
|
||||||
|
@ -75,18 +71,16 @@ def extract_registry_entry_config(registry, full_config):
|
||||||
return registry[key], config
|
return registry[key], config
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def build_registry_entry(registry, full_config):
|
||||||
def build_registry_entry(registry, full_config):
|
|
||||||
registry_entry, config = extract_registry_entry_config(registry, full_config)
|
registry_entry, config = extract_registry_entry_config(registry, full_config)
|
||||||
type_id = full_config[CONF_TYPE_ID]
|
type_id = full_config[CONF_TYPE_ID]
|
||||||
builder = registry_entry.coroutine_fun
|
builder = registry_entry.coroutine_fun
|
||||||
yield builder(config, type_id)
|
return await builder(config, type_id)
|
||||||
|
|
||||||
|
|
||||||
@coroutine
|
async def build_registry_list(registry, config):
|
||||||
def build_registry_list(registry, config):
|
|
||||||
actions = []
|
actions = []
|
||||||
for conf in config:
|
for conf in config:
|
||||||
action = yield build_registry_entry(registry, conf)
|
action = await build_registry_entry(registry, conf)
|
||||||
actions.append(action)
|
actions.append(action)
|
||||||
yield actions
|
return actions
|
||||||
|
|
Loading…
Reference in a new issue