mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 15:12:06 +00:00 
			
		
		
		
	[climate] Update components to use `climate_schema(...)` (#8788)
				
					
				
			This commit is contained in:
		| @@ -1,7 +1,7 @@ | |||||||
| import esphome.codegen as cg | import esphome.codegen as cg | ||||||
| from esphome.components import ble_client, climate | from esphome.components import ble_client, climate | ||||||
| import esphome.config_validation as cv | import esphome.config_validation as cv | ||||||
| from esphome.const import CONF_ID, CONF_UNIT_OF_MEASUREMENT | from esphome.const import CONF_UNIT_OF_MEASUREMENT | ||||||
|  |  | ||||||
| UNITS = { | UNITS = { | ||||||
|     "f": "f", |     "f": "f", | ||||||
| @@ -17,9 +17,9 @@ Anova = anova_ns.class_( | |||||||
| ) | ) | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = ( | CONFIG_SCHEMA = ( | ||||||
|     climate.CLIMATE_SCHEMA.extend( |     climate.climate_schema(Anova) | ||||||
|  |     .extend( | ||||||
|         { |         { | ||||||
|             cv.GenerateID(): cv.declare_id(Anova), |  | ||||||
|             cv.Required(CONF_UNIT_OF_MEASUREMENT): cv.enum(UNITS), |             cv.Required(CONF_UNIT_OF_MEASUREMENT): cv.enum(UNITS), | ||||||
|         } |         } | ||||||
|     ) |     ) | ||||||
| @@ -29,8 +29,7 @@ CONFIG_SCHEMA = ( | |||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     var = await climate.new_climate(config) | ||||||
|     await cg.register_component(var, config) |     await cg.register_component(var, config) | ||||||
|     await climate.register_climate(var, config) |  | ||||||
|     await ble_client.register_ble_node(var, config) |     await ble_client.register_ble_node(var, config) | ||||||
|     cg.add(var.set_unit_of_measurement(config[CONF_UNIT_OF_MEASUREMENT])) |     cg.add(var.set_unit_of_measurement(config[CONF_UNIT_OF_MEASUREMENT])) | ||||||
|   | |||||||
| @@ -1,7 +1,5 @@ | |||||||
| import esphome.codegen as cg | import esphome.codegen as cg | ||||||
| from esphome.components import climate_ir | from esphome.components import climate_ir | ||||||
| import esphome.config_validation as cv |  | ||||||
| from esphome.const import CONF_ID |  | ||||||
|  |  | ||||||
| AUTO_LOAD = ["climate_ir"] | AUTO_LOAD = ["climate_ir"] | ||||||
| CODEOWNERS = ["@bazuchan"] | CODEOWNERS = ["@bazuchan"] | ||||||
| @@ -9,13 +7,8 @@ CODEOWNERS = ["@bazuchan"] | |||||||
| ballu_ns = cg.esphome_ns.namespace("ballu") | ballu_ns = cg.esphome_ns.namespace("ballu") | ||||||
| BalluClimate = ballu_ns.class_("BalluClimate", climate_ir.ClimateIR) | BalluClimate = ballu_ns.class_("BalluClimate", climate_ir.ClimateIR) | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = climate_ir.CLIMATE_IR_WITH_RECEIVER_SCHEMA.extend( | CONFIG_SCHEMA = climate_ir.climare_ir_with_receiver_schema(BalluClimate) | ||||||
|     { |  | ||||||
|         cv.GenerateID(): cv.declare_id(BalluClimate), |  | ||||||
|     } |  | ||||||
| ) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     await climate_ir.new_climate_ir(config) | ||||||
|     await climate_ir.register_climate_ir(var, config) |  | ||||||
|   | |||||||
| @@ -9,7 +9,6 @@ from esphome.const import ( | |||||||
|     CONF_DEFAULT_TARGET_TEMPERATURE_LOW, |     CONF_DEFAULT_TARGET_TEMPERATURE_LOW, | ||||||
|     CONF_HEAT_ACTION, |     CONF_HEAT_ACTION, | ||||||
|     CONF_HUMIDITY_SENSOR, |     CONF_HUMIDITY_SENSOR, | ||||||
|     CONF_ID, |  | ||||||
|     CONF_IDLE_ACTION, |     CONF_IDLE_ACTION, | ||||||
|     CONF_SENSOR, |     CONF_SENSOR, | ||||||
| ) | ) | ||||||
| @@ -19,9 +18,9 @@ BangBangClimate = bang_bang_ns.class_("BangBangClimate", climate.Climate, cg.Com | |||||||
| BangBangClimateTargetTempConfig = bang_bang_ns.struct("BangBangClimateTargetTempConfig") | BangBangClimateTargetTempConfig = bang_bang_ns.struct("BangBangClimateTargetTempConfig") | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = cv.All( | CONFIG_SCHEMA = cv.All( | ||||||
|     climate.CLIMATE_SCHEMA.extend( |     climate.climate_schema(BangBangClimate) | ||||||
|  |     .extend( | ||||||
|         { |         { | ||||||
|             cv.GenerateID(): cv.declare_id(BangBangClimate), |  | ||||||
|             cv.Required(CONF_SENSOR): cv.use_id(sensor.Sensor), |             cv.Required(CONF_SENSOR): cv.use_id(sensor.Sensor), | ||||||
|             cv.Optional(CONF_HUMIDITY_SENSOR): cv.use_id(sensor.Sensor), |             cv.Optional(CONF_HUMIDITY_SENSOR): cv.use_id(sensor.Sensor), | ||||||
|             cv.Required(CONF_DEFAULT_TARGET_TEMPERATURE_LOW): cv.temperature, |             cv.Required(CONF_DEFAULT_TARGET_TEMPERATURE_LOW): cv.temperature, | ||||||
| @@ -36,15 +35,15 @@ CONFIG_SCHEMA = cv.All( | |||||||
|                 } |                 } | ||||||
|             ), |             ), | ||||||
|         } |         } | ||||||
|     ).extend(cv.COMPONENT_SCHEMA), |     ) | ||||||
|  |     .extend(cv.COMPONENT_SCHEMA), | ||||||
|     cv.has_at_least_one_key(CONF_COOL_ACTION, CONF_HEAT_ACTION), |     cv.has_at_least_one_key(CONF_COOL_ACTION, CONF_HEAT_ACTION), | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     var = await climate.new_climate(config) | ||||||
|     await cg.register_component(var, config) |     await cg.register_component(var, config) | ||||||
|     await climate.register_climate(var, config) |  | ||||||
|  |  | ||||||
|     sens = await cg.get_variable(config[CONF_SENSOR]) |     sens = await cg.get_variable(config[CONF_SENSOR]) | ||||||
|     cg.add(var.set_sensor(sens)) |     cg.add(var.set_sensor(sens)) | ||||||
|   | |||||||
| @@ -1,11 +1,8 @@ | |||||||
| import logging |  | ||||||
|  |  | ||||||
| import esphome.codegen as cg | import esphome.codegen as cg | ||||||
| from esphome.components import ble_client, climate | from esphome.components import ble_client, climate | ||||||
| import esphome.config_validation as cv | import esphome.config_validation as cv | ||||||
| from esphome.const import ( | from esphome.const import ( | ||||||
|     CONF_HEAT_MODE, |     CONF_HEAT_MODE, | ||||||
|     CONF_ID, |  | ||||||
|     CONF_RECEIVE_TIMEOUT, |     CONF_RECEIVE_TIMEOUT, | ||||||
|     CONF_TEMPERATURE_SOURCE, |     CONF_TEMPERATURE_SOURCE, | ||||||
|     CONF_TIME_ID, |     CONF_TIME_ID, | ||||||
| @@ -13,7 +10,6 @@ from esphome.const import ( | |||||||
|  |  | ||||||
| from .. import BEDJET_CLIENT_SCHEMA, bedjet_ns, register_bedjet_child | from .. import BEDJET_CLIENT_SCHEMA, bedjet_ns, register_bedjet_child | ||||||
|  |  | ||||||
| _LOGGER = logging.getLogger(__name__) |  | ||||||
| CODEOWNERS = ["@jhansche"] | CODEOWNERS = ["@jhansche"] | ||||||
| DEPENDENCIES = ["bedjet"] | DEPENDENCIES = ["bedjet"] | ||||||
|  |  | ||||||
| @@ -30,9 +26,9 @@ BEDJET_TEMPERATURE_SOURCES = { | |||||||
| } | } | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = ( | CONFIG_SCHEMA = ( | ||||||
|     climate.CLIMATE_SCHEMA.extend( |     climate.climate_schema(BedJetClimate) | ||||||
|  |     .extend( | ||||||
|         { |         { | ||||||
|             cv.GenerateID(): cv.declare_id(BedJetClimate), |  | ||||||
|             cv.Optional(CONF_HEAT_MODE, default="heat"): cv.enum( |             cv.Optional(CONF_HEAT_MODE, default="heat"): cv.enum( | ||||||
|                 BEDJET_HEAT_MODES, lower=True |                 BEDJET_HEAT_MODES, lower=True | ||||||
|             ), |             ), | ||||||
| @@ -63,9 +59,8 @@ CONFIG_SCHEMA = ( | |||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     var = await climate.new_climate(config) | ||||||
|     await cg.register_component(var, config) |     await cg.register_component(var, config) | ||||||
|     await climate.register_climate(var, config) |  | ||||||
|     await register_bedjet_child(var, config) |     await register_bedjet_child(var, config) | ||||||
|  |  | ||||||
|     cg.add(var.set_heating_mode(config[CONF_HEAT_MODE])) |     cg.add(var.set_heating_mode(config[CONF_HEAT_MODE])) | ||||||
|   | |||||||
| @@ -1,7 +1,13 @@ | |||||||
|  | import logging | ||||||
|  |  | ||||||
|  | from esphome import core | ||||||
| import esphome.codegen as cg | import esphome.codegen as cg | ||||||
| from esphome.components import climate, remote_base, sensor | from esphome.components import climate, remote_base, sensor | ||||||
| import esphome.config_validation as cv | import esphome.config_validation as cv | ||||||
| from esphome.const import CONF_SENSOR, CONF_SUPPORTS_COOL, CONF_SUPPORTS_HEAT | from esphome.const import CONF_ID, CONF_SENSOR, CONF_SUPPORTS_COOL, CONF_SUPPORTS_HEAT | ||||||
|  | from esphome.cpp_generator import MockObjClass | ||||||
|  |  | ||||||
|  | _LOGGER = logging.getLogger(__name__) | ||||||
|  |  | ||||||
| DEPENDENCIES = ["remote_transmitter"] | DEPENDENCIES = ["remote_transmitter"] | ||||||
| AUTO_LOAD = ["sensor", "remote_base"] | AUTO_LOAD = ["sensor", "remote_base"] | ||||||
| @@ -16,30 +22,58 @@ ClimateIR = climate_ir_ns.class_( | |||||||
|     remote_base.RemoteTransmittable, |     remote_base.RemoteTransmittable, | ||||||
| ) | ) | ||||||
|  |  | ||||||
| CLIMATE_IR_SCHEMA = ( |  | ||||||
|     climate.CLIMATE_SCHEMA.extend( | def climate_ir_schema( | ||||||
|  |     class_: MockObjClass, | ||||||
|  | ) -> cv.Schema: | ||||||
|  |     return ( | ||||||
|  |         climate.climate_schema(class_) | ||||||
|  |         .extend( | ||||||
|  |             { | ||||||
|  |                 cv.Optional(CONF_SUPPORTS_COOL, default=True): cv.boolean, | ||||||
|  |                 cv.Optional(CONF_SUPPORTS_HEAT, default=True): cv.boolean, | ||||||
|  |                 cv.Optional(CONF_SENSOR): cv.use_id(sensor.Sensor), | ||||||
|  |             } | ||||||
|  |         ) | ||||||
|  |         .extend(cv.COMPONENT_SCHEMA) | ||||||
|  |         .extend(remote_base.REMOTE_TRANSMITTABLE_SCHEMA) | ||||||
|  |     ) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def climare_ir_with_receiver_schema( | ||||||
|  |     class_: MockObjClass, | ||||||
|  | ) -> cv.Schema: | ||||||
|  |     return climate_ir_schema(class_).extend( | ||||||
|         { |         { | ||||||
|             cv.Optional(CONF_SUPPORTS_COOL, default=True): cv.boolean, |             cv.Optional(remote_base.CONF_RECEIVER_ID): cv.use_id( | ||||||
|             cv.Optional(CONF_SUPPORTS_HEAT, default=True): cv.boolean, |                 remote_base.RemoteReceiverBase | ||||||
|             cv.Optional(CONF_SENSOR): cv.use_id(sensor.Sensor), |             ), | ||||||
|         } |         } | ||||||
|     ) |     ) | ||||||
|     .extend(cv.COMPONENT_SCHEMA) |  | ||||||
|     .extend(remote_base.REMOTE_TRANSMITTABLE_SCHEMA) |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| CLIMATE_IR_WITH_RECEIVER_SCHEMA = CLIMATE_IR_SCHEMA.extend( |  | ||||||
|     { | # Remove before 2025.11.0 | ||||||
|         cv.Optional(remote_base.CONF_RECEIVER_ID): cv.use_id( | def deprecated_schema_constant(config): | ||||||
|             remote_base.RemoteReceiverBase |     type: str = "unknown" | ||||||
|         ), |     if (id := config.get(CONF_ID)) is not None and isinstance(id, core.ID): | ||||||
|     } |         type = str(id.type).split("::", maxsplit=1)[0] | ||||||
| ) |     _LOGGER.warning( | ||||||
|  |         "Using `climate_ir.CLIMATE_IR_WITH_RECEIVER_SCHEMA` is deprecated and will be removed in ESPHome 2025.11.0. " | ||||||
|  |         "Please use `climate_ir.climare_ir_with_receiver_schema(...)` instead. " | ||||||
|  |         "If you are seeing this, report an issue to the external_component author and ask them to update it. " | ||||||
|  |         "https://developers.esphome.io/blog/2025/05/14/_schema-deprecations/. " | ||||||
|  |         "Component using this schema: %s", | ||||||
|  |         type, | ||||||
|  |     ) | ||||||
|  |     return config | ||||||
|  |  | ||||||
|  |  | ||||||
|  | CLIMATE_IR_WITH_RECEIVER_SCHEMA = climare_ir_with_receiver_schema(ClimateIR) | ||||||
|  | CLIMATE_IR_WITH_RECEIVER_SCHEMA.add_extra(deprecated_schema_constant) | ||||||
|  |  | ||||||
|  |  | ||||||
| async def register_climate_ir(var, config): | async def register_climate_ir(var, config): | ||||||
|     await cg.register_component(var, config) |     await cg.register_component(var, config) | ||||||
|     await climate.register_climate(var, config) |  | ||||||
|     await remote_base.register_transmittable(var, config) |     await remote_base.register_transmittable(var, config) | ||||||
|     cg.add(var.set_supports_cool(config[CONF_SUPPORTS_COOL])) |     cg.add(var.set_supports_cool(config[CONF_SUPPORTS_COOL])) | ||||||
|     cg.add(var.set_supports_heat(config[CONF_SUPPORTS_HEAT])) |     cg.add(var.set_supports_heat(config[CONF_SUPPORTS_HEAT])) | ||||||
| @@ -48,3 +82,9 @@ async def register_climate_ir(var, config): | |||||||
|     if sensor_id := config.get(CONF_SENSOR): |     if sensor_id := config.get(CONF_SENSOR): | ||||||
|         sens = await cg.get_variable(sensor_id) |         sens = await cg.get_variable(sensor_id) | ||||||
|         cg.add(var.set_sensor(sens)) |         cg.add(var.set_sensor(sens)) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | async def new_climate_ir(config, *args): | ||||||
|  |     var = await climate.new_climate(config, *args) | ||||||
|  |     await register_climate_ir(var, config) | ||||||
|  |     return var | ||||||
|   | |||||||
| @@ -1,7 +1,6 @@ | |||||||
| import esphome.codegen as cg | import esphome.codegen as cg | ||||||
| from esphome.components import climate_ir | from esphome.components import climate_ir | ||||||
| import esphome.config_validation as cv | import esphome.config_validation as cv | ||||||
| from esphome.const import CONF_ID |  | ||||||
|  |  | ||||||
| AUTO_LOAD = ["climate_ir"] | AUTO_LOAD = ["climate_ir"] | ||||||
|  |  | ||||||
| @@ -14,9 +13,8 @@ CONF_BIT_HIGH = "bit_high" | |||||||
| CONF_BIT_ONE_LOW = "bit_one_low" | CONF_BIT_ONE_LOW = "bit_one_low" | ||||||
| CONF_BIT_ZERO_LOW = "bit_zero_low" | CONF_BIT_ZERO_LOW = "bit_zero_low" | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = climate_ir.CLIMATE_IR_WITH_RECEIVER_SCHEMA.extend( | CONFIG_SCHEMA = climate_ir.climare_ir_with_receiver_schema(LgIrClimate).extend( | ||||||
|     { |     { | ||||||
|         cv.GenerateID(): cv.declare_id(LgIrClimate), |  | ||||||
|         cv.Optional( |         cv.Optional( | ||||||
|             CONF_HEADER_HIGH, default="8000us" |             CONF_HEADER_HIGH, default="8000us" | ||||||
|         ): cv.positive_time_period_microseconds, |         ): cv.positive_time_period_microseconds, | ||||||
| @@ -37,8 +35,7 @@ CONFIG_SCHEMA = climate_ir.CLIMATE_IR_WITH_RECEIVER_SCHEMA.extend( | |||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     var = await climate_ir.new_climate_ir(config) | ||||||
|     await climate_ir.register_climate_ir(var, config) |  | ||||||
|  |  | ||||||
|     cg.add(var.set_header_high(config[CONF_HEADER_HIGH])) |     cg.add(var.set_header_high(config[CONF_HEADER_HIGH])) | ||||||
|     cg.add(var.set_header_low(config[CONF_HEADER_LOW])) |     cg.add(var.set_header_low(config[CONF_HEADER_LOW])) | ||||||
|   | |||||||
| @@ -1,7 +1,5 @@ | |||||||
| import esphome.codegen as cg | import esphome.codegen as cg | ||||||
| from esphome.components import climate_ir | from esphome.components import climate_ir | ||||||
| import esphome.config_validation as cv |  | ||||||
| from esphome.const import CONF_ID |  | ||||||
|  |  | ||||||
| AUTO_LOAD = ["climate_ir"] | AUTO_LOAD = ["climate_ir"] | ||||||
| CODEOWNERS = ["@glmnet"] | CODEOWNERS = ["@glmnet"] | ||||||
| @@ -9,13 +7,8 @@ CODEOWNERS = ["@glmnet"] | |||||||
| coolix_ns = cg.esphome_ns.namespace("coolix") | coolix_ns = cg.esphome_ns.namespace("coolix") | ||||||
| CoolixClimate = coolix_ns.class_("CoolixClimate", climate_ir.ClimateIR) | CoolixClimate = coolix_ns.class_("CoolixClimate", climate_ir.ClimateIR) | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = climate_ir.CLIMATE_IR_WITH_RECEIVER_SCHEMA.extend( | CONFIG_SCHEMA = climate_ir.climare_ir_with_receiver_schema(CoolixClimate) | ||||||
|     { |  | ||||||
|         cv.GenerateID(): cv.declare_id(CoolixClimate), |  | ||||||
|     } |  | ||||||
| ) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     await climate_ir.new_climate_ir(config) | ||||||
|     await climate_ir.register_climate_ir(var, config) |  | ||||||
|   | |||||||
| @@ -1,20 +1,13 @@ | |||||||
| import esphome.codegen as cg | import esphome.codegen as cg | ||||||
| from esphome.components import climate_ir | from esphome.components import climate_ir | ||||||
| import esphome.config_validation as cv |  | ||||||
| from esphome.const import CONF_ID |  | ||||||
|  |  | ||||||
| AUTO_LOAD = ["climate_ir"] | AUTO_LOAD = ["climate_ir"] | ||||||
|  |  | ||||||
| daikin_ns = cg.esphome_ns.namespace("daikin") | daikin_ns = cg.esphome_ns.namespace("daikin") | ||||||
| DaikinClimate = daikin_ns.class_("DaikinClimate", climate_ir.ClimateIR) | DaikinClimate = daikin_ns.class_("DaikinClimate", climate_ir.ClimateIR) | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = climate_ir.CLIMATE_IR_WITH_RECEIVER_SCHEMA.extend( | CONFIG_SCHEMA = climate_ir.climare_ir_with_receiver_schema(DaikinClimate) | ||||||
|     { |  | ||||||
|         cv.GenerateID(): cv.declare_id(DaikinClimate), |  | ||||||
|     } |  | ||||||
| ) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     await climate_ir.new_climate_ir(config) | ||||||
|     await climate_ir.register_climate_ir(var, config) |  | ||||||
|   | |||||||
| @@ -1,18 +1,13 @@ | |||||||
| import esphome.codegen as cg | import esphome.codegen as cg | ||||||
| from esphome.components import climate_ir | from esphome.components import climate_ir | ||||||
| import esphome.config_validation as cv |  | ||||||
| from esphome.const import CONF_ID |  | ||||||
|  |  | ||||||
| AUTO_LOAD = ["climate_ir"] | AUTO_LOAD = ["climate_ir"] | ||||||
|  |  | ||||||
| daikin_arc_ns = cg.esphome_ns.namespace("daikin_arc") | daikin_arc_ns = cg.esphome_ns.namespace("daikin_arc") | ||||||
| DaikinArcClimate = daikin_arc_ns.class_("DaikinArcClimate", climate_ir.ClimateIR) | DaikinArcClimate = daikin_arc_ns.class_("DaikinArcClimate", climate_ir.ClimateIR) | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = climate_ir.CLIMATE_IR_WITH_RECEIVER_SCHEMA.extend( | CONFIG_SCHEMA = climate_ir.climare_ir_with_receiver_schema(DaikinArcClimate) | ||||||
|     {cv.GenerateID(): cv.declare_id(DaikinArcClimate)} |  | ||||||
| ) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     await climate_ir.new_climate_ir(config) | ||||||
|     await climate_ir.register_climate_ir(var, config) |  | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| import esphome.codegen as cg | import esphome.codegen as cg | ||||||
| from esphome.components import climate_ir | from esphome.components import climate_ir | ||||||
| import esphome.config_validation as cv | import esphome.config_validation as cv | ||||||
| from esphome.const import CONF_ID, CONF_USE_FAHRENHEIT | from esphome.const import CONF_USE_FAHRENHEIT | ||||||
|  |  | ||||||
| AUTO_LOAD = ["climate_ir"] | AUTO_LOAD = ["climate_ir"] | ||||||
|  |  | ||||||
| @@ -9,15 +9,13 @@ daikin_brc_ns = cg.esphome_ns.namespace("daikin_brc") | |||||||
| DaikinBrcClimate = daikin_brc_ns.class_("DaikinBrcClimate", climate_ir.ClimateIR) | DaikinBrcClimate = daikin_brc_ns.class_("DaikinBrcClimate", climate_ir.ClimateIR) | ||||||
|  |  | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = climate_ir.CLIMATE_IR_WITH_RECEIVER_SCHEMA.extend( | CONFIG_SCHEMA = climate_ir.climare_ir_with_receiver_schema(DaikinBrcClimate).extend( | ||||||
|     { |     { | ||||||
|         cv.GenerateID(): cv.declare_id(DaikinBrcClimate), |  | ||||||
|         cv.Optional(CONF_USE_FAHRENHEIT, default=False): cv.boolean, |         cv.Optional(CONF_USE_FAHRENHEIT, default=False): cv.boolean, | ||||||
|     } |     } | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     var = await climate_ir.new_climate_ir(config) | ||||||
|     await climate_ir.register_climate_ir(var, config) |  | ||||||
|     cg.add(var.set_fahrenheit(config[CONF_USE_FAHRENHEIT])) |     cg.add(var.set_fahrenheit(config[CONF_USE_FAHRENHEIT])) | ||||||
|   | |||||||
| @@ -1,20 +1,13 @@ | |||||||
| import esphome.codegen as cg | import esphome.codegen as cg | ||||||
| from esphome.components import climate_ir | from esphome.components import climate_ir | ||||||
| import esphome.config_validation as cv |  | ||||||
| from esphome.const import CONF_ID |  | ||||||
|  |  | ||||||
| AUTO_LOAD = ["climate_ir"] | AUTO_LOAD = ["climate_ir"] | ||||||
|  |  | ||||||
| delonghi_ns = cg.esphome_ns.namespace("delonghi") | delonghi_ns = cg.esphome_ns.namespace("delonghi") | ||||||
| DelonghiClimate = delonghi_ns.class_("DelonghiClimate", climate_ir.ClimateIR) | DelonghiClimate = delonghi_ns.class_("DelonghiClimate", climate_ir.ClimateIR) | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = climate_ir.CLIMATE_IR_WITH_RECEIVER_SCHEMA.extend( | CONFIG_SCHEMA = climate_ir.climare_ir_with_receiver_schema(DelonghiClimate) | ||||||
|     { |  | ||||||
|         cv.GenerateID(): cv.declare_id(DelonghiClimate), |  | ||||||
|     } |  | ||||||
| ) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     await climate_ir.new_climate_ir(config) | ||||||
|     await climate_ir.register_climate_ir(var, config) |  | ||||||
|   | |||||||
| @@ -1,7 +1,5 @@ | |||||||
| import esphome.codegen as cg | import esphome.codegen as cg | ||||||
| from esphome.components import climate_ir | from esphome.components import climate_ir | ||||||
| import esphome.config_validation as cv |  | ||||||
| from esphome.const import CONF_ID |  | ||||||
|  |  | ||||||
| CODEOWNERS = ["@E440QF"] | CODEOWNERS = ["@E440QF"] | ||||||
| AUTO_LOAD = ["climate_ir"] | AUTO_LOAD = ["climate_ir"] | ||||||
| @@ -9,13 +7,8 @@ AUTO_LOAD = ["climate_ir"] | |||||||
| emmeti_ns = cg.esphome_ns.namespace("emmeti") | emmeti_ns = cg.esphome_ns.namespace("emmeti") | ||||||
| EmmetiClimate = emmeti_ns.class_("EmmetiClimate", climate_ir.ClimateIR) | EmmetiClimate = emmeti_ns.class_("EmmetiClimate", climate_ir.ClimateIR) | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = climate_ir.CLIMATE_IR_WITH_RECEIVER_SCHEMA.extend( | CONFIG_SCHEMA = climate_ir.climare_ir_with_receiver_schema(EmmetiClimate) | ||||||
|     { |  | ||||||
|         cv.GenerateID(): cv.declare_id(EmmetiClimate), |  | ||||||
|     } |  | ||||||
| ) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     await climate_ir.new_climate_ir(config) | ||||||
|     await climate_ir.register_climate_ir(var, config) |  | ||||||
|   | |||||||
| @@ -1,7 +1,5 @@ | |||||||
| import esphome.codegen as cg | import esphome.codegen as cg | ||||||
| from esphome.components import climate_ir | from esphome.components import climate_ir | ||||||
| import esphome.config_validation as cv |  | ||||||
| from esphome.const import CONF_ID |  | ||||||
|  |  | ||||||
| AUTO_LOAD = ["climate_ir"] | AUTO_LOAD = ["climate_ir"] | ||||||
|  |  | ||||||
| @@ -10,13 +8,8 @@ FujitsuGeneralClimate = fujitsu_general_ns.class_( | |||||||
|     "FujitsuGeneralClimate", climate_ir.ClimateIR |     "FujitsuGeneralClimate", climate_ir.ClimateIR | ||||||
| ) | ) | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = climate_ir.CLIMATE_IR_WITH_RECEIVER_SCHEMA.extend( | CONFIG_SCHEMA = climate_ir.climare_ir_with_receiver_schema(FujitsuGeneralClimate) | ||||||
|     { |  | ||||||
|         cv.GenerateID(): cv.declare_id(FujitsuGeneralClimate), |  | ||||||
|     } |  | ||||||
| ) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     await climate_ir.new_climate_ir(config) | ||||||
|     await climate_ir.register_climate_ir(var, config) |  | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| import esphome.codegen as cg | import esphome.codegen as cg | ||||||
| from esphome.components import climate_ir | from esphome.components import climate_ir | ||||||
| import esphome.config_validation as cv | import esphome.config_validation as cv | ||||||
| from esphome.const import CONF_ID, CONF_MODEL | from esphome.const import CONF_MODEL | ||||||
|  |  | ||||||
| CODEOWNERS = ["@orestismers"] | CODEOWNERS = ["@orestismers"] | ||||||
|  |  | ||||||
| @@ -21,16 +21,13 @@ MODELS = { | |||||||
|     "yag": Model.GREE_YAG, |     "yag": Model.GREE_YAG, | ||||||
| } | } | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = climate_ir.CLIMATE_IR_WITH_RECEIVER_SCHEMA.extend( | CONFIG_SCHEMA = climate_ir.climare_ir_with_receiver_schema(GreeClimate).extend( | ||||||
|     { |     { | ||||||
|         cv.GenerateID(): cv.declare_id(GreeClimate), |  | ||||||
|         cv.Required(CONF_MODEL): cv.enum(MODELS), |         cv.Required(CONF_MODEL): cv.enum(MODELS), | ||||||
|     } |     } | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     var = await climate_ir.new_climate_ir(config) | ||||||
|     cg.add(var.set_model(config[CONF_MODEL])) |     cg.add(var.set_model(config[CONF_MODEL])) | ||||||
|  |  | ||||||
|     await climate_ir.register_climate_ir(var, config) |  | ||||||
|   | |||||||
| @@ -30,6 +30,7 @@ from esphome.const import ( | |||||||
|     CONF_VISUAL, |     CONF_VISUAL, | ||||||
|     CONF_WIFI, |     CONF_WIFI, | ||||||
| ) | ) | ||||||
|  | from esphome.cpp_generator import MockObjClass | ||||||
| import esphome.final_validate as fv | import esphome.final_validate as fv | ||||||
|  |  | ||||||
| _LOGGER = logging.getLogger(__name__) | _LOGGER = logging.getLogger(__name__) | ||||||
| @@ -185,42 +186,46 @@ def validate_visual(config): | |||||||
|     return config |     return config | ||||||
|  |  | ||||||
|  |  | ||||||
| BASE_CONFIG_SCHEMA = ( | def _base_config_schema(class_: MockObjClass) -> cv.Schema: | ||||||
|     climate.CLIMATE_SCHEMA.extend( |     return ( | ||||||
|         { |         climate.climate_schema(class_) | ||||||
|             cv.Optional(CONF_SUPPORTED_MODES): cv.ensure_list( |         .extend( | ||||||
|                 cv.enum(SUPPORTED_CLIMATE_MODES_OPTIONS, upper=True) |             { | ||||||
|             ), |                 cv.Optional(CONF_SUPPORTED_MODES): cv.ensure_list( | ||||||
|             cv.Optional( |                     cv.enum(SUPPORTED_CLIMATE_MODES_OPTIONS, upper=True) | ||||||
|                 CONF_SUPPORTED_SWING_MODES, |                 ), | ||||||
|                 default=[ |                 cv.Optional( | ||||||
|                     "VERTICAL", |                     CONF_SUPPORTED_SWING_MODES, | ||||||
|                     "HORIZONTAL", |                     default=[ | ||||||
|                     "BOTH", |                         "VERTICAL", | ||||||
|                 ], |                         "HORIZONTAL", | ||||||
|             ): cv.ensure_list(cv.enum(SUPPORTED_SWING_MODES_OPTIONS, upper=True)), |                         "BOTH", | ||||||
|             cv.Optional(CONF_WIFI_SIGNAL, default=False): cv.boolean, |                     ], | ||||||
|             cv.Optional(CONF_DISPLAY): cv.boolean, |                 ): cv.ensure_list(cv.enum(SUPPORTED_SWING_MODES_OPTIONS, upper=True)), | ||||||
|             cv.Optional( |                 cv.Optional(CONF_WIFI_SIGNAL, default=False): cv.boolean, | ||||||
|                 CONF_ANSWER_TIMEOUT, |                 cv.Optional(CONF_DISPLAY): cv.boolean, | ||||||
|             ): cv.positive_time_period_milliseconds, |                 cv.Optional( | ||||||
|             cv.Optional(CONF_ON_STATUS_MESSAGE): automation.validate_automation( |                     CONF_ANSWER_TIMEOUT, | ||||||
|                 { |                 ): cv.positive_time_period_milliseconds, | ||||||
|                     cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id(StatusMessageTrigger), |                 cv.Optional(CONF_ON_STATUS_MESSAGE): automation.validate_automation( | ||||||
|                 } |                     { | ||||||
|             ), |                         cv.GenerateID(CONF_TRIGGER_ID): cv.declare_id( | ||||||
|         } |                             StatusMessageTrigger | ||||||
|  |                         ), | ||||||
|  |                     } | ||||||
|  |                 ), | ||||||
|  |             } | ||||||
|  |         ) | ||||||
|  |         .extend(uart.UART_DEVICE_SCHEMA) | ||||||
|  |         .extend(cv.COMPONENT_SCHEMA) | ||||||
|     ) |     ) | ||||||
|     .extend(uart.UART_DEVICE_SCHEMA) |  | ||||||
|     .extend(cv.COMPONENT_SCHEMA) |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = cv.All( | CONFIG_SCHEMA = cv.All( | ||||||
|     cv.typed_schema( |     cv.typed_schema( | ||||||
|         { |         { | ||||||
|             PROTOCOL_SMARTAIR2: BASE_CONFIG_SCHEMA.extend( |             PROTOCOL_SMARTAIR2: _base_config_schema(Smartair2Climate).extend( | ||||||
|                 { |                 { | ||||||
|                     cv.GenerateID(): cv.declare_id(Smartair2Climate), |  | ||||||
|                     cv.Optional( |                     cv.Optional( | ||||||
|                         CONF_ALTERNATIVE_SWING_CONTROL, default=False |                         CONF_ALTERNATIVE_SWING_CONTROL, default=False | ||||||
|                     ): cv.boolean, |                     ): cv.boolean, | ||||||
| @@ -232,9 +237,8 @@ CONFIG_SCHEMA = cv.All( | |||||||
|                     ), |                     ), | ||||||
|                 } |                 } | ||||||
|             ), |             ), | ||||||
|             PROTOCOL_HON: BASE_CONFIG_SCHEMA.extend( |             PROTOCOL_HON: _base_config_schema(HonClimate).extend( | ||||||
|                 { |                 { | ||||||
|                     cv.GenerateID(): cv.declare_id(HonClimate), |  | ||||||
|                     cv.Optional( |                     cv.Optional( | ||||||
|                         CONF_CONTROL_METHOD, default="SET_GROUP_PARAMETERS" |                         CONF_CONTROL_METHOD, default="SET_GROUP_PARAMETERS" | ||||||
|                     ): cv.ensure_list( |                     ): cv.ensure_list( | ||||||
| @@ -464,10 +468,9 @@ FINAL_VALIDATE_SCHEMA = _final_validate | |||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     cg.add(haier_ns.init_haier_protocol_logging()) |     cg.add(haier_ns.init_haier_protocol_logging()) | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     var = await climate.new_climate(config) | ||||||
|     await cg.register_component(var, config) |     await cg.register_component(var, config) | ||||||
|     await uart.register_uart_device(var, config) |     await uart.register_uart_device(var, config) | ||||||
|     await climate.register_climate(var, config) |  | ||||||
|  |  | ||||||
|     cg.add(var.set_send_wifi(config[CONF_WIFI_SIGNAL])) |     cg.add(var.set_send_wifi(config[CONF_WIFI_SIGNAL])) | ||||||
|     if CONF_CONTROL_METHOD in config: |     if CONF_CONTROL_METHOD in config: | ||||||
|   | |||||||
| @@ -2,7 +2,6 @@ import esphome.codegen as cg | |||||||
| from esphome.components import climate_ir | from esphome.components import climate_ir | ||||||
| import esphome.config_validation as cv | import esphome.config_validation as cv | ||||||
| from esphome.const import ( | from esphome.const import ( | ||||||
|     CONF_ID, |  | ||||||
|     CONF_MAX_TEMPERATURE, |     CONF_MAX_TEMPERATURE, | ||||||
|     CONF_MIN_TEMPERATURE, |     CONF_MIN_TEMPERATURE, | ||||||
|     CONF_PROTOCOL, |     CONF_PROTOCOL, | ||||||
| @@ -98,9 +97,8 @@ VERTICAL_DIRECTIONS = { | |||||||
| } | } | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = cv.All( | CONFIG_SCHEMA = cv.All( | ||||||
|     climate_ir.CLIMATE_IR_WITH_RECEIVER_SCHEMA.extend( |     climate_ir.climare_ir_with_receiver_schema(HeatpumpIRClimate).extend( | ||||||
|         { |         { | ||||||
|             cv.GenerateID(): cv.declare_id(HeatpumpIRClimate), |  | ||||||
|             cv.Required(CONF_PROTOCOL): cv.enum(PROTOCOLS), |             cv.Required(CONF_PROTOCOL): cv.enum(PROTOCOLS), | ||||||
|             cv.Required(CONF_HORIZONTAL_DEFAULT): cv.enum(HORIZONTAL_DIRECTIONS), |             cv.Required(CONF_HORIZONTAL_DEFAULT): cv.enum(HORIZONTAL_DIRECTIONS), | ||||||
|             cv.Required(CONF_VERTICAL_DEFAULT): cv.enum(VERTICAL_DIRECTIONS), |             cv.Required(CONF_VERTICAL_DEFAULT): cv.enum(VERTICAL_DIRECTIONS), | ||||||
| @@ -112,8 +110,8 @@ CONFIG_SCHEMA = cv.All( | |||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     var = await climate_ir.new_climate_ir(config) | ||||||
|     if CONF_VISUAL not in config: |     if CONF_VISUAL not in config: | ||||||
|         config[CONF_VISUAL] = {} |         config[CONF_VISUAL] = {} | ||||||
|     visual = config[CONF_VISUAL] |     visual = config[CONF_VISUAL] | ||||||
| @@ -121,7 +119,6 @@ def to_code(config): | |||||||
|         visual[CONF_MAX_TEMPERATURE] = config[CONF_MAX_TEMPERATURE] |         visual[CONF_MAX_TEMPERATURE] = config[CONF_MAX_TEMPERATURE] | ||||||
|     if CONF_MIN_TEMPERATURE not in visual: |     if CONF_MIN_TEMPERATURE not in visual: | ||||||
|         visual[CONF_MIN_TEMPERATURE] = config[CONF_MIN_TEMPERATURE] |         visual[CONF_MIN_TEMPERATURE] = config[CONF_MIN_TEMPERATURE] | ||||||
|     yield climate_ir.register_climate_ir(var, config) |  | ||||||
|     cg.add(var.set_protocol(config[CONF_PROTOCOL])) |     cg.add(var.set_protocol(config[CONF_PROTOCOL])) | ||||||
|     cg.add(var.set_horizontal_default(config[CONF_HORIZONTAL_DEFAULT])) |     cg.add(var.set_horizontal_default(config[CONF_HORIZONTAL_DEFAULT])) | ||||||
|     cg.add(var.set_vertical_default(config[CONF_VERTICAL_DEFAULT])) |     cg.add(var.set_vertical_default(config[CONF_VERTICAL_DEFAULT])) | ||||||
|   | |||||||
| @@ -1,20 +1,13 @@ | |||||||
| import esphome.codegen as cg | import esphome.codegen as cg | ||||||
| from esphome.components import climate_ir | from esphome.components import climate_ir | ||||||
| import esphome.config_validation as cv |  | ||||||
| from esphome.const import CONF_ID |  | ||||||
|  |  | ||||||
| AUTO_LOAD = ["climate_ir"] | AUTO_LOAD = ["climate_ir"] | ||||||
|  |  | ||||||
| hitachi_ac344_ns = cg.esphome_ns.namespace("hitachi_ac344") | hitachi_ac344_ns = cg.esphome_ns.namespace("hitachi_ac344") | ||||||
| HitachiClimate = hitachi_ac344_ns.class_("HitachiClimate", climate_ir.ClimateIR) | HitachiClimate = hitachi_ac344_ns.class_("HitachiClimate", climate_ir.ClimateIR) | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = climate_ir.CLIMATE_IR_WITH_RECEIVER_SCHEMA.extend( | CONFIG_SCHEMA = climate_ir.climare_ir_with_receiver_schema(HitachiClimate) | ||||||
|     { |  | ||||||
|         cv.GenerateID(): cv.declare_id(HitachiClimate), |  | ||||||
|     } |  | ||||||
| ) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     await climate_ir.new_climate_ir(config) | ||||||
|     await climate_ir.register_climate_ir(var, config) |  | ||||||
|   | |||||||
| @@ -1,20 +1,13 @@ | |||||||
| import esphome.codegen as cg | import esphome.codegen as cg | ||||||
| from esphome.components import climate_ir | from esphome.components import climate_ir | ||||||
| import esphome.config_validation as cv |  | ||||||
| from esphome.const import CONF_ID |  | ||||||
|  |  | ||||||
| AUTO_LOAD = ["climate_ir"] | AUTO_LOAD = ["climate_ir"] | ||||||
|  |  | ||||||
| hitachi_ac424_ns = cg.esphome_ns.namespace("hitachi_ac424") | hitachi_ac424_ns = cg.esphome_ns.namespace("hitachi_ac424") | ||||||
| HitachiClimate = hitachi_ac424_ns.class_("HitachiClimate", climate_ir.ClimateIR) | HitachiClimate = hitachi_ac424_ns.class_("HitachiClimate", climate_ir.ClimateIR) | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = climate_ir.CLIMATE_IR_WITH_RECEIVER_SCHEMA.extend( | CONFIG_SCHEMA = climate_ir.climare_ir_with_receiver_schema(HitachiClimate) | ||||||
|     { |  | ||||||
|         cv.GenerateID(): cv.declare_id(HitachiClimate), |  | ||||||
|     } |  | ||||||
| ) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     await climate_ir.new_climate_ir(config) | ||||||
|     await climate_ir.register_climate_ir(var, config) |  | ||||||
|   | |||||||
| @@ -104,9 +104,9 @@ validate_custom_fan_modes = cv.enum(CUSTOM_FAN_MODES, upper=True) | |||||||
| validate_custom_presets = cv.enum(CUSTOM_PRESETS, upper=True) | validate_custom_presets = cv.enum(CUSTOM_PRESETS, upper=True) | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = cv.All( | CONFIG_SCHEMA = cv.All( | ||||||
|     climate.CLIMATE_SCHEMA.extend( |     climate.climate_schema(AirConditioner) | ||||||
|  |     .extend( | ||||||
|         { |         { | ||||||
|             cv.GenerateID(): cv.declare_id(AirConditioner), |  | ||||||
|             cv.Optional(CONF_PERIOD, default="1s"): cv.time_period, |             cv.Optional(CONF_PERIOD, default="1s"): cv.time_period, | ||||||
|             cv.Optional(CONF_TIMEOUT, default="2s"): cv.time_period, |             cv.Optional(CONF_TIMEOUT, default="2s"): cv.time_period, | ||||||
|             cv.Optional(CONF_NUM_ATTEMPTS, default=3): cv.int_range(min=1, max=5), |             cv.Optional(CONF_NUM_ATTEMPTS, default=3): cv.int_range(min=1, max=5), | ||||||
| @@ -259,10 +259,9 @@ async def power_inv_to_code(var, config, args): | |||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     var = await climate.new_climate(config) | ||||||
|     await cg.register_component(var, config) |     await cg.register_component(var, config) | ||||||
|     await uart.register_uart_device(var, config) |     await uart.register_uart_device(var, config) | ||||||
|     await climate.register_climate(var, config) |  | ||||||
|     cg.add(var.set_period(config[CONF_PERIOD].total_milliseconds)) |     cg.add(var.set_period(config[CONF_PERIOD].total_milliseconds)) | ||||||
|     cg.add(var.set_response_timeout(config[CONF_TIMEOUT].total_milliseconds)) |     cg.add(var.set_response_timeout(config[CONF_TIMEOUT].total_milliseconds)) | ||||||
|     cg.add(var.set_request_attempts(config[CONF_NUM_ATTEMPTS])) |     cg.add(var.set_request_attempts(config[CONF_NUM_ATTEMPTS])) | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| import esphome.codegen as cg | import esphome.codegen as cg | ||||||
| from esphome.components import climate_ir | from esphome.components import climate_ir | ||||||
| import esphome.config_validation as cv | import esphome.config_validation as cv | ||||||
| from esphome.const import CONF_ID, CONF_USE_FAHRENHEIT | from esphome.const import CONF_USE_FAHRENHEIT | ||||||
|  |  | ||||||
| AUTO_LOAD = ["climate_ir", "coolix"] | AUTO_LOAD = ["climate_ir", "coolix"] | ||||||
| CODEOWNERS = ["@dudanov"] | CODEOWNERS = ["@dudanov"] | ||||||
| @@ -10,15 +10,13 @@ midea_ir_ns = cg.esphome_ns.namespace("midea_ir") | |||||||
| MideaIR = midea_ir_ns.class_("MideaIR", climate_ir.ClimateIR) | MideaIR = midea_ir_ns.class_("MideaIR", climate_ir.ClimateIR) | ||||||
|  |  | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = climate_ir.CLIMATE_IR_WITH_RECEIVER_SCHEMA.extend( | CONFIG_SCHEMA = climate_ir.climare_ir_with_receiver_schema(MideaIR).extend( | ||||||
|     { |     { | ||||||
|         cv.GenerateID(): cv.declare_id(MideaIR), |  | ||||||
|         cv.Optional(CONF_USE_FAHRENHEIT, default=False): cv.boolean, |         cv.Optional(CONF_USE_FAHRENHEIT, default=False): cv.boolean, | ||||||
|     } |     } | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     var = await climate_ir.new_climate_ir(config) | ||||||
|     await climate_ir.register_climate_ir(var, config) |  | ||||||
|     cg.add(var.set_fahrenheit(config[CONF_USE_FAHRENHEIT])) |     cg.add(var.set_fahrenheit(config[CONF_USE_FAHRENHEIT])) | ||||||
|   | |||||||
| @@ -1,7 +1,6 @@ | |||||||
| import esphome.codegen as cg | import esphome.codegen as cg | ||||||
| from esphome.components import climate_ir | from esphome.components import climate_ir | ||||||
| import esphome.config_validation as cv | import esphome.config_validation as cv | ||||||
| from esphome.const import CONF_ID |  | ||||||
|  |  | ||||||
| CODEOWNERS = ["@RubyBailey"] | CODEOWNERS = ["@RubyBailey"] | ||||||
| AUTO_LOAD = ["climate_ir"] | AUTO_LOAD = ["climate_ir"] | ||||||
| @@ -44,9 +43,8 @@ VERTICAL_DIRECTIONS = { | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = climate_ir.CLIMATE_IR_WITH_RECEIVER_SCHEMA.extend( | CONFIG_SCHEMA = climate_ir.climare_ir_with_receiver_schema(MitsubishiClimate).extend( | ||||||
|     { |     { | ||||||
|         cv.GenerateID(): cv.declare_id(MitsubishiClimate), |  | ||||||
|         cv.Optional(CONF_SET_FAN_MODE, default="3levels"): cv.enum(SETFANMODE), |         cv.Optional(CONF_SET_FAN_MODE, default="3levels"): cv.enum(SETFANMODE), | ||||||
|         cv.Optional(CONF_SUPPORTS_DRY, default=False): cv.boolean, |         cv.Optional(CONF_SUPPORTS_DRY, default=False): cv.boolean, | ||||||
|         cv.Optional(CONF_SUPPORTS_FAN_ONLY, default=False): cv.boolean, |         cv.Optional(CONF_SUPPORTS_FAN_ONLY, default=False): cv.boolean, | ||||||
| @@ -61,8 +59,7 @@ CONFIG_SCHEMA = climate_ir.CLIMATE_IR_WITH_RECEIVER_SCHEMA.extend( | |||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     var = await climate_ir.new_climate_ir(config) | ||||||
|     await climate_ir.register_climate_ir(var, config) |  | ||||||
|  |  | ||||||
|     cg.add(var.set_fan_mode(config[CONF_SET_FAN_MODE])) |     cg.add(var.set_fan_mode(config[CONF_SET_FAN_MODE])) | ||||||
|     cg.add(var.set_supports_dry(config[CONF_SUPPORTS_DRY])) |     cg.add(var.set_supports_dry(config[CONF_SUPPORTS_DRY])) | ||||||
|   | |||||||
| @@ -1,20 +1,13 @@ | |||||||
| import esphome.codegen as cg | import esphome.codegen as cg | ||||||
| from esphome.components import climate_ir | from esphome.components import climate_ir | ||||||
| import esphome.config_validation as cv |  | ||||||
| from esphome.const import CONF_ID |  | ||||||
|  |  | ||||||
| AUTO_LOAD = ["climate_ir"] | AUTO_LOAD = ["climate_ir"] | ||||||
|  |  | ||||||
| noblex_ns = cg.esphome_ns.namespace("noblex") | noblex_ns = cg.esphome_ns.namespace("noblex") | ||||||
| NoblexClimate = noblex_ns.class_("NoblexClimate", climate_ir.ClimateIR) | NoblexClimate = noblex_ns.class_("NoblexClimate", climate_ir.ClimateIR) | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = climate_ir.CLIMATE_IR_WITH_RECEIVER_SCHEMA.extend( | CONFIG_SCHEMA = climate_ir.climare_ir_with_receiver_schema(NoblexClimate) | ||||||
|     { |  | ||||||
|         cv.GenerateID(): cv.declare_id(NoblexClimate), |  | ||||||
|     } |  | ||||||
| ) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     await climate_ir.new_climate_ir(config) | ||||||
|     await climate_ir.register_climate_ir(var, config) |  | ||||||
|   | |||||||
| @@ -41,9 +41,8 @@ CONF_KI_MULTIPLIER = "ki_multiplier" | |||||||
| CONF_KD_MULTIPLIER = "kd_multiplier" | CONF_KD_MULTIPLIER = "kd_multiplier" | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = cv.All( | CONFIG_SCHEMA = cv.All( | ||||||
|     climate.CLIMATE_SCHEMA.extend( |     climate.climate_schema(PIDClimate).extend( | ||||||
|         { |         { | ||||||
|             cv.GenerateID(): cv.declare_id(PIDClimate), |  | ||||||
|             cv.Required(CONF_SENSOR): cv.use_id(sensor.Sensor), |             cv.Required(CONF_SENSOR): cv.use_id(sensor.Sensor), | ||||||
|             cv.Optional(CONF_HUMIDITY_SENSOR): cv.use_id(sensor.Sensor), |             cv.Optional(CONF_HUMIDITY_SENSOR): cv.use_id(sensor.Sensor), | ||||||
|             cv.Required(CONF_DEFAULT_TARGET_TEMPERATURE): cv.temperature, |             cv.Required(CONF_DEFAULT_TARGET_TEMPERATURE): cv.temperature, | ||||||
| @@ -80,9 +79,8 @@ CONFIG_SCHEMA = cv.All( | |||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     var = await climate.new_climate(config) | ||||||
|     await cg.register_component(var, config) |     await cg.register_component(var, config) | ||||||
|     await climate.register_climate(var, config) |  | ||||||
|  |  | ||||||
|     sens = await cg.get_variable(config[CONF_SENSOR]) |     sens = await cg.get_variable(config[CONF_SENSOR]) | ||||||
|     cg.add(var.set_sensor(sens)) |     cg.add(var.set_sensor(sens)) | ||||||
|   | |||||||
| @@ -1,7 +1,5 @@ | |||||||
| import esphome.codegen as cg | import esphome.codegen as cg | ||||||
| from esphome.components import climate_ir | from esphome.components import climate_ir | ||||||
| import esphome.config_validation as cv |  | ||||||
| from esphome.const import CONF_ID |  | ||||||
|  |  | ||||||
| AUTO_LOAD = ["climate_ir"] | AUTO_LOAD = ["climate_ir"] | ||||||
| CODEOWNERS = ["@glmnet"] | CODEOWNERS = ["@glmnet"] | ||||||
| @@ -9,13 +7,8 @@ CODEOWNERS = ["@glmnet"] | |||||||
| tcl112_ns = cg.esphome_ns.namespace("tcl112") | tcl112_ns = cg.esphome_ns.namespace("tcl112") | ||||||
| Tcl112Climate = tcl112_ns.class_("Tcl112Climate", climate_ir.ClimateIR) | Tcl112Climate = tcl112_ns.class_("Tcl112Climate", climate_ir.ClimateIR) | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = climate_ir.CLIMATE_IR_WITH_RECEIVER_SCHEMA.extend( | CONFIG_SCHEMA = climate_ir.climare_ir_with_receiver_schema(Tcl112Climate) | ||||||
|     { |  | ||||||
|         cv.GenerateID(): cv.declare_id(Tcl112Climate), |  | ||||||
|     } |  | ||||||
| ) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     await climate_ir.new_climate_ir(config) | ||||||
|     await climate_ir.register_climate_ir(var, config) |  | ||||||
|   | |||||||
| @@ -516,9 +516,9 @@ def validate_thermostat(config): | |||||||
|  |  | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = cv.All( | CONFIG_SCHEMA = cv.All( | ||||||
|     climate.CLIMATE_SCHEMA.extend( |     climate.climate_schema(ThermostatClimate) | ||||||
|  |     .extend( | ||||||
|         { |         { | ||||||
|             cv.GenerateID(): cv.declare_id(ThermostatClimate), |  | ||||||
|             cv.Required(CONF_SENSOR): cv.use_id(sensor.Sensor), |             cv.Required(CONF_SENSOR): cv.use_id(sensor.Sensor), | ||||||
|             cv.Optional(CONF_HUMIDITY_SENSOR): cv.use_id(sensor.Sensor), |             cv.Optional(CONF_HUMIDITY_SENSOR): cv.use_id(sensor.Sensor), | ||||||
|             cv.Required(CONF_IDLE_ACTION): automation.validate_automation(single=True), |             cv.Required(CONF_IDLE_ACTION): automation.validate_automation(single=True), | ||||||
| @@ -631,7 +631,8 @@ CONFIG_SCHEMA = cv.All( | |||||||
|                 single=True |                 single=True | ||||||
|             ), |             ), | ||||||
|         } |         } | ||||||
|     ).extend(cv.COMPONENT_SCHEMA), |     ) | ||||||
|  |     .extend(cv.COMPONENT_SCHEMA), | ||||||
|     cv.has_at_least_one_key( |     cv.has_at_least_one_key( | ||||||
|         CONF_COOL_ACTION, CONF_DRY_ACTION, CONF_FAN_ONLY_ACTION, CONF_HEAT_ACTION |         CONF_COOL_ACTION, CONF_DRY_ACTION, CONF_FAN_ONLY_ACTION, CONF_HEAT_ACTION | ||||||
|     ), |     ), | ||||||
| @@ -640,9 +641,8 @@ CONFIG_SCHEMA = cv.All( | |||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     var = await climate.new_climate(config) | ||||||
|     await cg.register_component(var, config) |     await cg.register_component(var, config) | ||||||
|     await climate.register_climate(var, config) |  | ||||||
|  |  | ||||||
|     heat_cool_mode_available = CONF_HEAT_ACTION in config and CONF_COOL_ACTION in config |     heat_cool_mode_available = CONF_HEAT_ACTION in config and CONF_COOL_ACTION in config | ||||||
|     two_points_available = CONF_HEAT_ACTION in config and ( |     two_points_available = CONF_HEAT_ACTION in config and ( | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| import esphome.codegen as cg | import esphome.codegen as cg | ||||||
| from esphome.components import climate_ir | from esphome.components import climate_ir | ||||||
| import esphome.config_validation as cv | import esphome.config_validation as cv | ||||||
| from esphome.const import CONF_ID, CONF_MODEL | from esphome.const import CONF_MODEL | ||||||
|  |  | ||||||
| AUTO_LOAD = ["climate_ir"] | AUTO_LOAD = ["climate_ir"] | ||||||
| CODEOWNERS = ["@kbx81"] | CODEOWNERS = ["@kbx81"] | ||||||
| @@ -16,15 +16,13 @@ MODELS = { | |||||||
|     "RAC-PT1411HWRU-F": Model.MODEL_RAC_PT1411HWRU_F, |     "RAC-PT1411HWRU-F": Model.MODEL_RAC_PT1411HWRU_F, | ||||||
| } | } | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = climate_ir.CLIMATE_IR_WITH_RECEIVER_SCHEMA.extend( | CONFIG_SCHEMA = climate_ir.climare_ir_with_receiver_schema(ToshibaClimate).extend( | ||||||
|     { |     { | ||||||
|         cv.GenerateID(): cv.declare_id(ToshibaClimate), |  | ||||||
|         cv.Optional(CONF_MODEL, default="generic"): cv.enum(MODELS, upper=True), |         cv.Optional(CONF_MODEL, default="generic"): cv.enum(MODELS, upper=True), | ||||||
|     } |     } | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     var = await climate_ir.new_climate_ir(config) | ||||||
|     await climate_ir.register_climate_ir(var, config) |  | ||||||
|     cg.add(var.set_model(config[CONF_MODEL])) |     cg.add(var.set_model(config[CONF_MODEL])) | ||||||
|   | |||||||
| @@ -4,7 +4,6 @@ from esphome.components import climate | |||||||
| import esphome.config_validation as cv | import esphome.config_validation as cv | ||||||
| from esphome.const import ( | from esphome.const import ( | ||||||
|     CONF_FAN_MODE, |     CONF_FAN_MODE, | ||||||
|     CONF_ID, |  | ||||||
|     CONF_PRESET, |     CONF_PRESET, | ||||||
|     CONF_SUPPORTS_COOL, |     CONF_SUPPORTS_COOL, | ||||||
|     CONF_SUPPORTS_HEAT, |     CONF_SUPPORTS_HEAT, | ||||||
| @@ -151,9 +150,9 @@ SWING_MODES = cv.Schema( | |||||||
| ) | ) | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = cv.All( | CONFIG_SCHEMA = cv.All( | ||||||
|     climate.CLIMATE_SCHEMA.extend( |     climate.climate_schema(TuyaClimate) | ||||||
|  |     .extend( | ||||||
|         { |         { | ||||||
|             cv.GenerateID(): cv.declare_id(TuyaClimate), |  | ||||||
|             cv.GenerateID(CONF_TUYA_ID): cv.use_id(Tuya), |             cv.GenerateID(CONF_TUYA_ID): cv.use_id(Tuya), | ||||||
|             cv.Optional(CONF_SUPPORTS_HEAT, default=True): cv.boolean, |             cv.Optional(CONF_SUPPORTS_HEAT, default=True): cv.boolean, | ||||||
|             cv.Optional(CONF_SUPPORTS_COOL, default=False): cv.boolean, |             cv.Optional(CONF_SUPPORTS_COOL, default=False): cv.boolean, | ||||||
| @@ -186,7 +185,8 @@ CONFIG_SCHEMA = cv.All( | |||||||
|                 "'eco_temperature' has been moved inside of the 'eco' config block under 'preset' as 'temperature'" |                 "'eco_temperature' has been moved inside of the 'eco' config block under 'preset' as 'temperature'" | ||||||
|             ), |             ), | ||||||
|         } |         } | ||||||
|     ).extend(cv.COMPONENT_SCHEMA), |     ) | ||||||
|  |     .extend(cv.COMPONENT_SCHEMA), | ||||||
|     cv.has_at_least_one_key(CONF_TARGET_TEMPERATURE_DATAPOINT, CONF_SWITCH_DATAPOINT), |     cv.has_at_least_one_key(CONF_TARGET_TEMPERATURE_DATAPOINT, CONF_SWITCH_DATAPOINT), | ||||||
|     validate_temperature_multipliers, |     validate_temperature_multipliers, | ||||||
|     validate_cooling_values, |     validate_cooling_values, | ||||||
| @@ -194,9 +194,8 @@ CONFIG_SCHEMA = cv.All( | |||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     var = await climate.new_climate(config) | ||||||
|     await cg.register_component(var, config) |     await cg.register_component(var, config) | ||||||
|     await climate.register_climate(var, config) |  | ||||||
|  |  | ||||||
|     paren = await cg.get_variable(config[CONF_TUYA_ID]) |     paren = await cg.get_variable(config[CONF_TUYA_ID]) | ||||||
|     cg.add(var.set_tuya_parent(paren)) |     cg.add(var.set_tuya_parent(paren)) | ||||||
|   | |||||||
| @@ -1,7 +1,5 @@ | |||||||
| import esphome.codegen as cg | import esphome.codegen as cg | ||||||
| from esphome.components import climate | from esphome.components import climate | ||||||
| import esphome.config_validation as cv |  | ||||||
| from esphome.const import CONF_ID |  | ||||||
|  |  | ||||||
| from .. import ( | from .. import ( | ||||||
|     UPONOR_SMATRIX_DEVICE_SCHEMA, |     UPONOR_SMATRIX_DEVICE_SCHEMA, | ||||||
| @@ -19,15 +17,12 @@ UponorSmatrixClimate = uponor_smatrix_ns.class_( | |||||||
|     UponorSmatrixDevice, |     UponorSmatrixDevice, | ||||||
| ) | ) | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = climate.CLIMATE_SCHEMA.extend( | CONFIG_SCHEMA = climate.climate_schema(UponorSmatrixClimate).extend( | ||||||
|     { |     UPONOR_SMATRIX_DEVICE_SCHEMA | ||||||
|         cv.GenerateID(): cv.declare_id(UponorSmatrixClimate), | ) | ||||||
|     } |  | ||||||
| ).extend(UPONOR_SMATRIX_DEVICE_SCHEMA) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     var = await climate.new_climate(config) | ||||||
|     await cg.register_component(var, config) |     await cg.register_component(var, config) | ||||||
|     await climate.register_climate(var, config) |  | ||||||
|     await register_uponor_smatrix_device(var, config) |     await register_uponor_smatrix_device(var, config) | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| import esphome.codegen as cg | import esphome.codegen as cg | ||||||
| from esphome.components import climate_ir | from esphome.components import climate_ir | ||||||
| import esphome.config_validation as cv | import esphome.config_validation as cv | ||||||
| from esphome.const import CONF_ID, CONF_MODEL | from esphome.const import CONF_MODEL | ||||||
|  |  | ||||||
| AUTO_LOAD = ["climate_ir"] | AUTO_LOAD = ["climate_ir"] | ||||||
| CODEOWNERS = ["@glmnet"] | CODEOWNERS = ["@glmnet"] | ||||||
| @@ -15,15 +15,13 @@ MODELS = { | |||||||
|     "DG11J1-91": Model.MODEL_DG11J1_91, |     "DG11J1-91": Model.MODEL_DG11J1_91, | ||||||
| } | } | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = climate_ir.CLIMATE_IR_WITH_RECEIVER_SCHEMA.extend( | CONFIG_SCHEMA = climate_ir.climare_ir_with_receiver_schema(WhirlpoolClimate).extend( | ||||||
|     { |     { | ||||||
|         cv.GenerateID(): cv.declare_id(WhirlpoolClimate), |  | ||||||
|         cv.Optional(CONF_MODEL, default="DG11J1-3A"): cv.enum(MODELS, upper=True), |         cv.Optional(CONF_MODEL, default="DG11J1-3A"): cv.enum(MODELS, upper=True), | ||||||
|     } |     } | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     var = await climate_ir.new_climate_ir(config) | ||||||
|     await climate_ir.register_climate_ir(var, config) |  | ||||||
|     cg.add(var.set_model(config[CONF_MODEL])) |     cg.add(var.set_model(config[CONF_MODEL])) | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| import esphome.codegen as cg | import esphome.codegen as cg | ||||||
| from esphome.components import climate_ir | from esphome.components import climate_ir | ||||||
| import esphome.config_validation as cv | import esphome.config_validation as cv | ||||||
| from esphome.const import CONF_ID, CONF_USE_FAHRENHEIT | from esphome.const import CONF_USE_FAHRENHEIT | ||||||
|  |  | ||||||
| AUTO_LOAD = ["climate_ir"] | AUTO_LOAD = ["climate_ir"] | ||||||
|  |  | ||||||
| @@ -9,15 +9,13 @@ whynter_ns = cg.esphome_ns.namespace("whynter") | |||||||
| Whynter = whynter_ns.class_("Whynter", climate_ir.ClimateIR) | Whynter = whynter_ns.class_("Whynter", climate_ir.ClimateIR) | ||||||
|  |  | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = climate_ir.CLIMATE_IR_WITH_RECEIVER_SCHEMA.extend( | CONFIG_SCHEMA = climate_ir.climare_ir_with_receiver_schema(Whynter).extend( | ||||||
|     { |     { | ||||||
|         cv.GenerateID(): cv.declare_id(Whynter), |  | ||||||
|         cv.Optional(CONF_USE_FAHRENHEIT, default=False): cv.boolean, |         cv.Optional(CONF_USE_FAHRENHEIT, default=False): cv.boolean, | ||||||
|     } |     } | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     var = await climate_ir.new_climate_ir(config) | ||||||
|     await climate_ir.register_climate_ir(var, config) |  | ||||||
|     cg.add(var.set_fahrenheit(config[CONF_USE_FAHRENHEIT])) |     cg.add(var.set_fahrenheit(config[CONF_USE_FAHRENHEIT])) | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ import esphome.codegen as cg | |||||||
| from esphome.components import climate, remote_transmitter, sensor | from esphome.components import climate, remote_transmitter, sensor | ||||||
| from esphome.components.remote_base import CONF_TRANSMITTER_ID | from esphome.components.remote_base import CONF_TRANSMITTER_ID | ||||||
| import esphome.config_validation as cv | import esphome.config_validation as cv | ||||||
| from esphome.const import CONF_ID, CONF_SENSOR, CONF_SUPPORTS_COOL, CONF_SUPPORTS_HEAT | from esphome.const import CONF_SENSOR, CONF_SUPPORTS_COOL, CONF_SUPPORTS_HEAT | ||||||
|  |  | ||||||
| AUTO_LOAD = ["sensor"] | AUTO_LOAD = ["sensor"] | ||||||
|  |  | ||||||
| @@ -10,9 +10,9 @@ yashima_ns = cg.esphome_ns.namespace("yashima") | |||||||
| YashimaClimate = yashima_ns.class_("YashimaClimate", climate.Climate, cg.Component) | YashimaClimate = yashima_ns.class_("YashimaClimate", climate.Climate, cg.Component) | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = cv.All( | CONFIG_SCHEMA = cv.All( | ||||||
|     climate.CLIMATE_SCHEMA.extend( |     climate.climate_schema(YashimaClimate) | ||||||
|  |     .extend( | ||||||
|         { |         { | ||||||
|             cv.GenerateID(): cv.declare_id(YashimaClimate), |  | ||||||
|             cv.GenerateID(CONF_TRANSMITTER_ID): cv.use_id( |             cv.GenerateID(CONF_TRANSMITTER_ID): cv.use_id( | ||||||
|                 remote_transmitter.RemoteTransmitterComponent |                 remote_transmitter.RemoteTransmitterComponent | ||||||
|             ), |             ), | ||||||
| @@ -20,14 +20,14 @@ CONFIG_SCHEMA = cv.All( | |||||||
|             cv.Optional(CONF_SUPPORTS_HEAT, default=True): cv.boolean, |             cv.Optional(CONF_SUPPORTS_HEAT, default=True): cv.boolean, | ||||||
|             cv.Optional(CONF_SENSOR): cv.use_id(sensor.Sensor), |             cv.Optional(CONF_SENSOR): cv.use_id(sensor.Sensor), | ||||||
|         } |         } | ||||||
|     ).extend(cv.COMPONENT_SCHEMA) |     ) | ||||||
|  |     .extend(cv.COMPONENT_SCHEMA) | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     var = await climate.new_climate(config) | ||||||
|     await cg.register_component(var, config) |     await cg.register_component(var, config) | ||||||
|     await climate.register_climate(var, config) |  | ||||||
|  |  | ||||||
|     cg.add(var.set_supports_cool(config[CONF_SUPPORTS_COOL])) |     cg.add(var.set_supports_cool(config[CONF_SUPPORTS_COOL])) | ||||||
|     cg.add(var.set_supports_heat(config[CONF_SUPPORTS_HEAT])) |     cg.add(var.set_supports_heat(config[CONF_SUPPORTS_HEAT])) | ||||||
|   | |||||||
| @@ -1,7 +1,5 @@ | |||||||
| import esphome.codegen as cg | import esphome.codegen as cg | ||||||
| from esphome.components import climate_ir | from esphome.components import climate_ir | ||||||
| import esphome.config_validation as cv |  | ||||||
| from esphome.const import CONF_ID |  | ||||||
|  |  | ||||||
| AUTO_LOAD = ["climate_ir"] | AUTO_LOAD = ["climate_ir"] | ||||||
| CODEOWNERS = ["@cfeenstra1024"] | CODEOWNERS = ["@cfeenstra1024"] | ||||||
| @@ -9,11 +7,8 @@ CODEOWNERS = ["@cfeenstra1024"] | |||||||
| zhlt01_ns = cg.esphome_ns.namespace("zhlt01") | zhlt01_ns = cg.esphome_ns.namespace("zhlt01") | ||||||
| ZHLT01Climate = zhlt01_ns.class_("ZHLT01Climate", climate_ir.ClimateIR) | ZHLT01Climate = zhlt01_ns.class_("ZHLT01Climate", climate_ir.ClimateIR) | ||||||
|  |  | ||||||
| CONFIG_SCHEMA = climate_ir.CLIMATE_IR_WITH_RECEIVER_SCHEMA.extend( | CONFIG_SCHEMA = climate_ir.climare_ir_with_receiver_schema(ZHLT01Climate) | ||||||
|     {cv.GenerateID(): cv.declare_id(ZHLT01Climate)} |  | ||||||
| ) |  | ||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     var = cg.new_Pvariable(config[CONF_ID]) |     await climate_ir.new_climate_ir(config) | ||||||
|     await climate_ir.register_climate_ir(var, config) |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user