[components] Set optional plain values with cg.add_optional (a-m) (#21181)

This commit is contained in:
J. Nick Koston
2026-10-20 08:55:50 -04:00
committed by GitHub
parent 8b951fa620
commit a2fbedeac3
47 changed files with 115 additions and 227 deletions
+1 -2
View File
@@ -43,5 +43,4 @@ async def register_bedjet_child(var: MockObj, config: ConfigType) -> None:
async def to_code(config: ConfigType) -> None:
var = await ble_client.new_ble_node_component(config)
await cg.add_variable(var.set_time_id, config.get(CONF_TIME_ID))
if (receive_timeout := config.get(CONF_RECEIVE_TIMEOUT)) is not None:
cg.add(var.set_status_timeout(receive_timeout))
cg.add_optional(var.set_status_timeout, config.get(CONF_RECEIVE_TIMEOUT))
@@ -111,8 +111,7 @@ async def to_code(config: ConfigType) -> None:
cg.add(var.set_num_leds(config[CONF_NUM_LEDS]))
cg.add(var.set_pin(config[CONF_PIN]))
if CONF_MAX_REFRESH_RATE in config:
cg.add(var.set_max_refresh_rate(config[CONF_MAX_REFRESH_RATE]))
cg.add_optional(var.set_max_refresh_rate, config.get(CONF_MAX_REFRESH_RATE))
chipset = CHIPSETS[config[CONF_CHIPSET]]
cg.add(
@@ -83,8 +83,6 @@ async def to_code(config: ConfigType) -> None:
ibeacon_uuid = ble_device_base.as_reversed_hex_array(ibeacon_uuid)
cg.add(var.set_ibeacon_uuid(ibeacon_uuid))
if (ibeacon_major := config.get(CONF_IBEACON_MAJOR)) is not None:
cg.add(var.set_ibeacon_major(ibeacon_major))
cg.add_optional(var.set_ibeacon_major, config.get(CONF_IBEACON_MAJOR))
if (ibeacon_minor := config.get(CONF_IBEACON_MINOR)) is not None:
cg.add(var.set_ibeacon_minor(ibeacon_minor))
cg.add_optional(var.set_ibeacon_minor, config.get(CONF_IBEACON_MINOR))
+2 -4
View File
@@ -79,8 +79,6 @@ async def to_code(config: ConfigType) -> None:
ibeacon_uuid = ble_device_base.as_reversed_hex_array(ibeacon_uuid)
cg.add(var.set_ibeacon_uuid(ibeacon_uuid))
if (ibeacon_major := config.get(CONF_IBEACON_MAJOR)) is not None:
cg.add(var.set_ibeacon_major(ibeacon_major))
cg.add_optional(var.set_ibeacon_major, config.get(CONF_IBEACON_MAJOR))
if (ibeacon_minor := config.get(CONF_IBEACON_MINOR)) is not None:
cg.add(var.set_ibeacon_minor(ibeacon_minor))
cg.add_optional(var.set_ibeacon_minor, config.get(CONF_IBEACON_MINOR))
+1 -2
View File
@@ -69,8 +69,7 @@ async def to_code(config: ConfigType) -> None:
text_sensors = text_sensor.sub_text_sensors(config)
await text_sensors(CONF_VERSION, var.set_version)
if (baseline := config.get(CONF_BASELINE)) is not None:
cg.add(var.set_baseline(baseline))
cg.add_optional(var.set_baseline, config.get(CONF_BASELINE))
await cg.add_variable(var.set_temperature, config.get(CONF_TEMPERATURE))
await cg.add_variable(var.set_humidity, config.get(CONF_HUMIDITY))
+1 -2
View File
@@ -117,8 +117,7 @@ async def to_code(config: ConfigType) -> None:
)
cg.add(var.set_obstacle_rollback(config[CONF_OBSTACLE_ROLLBACK]))
if (max_duration := config.get(CONF_MAX_DURATION)) is not None:
cg.add(var.set_max_duration(max_duration))
cg.add_optional(var.set_max_duration, config.get(CONF_MAX_DURATION))
cg.add(var.set_malfunction_detection(config[CONF_MALFUNCTION_DETECTION]))
if malfunction_action := config.get(CONF_MALFUNCTION_ACTION):
await automation.build_automation(
+3 -6
View File
@@ -364,8 +364,7 @@ async def to_code(config: ConfigType) -> None:
var = cg.new_Pvariable(config[CONF_ID])
await cg.register_component(var, config)
if CONF_SLEEP_DURATION in config:
cg.add(var.set_sleep_duration(config[CONF_SLEEP_DURATION]))
cg.add_optional(var.set_sleep_duration, config.get(CONF_SLEEP_DURATION))
if (wakeup_pins := config.get(CONF_WAKEUP_PIN)) is not None:
if CORE.is_bk72xx:
cg.add(var.init_wakeup_pins(len(wakeup_pins)))
@@ -380,8 +379,7 @@ async def to_code(config: ConfigType) -> None:
)
else:
await cg.add_pin(var.set_wakeup_pin, wakeup_pins[0][CONF_PIN])
if CONF_WAKEUP_PIN_MODE in config:
cg.add(var.set_wakeup_pin_mode(config[CONF_WAKEUP_PIN_MODE]))
cg.add_optional(var.set_wakeup_pin_mode, config.get(CONF_WAKEUP_PIN_MODE))
if CONF_RUN_DURATION in config:
run_duration_config = config[CONF_RUN_DURATION]
if not isinstance(run_duration_config, dict):
@@ -427,8 +425,7 @@ async def to_code(config: ConfigType) -> None:
await automation.build_automation(trigger, [(WakeupCause, "cause")], wake_conf)
cg.add_define("USE_DEEP_SLEEP_ON_WAKE")
if CONF_TOUCH_WAKEUP in config:
cg.add(var.set_touch_wakeup(config[CONF_TOUCH_WAKEUP]))
cg.add_optional(var.set_touch_wakeup, config.get(CONF_TOUCH_WAKEUP))
if CORE.using_zephyr:
# Devices are suspended when CPU is entering a low power state
# https://github.com/nrfconnect/sdk-zephyr/blob/v3.7.99-ncs2-2/doc/services/pm/device.rst#system-managed-device-power-management
@@ -277,8 +277,7 @@ async def menu_item_to_code(menu, config, parent):
if CONF_ITEMS in config:
for c in config[CONF_ITEMS]:
await menu_item_to_code(menu, c, item)
if CONF_IMMEDIATE_EDIT in config:
cg.add(item.set_immediate_edit(config[CONF_IMMEDIATE_EDIT]))
cg.add_optional(item.set_immediate_edit, config.get(CONF_IMMEDIATE_EDIT))
if config[CONF_TYPE] == CONF_SELECT:
await cg.add_variable(item.set_select_variable, config[CONF_SELECT])
if config[CONF_TYPE] == CONF_NUMBER:
+7 -14
View File
@@ -91,20 +91,13 @@ async def to_code(config: ConfigType) -> None:
cg.add(var.set_active_pullup(config[CONF_ACTIVE_PULLUP]))
cg.add(var.set_channel_count(get_channel_count(config)))
if CONF_BUS_SLEEP in config:
cg.add(var.set_bus_sleep(config[CONF_BUS_SLEEP]))
if CONF_HUB_SLEEP in config:
cg.add(var.set_hub_sleep(config[CONF_HUB_SLEEP]))
cg.add_optional(var.set_bus_sleep, config.get(CONF_BUS_SLEEP))
cg.add_optional(var.set_hub_sleep, config.get(CONF_HUB_SLEEP))
if CONF_RESET_LOW_TIME in config:
cg.add(var.set_val_trstl(config[CONF_RESET_LOW_TIME]))
if CONF_MASTER_SAMPLE_TIME in config:
cg.add(var.set_val_tmsp(config[CONF_MASTER_SAMPLE_TIME]))
if CONF_WRITE_0_LOW_TIME in config:
cg.add(var.set_val_tw0l(config[CONF_WRITE_0_LOW_TIME]))
if CONF_RECOVERY_TIME in config:
cg.add(var.set_val_trec0(config[CONF_RECOVERY_TIME]))
if CONF_ACTIVE_PULLUP_RESISTANCE in config:
cg.add(var.set_val_rwpu(config[CONF_ACTIVE_PULLUP_RESISTANCE]))
cg.add_optional(var.set_val_trstl, config.get(CONF_RESET_LOW_TIME))
cg.add_optional(var.set_val_tmsp, config.get(CONF_MASTER_SAMPLE_TIME))
cg.add_optional(var.set_val_tw0l, config.get(CONF_WRITE_0_LOW_TIME))
cg.add_optional(var.set_val_trec0, config.get(CONF_RECOVERY_TIME))
cg.add_optional(var.set_val_rwpu, config.get(CONF_ACTIVE_PULLUP_RESISTANCE))
await cg.add_pin(var.set_sleep_pin, config.get(CONF_SLEEP_PIN))
+1 -2
View File
@@ -55,5 +55,4 @@ async def to_code(config: ConfigType) -> None:
var.get_close_trigger(), [], config[CONF_CLOSE_ACTION]
)
if CONF_MAX_DURATION in config:
cg.add(var.set_max_duration(config[CONF_MAX_DURATION]))
cg.add_optional(var.set_max_duration, config.get(CONF_MAX_DURATION))
+1 -2
View File
@@ -252,8 +252,7 @@ async def to_code(config):
enable = [await cg.gpio_pin_expression(pin) for pin in enable_pin]
cg.add(var.set_enable_pins(enable))
cg.add(var.set_full_update_every(config[CONF_FULL_UPDATE_EVERY]))
if CONF_RESET_DURATION in config:
cg.add(var.set_reset_duration(config[CONF_RESET_DURATION]))
cg.add_optional(var.set_reset_duration, config.get(CONF_RESET_DURATION))
if transform := config.get(CONF_TRANSFORM):
transform[CONF_SWAP_XY] = False
else:
+1 -2
View File
@@ -265,8 +265,7 @@ async def esp32_pin_to_code(config):
# (inverted bit in pin_flags_ bitfield is zero-initialized to false)
if config[CONF_INVERTED]:
cg.add(var.set_inverted(True))
if CONF_DRIVE_STRENGTH in config:
cg.add(var.set_drive_strength(config[CONF_DRIVE_STRENGTH]))
cg.add_optional(var.set_drive_strength, config.get(CONF_DRIVE_STRENGTH))
flags = pins.gpio_flags_expr(config[CONF_MODE])
if config[CONF_HOLD_STATE]:
flags = flags | cg.gpio_Flags.FLAG_HOLD
+4 -8
View File
@@ -535,16 +535,12 @@ async def to_code(config: ConfigType) -> None:
):
cg.add_define("ESPHOME_ESP32_BLE_EXTENDED_AUTH_PARAMS", None)
if CONF_AUTH_REQ_MODE in config:
cg.add(var.set_auth_req(config[CONF_AUTH_REQ_MODE]))
if CONF_MAX_KEY_SIZE in config:
cg.add(var.set_max_key_size(config[CONF_MAX_KEY_SIZE]))
if CONF_MIN_KEY_SIZE in config:
cg.add(var.set_min_key_size(config[CONF_MIN_KEY_SIZE]))
cg.add_optional(var.set_auth_req, config.get(CONF_AUTH_REQ_MODE))
cg.add_optional(var.set_max_key_size, config.get(CONF_MAX_KEY_SIZE))
cg.add_optional(var.set_min_key_size, config.get(CONF_MIN_KEY_SIZE))
cg.add(var.set_advertising_cycle_time(config[CONF_ADVERTISING_CYCLE_TIME]))
if (name := config.get(CONF_NAME)) is not None:
cg.add(var.set_name(name))
cg.add_optional(var.set_name, config.get(CONF_NAME))
await cg.register_component(var, config)
# Define max connections for use in C++ code (e.g., ble_server.h)
@@ -83,8 +83,7 @@ async def to_code(config: ConfigType) -> None:
cg.add(var.set_measured_power(config[CONF_MEASURED_POWER]))
# TX power control only available on native Bluetooth (not ESP-Hosted)
if CONF_TX_POWER in config:
cg.add(var.set_tx_power(config[CONF_TX_POWER]))
cg.add_optional(var.set_tx_power, config.get(CONF_TX_POWER))
cg.add_define("USE_ESP32_BLE_ADVERTISING")
@@ -647,8 +647,7 @@ async def to_code(config):
)
)
)
if CONF_MANUFACTURER_DATA in config:
cg.add(var.set_manufacturer_data(config[CONF_MANUFACTURER_DATA]))
cg.add_optional(var.set_manufacturer_data, config.get(CONF_MANUFACTURER_DATA))
for service_config in config[CONF_SERVICES]:
# Calculate the optimal number of handles based on the number of characteristics and descriptors
num_handles = calculate_num_handles(service_config)
+2 -4
View File
@@ -157,10 +157,8 @@ async def to_code(config: ConfigType) -> None:
cg.add(var.set_rx(config[CONF_RX_PIN]))
cg.add(var.set_tx(config[CONF_TX_PIN]))
cg.add(var.set_mode(config[CONF_MODE]))
if (rx_queue_len := config.get(CONF_RX_QUEUE_LEN)) is not None:
cg.add(var.set_rx_queue_len(rx_queue_len))
if (tx_queue_len := config.get(CONF_TX_QUEUE_LEN)) is not None:
cg.add(var.set_tx_queue_len(tx_queue_len))
cg.add_optional(var.set_rx_queue_len, config.get(CONF_RX_QUEUE_LEN))
cg.add_optional(var.set_tx_queue_len, config.get(CONF_TX_QUEUE_LEN))
if CONF_TX_ENQUEUE_TIMEOUT in config:
tx_enqueue_timeout_ms = config[CONF_TX_ENQUEUE_TIMEOUT].total_milliseconds
@@ -170,10 +170,8 @@ async def to_code(config: ConfigType) -> None:
await power_management.register_power_management(var, config)
add_idf_sdkconfig_option("CONFIG_PM_ENABLE", True)
if (max_mhz := config.get(CONF_MAX_FREQUENCY)) is not None:
cg.add(var.set_max_freq_mhz(max_mhz))
if (min_mhz := config.get(CONF_MIN_FREQUENCY)) is not None:
cg.add(var.set_min_freq_mhz(min_mhz))
cg.add_optional(var.set_max_freq_mhz, config.get(CONF_MAX_FREQUENCY))
cg.add_optional(var.set_min_freq_mhz, config.get(CONF_MIN_FREQUENCY))
if config[CONF_PROFILING]:
add_idf_sdkconfig_option("CONFIG_PM_PROFILING", True)
if config[CONF_TRACE]:
@@ -137,8 +137,7 @@ async def to_code(config: ConfigType) -> None:
if config[CONF_PIN][CONF_INVERTED]:
cg.add(var.set_inverted(True))
if CONF_MAX_REFRESH_RATE in config:
cg.add(var.set_max_refresh_rate(config[CONF_MAX_REFRESH_RATE]))
cg.add_optional(var.set_max_refresh_rate, config.get(CONF_MAX_REFRESH_RATE))
if CONF_CHIPSET in config:
chipset = CHIPSETS[config[CONF_CHIPSET]]
@@ -169,5 +168,4 @@ async def to_code(config: ConfigType) -> None:
)
cg.add(var.set_use_psram(config[CONF_USE_PSRAM]))
cg.add(var.set_rmt_symbols(config[CONF_RMT_SYMBOLS]))
if CONF_USE_DMA in config:
cg.add(var.set_use_dma(config[CONF_USE_DMA]))
cg.add_optional(var.set_use_dma, config.get(CONF_USE_DMA))
+7 -14
View File
@@ -366,20 +366,13 @@ async def to_code(config: ConfigType) -> None:
cg.add(touch.set_iir_filter(config[CONF_IIR_FILTER]))
if variant in (VARIANT_ESP32S2, VARIANT_ESP32S3, VARIANT_ESP32P4):
if CONF_FILTER_MODE in config:
cg.add(touch.set_filter_mode(config[CONF_FILTER_MODE]))
if CONF_DEBOUNCE_COUNT in config:
cg.add(touch.set_debounce_count(config[CONF_DEBOUNCE_COUNT]))
if CONF_NOISE_THRESHOLD in config:
cg.add(touch.set_noise_threshold(config[CONF_NOISE_THRESHOLD]))
if CONF_JITTER_STEP in config:
cg.add(touch.set_jitter_step(config[CONF_JITTER_STEP]))
if CONF_SMOOTH_MODE in config:
cg.add(touch.set_smooth_level(config[CONF_SMOOTH_MODE]))
if CONF_DENOISE_GRADE in config:
cg.add(touch.set_denoise_grade(config[CONF_DENOISE_GRADE]))
if CONF_DENOISE_CAP_LEVEL in config:
cg.add(touch.set_denoise_cap(config[CONF_DENOISE_CAP_LEVEL]))
cg.add_optional(touch.set_filter_mode, config.get(CONF_FILTER_MODE))
cg.add_optional(touch.set_debounce_count, config.get(CONF_DEBOUNCE_COUNT))
cg.add_optional(touch.set_noise_threshold, config.get(CONF_NOISE_THRESHOLD))
cg.add_optional(touch.set_jitter_step, config.get(CONF_JITTER_STEP))
cg.add_optional(touch.set_smooth_level, config.get(CONF_SMOOTH_MODE))
cg.add_optional(touch.set_denoise_grade, config.get(CONF_DENOISE_GRADE))
cg.add_optional(touch.set_denoise_cap, config.get(CONF_DENOISE_CAP_LEVEL))
if CONF_WATERPROOF_GUARD_RING in config:
cg.add(
touch.set_waterproof_guard_ring_pad(config[CONF_WATERPROOF_GUARD_RING])
+2 -4
View File
@@ -151,10 +151,8 @@ async def to_code(config: ConfigType) -> None:
cg.add(var.set_traffic_generator_target_ip(target_ip))
if (group := config.get(CONF_CSI_TRAFFIC_MULTICAST_GROUP)) is not None:
cg.add(var.set_csi_traffic_multicast_group(group))
if (on_hits := config.get(CONF_MOTION_ON_HITS)) is not None:
cg.add(var.set_motion_on_hits(on_hits))
if (off_hits := config.get(CONF_MOTION_OFF_HITS)) is not None:
cg.add(var.set_motion_off_hits(off_hits))
cg.add_optional(var.set_motion_on_hits, config.get(CONF_MOTION_ON_HITS))
cg.add_optional(var.set_motion_off_hits, config.get(CONF_MOTION_OFF_HITS))
if esp32.get_esp32_variant() == VARIANT_ESP32C5:
band = CORE.config[WIFI_DOMAIN].get(wifi.CONF_BAND_MODE, "AUTO")
cg.add(
+5 -10
View File
@@ -724,8 +724,7 @@ async def _to_code_esp32(var: cg.MockObj, config: ConfigType) -> None:
cg.add(var.set_polling_interval(config[CONF_POLLING_INTERVAL]))
if _is_framework_spi_polling_mode_supported():
cg.add_define("USE_ETHERNET_SPI_POLLING_SUPPORT")
if CONF_RESET_PIN in config:
cg.add(var.set_reset_pin(config[CONF_RESET_PIN]))
cg.add_optional(var.set_reset_pin, config.get(CONF_RESET_PIN))
cg.add(var.set_clock_speed(config[CONF_CLOCK_SPEED]))
cg.add_define("USE_ETHERNET_SPI")
@@ -746,8 +745,7 @@ async def _to_code_esp32(var: cg.MockObj, config: ConfigType) -> None:
elif config[CONF_TYPE] in ("GENERIC", "YT8531"):
# RGMII data pins come from the IDF default config; set MDC/MDIO + PHY addr.
_add_mdio_setters(var, config)
if CONF_POWER_PIN in config:
cg.add(var.set_power_pin(config[CONF_POWER_PIN]))
cg.add_optional(var.set_power_pin, config.get(CONF_POWER_PIN))
_add_phy_registers(var, config)
else:
_add_mdio_setters(var, config)
@@ -755,8 +753,7 @@ async def _to_code_esp32(var: cg.MockObj, config: ConfigType) -> None:
cg.add(var.set_clk_mode(clk_mode))
if (clk_pin := config[CONF_CLK][CONF_PIN]) != DEFAULT_CLK_PIN:
cg.add(var.set_clk_pin(clk_pin))
if CONF_POWER_PIN in config:
cg.add(var.set_power_pin(config[CONF_POWER_PIN]))
cg.add_optional(var.set_power_pin, config.get(CONF_POWER_PIN))
_add_phy_registers(var, config)
# Register Ethernet with the esp32 sdkconfig reconciler. It disables the
@@ -782,10 +779,8 @@ async def _to_code_rp2040(var: cg.MockObj, config: ConfigType) -> None:
cg.add(var.set_miso_pin(config[CONF_MISO_PIN]))
cg.add(var.set_mosi_pin(config[CONF_MOSI_PIN]))
cg.add(var.set_cs_pin(config[CONF_CS_PIN]))
if CONF_INTERRUPT_PIN in config:
cg.add(var.set_interrupt_pin(config[CONF_INTERRUPT_PIN]))
if CONF_RESET_PIN in config:
cg.add(var.set_reset_pin(config[CONF_RESET_PIN]))
cg.add_optional(var.set_interrupt_pin, config.get(CONF_INTERRUPT_PIN))
cg.add_optional(var.set_reset_pin, config.get(CONF_RESET_PIN))
cg.add_define("USE_ETHERNET_SPI")
cg.add_library(_RP2_SPI_LIBRARIES[config[CONF_TYPE]], None)
@@ -83,8 +83,7 @@ async def to_code(config: ConfigType) -> None:
if (time_constant := config.get(CONF_TIME_CONSTANT)) is not None:
cg.add(var.set_time_constant(time_constant))
if (weighting := config.get(CONF_TIME_WEIGHTING)) is not None:
cg.add(var.set_time_weighting(weighting))
cg.add_optional(var.set_time_weighting, config.get(CONF_TIME_WEIGHTING))
else:
cg.add(var.set_alpha(config.get(CONF_ALPHA, DEFAULT_ALPHA)))
cg.add(var.set_restore(config[CONF_RESTORE]))
+1 -2
View File
@@ -41,8 +41,7 @@ async def new_fastled_light(config: ConfigType) -> MockObj:
var = cg.new_Pvariable(config[CONF_OUTPUT_ID])
await cg.register_component(var, config)
if CONF_MAX_REFRESH_RATE in config:
cg.add(var.set_max_refresh_rate(config[CONF_MAX_REFRESH_RATE]))
cg.add_optional(var.set_max_refresh_rate, config.get(CONF_MAX_REFRESH_RATE))
if CORE.is_esp32:
from esphome.components.esp32 import add_idf_component
+1 -2
View File
@@ -147,8 +147,7 @@ async def to_code(config: ConfigType) -> None:
)
# OTHER
if CONF_MAX_DURATION in config:
cg.add(var.set_max_duration(config[CONF_MAX_DURATION]))
cg.add_optional(var.set_max_duration, config.get(CONF_MAX_DURATION))
cg.add(var.set_has_built_in_endstop(config[CONF_HAS_BUILT_IN_ENDSTOP]))
+7 -14
View File
@@ -151,21 +151,14 @@ async def to_code(config: ConfigType) -> None:
await cg.register_component(var, config)
# Graph options
if CONF_X_GRID in config:
cg.add(var.set_grid_x(config[CONF_X_GRID]))
if CONF_Y_GRID in config:
cg.add(var.set_grid_y(config[CONF_Y_GRID]))
if CONF_BORDER in config:
cg.add(var.set_border(config[CONF_BORDER]))
cg.add_optional(var.set_grid_x, config.get(CONF_X_GRID))
cg.add_optional(var.set_grid_y, config.get(CONF_Y_GRID))
cg.add_optional(var.set_border, config.get(CONF_BORDER))
# Axis related options
if CONF_MIN_VALUE in config:
cg.add(var.set_min_value(config[CONF_MIN_VALUE]))
if CONF_MAX_VALUE in config:
cg.add(var.set_max_value(config[CONF_MAX_VALUE]))
if CONF_MIN_RANGE in config:
cg.add(var.set_min_range(config[CONF_MIN_RANGE]))
if CONF_MAX_RANGE in config:
cg.add(var.set_max_range(config[CONF_MAX_RANGE]))
cg.add_optional(var.set_min_value, config.get(CONF_MIN_VALUE))
cg.add_optional(var.set_max_value, config.get(CONF_MAX_VALUE))
cg.add_optional(var.set_min_range, config.get(CONF_MIN_RANGE))
cg.add_optional(var.set_max_range, config.get(CONF_MAX_RANGE))
# Trace options
for trace in config[CONF_TRACES]:
tr = cg.new_Pvariable(trace[CONF_ID], GraphTrace())
+6 -12
View File
@@ -373,20 +373,14 @@ async def to_code(config):
await uart.register_uart_device(var, config)
cg.add(var.set_send_wifi(config[CONF_WIFI_SIGNAL]))
if CONF_CONTROL_METHOD in config:
cg.add(var.set_control_method(config[CONF_CONTROL_METHOD]))
if CONF_BEEPER in config:
cg.add(var.set_beeper_state(config[CONF_BEEPER]))
if CONF_DISPLAY in config:
cg.add(var.set_display_state(config[CONF_DISPLAY]))
if CONF_SUPPORTED_MODES in config:
cg.add(var.set_supported_modes(config[CONF_SUPPORTED_MODES]))
cg.add_optional(var.set_control_method, config.get(CONF_CONTROL_METHOD))
cg.add_optional(var.set_beeper_state, config.get(CONF_BEEPER))
cg.add_optional(var.set_display_state, config.get(CONF_DISPLAY))
cg.add_optional(var.set_supported_modes, config.get(CONF_SUPPORTED_MODES))
if CONF_SUPPORTED_SWING_MODES in config:
cg.add(var.set_supported_swing_modes(config[CONF_SUPPORTED_SWING_MODES]))
if CONF_SUPPORTED_PRESETS in config:
cg.add(var.set_supported_presets(config[CONF_SUPPORTED_PRESETS]))
if CONF_ANSWER_TIMEOUT in config:
cg.add(var.set_answer_timeout(config[CONF_ANSWER_TIMEOUT]))
cg.add_optional(var.set_supported_presets, config.get(CONF_SUPPORTED_PRESETS))
cg.add_optional(var.set_answer_timeout, config.get(CONF_ANSWER_TIMEOUT))
if CONF_ALTERNATIVE_SWING_CONTROL in config:
cg.add(
var.set_alternative_swing_control(config[CONF_ALTERNATIVE_SWING_CONTROL])
+1 -2
View File
@@ -60,5 +60,4 @@ async def to_code(config: ConfigType) -> None:
await cg.add_variable(var.set_pin_b, config[CONF_PIN_B])
await cg.add_variable(var.set_enable_pin, config.get(CONF_ENABLE_PIN))
if CONF_PRESET_MODES in config:
cg.add(var.set_preset_modes(config[CONF_PRESET_MODES]))
cg.add_optional(var.set_preset_modes, config.get(CONF_PRESET_MODES))
+1 -2
View File
@@ -91,8 +91,7 @@ def setup_home_assistant_entity(
cg.add(var.set_entity_id(cg.RawExpression(buffer)))
else:
cg.add(var.set_entity_id(config[CONF_ENTITY_ID]))
if CONF_ATTRIBUTE in config:
cg.add(var.set_attribute(config[CONF_ATTRIBUTE]))
cg.add_optional(var.set_attribute, config.get(CONF_ATTRIBUTE))
cg.add_define("USE_API_HOMEASSISTANT_STATES")
if state_subscription_count > 0:
data = _get_data()
+2 -4
View File
@@ -156,10 +156,8 @@ async def to_code(config: ConfigType) -> None:
cg.add(var.set_sensor(sens, i))
cg.add(var.set_model(config[CONF_MODEL]))
if CONF_RESOLUTION in config:
cg.add(var.set_resolution(config[CONF_RESOLUTION]))
cg.add_optional(var.set_resolution, config.get(CONF_RESOLUTION))
cg.add(var.set_request_temperature(CONF_TEMPERATURE in config))
if CONF_DISABLE_LED in config:
cg.add(var.set_disable_led(config[CONF_DISABLE_LED]))
cg.add_optional(var.set_disable_led, config.get(CONF_DISABLE_LED))
+4 -8
View File
@@ -333,11 +333,9 @@ async def to_code(config: ConfigType) -> None:
await cg.register_component(var, config)
cg.add(var.set_sda_pin(config[CONF_SDA]))
if CONF_SDA_PULLUP_ENABLED in config:
cg.add(var.set_sda_pullup_enabled(config[CONF_SDA_PULLUP_ENABLED]))
cg.add_optional(var.set_sda_pullup_enabled, config.get(CONF_SDA_PULLUP_ENABLED))
cg.add(var.set_scl_pin(config[CONF_SCL]))
if CONF_SCL_PULLUP_ENABLED in config:
cg.add(var.set_scl_pullup_enabled(config[CONF_SCL_PULLUP_ENABLED]))
cg.add_optional(var.set_scl_pullup_enabled, config.get(CONF_SCL_PULLUP_ENABLED))
cg.add(var.set_frequency(int(config[CONF_FREQUENCY])))
cg.add(var.set_scan(config[CONF_SCAN]))
@@ -350,11 +348,9 @@ async def to_code(config: ConfigType) -> None:
await cg.register_component(var, config)
cg.add(var.set_sda_pin(config[CONF_SDA]))
if CONF_SDA_PULLUP_ENABLED in config:
cg.add(var.set_sda_pullup_enabled(config[CONF_SDA_PULLUP_ENABLED]))
cg.add_optional(var.set_sda_pullup_enabled, config.get(CONF_SDA_PULLUP_ENABLED))
cg.add(var.set_scl_pin(config[CONF_SCL]))
if CONF_SCL_PULLUP_ENABLED in config:
cg.add(var.set_scl_pullup_enabled(config[CONF_SCL_PULLUP_ENABLED]))
cg.add_optional(var.set_scl_pullup_enabled, config.get(CONF_SCL_PULLUP_ENABLED))
cg.add(var.set_frequency(int(config[CONF_FREQUENCY])))
cg.add(var.set_scan(config[CONF_SCAN]))
+3 -6
View File
@@ -370,12 +370,9 @@ async def to_code(config: ConfigType) -> None:
# Helps avoid callbacks being skipped due to processor load
add_idf_sdkconfig_option("CONFIG_I2S_ISR_IRAM_SAFE", True)
if CONF_I2S_LRCLK_PIN in config:
cg.add(var.set_lrclk_pin(config[CONF_I2S_LRCLK_PIN]))
if CONF_I2S_BCLK_PIN in config:
cg.add(var.set_bclk_pin(config[CONF_I2S_BCLK_PIN]))
if CONF_I2S_MCLK_PIN in config:
cg.add(var.set_mclk_pin(config[CONF_I2S_MCLK_PIN]))
cg.add_optional(var.set_lrclk_pin, config.get(CONF_I2S_LRCLK_PIN))
cg.add_optional(var.set_bclk_pin, config.get(CONF_I2S_BCLK_PIN))
cg.add_optional(var.set_mclk_pin, config.get(CONF_I2S_MCLK_PIN))
if config[CONF_FULL_DUPLEX]:
cg.add_define("USE_I2S_AUDIO_FULL_DUPLEX")
+1 -2
View File
@@ -84,5 +84,4 @@ async def to_code(config: dict[str, Any]) -> None:
await remote_base.attach_receiver(var, config, CONF_REMOTE_RECEIVER_ID)
# Set receiver demodulation frequency if specified (metadata only, no hardware effect)
if CONF_RECEIVER_FREQUENCY in config:
cg.add(var.set_receiver_frequency(config[CONF_RECEIVER_FREQUENCY]))
cg.add_optional(var.set_receiver_frequency, config.get(CONF_RECEIVER_FREQUENCY))
+3 -6
View File
@@ -376,22 +376,19 @@ async def to_code(config: ConfigType) -> None:
)
)
cg.add(var.set_full_update_every(config[CONF_FULL_UPDATE_EVERY]))
if (reset_duration := config.get(CONF_RESET_DURATION)) is not None:
cg.add(var.set_reset_duration(reset_duration))
cg.add_optional(var.set_reset_duration, config.get(CONF_RESET_DURATION))
if config.get(CONF_INVERT_COLORS):
cg.add(var.set_invert_colors(True))
if config.get(CONF_SLEEP_WHEN_DONE):
cg.add(var.set_sleep_when_done(True))
cg.add(var.set_vcom(config[CONF_VCOM]))
cg.add(var.set_vcom_register(config[CONF_VCOM_REGISTER]))
if CONF_FORCE_TEMPERATURE in config:
cg.add(var.set_force_temperature(config[CONF_FORCE_TEMPERATURE]))
cg.add_optional(var.set_force_temperature, config.get(CONF_FORCE_TEMPERATURE))
if config.get(CONF_USE_LEGACY_DPY_AREA):
cg.add(var.set_use_legacy_dpy_area(True))
cg.add(var.set_grayscale(config[CONF_GRAYSCALE]))
cg.add(var.set_dithering(config[CONF_DITHERING]))
if (mode := config.get(CONF_UPDATE_MODE)) is not None:
cg.add(var.set_update_mode(mode))
cg.add_optional(var.set_update_mode, config.get(CONF_UPDATE_MODE))
transform = config.get(
CONF_TRANSFORM,
+8 -16
View File
@@ -94,22 +94,14 @@ async def to_code(config: ConfigType) -> None:
await cg.register_component(var, config)
for source_conf in config.get(CONF_SOURCE_ID, ()):
await cg.add_variable(var.add_provider, source_conf)
if CONF_MIN_LENGTH in config:
cg.add(var.set_min_length(config[CONF_MIN_LENGTH]))
if CONF_MAX_LENGTH in config:
cg.add(var.set_max_length(config[CONF_MAX_LENGTH]))
if CONF_START_KEYS in config:
cg.add(var.set_start_keys(config[CONF_START_KEYS]))
if CONF_END_KEYS in config:
cg.add(var.set_end_keys(config[CONF_END_KEYS]))
if CONF_END_KEY_REQUIRED in config:
cg.add(var.set_end_key_required(config[CONF_END_KEY_REQUIRED]))
if CONF_BACK_KEYS in config:
cg.add(var.set_back_keys(config[CONF_BACK_KEYS]))
if CONF_CLEAR_KEYS in config:
cg.add(var.set_clear_keys(config[CONF_CLEAR_KEYS]))
if CONF_ALLOWED_KEYS in config:
cg.add(var.set_allowed_keys(config[CONF_ALLOWED_KEYS]))
cg.add_optional(var.set_min_length, config.get(CONF_MIN_LENGTH))
cg.add_optional(var.set_max_length, config.get(CONF_MAX_LENGTH))
cg.add_optional(var.set_start_keys, config.get(CONF_START_KEYS))
cg.add_optional(var.set_end_keys, config.get(CONF_END_KEYS))
cg.add_optional(var.set_end_key_required, config.get(CONF_END_KEY_REQUIRED))
cg.add_optional(var.set_back_keys, config.get(CONF_BACK_KEYS))
cg.add_optional(var.set_clear_keys, config.get(CONF_CLEAR_KEYS))
cg.add_optional(var.set_allowed_keys, config.get(CONF_ALLOWED_KEYS))
for trigger_name, args in TRIGGER_TYPES.items():
arglist: TemplateArgsType = [(arg.type, arg.name) for arg in args]
+2 -4
View File
@@ -67,11 +67,9 @@ async def to_code(config: ConfigType) -> None:
var = cg.new_Pvariable(config[CONF_ID], gpio)
await cg.register_component(var, config)
await output.register_output(var, config)
if CONF_CHANNEL in config:
cg.add(var.set_channel(config[CONF_CHANNEL]))
cg.add_optional(var.set_channel, config.get(CONF_CHANNEL))
cg.add(var.set_frequency(config[CONF_FREQUENCY]))
if CONF_PHASE_ANGLE in config:
cg.add(var.set_phase_angle(config[CONF_PHASE_ANGLE]))
cg.add_optional(var.set_phase_angle, config.get(CONF_PHASE_ANGLE))
automation.register_apply_action(
+2 -4
View File
@@ -85,10 +85,8 @@ async def to_code(config: ConfigType) -> None:
)
cg.add(var.set_keys(table))
cg.add(var.set_debounce_time(config[CONF_DEBOUNCE_TIME]))
if CONF_HAS_DIODES in config:
cg.add(var.set_has_diodes(config[CONF_HAS_DIODES]))
if CONF_HAS_PULLDOWNS in config:
cg.add(var.set_has_pulldowns(config[CONF_HAS_PULLDOWNS]))
cg.add_optional(var.set_has_diodes, config.get(CONF_HAS_DIODES))
cg.add_optional(var.set_has_pulldowns, config.get(CONF_HAS_PULLDOWNS))
for conf in config.get(CONF_ON_KEY, []):
trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID])
cg.add(var.register_key_trigger(trigger))
+1 -2
View File
@@ -88,8 +88,7 @@ async def to_code(config: ConfigType) -> None:
cg.add(var.set_warmup_seconds(config[CONF_WARMUP_TIME]))
if CONF_DETECTION_RANGE in config:
cg.add(var.set_detection_range(config[CONF_DETECTION_RANGE]))
cg.add_optional(var.set_detection_range, config.get(CONF_DETECTION_RANGE))
NO_ARGS_ACTION_SCHEMA = maybe_simple_id(
+1 -2
View File
@@ -427,8 +427,7 @@ async def to_code(config: ConfigType) -> None:
# Only a build with a datasheet model links the power law and its libm
cg.add_define("USE_MICS_5524_DATASHEET")
cg.add(var.set_vcc(config[CONF_VCC]))
if (rl := config.get(CONF_RL)) is not None:
cg.add(var.set_rl(rl))
cg.add_optional(var.set_rl, config.get(CONF_RL))
cg.add(var.set_voltage_multiplier(_voltage_multiplier(config)))
cg.add(var.set_samples(config[CONF_SAMPLE_COUNT]))
cg.add(var.set_warmup_time(config[CONF_WARMUP_TIME]))
+4 -8
View File
@@ -225,16 +225,12 @@ async def to_code(config):
cg.add(var.set_beeper_feedback(config[CONF_BEEPER]))
cg.add(var.set_autoconf(config[CONF_AUTOCONF]))
cg.add(var.set_display_control(config[CONF_DISPLAY_CONTROL]))
if CONF_SUPPORTED_MODES in config:
cg.add(var.set_supported_modes(config[CONF_SUPPORTED_MODES]))
cg.add_optional(var.set_supported_modes, config.get(CONF_SUPPORTED_MODES))
if CONF_SUPPORTED_SWING_MODES in config:
cg.add(var.set_supported_swing_modes(config[CONF_SUPPORTED_SWING_MODES]))
if CONF_SUPPORTED_PRESETS in config:
cg.add(var.set_supported_presets(config[CONF_SUPPORTED_PRESETS]))
if CONF_CUSTOM_PRESETS in config:
cg.add(var.set_custom_presets(config[CONF_CUSTOM_PRESETS]))
if CONF_CUSTOM_FAN_MODES in config:
cg.add(var.set_custom_fan_modes(config[CONF_CUSTOM_FAN_MODES]))
cg.add_optional(var.set_supported_presets, config.get(CONF_SUPPORTED_PRESETS))
cg.add_optional(var.set_custom_presets, config.get(CONF_CUSTOM_PRESETS))
cg.add_optional(var.set_custom_fan_modes, config.get(CONF_CUSTOM_FAN_MODES))
sensors = sensor.sub_sensors(config)
await sensors(CONF_OUTDOOR_TEMPERATURE, var.set_outdoor_temperature_sensor)
await sensors(CONF_POWER_USAGE, var.set_power_sensor)
+1 -2
View File
@@ -84,5 +84,4 @@ async def to_code(config: ConfigType) -> None:
await sensors(CONF_FIELD_STRENGTH_Y, var.set_y_sensor)
await sensors(CONF_FIELD_STRENGTH_Z, var.set_z_sensor)
await sensors(CONF_HEADING, var.set_heading_sensor)
if CONF_AUTO_SET_RESET in config:
cg.add(var.set_auto_set_reset(config[CONF_AUTO_SET_RESET]))
cg.add_optional(var.set_auto_set_reset, config.get(CONF_AUTO_SET_RESET))
@@ -451,8 +451,7 @@ async def add_modbus_base_properties(
lambda_param_type: cg.MockObj = cg.float_,
lambda_return_type: Any = float,
) -> None:
if CONF_CUSTOM_PDU in config:
cg.add(var.set_custom_pdu(config[CONF_CUSTOM_PDU]))
cg.add_optional(var.set_custom_pdu, config.get(CONF_CUSTOM_PDU))
if config[CONF_RESPONSE_SIZE] > 0:
cg.add(var.set_register_size(config[CONF_RESPONSE_SIZE]))
@@ -122,8 +122,7 @@ async def to_code(config: ConfigType) -> None:
cg.add(var.set_tank_empty(CONF_SUPPORTED_TANKS_MAP[t][0]))
cg.add(var.set_tank_full(CONF_SUPPORTED_TANKS_MAP[t][1]))
if CONF_PROPANE_BUTANE_MIX in config:
cg.add(var.set_propane_butane_mix(config[CONF_PROPANE_BUTANE_MIX]))
cg.add_optional(var.set_propane_butane_mix, config.get(CONF_PROPANE_BUTANE_MIX))
sensors = sensor.sub_sensors(config)
await sensors(CONF_TEMPERATURE, var.set_temperature)
@@ -113,5 +113,4 @@ async def to_code(config: ConfigType) -> None:
# Convert the configured tilt angle (degrees) to the cosine the C++ side expects.
threshold = round(math.cos(math.radians(threshold)), 6)
cg.add(var.set_threshold(threshold))
if (duration := config.get(CONF_DURATION)) is not None:
cg.add(var.set_duration(duration))
cg.add_optional(var.set_duration, config.get(CONF_DURATION))
@@ -31,9 +31,7 @@ async def to_code(config: ConfigType) -> None:
cg.add(var.set_channel(config[CONF_CHANNEL]))
await cg.register_parented(var, hub)
if CONF_TOUCH_THRESHOLD in config:
cg.add(var.set_touch_threshold(config[CONF_TOUCH_THRESHOLD]))
if CONF_RELEASE_THRESHOLD in config:
cg.add(var.set_release_threshold(config[CONF_RELEASE_THRESHOLD]))
cg.add_optional(var.set_touch_threshold, config.get(CONF_TOUCH_THRESHOLD))
cg.add_optional(var.set_release_threshold, config.get(CONF_RELEASE_THRESHOLD))
cg.add(hub.register_channel(var))
+5 -10
View File
@@ -362,8 +362,7 @@ async def to_code(config):
cg.add(var.set_username(config[CONF_USERNAME]))
cg.add(var.set_password(config[CONF_PASSWORD]))
cg.add(var.set_clean_session(config[CONF_CLEAN_SESSION]))
if CONF_CLIENT_ID in config:
cg.add(var.set_client_id(config[CONF_CLIENT_ID]))
cg.add_optional(var.set_client_id, config.get(CONF_CLIENT_ID))
discovery = config[CONF_DISCOVERY]
discovery_retain = config[CONF_DISCOVERY_RETAIN]
@@ -561,12 +560,9 @@ def get_default_topic_for(data, component_type, name, suffix):
async def register_mqtt_component(var, config):
await cg.register_component(var, {})
if CONF_QOS in config:
cg.add(var.set_qos(config[CONF_QOS]))
if CONF_RETAIN in config:
cg.add(var.set_retain(config[CONF_RETAIN]))
if CONF_SUBSCRIBE_QOS in config:
cg.add(var.set_subscribe_qos(config[CONF_SUBSCRIBE_QOS]))
cg.add_optional(var.set_qos, config.get(CONF_QOS))
cg.add_optional(var.set_retain, config.get(CONF_RETAIN))
cg.add_optional(var.set_subscribe_qos, config.get(CONF_SUBSCRIBE_QOS))
if not config.get(CONF_DISCOVERY, True):
cg.add(var.disable_discovery())
if CONF_STATE_TOPIC in config:
@@ -577,8 +573,7 @@ async def register_mqtt_component(var, config):
config[CONF_COMMAND_TOPIC], [], cg.std_string
)
cg.add(var.set_custom_command_topic(command_topic))
if CONF_COMMAND_RETAIN in config:
cg.add(var.set_command_retain(config[CONF_COMMAND_RETAIN]))
cg.add_optional(var.set_command_retain, config.get(CONF_COMMAND_RETAIN))
if CONF_AVAILABILITY in config:
availability = config[CONF_AVAILABILITY]
if not availability:
+4 -8
View File
@@ -157,14 +157,10 @@ CONFIG_SCHEMA = (
async def to_code(config: ConfigType) -> None:
var = await i2c.new_i2c_component(config)
if (direction := config.get(CONF_DIRECTION)) is not None:
cg.add(var.set_direction(direction))
if (zero_offset := config.get(CONF_ZERO_OFFSET)) is not None:
cg.add(var.set_zero_offset(zero_offset))
if (hysteresis := config.get(CONF_HYSTERESIS)) is not None:
cg.add(var.set_hysteresis(hysteresis))
if (output_mode := config.get(CONF_OUTPUT_MODE)) is not None:
cg.add(var.set_output_mode(output_mode))
cg.add_optional(var.set_direction, config.get(CONF_DIRECTION))
cg.add_optional(var.set_zero_offset, config.get(CONF_ZERO_OFFSET))
cg.add_optional(var.set_hysteresis, config.get(CONF_HYSTERESIS))
cg.add_optional(var.set_output_mode, config.get(CONF_OUTPUT_MODE))
if abz := config.get(CONF_ABZ):
if (ppr := abz.get(CONF_PULSES_PER_REVOLUTION)) is not None:
+3 -3
View File
@@ -944,6 +944,7 @@ class TestEventSchema:
def mock_binary_sensor_codegen():
mock_var = MagicMock()
mock_parent = MagicMock()
mock_add = MagicMock()
with (
patch(
"esphome.components.motion.binary_sensor.cg.get_variable",
@@ -962,9 +963,8 @@ def mock_binary_sensor_codegen():
"esphome.components.motion.binary_sensor.cg.register_component",
new_callable=AsyncMock,
) as mock_reg_comp,
patch(
"esphome.components.motion.binary_sensor.cg.add",
) as mock_add,
patch("esphome.components.motion.binary_sensor.cg.add", mock_add),
patch("esphome.cpp_helpers.add", mock_add),
):
yield {
"get_variable": mock_get_var,