diff --git a/esphome/components/bedjet/fan/__init__.py b/esphome/components/bedjet/fan/__init__.py index fdf0636153..a4a611fefc 100644 --- a/esphome/components/bedjet/fan/__init__.py +++ b/esphome/components/bedjet/fan/__init__.py @@ -1,31 +1,22 @@ -import logging - import esphome.codegen as cg from esphome.components import fan import esphome.config_validation as cv -from esphome.const import CONF_ID from .. import BEDJET_CLIENT_SCHEMA, bedjet_ns, register_bedjet_child -_LOGGER = logging.getLogger(__name__) CODEOWNERS = ["@jhansche"] DEPENDENCIES = ["bedjet"] BedJetFan = bedjet_ns.class_("BedJetFan", fan.Fan, cg.PollingComponent) CONFIG_SCHEMA = ( - fan.FAN_SCHEMA.extend( - { - cv.GenerateID(): cv.declare_id(BedJetFan), - } - ) + fan.fan_schema(BedJetFan) .extend(cv.polling_component_schema("60s")) .extend(BEDJET_CLIENT_SCHEMA) ) async def to_code(config): - var = cg.new_Pvariable(config[CONF_ID]) + var = await fan.new_fan(config) await cg.register_component(var, config) - await fan.register_fan(var, config) await register_bedjet_child(var, config) diff --git a/esphome/components/binary/fan/__init__.py b/esphome/components/binary/fan/__init__.py index a504ef642c..dadcf52372 100644 --- a/esphome/components/binary/fan/__init__.py +++ b/esphome/components/binary/fan/__init__.py @@ -1,31 +1,28 @@ import esphome.codegen as cg from esphome.components import fan, output import esphome.config_validation as cv -from esphome.const import ( - CONF_DIRECTION_OUTPUT, - CONF_OSCILLATION_OUTPUT, - CONF_OUTPUT, - CONF_OUTPUT_ID, -) +from esphome.const import CONF_DIRECTION_OUTPUT, CONF_OSCILLATION_OUTPUT, CONF_OUTPUT from .. import binary_ns BinaryFan = binary_ns.class_("BinaryFan", fan.Fan, cg.Component) -CONFIG_SCHEMA = fan.FAN_SCHEMA.extend( - { - cv.GenerateID(CONF_OUTPUT_ID): cv.declare_id(BinaryFan), - cv.Required(CONF_OUTPUT): cv.use_id(output.BinaryOutput), - cv.Optional(CONF_DIRECTION_OUTPUT): cv.use_id(output.BinaryOutput), - cv.Optional(CONF_OSCILLATION_OUTPUT): cv.use_id(output.BinaryOutput), - } -).extend(cv.COMPONENT_SCHEMA) +CONFIG_SCHEMA = ( + fan.fan_schema(BinaryFan) + .extend( + { + cv.Required(CONF_OUTPUT): cv.use_id(output.BinaryOutput), + cv.Optional(CONF_DIRECTION_OUTPUT): cv.use_id(output.BinaryOutput), + cv.Optional(CONF_OSCILLATION_OUTPUT): cv.use_id(output.BinaryOutput), + } + ) + .extend(cv.COMPONENT_SCHEMA) +) async def to_code(config): - var = cg.new_Pvariable(config[CONF_OUTPUT_ID]) + var = await fan.new_fan(config) await cg.register_component(var, config) - await fan.register_fan(var, config) output_ = await cg.get_variable(config[CONF_OUTPUT]) cg.add(var.set_output(output_)) diff --git a/esphome/components/copy/fan/__init__.py b/esphome/components/copy/fan/__init__.py index 04872fb029..a208e5f80a 100644 --- a/esphome/components/copy/fan/__init__.py +++ b/esphome/components/copy/fan/__init__.py @@ -1,7 +1,7 @@ import esphome.codegen as cg from esphome.components import fan import esphome.config_validation as cv -from esphome.const import CONF_ENTITY_CATEGORY, CONF_ICON, CONF_ID, CONF_SOURCE_ID +from esphome.const import CONF_ENTITY_CATEGORY, CONF_ICON, CONF_SOURCE_ID from esphome.core.entity_helpers import inherit_property_from from .. import copy_ns @@ -9,12 +9,15 @@ from .. import copy_ns CopyFan = copy_ns.class_("CopyFan", fan.Fan, cg.Component) -CONFIG_SCHEMA = fan.FAN_SCHEMA.extend( - { - cv.GenerateID(): cv.declare_id(CopyFan), - cv.Required(CONF_SOURCE_ID): cv.use_id(fan.Fan), - } -).extend(cv.COMPONENT_SCHEMA) +CONFIG_SCHEMA = ( + fan.fan_schema(CopyFan) + .extend( + { + cv.Required(CONF_SOURCE_ID): cv.use_id(fan.Fan), + } + ) + .extend(cv.COMPONENT_SCHEMA) +) FINAL_VALIDATE_SCHEMA = cv.All( inherit_property_from(CONF_ICON, CONF_SOURCE_ID), @@ -23,8 +26,7 @@ FINAL_VALIDATE_SCHEMA = cv.All( async def to_code(config): - var = cg.new_Pvariable(config[CONF_ID]) - await fan.register_fan(var, config) + var = await fan.new_fan(config) await cg.register_component(var, config) source = await cg.get_variable(config[CONF_SOURCE_ID]) diff --git a/esphome/components/hbridge/fan/__init__.py b/esphome/components/hbridge/fan/__init__.py index 4309a64359..31a20a8981 100644 --- a/esphome/components/hbridge/fan/__init__.py +++ b/esphome/components/hbridge/fan/__init__.py @@ -30,25 +30,28 @@ DECAY_MODE_OPTIONS = { # Actions BrakeAction = hbridge_ns.class_("BrakeAction", automation.Action) -CONFIG_SCHEMA = fan.FAN_SCHEMA.extend( - { - cv.GenerateID(CONF_ID): cv.declare_id(HBridgeFan), - cv.Required(CONF_PIN_A): cv.use_id(output.FloatOutput), - cv.Required(CONF_PIN_B): cv.use_id(output.FloatOutput), - cv.Optional(CONF_DECAY_MODE, default="SLOW"): cv.enum( - DECAY_MODE_OPTIONS, upper=True - ), - cv.Optional(CONF_SPEED_COUNT, default=100): cv.int_range(min=1), - cv.Optional(CONF_ENABLE_PIN): cv.use_id(output.FloatOutput), - cv.Optional(CONF_PRESET_MODES): validate_preset_modes, - } -).extend(cv.COMPONENT_SCHEMA) +CONFIG_SCHEMA = ( + fan.fan_schema(HBridgeFan) + .extend( + { + cv.Required(CONF_PIN_A): cv.use_id(output.FloatOutput), + cv.Required(CONF_PIN_B): cv.use_id(output.FloatOutput), + cv.Optional(CONF_DECAY_MODE, default="SLOW"): cv.enum( + DECAY_MODE_OPTIONS, upper=True + ), + cv.Optional(CONF_SPEED_COUNT, default=100): cv.int_range(min=1), + cv.Optional(CONF_ENABLE_PIN): cv.use_id(output.FloatOutput), + cv.Optional(CONF_PRESET_MODES): validate_preset_modes, + } + ) + .extend(cv.COMPONENT_SCHEMA) +) @automation.register_action( "fan.hbridge.brake", BrakeAction, - maybe_simple_id({cv.Required(CONF_ID): cv.use_id(HBridgeFan)}), + maybe_simple_id({cv.GenerateID(): cv.use_id(HBridgeFan)}), ) async def fan_hbridge_brake_to_code(config, action_id, template_arg, args): paren = await cg.get_variable(config[CONF_ID]) @@ -56,13 +59,12 @@ async def fan_hbridge_brake_to_code(config, action_id, template_arg, args): async def to_code(config): - var = cg.new_Pvariable( - config[CONF_ID], + var = await fan.new_fan( + config, config[CONF_SPEED_COUNT], config[CONF_DECAY_MODE], ) await cg.register_component(var, config) - await fan.register_fan(var, config) pin_a_ = await cg.get_variable(config[CONF_PIN_A]) cg.add(var.set_pin_a(pin_a_)) pin_b_ = await cg.get_variable(config[CONF_PIN_B]) diff --git a/esphome/components/speed/fan/__init__.py b/esphome/components/speed/fan/__init__.py index fe43ac6a3a..3c495f3160 100644 --- a/esphome/components/speed/fan/__init__.py +++ b/esphome/components/speed/fan/__init__.py @@ -6,7 +6,6 @@ from esphome.const import ( CONF_DIRECTION_OUTPUT, CONF_OSCILLATION_OUTPUT, CONF_OUTPUT, - CONF_OUTPUT_ID, CONF_PRESET_MODES, CONF_SPEED, CONF_SPEED_COUNT, @@ -16,25 +15,27 @@ from .. import speed_ns SpeedFan = speed_ns.class_("SpeedFan", cg.Component, fan.Fan) -CONFIG_SCHEMA = fan.FAN_SCHEMA.extend( - { - cv.GenerateID(CONF_OUTPUT_ID): cv.declare_id(SpeedFan), - cv.Required(CONF_OUTPUT): cv.use_id(output.FloatOutput), - cv.Optional(CONF_OSCILLATION_OUTPUT): cv.use_id(output.BinaryOutput), - cv.Optional(CONF_DIRECTION_OUTPUT): cv.use_id(output.BinaryOutput), - cv.Optional(CONF_SPEED): cv.invalid( - "Configuring individual speeds is deprecated." - ), - cv.Optional(CONF_SPEED_COUNT, default=100): cv.int_range(min=1), - cv.Optional(CONF_PRESET_MODES): validate_preset_modes, - } -).extend(cv.COMPONENT_SCHEMA) +CONFIG_SCHEMA = ( + fan.fan_schema(SpeedFan) + .extend( + { + cv.Required(CONF_OUTPUT): cv.use_id(output.FloatOutput), + cv.Optional(CONF_OSCILLATION_OUTPUT): cv.use_id(output.BinaryOutput), + cv.Optional(CONF_DIRECTION_OUTPUT): cv.use_id(output.BinaryOutput), + cv.Optional(CONF_SPEED): cv.invalid( + "Configuring individual speeds is deprecated." + ), + cv.Optional(CONF_SPEED_COUNT, default=100): cv.int_range(min=1), + cv.Optional(CONF_PRESET_MODES): validate_preset_modes, + } + ) + .extend(cv.COMPONENT_SCHEMA) +) async def to_code(config): - var = cg.new_Pvariable(config[CONF_OUTPUT_ID], config[CONF_SPEED_COUNT]) + var = await fan.new_fan(config, config[CONF_SPEED_COUNT]) await cg.register_component(var, config) - await fan.register_fan(var, config) output_ = await cg.get_variable(config[CONF_OUTPUT]) cg.add(var.set_output(output_)) diff --git a/esphome/components/template/fan/__init__.py b/esphome/components/template/fan/__init__.py index c885866d40..72b20e1efe 100644 --- a/esphome/components/template/fan/__init__.py +++ b/esphome/components/template/fan/__init__.py @@ -2,7 +2,7 @@ import esphome.codegen as cg from esphome.components import fan from esphome.components.fan import validate_preset_modes import esphome.config_validation as cv -from esphome.const import CONF_OUTPUT_ID, CONF_PRESET_MODES, CONF_SPEED_COUNT +from esphome.const import CONF_PRESET_MODES, CONF_SPEED_COUNT from .. import template_ns @@ -13,21 +13,23 @@ TemplateFan = template_ns.class_("TemplateFan", cg.Component, fan.Fan) CONF_HAS_DIRECTION = "has_direction" CONF_HAS_OSCILLATING = "has_oscillating" -CONFIG_SCHEMA = fan.FAN_SCHEMA.extend( - { - cv.GenerateID(CONF_OUTPUT_ID): cv.declare_id(TemplateFan), - cv.Optional(CONF_HAS_DIRECTION, default=False): cv.boolean, - cv.Optional(CONF_HAS_OSCILLATING, default=False): cv.boolean, - cv.Optional(CONF_SPEED_COUNT): cv.int_range(min=1), - cv.Optional(CONF_PRESET_MODES): validate_preset_modes, - } -).extend(cv.COMPONENT_SCHEMA) +CONFIG_SCHEMA = ( + fan.fan_schema(TemplateFan) + .extend( + { + cv.Optional(CONF_HAS_DIRECTION, default=False): cv.boolean, + cv.Optional(CONF_HAS_OSCILLATING, default=False): cv.boolean, + cv.Optional(CONF_SPEED_COUNT): cv.int_range(min=1), + cv.Optional(CONF_PRESET_MODES): validate_preset_modes, + } + ) + .extend(cv.COMPONENT_SCHEMA) +) async def to_code(config): - var = cg.new_Pvariable(config[CONF_OUTPUT_ID]) + var = await fan.new_fan(config) await cg.register_component(var, config) - await fan.register_fan(var, config) cg.add(var.set_has_direction(config[CONF_HAS_DIRECTION])) cg.add(var.set_has_oscillating(config[CONF_HAS_OSCILLATING]))