[core] Require explicit synchronous= for register_action (#14606)

This commit is contained in:
J. Nick Koston
2026-03-10 09:11:45 -10:00
committed by GitHub
parent 9dd3ec258c
commit 89bb5d9e42
137 changed files with 852 additions and 187 deletions
+30 -8
View File
@@ -1,3 +1,5 @@
import logging
import esphome.codegen as cg import esphome.codegen as cg
import esphome.config_validation as cv import esphome.config_validation as cv
from esphome.const import ( from esphome.const import (
@@ -57,22 +59,41 @@ def maybe_conf(conf, *validators):
return validate return validate
_LOGGER = logging.getLogger(__name__)
def register_action( def register_action(
name: str, name: str,
action_type: MockObjClass, action_type: MockObjClass,
schema: cv.Schema, schema: cv.Schema,
*, *,
synchronous: bool = False, synchronous: bool | None = None,
): ):
"""Register an action type. """Register an action type.
Actions default to ``synchronous=False`` (safe default), meaning string All callers must pass ``synchronous`` explicitly.
arguments use owning std::string to prevent dangling references.
Set ``synchronous=True`` only for actions that complete synchronously ``synchronous=True`` — the action never defers ``play_next_()`` to a
and never store trigger arguments for later execution. This allows later point (callback, timer, or ``loop()``). Trigger arguments are
the code generator to use non-owning StringRef for zero-copy access. only used during the initial call, so string args can use non-owning
StringRef for zero-copy access.
``synchronous=False`` — the action defers ``play_next_()`` via a
callback, timer, or ``Component::loop()``. Trigger arguments must
outlive the initial call, so string args use owning std::string to
prevent dangling references.
""" """
if synchronous is None:
_LOGGER.warning(
"register_action('%s', ...) is missing the synchronous= parameter. "
"Defaulting to synchronous=False (safe but prevents StringRef "
"optimization). Check the C++ class: use synchronous=False if "
"play_next_() is deferred to a callback, timer, or loop(); "
"use synchronous=True if play_next_() always runs before the "
"initial play/play_complex call returns",
name,
)
synchronous = False
return ACTION_REGISTRY.register(name, action_type, schema, synchronous=synchronous) return ACTION_REGISTRY.register(name, action_type, schema, synchronous=synchronous)
@@ -353,6 +374,7 @@ async def component_is_idle_condition_to_code(
"delay", "delay",
DelayAction, DelayAction,
cv.templatable(cv.positive_time_period_milliseconds), cv.templatable(cv.positive_time_period_milliseconds),
synchronous=False,
) )
async def delay_action_to_code( async def delay_action_to_code(
config: ConfigType, config: ConfigType,
@@ -465,7 +487,7 @@ _validate_wait_until = cv.maybe_simple_value(
) )
@register_action("wait_until", WaitUntilAction, _validate_wait_until) @register_action("wait_until", WaitUntilAction, _validate_wait_until, synchronous=False)
async def wait_until_action_to_code( async def wait_until_action_to_code(
config: ConfigType, config: ConfigType,
action_id: ID, action_id: ID,
@@ -611,7 +633,7 @@ def has_non_synchronous_actions(actions: ConfigType) -> bool:
Non-synchronous actions (delay, wait_until, script.wait, etc.) store Non-synchronous actions (delay, wait_until, script.wait, etc.) store
trigger args for later execution, making non-owning types like StringRef trigger args for later execution, making non-owning types like StringRef
unsafe. Actions that haven't been audited default to non-synchronous. unsafe.
""" """
if isinstance(actions, list): if isinstance(actions, list):
return any(has_non_synchronous_actions(item) for item in actions) return any(has_non_synchronous_actions(item) for item in actions)
+2
View File
@@ -92,6 +92,7 @@ AGS10_NEW_I2C_ADDRESS_SCHEMA = cv.maybe_simple_value(
"ags10.new_i2c_address", "ags10.new_i2c_address",
AGS10NewI2cAddressAction, AGS10NewI2cAddressAction,
AGS10_NEW_I2C_ADDRESS_SCHEMA, AGS10_NEW_I2C_ADDRESS_SCHEMA,
synchronous=True,
) )
async def ags10newi2caddress_to_code(config, action_id, template_arg, args): async def ags10newi2caddress_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -121,6 +122,7 @@ AGS10_SET_ZERO_POINT_SCHEMA = cv.Schema(
"ags10.set_zero_point", "ags10.set_zero_point",
AGS10SetZeroPointAction, AGS10SetZeroPointAction,
AGS10_SET_ZERO_POINT_SCHEMA, AGS10_SET_ZERO_POINT_SCHEMA,
synchronous=True,
) )
async def ags10setzeropoint_to_code(config, action_id, template_arg, args): async def ags10setzeropoint_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
+4 -1
View File
@@ -34,7 +34,10 @@ SET_AUTO_MUTE_ACTION_SCHEMA = cv.maybe_simple_value(
@automation.register_action( @automation.register_action(
"aic3204.set_auto_mute_mode", SetAutoMuteAction, SET_AUTO_MUTE_ACTION_SCHEMA "aic3204.set_auto_mute_mode",
SetAutoMuteAction,
SET_AUTO_MUTE_ACTION_SCHEMA,
synchronous=True,
) )
async def aic3204_set_volume_to_code(config, action_id, template_arg, args): async def aic3204_set_volume_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -243,7 +243,10 @@ async def new_alarm_control_panel(config, *args):
@automation.register_action( @automation.register_action(
"alarm_control_panel.arm_away", ArmAwayAction, ALARM_CONTROL_PANEL_ACTION_SCHEMA "alarm_control_panel.arm_away",
ArmAwayAction,
ALARM_CONTROL_PANEL_ACTION_SCHEMA,
synchronous=True,
) )
async def alarm_action_arm_away_to_code(config, action_id, template_arg, args): async def alarm_action_arm_away_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -255,7 +258,10 @@ async def alarm_action_arm_away_to_code(config, action_id, template_arg, args):
@automation.register_action( @automation.register_action(
"alarm_control_panel.arm_home", ArmHomeAction, ALARM_CONTROL_PANEL_ACTION_SCHEMA "alarm_control_panel.arm_home",
ArmHomeAction,
ALARM_CONTROL_PANEL_ACTION_SCHEMA,
synchronous=True,
) )
async def alarm_action_arm_home_to_code(config, action_id, template_arg, args): async def alarm_action_arm_home_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -267,7 +273,10 @@ async def alarm_action_arm_home_to_code(config, action_id, template_arg, args):
@automation.register_action( @automation.register_action(
"alarm_control_panel.arm_night", ArmNightAction, ALARM_CONTROL_PANEL_ACTION_SCHEMA "alarm_control_panel.arm_night",
ArmNightAction,
ALARM_CONTROL_PANEL_ACTION_SCHEMA,
synchronous=True,
) )
async def alarm_action_arm_night_to_code(config, action_id, template_arg, args): async def alarm_action_arm_night_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -279,7 +288,10 @@ async def alarm_action_arm_night_to_code(config, action_id, template_arg, args):
@automation.register_action( @automation.register_action(
"alarm_control_panel.disarm", DisarmAction, ALARM_CONTROL_PANEL_ACTION_SCHEMA "alarm_control_panel.disarm",
DisarmAction,
ALARM_CONTROL_PANEL_ACTION_SCHEMA,
synchronous=True,
) )
async def alarm_action_disarm_to_code(config, action_id, template_arg, args): async def alarm_action_disarm_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -291,7 +303,10 @@ async def alarm_action_disarm_to_code(config, action_id, template_arg, args):
@automation.register_action( @automation.register_action(
"alarm_control_panel.pending", PendingAction, ALARM_CONTROL_PANEL_ACTION_SCHEMA "alarm_control_panel.pending",
PendingAction,
ALARM_CONTROL_PANEL_ACTION_SCHEMA,
synchronous=True,
) )
async def alarm_action_pending_to_code(config, action_id, template_arg, args): async def alarm_action_pending_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -299,7 +314,10 @@ async def alarm_action_pending_to_code(config, action_id, template_arg, args):
@automation.register_action( @automation.register_action(
"alarm_control_panel.triggered", TriggeredAction, ALARM_CONTROL_PANEL_ACTION_SCHEMA "alarm_control_panel.triggered",
TriggeredAction,
ALARM_CONTROL_PANEL_ACTION_SCHEMA,
synchronous=True,
) )
async def alarm_action_trigger_to_code(config, action_id, template_arg, args): async def alarm_action_trigger_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -307,7 +325,10 @@ async def alarm_action_trigger_to_code(config, action_id, template_arg, args):
@automation.register_action( @automation.register_action(
"alarm_control_panel.chime", ChimeAction, ALARM_CONTROL_PANEL_ACTION_SCHEMA "alarm_control_panel.chime",
ChimeAction,
ALARM_CONTROL_PANEL_ACTION_SCHEMA,
synchronous=True,
) )
async def alarm_action_chime_to_code(config, action_id, template_arg, args): async def alarm_action_chime_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -315,7 +336,10 @@ async def alarm_action_chime_to_code(config, action_id, template_arg, args):
@automation.register_action( @automation.register_action(
"alarm_control_panel.ready", ReadyAction, ALARM_CONTROL_PANEL_ACTION_SCHEMA "alarm_control_panel.ready",
ReadyAction,
ALARM_CONTROL_PANEL_ACTION_SCHEMA,
synchronous=True,
) )
@automation.register_condition( @automation.register_condition(
"alarm_control_panel.ready", "alarm_control_panel.ready",
+9 -3
View File
@@ -69,9 +69,15 @@ SET_FRAME_SCHEMA = cv.Schema(
) )
@automation.register_action("animation.next_frame", NextFrameAction, NEXT_FRAME_SCHEMA) @automation.register_action(
@automation.register_action("animation.prev_frame", PrevFrameAction, PREV_FRAME_SCHEMA) "animation.next_frame", NextFrameAction, NEXT_FRAME_SCHEMA, synchronous=True
@automation.register_action("animation.set_frame", SetFrameAction, SET_FRAME_SCHEMA) )
@automation.register_action(
"animation.prev_frame", PrevFrameAction, PREV_FRAME_SCHEMA, synchronous=True
)
@automation.register_action(
"animation.set_frame", SetFrameAction, SET_FRAME_SCHEMA, synchronous=True
)
async def animation_action_to_code(config, action_id, template_arg, args): async def animation_action_to_code(config, action_id, template_arg, args):
paren = await 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)
+1
View File
@@ -712,6 +712,7 @@ API_RESPOND_ACTION_SCHEMA = cv.All(
"api.respond", "api.respond",
APIRespondAction, APIRespondAction,
API_RESPOND_ACTION_SCHEMA, API_RESPOND_ACTION_SCHEMA,
synchronous=True,
) )
async def api_respond_to_code( async def api_respond_to_code(
config: ConfigType, config: ConfigType,
+2
View File
@@ -89,6 +89,7 @@ AT581XSettingsAction = at581x_ns.class_("AT581XSettingsAction", automation.Actio
cv.Required(CONF_ID): cv.use_id(AT581XComponent), cv.Required(CONF_ID): cv.use_id(AT581XComponent),
} }
), ),
synchronous=True,
) )
async def at581x_reset_to_code(config, action_id, template_arg, args): async def at581x_reset_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -160,6 +161,7 @@ RADAR_SETTINGS_SCHEMA = cv.Schema(
"at581x.settings", "at581x.settings",
AT581XSettingsAction, AT581XSettingsAction,
RADAR_SETTINGS_SCHEMA, RADAR_SETTINGS_SCHEMA,
synchronous=True,
) )
async def at581x_settings_to_code(config, action_id, template_arg, args): async def at581x_settings_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
+4 -1
View File
@@ -23,7 +23,10 @@ SET_MIC_GAIN_ACTION_SCHEMA = cv.maybe_simple_value(
@automation.register_action( @automation.register_action(
"audio_adc.set_mic_gain", SetMicGainAction, SET_MIC_GAIN_ACTION_SCHEMA "audio_adc.set_mic_gain",
SetMicGainAction,
SET_MIC_GAIN_ACTION_SCHEMA,
synchronous=True,
) )
async def audio_adc_set_mic_gain_to_code(config, action_id, template_arg, args): async def audio_adc_set_mic_gain_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
+10 -3
View File
@@ -31,15 +31,22 @@ SET_VOLUME_ACTION_SCHEMA = cv.maybe_simple_value(
) )
@automation.register_action("audio_dac.mute_off", MuteOffAction, MUTE_ACTION_SCHEMA) @automation.register_action(
@automation.register_action("audio_dac.mute_on", MuteOnAction, MUTE_ACTION_SCHEMA) "audio_dac.mute_off", MuteOffAction, MUTE_ACTION_SCHEMA, synchronous=True
)
@automation.register_action(
"audio_dac.mute_on", MuteOnAction, MUTE_ACTION_SCHEMA, synchronous=True
)
async def audio_dac_mute_action_to_code(config, action_id, template_arg, args): async def audio_dac_mute_action_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
return cg.new_Pvariable(action_id, template_arg, paren) return cg.new_Pvariable(action_id, template_arg, paren)
@automation.register_action( @automation.register_action(
"audio_dac.set_volume", SetVolumeAction, SET_VOLUME_ACTION_SCHEMA "audio_dac.set_volume",
SetVolumeAction,
SET_VOLUME_ACTION_SCHEMA,
synchronous=True,
) )
async def audio_dac_set_volume_to_code(config, action_id, template_arg, args): async def audio_dac_set_volume_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -685,6 +685,7 @@ async def to_code(config):
}, },
key=CONF_ID, key=CONF_ID,
), ),
synchronous=True,
) )
async def binary_sensor_invalidate_state_to_code(config, action_id, template_arg, args): async def binary_sensor_invalidate_state_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
+1
View File
@@ -143,6 +143,7 @@ FINAL_VALIDATE_SCHEMA = uart.final_validate_device_schema(
cv.Required(CONF_ID): cv.use_id(BL0906), cv.Required(CONF_ID): cv.use_id(BL0906),
} }
), ),
synchronous=True,
) )
async def reset_energy_to_code(config, action_id, template_arg, args): async def reset_energy_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
+18 -4
View File
@@ -172,7 +172,10 @@ BLE_REMOVE_BOND_ACTION_SCHEMA = cv.Schema(
@automation.register_action( @automation.register_action(
"ble_client.disconnect", BLEDisconnectAction, BLE_CONNECT_ACTION_SCHEMA "ble_client.disconnect",
BLEDisconnectAction,
BLE_CONNECT_ACTION_SCHEMA,
synchronous=False,
) )
async def ble_disconnect_to_code(config, action_id, template_arg, args): async def ble_disconnect_to_code(config, action_id, template_arg, args):
parent = await cg.get_variable(config[CONF_ID]) parent = await cg.get_variable(config[CONF_ID])
@@ -180,7 +183,10 @@ async def ble_disconnect_to_code(config, action_id, template_arg, args):
@automation.register_action( @automation.register_action(
"ble_client.connect", BLEConnectAction, BLE_CONNECT_ACTION_SCHEMA "ble_client.connect",
BLEConnectAction,
BLE_CONNECT_ACTION_SCHEMA,
synchronous=False,
) )
async def ble_connect_to_code(config, action_id, template_arg, args): async def ble_connect_to_code(config, action_id, template_arg, args):
parent = await cg.get_variable(config[CONF_ID]) parent = await cg.get_variable(config[CONF_ID])
@@ -188,7 +194,10 @@ async def ble_connect_to_code(config, action_id, template_arg, args):
@automation.register_action( @automation.register_action(
"ble_client.ble_write", BLEWriteAction, BLE_WRITE_ACTION_SCHEMA "ble_client.ble_write",
BLEWriteAction,
BLE_WRITE_ACTION_SCHEMA,
synchronous=False,
) )
async def ble_write_to_code(config, action_id, template_arg, args): async def ble_write_to_code(config, action_id, template_arg, args):
parent = await cg.get_variable(config[CONF_ID]) parent = await cg.get_variable(config[CONF_ID])
@@ -247,6 +256,7 @@ async def ble_write_to_code(config, action_id, template_arg, args):
"ble_client.numeric_comparison_reply", "ble_client.numeric_comparison_reply",
BLENumericComparisonReplyAction, BLENumericComparisonReplyAction,
BLE_NUMERIC_COMPARISON_REPLY_ACTION_SCHEMA, BLE_NUMERIC_COMPARISON_REPLY_ACTION_SCHEMA,
synchronous=True,
) )
async def numeric_comparison_reply_to_code(config, action_id, template_arg, args): async def numeric_comparison_reply_to_code(config, action_id, template_arg, args):
parent = await cg.get_variable(config[CONF_ID]) parent = await cg.get_variable(config[CONF_ID])
@@ -263,7 +273,10 @@ async def numeric_comparison_reply_to_code(config, action_id, template_arg, args
@automation.register_action( @automation.register_action(
"ble_client.passkey_reply", BLEPasskeyReplyAction, BLE_PASSKEY_REPLY_ACTION_SCHEMA "ble_client.passkey_reply",
BLEPasskeyReplyAction,
BLE_PASSKEY_REPLY_ACTION_SCHEMA,
synchronous=True,
) )
async def passkey_reply_to_code(config, action_id, template_arg, args): async def passkey_reply_to_code(config, action_id, template_arg, args):
parent = await cg.get_variable(config[CONF_ID]) parent = await cg.get_variable(config[CONF_ID])
@@ -283,6 +296,7 @@ async def passkey_reply_to_code(config, action_id, template_arg, args):
"ble_client.remove_bond", "ble_client.remove_bond",
BLERemoveBondAction, BLERemoveBondAction,
BLE_REMOVE_BOND_ACTION_SCHEMA, BLE_REMOVE_BOND_ACTION_SCHEMA,
synchronous=True,
) )
async def remove_bond_to_code(config, action_id, template_arg, args): async def remove_bond_to_code(config, action_id, template_arg, args):
parent = await cg.get_variable(config[CONF_ID]) parent = await cg.get_variable(config[CONF_ID])
+3
View File
@@ -33,6 +33,7 @@ CONFIG_SCHEMA = (
cv.GenerateID(): cv.use_id(BM8563), cv.GenerateID(): cv.use_id(BM8563),
} }
), ),
synchronous=True,
) )
async def bm8563_write_time_to_code(config, action_id, template_arg, args): async def bm8563_write_time_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -49,6 +50,7 @@ async def bm8563_write_time_to_code(config, action_id, template_arg, args):
cv.Required(CONF_DURATION): cv.templatable(cv.positive_time_period_seconds), cv.Required(CONF_DURATION): cv.templatable(cv.positive_time_period_seconds),
} }
), ),
synchronous=True,
) )
async def bm8563_start_timer_to_code(config, action_id, template_arg, args): async def bm8563_start_timer_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -66,6 +68,7 @@ async def bm8563_start_timer_to_code(config, action_id, template_arg, args):
cv.GenerateID(): cv.use_id(BM8563), cv.GenerateID(): cv.use_id(BM8563),
} }
), ),
synchronous=True,
) )
async def bm8563_read_time_to_code(config, action_id, template_arg, args): async def bm8563_read_time_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
+1
View File
@@ -155,6 +155,7 @@ async def register_canbus(var, config):
validate_id, validate_id,
key=CONF_DATA, key=CONF_DATA,
), ),
synchronous=True,
) )
async def canbus_action_to_code(config, action_id, template_arg, args): async def canbus_action_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
+19 -8
View File
@@ -287,10 +287,18 @@ CC1101_ACTION_SCHEMA = cv.Schema(
) )
@automation.register_action("cc1101.begin_tx", BeginTxAction, CC1101_ACTION_SCHEMA) @automation.register_action(
@automation.register_action("cc1101.begin_rx", BeginRxAction, CC1101_ACTION_SCHEMA) "cc1101.begin_tx", BeginTxAction, CC1101_ACTION_SCHEMA, synchronous=True
@automation.register_action("cc1101.reset", ResetAction, CC1101_ACTION_SCHEMA) )
@automation.register_action("cc1101.set_idle", SetIdleAction, CC1101_ACTION_SCHEMA) @automation.register_action(
"cc1101.begin_rx", BeginRxAction, CC1101_ACTION_SCHEMA, synchronous=True
)
@automation.register_action(
"cc1101.reset", ResetAction, CC1101_ACTION_SCHEMA, synchronous=True
)
@automation.register_action(
"cc1101.set_idle", SetIdleAction, CC1101_ACTION_SCHEMA, synchronous=True
)
async def cc1101_action_to_code(config, action_id, template_arg, args): async def cc1101_action_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
await cg.register_parented(var, config[CONF_ID]) await cg.register_parented(var, config[CONF_ID])
@@ -317,7 +325,10 @@ SEND_PACKET_ACTION_SCHEMA = cv.maybe_simple_value(
@automation.register_action( @automation.register_action(
"cc1101.send_packet", SendPacketAction, SEND_PACKET_ACTION_SCHEMA "cc1101.send_packet",
SendPacketAction,
SEND_PACKET_ACTION_SCHEMA,
synchronous=True,
) )
async def send_packet_action_to_code(config, action_id, template_arg, args): async def send_packet_action_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -419,9 +430,9 @@ def _register_setter_actions():
cg.add(getattr(var, _setter)(_map[data] if _map else data)) cg.add(getattr(var, _setter)(_map[data] if _map else data))
return var return var
automation.register_action(f"cc1101.{setter_name}", action_cls, schema)( automation.register_action(
_setter_action_to_code f"cc1101.{setter_name}", action_cls, schema, synchronous=True
) )(_setter_action_to_code)
_register_setter_actions() _register_setter_actions()
+4 -1
View File
@@ -476,7 +476,10 @@ 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,
synchronous=True,
) )
async def climate_control_to_code(config, action_id, template_arg, args): async def climate_control_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
+1
View File
@@ -65,6 +65,7 @@ CALIBRATION_ACTION_SCHEMA = maybe_simple_id(
"cm1106.calibrate_zero", "cm1106.calibrate_zero",
CM1106CalibrateZeroAction, CM1106CalibrateZeroAction,
CALIBRATION_ACTION_SCHEMA, CALIBRATION_ACTION_SCHEMA,
synchronous=True,
) )
async def cm1106_calibration_to_code(config, action_id, template_arg, args) -> None: async def cm1106_calibration_to_code(config, action_id, template_arg, args) -> None:
"""Service code generation entry point.""" """Service code generation entry point."""
+1
View File
@@ -132,6 +132,7 @@ async def to_code(config):
cv.Required(CONF_ID): cv.use_id(CS5460AComponent), cv.Required(CONF_ID): cv.use_id(CS5460AComponent),
} }
), ),
synchronous=True,
) )
async def restart_action_to_code(config, action_id, template_arg, args): async def restart_action_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
+3
View File
@@ -187,6 +187,7 @@ async def to_code(config):
), ),
} }
), ),
synchronous=True,
) )
async def datetime_date_set_to_code(config, action_id, template_arg, args): async def datetime_date_set_to_code(config, action_id, template_arg, args):
action_var = cg.new_Pvariable(action_id, template_arg) action_var = cg.new_Pvariable(action_id, template_arg)
@@ -218,6 +219,7 @@ async def datetime_date_set_to_code(config, action_id, template_arg, args):
), ),
} }
), ),
synchronous=True,
) )
async def datetime_time_set_to_code(config, action_id, template_arg, args): async def datetime_time_set_to_code(config, action_id, template_arg, args):
action_var = cg.new_Pvariable(action_id, template_arg) action_var = cg.new_Pvariable(action_id, template_arg)
@@ -249,6 +251,7 @@ async def datetime_time_set_to_code(config, action_id, template_arg, args):
), ),
}, },
), ),
synchronous=True,
) )
async def datetime_datetime_set_to_code(config, action_id, template_arg, args): async def datetime_datetime_set_to_code(config, action_id, template_arg, args):
action_var = cg.new_Pvariable(action_id, template_arg) action_var = cg.new_Pvariable(action_id, template_arg)
+6 -1
View File
@@ -405,7 +405,10 @@ DEEP_SLEEP_ENTER_SCHEMA = cv.All(
@automation.register_action( @automation.register_action(
"deep_sleep.enter", EnterDeepSleepAction, DEEP_SLEEP_ENTER_SCHEMA "deep_sleep.enter",
EnterDeepSleepAction,
DEEP_SLEEP_ENTER_SCHEMA,
synchronous=True,
) )
async def deep_sleep_enter_to_code(config, action_id, template_arg, args): async def deep_sleep_enter_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -428,11 +431,13 @@ async def deep_sleep_enter_to_code(config, action_id, template_arg, args):
"deep_sleep.prevent", "deep_sleep.prevent",
PreventDeepSleepAction, PreventDeepSleepAction,
automation.maybe_simple_id(DEEP_SLEEP_ACTION_SCHEMA), automation.maybe_simple_id(DEEP_SLEEP_ACTION_SCHEMA),
synchronous=True,
) )
@automation.register_action( @automation.register_action(
"deep_sleep.allow", "deep_sleep.allow",
AllowDeepSleepAction, AllowDeepSleepAction,
automation.maybe_simple_id(DEEP_SLEEP_ACTION_SCHEMA), automation.maybe_simple_id(DEEP_SLEEP_ACTION_SCHEMA),
synchronous=True,
) )
async def deep_sleep_action_to_code(config, action_id, template_arg, args): async def deep_sleep_action_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
+16
View File
@@ -91,6 +91,7 @@ async def to_code(config):
cv.GenerateID(): cv.use_id(DFPlayer), cv.GenerateID(): cv.use_id(DFPlayer),
} }
), ),
synchronous=True,
) )
async def dfplayer_next_to_code(config, action_id, template_arg, args): async def dfplayer_next_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -106,6 +107,7 @@ async def dfplayer_next_to_code(config, action_id, template_arg, args):
cv.GenerateID(): cv.use_id(DFPlayer), cv.GenerateID(): cv.use_id(DFPlayer),
} }
), ),
synchronous=True,
) )
async def dfplayer_previous_to_code(config, action_id, template_arg, args): async def dfplayer_previous_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -123,6 +125,7 @@ async def dfplayer_previous_to_code(config, action_id, template_arg, args):
}, },
key=CONF_FILE, key=CONF_FILE,
), ),
synchronous=True,
) )
async def dfplayer_play_mp3_to_code(config, action_id, template_arg, args): async def dfplayer_play_mp3_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -143,6 +146,7 @@ async def dfplayer_play_mp3_to_code(config, action_id, template_arg, args):
}, },
key=CONF_FILE, key=CONF_FILE,
), ),
synchronous=True,
) )
async def dfplayer_play_to_code(config, action_id, template_arg, args): async def dfplayer_play_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -166,6 +170,7 @@ async def dfplayer_play_to_code(config, action_id, template_arg, args):
cv.Optional(CONF_LOOP): cv.templatable(cv.boolean), cv.Optional(CONF_LOOP): cv.templatable(cv.boolean),
} }
), ),
synchronous=True,
) )
async def dfplayer_play_folder_to_code(config, action_id, template_arg, args): async def dfplayer_play_folder_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -191,6 +196,7 @@ async def dfplayer_play_folder_to_code(config, action_id, template_arg, args):
}, },
key=CONF_DEVICE, key=CONF_DEVICE,
), ),
synchronous=True,
) )
async def dfplayer_set_device_to_code(config, action_id, template_arg, args): async def dfplayer_set_device_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -210,6 +216,7 @@ async def dfplayer_set_device_to_code(config, action_id, template_arg, args):
}, },
key=CONF_VOLUME, key=CONF_VOLUME,
), ),
synchronous=True,
) )
async def dfplayer_set_volume_to_code(config, action_id, template_arg, args): async def dfplayer_set_volume_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -227,6 +234,7 @@ async def dfplayer_set_volume_to_code(config, action_id, template_arg, args):
cv.GenerateID(): cv.use_id(DFPlayer), cv.GenerateID(): cv.use_id(DFPlayer),
} }
), ),
synchronous=True,
) )
async def dfplayer_volume_up_to_code(config, action_id, template_arg, args): async def dfplayer_volume_up_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -242,6 +250,7 @@ async def dfplayer_volume_up_to_code(config, action_id, template_arg, args):
cv.GenerateID(): cv.use_id(DFPlayer), cv.GenerateID(): cv.use_id(DFPlayer),
} }
), ),
synchronous=True,
) )
async def dfplayer_volume_down_to_code(config, action_id, template_arg, args): async def dfplayer_volume_down_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -259,6 +268,7 @@ async def dfplayer_volume_down_to_code(config, action_id, template_arg, args):
}, },
key=CONF_EQ_PRESET, key=CONF_EQ_PRESET,
), ),
synchronous=True,
) )
async def dfplayer_set_eq_to_code(config, action_id, template_arg, args): async def dfplayer_set_eq_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -276,6 +286,7 @@ async def dfplayer_set_eq_to_code(config, action_id, template_arg, args):
cv.GenerateID(): cv.use_id(DFPlayer), cv.GenerateID(): cv.use_id(DFPlayer),
} }
), ),
synchronous=True,
) )
async def dfplayer_sleep_to_code(config, action_id, template_arg, args): async def dfplayer_sleep_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -291,6 +302,7 @@ async def dfplayer_sleep_to_code(config, action_id, template_arg, args):
cv.GenerateID(): cv.use_id(DFPlayer), cv.GenerateID(): cv.use_id(DFPlayer),
} }
), ),
synchronous=True,
) )
async def dfplayer_reset_to_code(config, action_id, template_arg, args): async def dfplayer_reset_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -306,6 +318,7 @@ async def dfplayer_reset_to_code(config, action_id, template_arg, args):
cv.GenerateID(): cv.use_id(DFPlayer), cv.GenerateID(): cv.use_id(DFPlayer),
} }
), ),
synchronous=True,
) )
async def dfplayer_start_to_code(config, action_id, template_arg, args): async def dfplayer_start_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -321,6 +334,7 @@ async def dfplayer_start_to_code(config, action_id, template_arg, args):
cv.GenerateID(): cv.use_id(DFPlayer), cv.GenerateID(): cv.use_id(DFPlayer),
} }
), ),
synchronous=True,
) )
async def dfplayer_pause_to_code(config, action_id, template_arg, args): async def dfplayer_pause_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -336,6 +350,7 @@ async def dfplayer_pause_to_code(config, action_id, template_arg, args):
cv.GenerateID(): cv.use_id(DFPlayer), cv.GenerateID(): cv.use_id(DFPlayer),
} }
), ),
synchronous=True,
) )
async def dfplayer_stop_to_code(config, action_id, template_arg, args): async def dfplayer_stop_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -351,6 +366,7 @@ async def dfplayer_stop_to_code(config, action_id, template_arg, args):
cv.GenerateID(): cv.use_id(DFPlayer), cv.GenerateID(): cv.use_id(DFPlayer),
} }
), ),
synchronous=True,
) )
async def dfplayer_random_to_code(config, action_id, template_arg, args): async def dfplayer_random_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -52,6 +52,7 @@ async def to_code(config):
cv.GenerateID(): cv.use_id(DfrobotSen0395Component), cv.GenerateID(): cv.use_id(DfrobotSen0395Component),
} }
), ),
synchronous=True,
) )
async def dfrobot_sen0395_reset_to_code(config, action_id, template_arg, args): async def dfrobot_sen0395_reset_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -151,6 +152,7 @@ MMWAVE_SETTINGS_SCHEMA = cv.Schema(
"dfrobot_sen0395.settings", "dfrobot_sen0395.settings",
DfrobotSen0395SettingsAction, DfrobotSen0395SettingsAction,
MMWAVE_SETTINGS_SCHEMA, MMWAVE_SETTINGS_SCHEMA,
synchronous=True,
) )
async def dfrobot_sen0395_settings_to_code(config, action_id, template_arg, args): async def dfrobot_sen0395_settings_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
+3
View File
@@ -159,6 +159,7 @@ async def register_display(var, config):
cv.Required(CONF_ID): cv.templatable(cv.use_id(DisplayPage)), cv.Required(CONF_ID): cv.templatable(cv.use_id(DisplayPage)),
} }
), ),
synchronous=True,
) )
async 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)
@@ -179,6 +180,7 @@ async def display_page_show_to_code(config, action_id, template_arg, args):
cv.GenerateID(CONF_ID): cv.templatable(cv.use_id(Display)), cv.GenerateID(CONF_ID): cv.templatable(cv.use_id(Display)),
} }
), ),
synchronous=True,
) )
async 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 = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -193,6 +195,7 @@ async def display_page_show_next_to_code(config, action_id, template_arg, args):
cv.GenerateID(CONF_ID): cv.templatable(cv.use_id(Display)), cv.GenerateID(CONF_ID): cv.templatable(cv.use_id(Display)),
} }
), ),
synchronous=True,
) )
async 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 = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -294,50 +294,67 @@ MENU_ACTION_SCHEMA = maybe_simple_id(
) )
@automation.register_action("display_menu.up", UpAction, MENU_ACTION_SCHEMA) @automation.register_action(
"display_menu.up", UpAction, MENU_ACTION_SCHEMA, synchronous=True
)
async def menu_up_to_code(config, action_id, template_arg, args): async def menu_up_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
return cg.new_Pvariable(action_id, template_arg, paren) return cg.new_Pvariable(action_id, template_arg, paren)
@automation.register_action("display_menu.down", DownAction, MENU_ACTION_SCHEMA) @automation.register_action(
"display_menu.down", DownAction, MENU_ACTION_SCHEMA, synchronous=True
)
async def menu_down_to_code(config, action_id, template_arg, args): async def menu_down_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
return cg.new_Pvariable(action_id, template_arg, paren) return cg.new_Pvariable(action_id, template_arg, paren)
@automation.register_action("display_menu.left", LeftAction, MENU_ACTION_SCHEMA) @automation.register_action(
"display_menu.left", LeftAction, MENU_ACTION_SCHEMA, synchronous=True
)
async def menu_left_to_code(config, action_id, template_arg, args): async def menu_left_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
return cg.new_Pvariable(action_id, template_arg, paren) return cg.new_Pvariable(action_id, template_arg, paren)
@automation.register_action("display_menu.right", RightAction, MENU_ACTION_SCHEMA) @automation.register_action(
"display_menu.right", RightAction, MENU_ACTION_SCHEMA, synchronous=True
)
async def menu_right_to_code(config, action_id, template_arg, args): async def menu_right_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
return cg.new_Pvariable(action_id, template_arg, paren) return cg.new_Pvariable(action_id, template_arg, paren)
@automation.register_action("display_menu.enter", EnterAction, MENU_ACTION_SCHEMA) @automation.register_action(
"display_menu.enter", EnterAction, MENU_ACTION_SCHEMA, synchronous=True
)
async def menu_enter_to_code(config, action_id, template_arg, args): async def menu_enter_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
return cg.new_Pvariable(action_id, template_arg, paren) return cg.new_Pvariable(action_id, template_arg, paren)
@automation.register_action("display_menu.show", ShowAction, MENU_ACTION_SCHEMA) @automation.register_action(
"display_menu.show", ShowAction, MENU_ACTION_SCHEMA, synchronous=True
)
async def menu_show_to_code(config, action_id, template_arg, args): async def menu_show_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
return cg.new_Pvariable(action_id, template_arg, paren) return cg.new_Pvariable(action_id, template_arg, paren)
@automation.register_action("display_menu.hide", HideAction, MENU_ACTION_SCHEMA) @automation.register_action(
"display_menu.hide", HideAction, MENU_ACTION_SCHEMA, synchronous=True
)
async def menu_hide_to_code(config, action_id, template_arg, args): async def menu_hide_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
return cg.new_Pvariable(action_id, template_arg, paren) return cg.new_Pvariable(action_id, template_arg, paren)
@automation.register_action( @automation.register_action(
"display_menu.show_main", ShowMainAction, MENU_ACTION_SCHEMA "display_menu.show_main",
ShowMainAction,
MENU_ACTION_SCHEMA,
synchronous=True,
) )
async def menu_show_main_to_code(config, action_id, template_arg, args): async def menu_show_main_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
+2
View File
@@ -27,6 +27,7 @@ CONFIG_SCHEMA = time.TIME_SCHEMA.extend(
cv.GenerateID(): cv.use_id(DS1307Component), cv.GenerateID(): cv.use_id(DS1307Component),
} }
), ),
synchronous=True,
) )
async def ds1307_write_time_to_code(config, action_id, template_arg, args): async def ds1307_write_time_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -42,6 +43,7 @@ async def ds1307_write_time_to_code(config, action_id, template_arg, args):
cv.GenerateID(): cv.use_id(DS1307Component), cv.GenerateID(): cv.use_id(DS1307Component),
} }
), ),
synchronous=True,
) )
async def ds1307_read_time_to_code(config, action_id, template_arg, args): async def ds1307_read_time_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
+9 -3
View File
@@ -90,21 +90,27 @@ DUTY_TIME_ID_SCHEMA = maybe_simple_id(
) )
@register_action("sensor.duty_time.start", StartAction, DUTY_TIME_ID_SCHEMA) @register_action(
"sensor.duty_time.start", StartAction, DUTY_TIME_ID_SCHEMA, synchronous=True
)
async def sensor_runtime_start_to_code(config, action_id, template_arg, args): async def sensor_runtime_start_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
await cg.register_parented(var, config[CONF_ID]) await cg.register_parented(var, config[CONF_ID])
return var return var
@register_action("sensor.duty_time.stop", StopAction, DUTY_TIME_ID_SCHEMA) @register_action(
"sensor.duty_time.stop", StopAction, DUTY_TIME_ID_SCHEMA, synchronous=True
)
async def sensor_runtime_stop_to_code(config, action_id, template_arg, args): async def sensor_runtime_stop_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
await cg.register_parented(var, config[CONF_ID]) await cg.register_parented(var, config[CONF_ID])
return var return var
@register_action("sensor.duty_time.reset", ResetAction, DUTY_TIME_ID_SCHEMA) @register_action(
"sensor.duty_time.reset", ResetAction, DUTY_TIME_ID_SCHEMA, synchronous=True
)
async def sensor_runtime_reset_to_code(config, action_id, template_arg, args): async def sensor_runtime_reset_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
await cg.register_parented(var, config[CONF_ID]) await cg.register_parented(var, config[CONF_ID])
+6 -2
View File
@@ -604,11 +604,15 @@ async def ble_enabled_to_code(config, condition_id, template_arg, args):
return cg.new_Pvariable(condition_id, template_arg) return cg.new_Pvariable(condition_id, template_arg)
@automation.register_action("ble.enable", BLEEnableAction, cv.Schema({})) @automation.register_action(
"ble.enable", BLEEnableAction, cv.Schema({}), synchronous=True
)
async def ble_enable_to_code(config, action_id, template_arg, args): async def ble_enable_to_code(config, action_id, template_arg, args):
return cg.new_Pvariable(action_id, template_arg) return cg.new_Pvariable(action_id, template_arg)
@automation.register_action("ble.disable", BLEDisableAction, cv.Schema({})) @automation.register_action(
"ble.disable", BLEDisableAction, cv.Schema({}), synchronous=True
)
async def ble_disable_to_code(config, action_id, template_arg, args): async def ble_disable_to_code(config, action_id, template_arg, args):
return cg.new_Pvariable(action_id, template_arg) return cg.new_Pvariable(action_id, template_arg)
@@ -622,6 +622,7 @@ async def to_code(config):
), ),
validate_set_value_action, validate_set_value_action,
), ),
synchronous=True,
) )
async def ble_server_characteristic_set_value(config, action_id, template_arg, args): async def ble_server_characteristic_set_value(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -641,6 +642,7 @@ async def ble_server_characteristic_set_value(config, action_id, template_arg, a
cv.Required(CONF_VALUE): value_schema(), cv.Required(CONF_VALUE): value_schema(),
} }
), ),
synchronous=True,
) )
async def ble_server_descriptor_set_value(config, action_id, template_arg, args): async def ble_server_descriptor_set_value(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -662,6 +664,7 @@ async def ble_server_descriptor_set_value(config, action_id, template_arg, args)
), ),
validate_notify_action, validate_notify_action,
), ),
synchronous=True,
) )
async def ble_server_characteristic_notify(config, action_id, template_arg, args): async def ble_server_characteristic_notify(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -373,6 +373,7 @@ ESP32_BLE_START_SCAN_ACTION_SCHEMA = cv.Schema(
"esp32_ble_tracker.start_scan", "esp32_ble_tracker.start_scan",
ESP32BLEStartScanAction, ESP32BLEStartScanAction,
ESP32_BLE_START_SCAN_ACTION_SCHEMA, ESP32_BLE_START_SCAN_ACTION_SCHEMA,
synchronous=True,
) )
async def esp32_ble_tracker_start_scan_action_to_code( async def esp32_ble_tracker_start_scan_action_to_code(
config, action_id, template_arg, args config, action_id, template_arg, args
@@ -396,6 +397,7 @@ ESP32_BLE_STOP_SCAN_ACTION_SCHEMA = automation.maybe_simple_id(
"esp32_ble_tracker.stop_scan", "esp32_ble_tracker.stop_scan",
ESP32BLEStopScanAction, ESP32BLEStopScanAction,
ESP32_BLE_STOP_SCAN_ACTION_SCHEMA, ESP32_BLE_STOP_SCAN_ACTION_SCHEMA,
synchronous=True,
) )
async def esp32_ble_tracker_stop_scan_action_to_code( async def esp32_ble_tracker_stop_scan_action_to_code(
config, action_id, template_arg, args config, action_id, template_arg, args
+1
View File
@@ -57,6 +57,7 @@ async def to_code(config) -> None:
cv.Required(CONF_FREQUENCY): cv.templatable(validate_frequency), cv.Required(CONF_FREQUENCY): cv.templatable(validate_frequency),
} }
), ),
synchronous=True,
) )
async def esp8266_set_frequency_to_code(config, action_id, template_arg, args): async def esp8266_set_frequency_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
+1
View File
@@ -129,6 +129,7 @@ def adjusted_ldo_id(value):
), ),
} }
), ),
synchronous=True,
) )
async def ldo_voltage_adjust_to_code(config, action_id, template_arg, args): async def ldo_voltage_adjust_to_code(config, action_id, template_arg, args):
parent = await cg.get_variable(config[CONF_ID]) parent = await cg.get_variable(config[CONF_ID])
+5
View File
@@ -220,6 +220,7 @@ SEND_SCHEMA.add_extra(_validate_send_action)
"espnow.send", "espnow.send",
SendAction, SendAction,
SEND_SCHEMA, SEND_SCHEMA,
synchronous=False,
) )
@automation.register_action( @automation.register_action(
"espnow.broadcast", "espnow.broadcast",
@@ -232,6 +233,7 @@ SEND_SCHEMA.add_extra(_validate_send_action)
), ),
key=CONF_DATA, key=CONF_DATA,
), ),
synchronous=False,
) )
async def send_action( async def send_action(
config: ConfigType, config: ConfigType,
@@ -271,6 +273,7 @@ async def send_action(
PEER_SCHEMA, PEER_SCHEMA,
key=CONF_ADDRESS, key=CONF_ADDRESS,
), ),
synchronous=True,
) )
@automation.register_action( @automation.register_action(
"espnow.peer.delete", "espnow.peer.delete",
@@ -279,6 +282,7 @@ async def send_action(
PEER_SCHEMA, PEER_SCHEMA,
key=CONF_ADDRESS, key=CONF_ADDRESS,
), ),
synchronous=True,
) )
async def peer_action( async def peer_action(
config: ConfigType, config: ConfigType,
@@ -303,6 +307,7 @@ async def peer_action(
}, },
key=CONF_CHANNEL, key=CONF_CHANNEL,
), ),
synchronous=True,
) )
async def channel_action( async def channel_action(
config: ConfigType, config: ConfigType,
+3 -1
View File
@@ -129,7 +129,9 @@ TRIGGER_EVENT_SCHEMA = cv.Schema(
) )
@automation.register_action("event.trigger", TriggerEventAction, TRIGGER_EVENT_SCHEMA) @automation.register_action(
"event.trigger", TriggerEventAction, TRIGGER_EVENT_SCHEMA, synchronous=True
)
async def event_fire_to_code(config, action_id, template_arg, args): async def event_fire_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
await cg.register_parented(var, config[CONF_ID]) await cg.register_parented(var, config[CONF_ID])
+24 -4
View File
@@ -81,7 +81,10 @@ EzoPMPArbitraryCommandAction = ezo_pmp_ns.class_(
@automation.register_action( @automation.register_action(
"ezo_pmp.find", EzoPMPFindAction, EZO_PMP_NO_ARGS_ACTION_SCHEMA "ezo_pmp.find",
EzoPMPFindAction,
EZO_PMP_NO_ARGS_ACTION_SCHEMA,
synchronous=True,
) )
async def ezo_pmp_find_to_code(config, action_id, template_arg, args): async def ezo_pmp_find_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -92,6 +95,7 @@ async def ezo_pmp_find_to_code(config, action_id, template_arg, args):
"ezo_pmp.dose_continuously", "ezo_pmp.dose_continuously",
EzoPMPDoseContinuouslyAction, EzoPMPDoseContinuouslyAction,
EZO_PMP_NO_ARGS_ACTION_SCHEMA, EZO_PMP_NO_ARGS_ACTION_SCHEMA,
synchronous=True,
) )
async def ezo_pmp_dose_continuously_to_code(config, action_id, template_arg, args): async def ezo_pmp_dose_continuously_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -102,6 +106,7 @@ async def ezo_pmp_dose_continuously_to_code(config, action_id, template_arg, arg
"ezo_pmp.clear_total_volume_dosed", "ezo_pmp.clear_total_volume_dosed",
EzoPMPClearTotalVolumeDispensedAction, EzoPMPClearTotalVolumeDispensedAction,
EZO_PMP_NO_ARGS_ACTION_SCHEMA, EZO_PMP_NO_ARGS_ACTION_SCHEMA,
synchronous=True,
) )
async def ezo_pmp_clear_total_volume_dosed_to_code( async def ezo_pmp_clear_total_volume_dosed_to_code(
config, action_id, template_arg, args config, action_id, template_arg, args
@@ -114,6 +119,7 @@ async def ezo_pmp_clear_total_volume_dosed_to_code(
"ezo_pmp.clear_calibration", "ezo_pmp.clear_calibration",
EzoPMPClearCalibrationAction, EzoPMPClearCalibrationAction,
EZO_PMP_NO_ARGS_ACTION_SCHEMA, EZO_PMP_NO_ARGS_ACTION_SCHEMA,
synchronous=True,
) )
async def ezo_pmp_clear_calibration_to_code(config, action_id, template_arg, args): async def ezo_pmp_clear_calibration_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -121,7 +127,10 @@ async def ezo_pmp_clear_calibration_to_code(config, action_id, template_arg, arg
@automation.register_action( @automation.register_action(
"ezo_pmp.pause_dosing", EzoPMPPauseDosingAction, EZO_PMP_NO_ARGS_ACTION_SCHEMA "ezo_pmp.pause_dosing",
EzoPMPPauseDosingAction,
EZO_PMP_NO_ARGS_ACTION_SCHEMA,
synchronous=True,
) )
async def ezo_pmp_pause_dosing_to_code(config, action_id, template_arg, args): async def ezo_pmp_pause_dosing_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -129,7 +138,10 @@ async def ezo_pmp_pause_dosing_to_code(config, action_id, template_arg, args):
@automation.register_action( @automation.register_action(
"ezo_pmp.stop_dosing", EzoPMPStopDosingAction, EZO_PMP_NO_ARGS_ACTION_SCHEMA "ezo_pmp.stop_dosing",
EzoPMPStopDosingAction,
EZO_PMP_NO_ARGS_ACTION_SCHEMA,
synchronous=True,
) )
async def ezo_pmp_stop_dosing_to_code(config, action_id, template_arg, args): async def ezo_pmp_stop_dosing_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -149,7 +161,10 @@ EZO_PMP_DOSE_VOLUME_ACTION_SCHEMA = cv.All(
@automation.register_action( @automation.register_action(
"ezo_pmp.dose_volume", EzoPMPDoseVolumeAction, EZO_PMP_DOSE_VOLUME_ACTION_SCHEMA "ezo_pmp.dose_volume",
EzoPMPDoseVolumeAction,
EZO_PMP_DOSE_VOLUME_ACTION_SCHEMA,
synchronous=True,
) )
async def ezo_pmp_dose_volume_to_code(config, action_id, template_arg, args): async def ezo_pmp_dose_volume_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -178,6 +193,7 @@ EZO_PMP_DOSE_VOLUME_OVER_TIME_ACTION_SCHEMA = cv.All(
"ezo_pmp.dose_volume_over_time", "ezo_pmp.dose_volume_over_time",
EzoPMPDoseVolumeOverTimeAction, EzoPMPDoseVolumeOverTimeAction,
EZO_PMP_DOSE_VOLUME_OVER_TIME_ACTION_SCHEMA, EZO_PMP_DOSE_VOLUME_OVER_TIME_ACTION_SCHEMA,
synchronous=True,
) )
async def ezo_pmp_dose_volume_over_time_to_code(config, action_id, template_arg, args): async def ezo_pmp_dose_volume_over_time_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -209,6 +225,7 @@ EZO_PMP_DOSE_WITH_CONSTANT_FLOW_RATE_ACTION_SCHEMA = cv.All(
"ezo_pmp.dose_with_constant_flow_rate", "ezo_pmp.dose_with_constant_flow_rate",
EzoPMPDoseWithConstantFlowRateAction, EzoPMPDoseWithConstantFlowRateAction,
EZO_PMP_DOSE_WITH_CONSTANT_FLOW_RATE_ACTION_SCHEMA, EZO_PMP_DOSE_WITH_CONSTANT_FLOW_RATE_ACTION_SCHEMA,
synchronous=True,
) )
async def ezo_pmp_dose_with_constant_flow_rate_to_code( async def ezo_pmp_dose_with_constant_flow_rate_to_code(
config, action_id, template_arg, args config, action_id, template_arg, args
@@ -239,6 +256,7 @@ EZO_PMP_SET_CALIBRATION_VOLUME_ACTION_SCHEMA = cv.All(
"ezo_pmp.set_calibration_volume", "ezo_pmp.set_calibration_volume",
EzoPMPSetCalibrationVolumeAction, EzoPMPSetCalibrationVolumeAction,
EZO_PMP_SET_CALIBRATION_VOLUME_ACTION_SCHEMA, EZO_PMP_SET_CALIBRATION_VOLUME_ACTION_SCHEMA,
synchronous=True,
) )
async def ezo_pmp_set_calibration_volume_to_code(config, action_id, template_arg, args): async def ezo_pmp_set_calibration_volume_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -262,6 +280,7 @@ EZO_PMP_CHANGE_I2C_ADDRESS_ACTION_SCHEMA = cv.All(
"ezo_pmp.change_i2c_address", "ezo_pmp.change_i2c_address",
EzoPMPChangeI2CAddressAction, EzoPMPChangeI2CAddressAction,
EZO_PMP_CHANGE_I2C_ADDRESS_ACTION_SCHEMA, EZO_PMP_CHANGE_I2C_ADDRESS_ACTION_SCHEMA,
synchronous=True,
) )
async def ezo_pmp_change_i2c_address_to_code(config, action_id, template_arg, args): async def ezo_pmp_change_i2c_address_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -285,6 +304,7 @@ EZO_PMP_ARBITRARY_COMMAND_ACTION_SCHEMA = cv.All(
"ezo_pmp.arbitrary_command", "ezo_pmp.arbitrary_command",
EzoPMPArbitraryCommandAction, EzoPMPArbitraryCommandAction,
EZO_PMP_ARBITRARY_COMMAND_ACTION_SCHEMA, EZO_PMP_ARBITRARY_COMMAND_ACTION_SCHEMA,
synchronous=True,
) )
async def ezo_pmp_arbitrary_command_to_code(config, action_id, template_arg, args): async def ezo_pmp_arbitrary_command_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
+1
View File
@@ -365,6 +365,7 @@ async def fan_turn_on_to_code(config, action_id, template_arg, args):
cv.Optional(CONF_OFF_SPEED_CYCLE, default=True): cv.boolean, cv.Optional(CONF_OFF_SPEED_CYCLE, default=True): cv.boolean,
} }
), ),
synchronous=True,
) )
async def fan_cycle_speed_to_code(config, action_id, template_arg, args): async def fan_cycle_speed_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -261,6 +261,7 @@ async def to_code(config):
}, },
key=CONF_FINGER_ID, key=CONF_FINGER_ID,
), ),
synchronous=True,
) )
async def fingerprint_grow_enroll_to_code(config, action_id, template_arg, args): async def fingerprint_grow_enroll_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -282,6 +283,7 @@ async def fingerprint_grow_enroll_to_code(config, action_id, template_arg, args)
cv.GenerateID(): cv.use_id(FingerprintGrowComponent), cv.GenerateID(): cv.use_id(FingerprintGrowComponent),
} }
), ),
synchronous=True,
) )
async def fingerprint_grow_cancel_enroll_to_code(config, action_id, template_arg, args): async def fingerprint_grow_cancel_enroll_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -299,6 +301,7 @@ async def fingerprint_grow_cancel_enroll_to_code(config, action_id, template_arg
}, },
key=CONF_FINGER_ID, key=CONF_FINGER_ID,
), ),
synchronous=True,
) )
async def fingerprint_grow_delete_to_code(config, action_id, template_arg, args): async def fingerprint_grow_delete_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -317,6 +320,7 @@ async def fingerprint_grow_delete_to_code(config, action_id, template_arg, args)
cv.GenerateID(): cv.use_id(FingerprintGrowComponent), cv.GenerateID(): cv.use_id(FingerprintGrowComponent),
} }
), ),
synchronous=True,
) )
async def fingerprint_grow_delete_all_to_code(config, action_id, template_arg, args): async def fingerprint_grow_delete_all_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -337,6 +341,7 @@ FINGERPRINT_GROW_LED_CONTROL_ACTION_SCHEMA = cv.maybe_simple_value(
"fingerprint_grow.led_control", "fingerprint_grow.led_control",
LEDControlAction, LEDControlAction,
FINGERPRINT_GROW_LED_CONTROL_ACTION_SCHEMA, FINGERPRINT_GROW_LED_CONTROL_ACTION_SCHEMA,
synchronous=True,
) )
async def fingerprint_grow_led_control_to_code(config, action_id, template_arg, args): async def fingerprint_grow_led_control_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -359,6 +364,7 @@ async def fingerprint_grow_led_control_to_code(config, action_id, template_arg,
cv.Required(CONF_COUNT): cv.templatable(cv.uint8_t), cv.Required(CONF_COUNT): cv.templatable(cv.uint8_t),
} }
), ),
synchronous=True,
) )
async def fingerprint_grow_aura_led_control_to_code( async def fingerprint_grow_aura_led_control_to_code(
config, action_id, template_arg, args config, action_id, template_arg, args
@@ -72,6 +72,7 @@ async def to_code(config):
cv.Required(CONF_DIRECTION): cv.enum(DIRECTION_TYPE, upper=True), cv.Required(CONF_DIRECTION): cv.enum(DIRECTION_TYPE, upper=True),
} }
), ),
synchronous=True,
) )
async def grove_tb6612fng_run_to_code(config, action_id, template_arg, args): async def grove_tb6612fng_run_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -96,6 +97,7 @@ async def grove_tb6612fng_run_to_code(config, action_id, template_arg, args):
cv.Required(CONF_CHANNEL): cv.templatable(cv.int_range(min=0, max=1)), cv.Required(CONF_CHANNEL): cv.templatable(cv.int_range(min=0, max=1)),
} }
), ),
synchronous=True,
) )
async def grove_tb6612fng_break_to_code(config, action_id, template_arg, args): async def grove_tb6612fng_break_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -115,6 +117,7 @@ async def grove_tb6612fng_break_to_code(config, action_id, template_arg, args):
cv.Required(CONF_CHANNEL): cv.templatable(cv.int_range(min=0, max=1)), cv.Required(CONF_CHANNEL): cv.templatable(cv.int_range(min=0, max=1)),
} }
), ),
synchronous=True,
) )
async def grove_tb6612fng_stop_to_code(config, action_id, template_arg, args): async def grove_tb6612fng_stop_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -133,6 +136,7 @@ async def grove_tb6612fng_stop_to_code(config, action_id, template_arg, args):
cv.Required(CONF_ID): cv.use_id(GROVE_TB6612FNG), cv.Required(CONF_ID): cv.use_id(GROVE_TB6612FNG),
} }
), ),
synchronous=True,
) )
async def grove_tb6612fng_standby_to_code(config, action_id, template_arg, args): async def grove_tb6612fng_standby_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -149,6 +153,7 @@ async def grove_tb6612fng_standby_to_code(config, action_id, template_arg, args)
cv.Required(CONF_ID): cv.use_id(GROVE_TB6612FNG), cv.Required(CONF_ID): cv.use_id(GROVE_TB6612FNG),
} }
), ),
synchronous=True,
) )
async def grove_tb6612fng_no_standby_to_code(config, action_id, template_arg, args): async def grove_tb6612fng_no_standby_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -166,6 +171,7 @@ async def grove_tb6612fng_no_standby_to_code(config, action_id, template_arg, ar
cv.Required(CONF_ADDRESS): cv.i2c_address, cv.Required(CONF_ADDRESS): cv.i2c_address,
} }
), ),
synchronous=True,
) )
async def grove_tb6612fng_change_address_to_code(config, action_id, template_arg, args): async def grove_tb6612fng_change_address_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
+40 -9
View File
@@ -319,10 +319,16 @@ HAIER_HON_BASE_ACTION_SCHEMA = automation.maybe_simple_id(
@automation.register_action( @automation.register_action(
"climate.haier.display_on", DisplayOnAction, HAIER_BASE_ACTION_SCHEMA "climate.haier.display_on",
DisplayOnAction,
HAIER_BASE_ACTION_SCHEMA,
synchronous=True,
) )
@automation.register_action( @automation.register_action(
"climate.haier.display_off", DisplayOffAction, HAIER_BASE_ACTION_SCHEMA "climate.haier.display_off",
DisplayOffAction,
HAIER_BASE_ACTION_SCHEMA,
synchronous=True,
) )
async def display_action_to_code(config, action_id, template_arg, args): async def display_action_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -330,10 +336,16 @@ async def display_action_to_code(config, action_id, template_arg, args):
@automation.register_action( @automation.register_action(
"climate.haier.beeper_on", BeeperOnAction, HAIER_HON_BASE_ACTION_SCHEMA "climate.haier.beeper_on",
BeeperOnAction,
HAIER_HON_BASE_ACTION_SCHEMA,
synchronous=True,
) )
@automation.register_action( @automation.register_action(
"climate.haier.beeper_off", BeeperOffAction, HAIER_HON_BASE_ACTION_SCHEMA "climate.haier.beeper_off",
BeeperOffAction,
HAIER_HON_BASE_ACTION_SCHEMA,
synchronous=True,
) )
async def beeper_action_to_code(config, action_id, template_arg, args): async def beeper_action_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -345,11 +357,13 @@ async def beeper_action_to_code(config, action_id, template_arg, args):
"climate.haier.start_self_cleaning", "climate.haier.start_self_cleaning",
StartSelfCleaningAction, StartSelfCleaningAction,
HAIER_HON_BASE_ACTION_SCHEMA, HAIER_HON_BASE_ACTION_SCHEMA,
synchronous=True,
) )
@automation.register_action( @automation.register_action(
"climate.haier.start_steri_cleaning", "climate.haier.start_steri_cleaning",
StartSteriCleaningAction, StartSteriCleaningAction,
HAIER_HON_BASE_ACTION_SCHEMA, HAIER_HON_BASE_ACTION_SCHEMA,
synchronous=True,
) )
async def start_cleaning_to_code(config, action_id, template_arg, args): async def start_cleaning_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -368,6 +382,7 @@ async def start_cleaning_to_code(config, action_id, template_arg, args):
), ),
} }
), ),
synchronous=True,
) )
async def haier_set_vertical_airflow_to_code(config, action_id, template_arg, args): async def haier_set_vertical_airflow_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -391,6 +406,7 @@ async def haier_set_vertical_airflow_to_code(config, action_id, template_arg, ar
), ),
} }
), ),
synchronous=True,
) )
async def haier_set_horizontal_airflow_to_code(config, action_id, template_arg, args): async def haier_set_horizontal_airflow_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -403,10 +419,16 @@ async def haier_set_horizontal_airflow_to_code(config, action_id, template_arg,
@automation.register_action( @automation.register_action(
"climate.haier.health_on", HealthOnAction, HAIER_BASE_ACTION_SCHEMA "climate.haier.health_on",
HealthOnAction,
HAIER_BASE_ACTION_SCHEMA,
synchronous=True,
) )
@automation.register_action( @automation.register_action(
"climate.haier.health_off", HealthOffAction, HAIER_BASE_ACTION_SCHEMA "climate.haier.health_off",
HealthOffAction,
HAIER_BASE_ACTION_SCHEMA,
synchronous=True,
) )
async def health_action_to_code(config, action_id, template_arg, args): async def health_action_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -414,13 +436,22 @@ async def health_action_to_code(config, action_id, template_arg, args):
@automation.register_action( @automation.register_action(
"climate.haier.power_on", PowerOnAction, HAIER_BASE_ACTION_SCHEMA "climate.haier.power_on",
PowerOnAction,
HAIER_BASE_ACTION_SCHEMA,
synchronous=True,
) )
@automation.register_action( @automation.register_action(
"climate.haier.power_off", PowerOffAction, HAIER_BASE_ACTION_SCHEMA "climate.haier.power_off",
PowerOffAction,
HAIER_BASE_ACTION_SCHEMA,
synchronous=True,
) )
@automation.register_action( @automation.register_action(
"climate.haier.power_toggle", PowerToggleAction, HAIER_BASE_ACTION_SCHEMA "climate.haier.power_toggle",
PowerToggleAction,
HAIER_BASE_ACTION_SCHEMA,
synchronous=True,
) )
async def power_action_to_code(config, action_id, template_arg, args): async def power_action_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -52,6 +52,7 @@ CONFIG_SCHEMA = (
"fan.hbridge.brake", "fan.hbridge.brake",
BrakeAction, BrakeAction,
maybe_simple_id({cv.GenerateID(): cv.use_id(HBridgeFan)}), maybe_simple_id({cv.GenerateID(): cv.use_id(HBridgeFan)}),
synchronous=True,
) )
async def fan_hbridge_brake_to_code(config, action_id, template_arg, args): async def fan_hbridge_brake_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
+4 -1
View File
@@ -68,7 +68,10 @@ CALIBRATION_ACTION_SCHEMA = cv.Schema(
@automation.register_action( @automation.register_action(
"hc8.calibrate", HC8CalibrateAction, CALIBRATION_ACTION_SCHEMA "hc8.calibrate",
HC8CalibrateAction,
CALIBRATION_ACTION_SCHEMA,
synchronous=True,
) )
async def hc8_calibration_to_code(config, action_id, template_arg, args): async def hc8_calibration_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
+8 -2
View File
@@ -114,7 +114,10 @@ HDC302X_HEATER_ON_ACTION_SCHEMA = maybe_simple_id(
@automation.register_action( @automation.register_action(
"hdc302x.heater_on", HeaterOnAction, HDC302X_HEATER_ON_ACTION_SCHEMA "hdc302x.heater_on",
HeaterOnAction,
HDC302X_HEATER_ON_ACTION_SCHEMA,
synchronous=True,
) )
async def hdc302x_heater_on_to_code(config, action_id, template_arg, args): async def hdc302x_heater_on_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -127,7 +130,10 @@ async def hdc302x_heater_on_to_code(config, action_id, template_arg, args):
@automation.register_action( @automation.register_action(
"hdc302x.heater_off", HeaterOffAction, HDC302X_ACTION_SCHEMA "hdc302x.heater_off",
HeaterOffAction,
HDC302X_ACTION_SCHEMA,
synchronous=True,
) )
async def hdc302x_heater_off_to_code(config, action_id, template_arg, args): async def hdc302x_heater_off_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
+5
View File
@@ -170,6 +170,7 @@ async def to_code(config):
}, },
key=CONF_NAME, key=CONF_NAME,
), ),
synchronous=True,
) )
async def hlk_fm22x_enroll_to_code(config, action_id, template_arg, args): async def hlk_fm22x_enroll_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -192,6 +193,7 @@ async def hlk_fm22x_enroll_to_code(config, action_id, template_arg, args):
}, },
key=CONF_FACE_ID, key=CONF_FACE_ID,
), ),
synchronous=True,
) )
async def hlk_fm22x_delete_to_code(config, action_id, template_arg, args): async def hlk_fm22x_delete_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -210,6 +212,7 @@ async def hlk_fm22x_delete_to_code(config, action_id, template_arg, args):
cv.GenerateID(): cv.use_id(HlkFm22xComponent), cv.GenerateID(): cv.use_id(HlkFm22xComponent),
} }
), ),
synchronous=True,
) )
async def hlk_fm22x_delete_all_to_code(config, action_id, template_arg, args): async def hlk_fm22x_delete_all_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -225,6 +228,7 @@ async def hlk_fm22x_delete_all_to_code(config, action_id, template_arg, args):
cv.GenerateID(): cv.use_id(HlkFm22xComponent), cv.GenerateID(): cv.use_id(HlkFm22xComponent),
} }
), ),
synchronous=True,
) )
async def hlk_fm22x_scan_to_code(config, action_id, template_arg, args): async def hlk_fm22x_scan_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -240,6 +244,7 @@ async def hlk_fm22x_scan_to_code(config, action_id, template_arg, args):
cv.GenerateID(): cv.use_id(HlkFm22xComponent), cv.GenerateID(): cv.use_id(HlkFm22xComponent),
} }
), ),
synchronous=True,
) )
async def hlk_fm22x_reset_to_code(config, action_id, template_arg, args): async def hlk_fm22x_reset_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
+12 -3
View File
@@ -279,13 +279,22 @@ HTTP_REQUEST_SEND_ACTION_SCHEMA = HTTP_REQUEST_ACTION_SCHEMA.extend(
@automation.register_action( @automation.register_action(
"http_request.get", HttpRequestSendAction, HTTP_REQUEST_GET_ACTION_SCHEMA "http_request.get",
HttpRequestSendAction,
HTTP_REQUEST_GET_ACTION_SCHEMA,
synchronous=True,
) )
@automation.register_action( @automation.register_action(
"http_request.post", HttpRequestSendAction, HTTP_REQUEST_POST_ACTION_SCHEMA "http_request.post",
HttpRequestSendAction,
HTTP_REQUEST_POST_ACTION_SCHEMA,
synchronous=True,
) )
@automation.register_action( @automation.register_action(
"http_request.send", HttpRequestSendAction, HTTP_REQUEST_SEND_ACTION_SCHEMA "http_request.send",
HttpRequestSendAction,
HTTP_REQUEST_SEND_ACTION_SCHEMA,
synchronous=True,
) )
async def http_request_action_to_code(config, action_id, template_arg, args): async def http_request_action_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
@@ -70,6 +70,7 @@ OTA_HTTP_REQUEST_FLASH_ACTION_SCHEMA = cv.All(
"ota.http_request.flash", "ota.http_request.flash",
OtaHttpRequestComponentFlashAction, OtaHttpRequestComponentFlashAction,
OTA_HTTP_REQUEST_FLASH_ACTION_SCHEMA, OTA_HTTP_REQUEST_FLASH_ACTION_SCHEMA,
synchronous=True,
) )
async def ota_http_request_action_to_code(config, action_id, template_arg, args): async def ota_http_request_action_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
+2
View File
@@ -93,6 +93,7 @@ async def to_code(config):
}, },
key=CONF_LEVEL, key=CONF_LEVEL,
), ),
synchronous=True,
) )
async def set_heater_level_to_code(config, action_id, template_arg, args): async def set_heater_level_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -112,6 +113,7 @@ async def set_heater_level_to_code(config, action_id, template_arg, args):
}, },
key=CONF_STATUS, key=CONF_STATUS,
), ),
synchronous=True,
) )
async def set_heater_to_code(config, action_id, template_arg, args): async def set_heater_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
+1
View File
@@ -652,6 +652,7 @@ async def to_code(config: ConfigType) -> None:
}, },
key=CONF_BRIGHTNESS, key=CONF_BRIGHTNESS,
), ),
synchronous=True,
) )
async def hub75_set_brightness_to_code( async def hub75_set_brightness_to_code(
config: ConfigType, config: ConfigType,
+2
View File
@@ -111,6 +111,7 @@ async def to_code(config):
cv.Required(CONF_ID): cv.use_id(IntegrationSensor), cv.Required(CONF_ID): cv.use_id(IntegrationSensor),
} }
), ),
synchronous=True,
) )
async def sensor_integration_reset_to_code(config, action_id, template_arg, args): async def sensor_integration_reset_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -127,6 +128,7 @@ async def sensor_integration_reset_to_code(config, action_id, template_arg, args
cv.Required(CONF_VALUE): cv.templatable(cv.float_), cv.Required(CONF_VALUE): cv.templatable(cv.float_),
} }
), ),
synchronous=True,
) )
async def sensor_integration_set_value_to_code(config, action_id, template_arg, args): async def sensor_integration_set_value_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -142,6 +142,7 @@ async def to_code(config):
cv.GenerateID(): cv.use_id(KeyCollector), cv.GenerateID(): cv.use_id(KeyCollector),
} }
), ),
synchronous=True,
) )
async def enable_to_code(config, action_id, template_arg, args): async def enable_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
@@ -157,6 +158,7 @@ async def enable_to_code(config, action_id, template_arg, args):
cv.GenerateID(): cv.use_id(KeyCollector), cv.GenerateID(): cv.use_id(KeyCollector),
} }
), ),
synchronous=True,
) )
async def disable_to_code(config, action_id, template_arg, args): async def disable_to_code(config, action_id, template_arg, args):
var = cg.new_Pvariable(action_id, template_arg) var = cg.new_Pvariable(action_id, template_arg)
+4 -1
View File
@@ -97,7 +97,10 @@ BLUETOOTH_PASSWORD_SET_SCHEMA = cv.Schema(
@automation.register_action( @automation.register_action(
"bluetooth_password.set", BluetoothPasswordSetAction, BLUETOOTH_PASSWORD_SET_SCHEMA "bluetooth_password.set",
BluetoothPasswordSetAction,
BLUETOOTH_PASSWORD_SET_SCHEMA,
synchronous=True,
) )
async def bluetooth_password_set_to_code(config, action_id, template_arg, args): async def bluetooth_password_set_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])
+1
View File
@@ -77,6 +77,7 @@ async def to_code(config):
cv.Required(CONF_FREQUENCY): cv.templatable(validate_frequency), cv.Required(CONF_FREQUENCY): cv.templatable(validate_frequency),
} }
), ),
synchronous=True,
) )
async def ledc_set_frequency_to_code(config, action_id, template_arg, args): async def ledc_set_frequency_to_code(config, action_id, template_arg, args):
paren = await cg.get_variable(config[CONF_ID]) paren = await cg.get_variable(config[CONF_ID])

Some files were not shown because too many files have changed in this diff Show More