From a7d346efb22fbf3cbce7942c60f72474971f9813 Mon Sep 17 00:00:00 2001 From: necroave <55869272+necroave@users.noreply.github.com> Date: Wed, 25 May 2022 14:38:08 +0300 Subject: [PATCH 1/2] Update ac_common.yaml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Задвоение AC в названии сенсора в расширенном примере --- examples/advanced/ac_common.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/advanced/ac_common.yaml b/examples/advanced/ac_common.yaml index dcf8048..e012151 100644 --- a/examples/advanced/ac_common.yaml +++ b/examples/advanced/ac_common.yaml @@ -65,7 +65,7 @@ climate: show_action: true display_inverted: true indoor_temperature: - name: ${upper_devicename} AC Indoor Temperature + name: ${upper_devicename} Indoor Temperature id: ${devicename}_indoor_temp internal: false display_state: @@ -119,4 +119,4 @@ switch: turn_on_action: - aux_ac.display_on: aux_id turn_off_action: - - aux_ac.display_off: aux_id \ No newline at end of file + - aux_ac.display_off: aux_id From 168819a17e46e4d2baa6eaf9e4049a7e7ef723df Mon Sep 17 00:00:00 2001 From: GrKoR Date: Thu, 26 May 2022 14:31:20 +0300 Subject: [PATCH 2/2] Brokly changes --- components/aux_ac/climate.py | 127 +++++++++++++++++++++++++++++++++-- 1 file changed, 120 insertions(+), 7 deletions(-) diff --git a/components/aux_ac/climate.py b/components/aux_ac/climate.py index c6ba1d1..a3c9676 100644 --- a/components/aux_ac/climate.py +++ b/components/aux_ac/climate.py @@ -12,9 +12,19 @@ from esphome.const import ( CONF_CUSTOM_PRESETS, CONF_INTERNAL, CONF_DATA, + CONF_SUPPORTED_MODES, + CONF_SUPPORTED_SWING_MODES, + CONF_SUPPORTED_PRESETS, + CONF_PRESSURE, UNIT_CELSIUS, + UNIT_PERCENT, + UNIT_PASCAL, + ICON_POWER, ICON_THERMOMETER, + ICON_GAS_CYLINDER, DEVICE_CLASS_TEMPERATURE, + DEVICE_CLASS_POWER_FACTOR, + DEVICE_CLASS_PRESSURE, STATE_CLASS_MEASUREMENT, ) from esphome.components.climate import ( @@ -29,15 +39,22 @@ CODEOWNERS = ["@GrKoR"] DEPENDENCIES = ["climate", "uart"] AUTO_LOAD = ["sensor", "binary_sensor"] -CONF_SUPPORTED_MODES = 'supported_modes' -CONF_SUPPORTED_SWING_MODES = 'supported_swing_modes' -CONF_SUPPORTED_PRESETS = 'supported_presets' CONF_SHOW_ACTION = 'show_action' CONF_INDOOR_TEMPERATURE = 'indoor_temperature' +CONF_OUTDOOR_TEMPERATURE = 'outdoor_temperature' +ICON_OUTDOOR_TEMPERATURE = 'mdi:home-thermometer-outline' +CONF_INBOUND_TEMPERATURE = 'inbound_temperature' +ICON_INBOUND_TEMPERATURE = 'mdi:thermometer-plus' +CONF_OUTBOUND_TEMPERATURE = 'outbound_temperature' +ICON_OUTBOUND_TEMPERATURE = 'mdi:thermometer-minus' +CONF_STRANGE_TEMPERATURE = 'strange_temperature' +ICON_STRANGE_TEMPERATURE = 'mdi:thermometer-lines' CONF_DISPLAY_STATE = 'display_state' - +CONF_INVERTOR_POWER = 'invertor_power' +CONF_DEFROST_STATE = 'defrost_state' +ICON_DEFROST = "mdi:snowflake-melt" CONF_DISPLAY_INVERTED = 'display_inverted' -ICON_DISPLAY = "mdi:numeric" +ICON_DISPLAY = "mdi:clock-digital" aux_ac_ns = cg.esphome_ns.namespace("aux_ac") AirCon = aux_ac_ns.class_("AirCon", climate.Climate, cg.Component) @@ -102,6 +119,18 @@ CONFIG_SCHEMA = cv.All( cv.Optional(CONF_PERIOD, default="7s"): cv.time_period, cv.Optional(CONF_SHOW_ACTION, default="true"): cv.boolean, cv.Optional(CONF_DISPLAY_INVERTED, default="false"): cv.boolean, + cv.Optional(CONF_DEFROST_STATE, default="false"): cv.boolean, + cv.Optional(CONF_INVERTOR_POWER): sensor.sensor_schema( + unit_of_measurement=UNIT_PERCENT, + icon=ICON_POWER, + accuracy_decimals=0, + device_class=DEVICE_CLASS_POWER_FACTOR, + state_class=STATE_CLASS_MEASUREMENT, + ).extend( + { + cv.Optional(CONF_INTERNAL, default="true"): cv.boolean, + } + ), cv.Optional(CONF_INDOOR_TEMPERATURE): sensor.sensor_schema( unit_of_measurement=UNIT_CELSIUS, icon=ICON_THERMOMETER, @@ -113,6 +142,51 @@ CONFIG_SCHEMA = cv.All( cv.Optional(CONF_INTERNAL, default="true"): cv.boolean, } ), + cv.Optional(CONF_OUTDOOR_TEMPERATURE): sensor.sensor_schema( + unit_of_measurement=UNIT_CELSIUS, + icon=ICON_OUTDOOR_TEMPERATURE, + accuracy_decimals=0, + device_class=DEVICE_CLASS_TEMPERATURE, + state_class=STATE_CLASS_MEASUREMENT, + ).extend( + { + cv.Optional(CONF_INTERNAL, default="true"): cv.boolean, + } + ), + cv.Optional(CONF_INBOUND_TEMPERATURE): sensor.sensor_schema( + unit_of_measurement=UNIT_CELSIUS, + icon=ICON_INBOUND_TEMPERATURE, + accuracy_decimals=1, + device_class=DEVICE_CLASS_TEMPERATURE, + state_class=STATE_CLASS_MEASUREMENT, + ).extend( + { + cv.Optional(CONF_INTERNAL, default="true"): cv.boolean, + } + ), + cv.Optional(CONF_OUTBOUND_TEMPERATURE): sensor.sensor_schema( + unit_of_measurement=UNIT_CELSIUS, + icon=ICON_OUTBOUND_TEMPERATURE, + accuracy_decimals=0, + device_class=DEVICE_CLASS_TEMPERATURE, + state_class=STATE_CLASS_MEASUREMENT, + ).extend( + { + cv.Optional(CONF_INTERNAL, default="true"): cv.boolean, + } + ), + cv.Optional(CONF_STRANGE_TEMPERATURE): sensor.sensor_schema( + unit_of_measurement=UNIT_CELSIUS, + icon=ICON_STRANGE_TEMPERATURE, + accuracy_decimals=0, + device_class=DEVICE_CLASS_TEMPERATURE, + state_class=STATE_CLASS_MEASUREMENT, + ).extend( + { + cv.Optional(CONF_INTERNAL, default="true"): cv.boolean, + } + ), + cv.Optional(CONF_DISPLAY_STATE): binary_sensor.binary_sensor_schema( icon=ICON_DISPLAY ).extend( @@ -120,6 +194,16 @@ CONFIG_SCHEMA = cv.All( cv.Optional(CONF_INTERNAL, default="true"): cv.boolean } ), + + cv.Optional(CONF_DEFROST_STATE): binary_sensor.binary_sensor_schema( + icon=ICON_DEFROST + ).extend( + { + cv.Optional(CONF_INTERNAL, default="true"): cv.boolean + } + ), + + cv.Optional(CONF_SUPPORTED_MODES): cv.ensure_list(validate_modes), cv.Optional(CONF_SUPPORTED_SWING_MODES): cv.ensure_list(validate_swing_modes), cv.Optional(CONF_SUPPORTED_PRESETS): cv.ensure_list(validate_presets), @@ -146,11 +230,41 @@ async def to_code(config): conf = config[CONF_INDOOR_TEMPERATURE] sens = await sensor.new_sensor(conf) cg.add(var.set_indoor_temperature_sensor(sens)) + + if CONF_OUTDOOR_TEMPERATURE in config: + conf = config[CONF_OUTDOOR_TEMPERATURE] + sens = await sensor.new_sensor(conf) + cg.add(var.set_outdoor_temperature_sensor(sens)) + + if CONF_OUTBOUND_TEMPERATURE in config: + conf = config[CONF_OUTBOUND_TEMPERATURE] + sens = await sensor.new_sensor(conf) + cg.add(var.set_outbound_temperature_sensor(sens)) + + if CONF_INBOUND_TEMPERATURE in config: + conf = config[CONF_INBOUND_TEMPERATURE] + sens = await sensor.new_sensor(conf) + cg.add(var.set_inbound_temperature_sensor(sens)) + + if CONF_STRANGE_TEMPERATURE in config: + conf = config[CONF_STRANGE_TEMPERATURE] + sens = await sensor.new_sensor(conf) + cg.add(var.set_strange_temperature_sensor(sens)) if CONF_DISPLAY_STATE in config: conf = config[CONF_DISPLAY_STATE] sens = await binary_sensor.new_binary_sensor(conf) cg.add(var.set_display_sensor(sens)) + + if CONF_DEFROST_STATE in config: + conf = config[CONF_DEFROST_STATE] + sens = await binary_sensor.new_binary_sensor(conf) + cg.add(var.set_defrost_state(sens)) + + if CONF_INVERTOR_POWER in config: + conf = config[CONF_INVERTOR_POWER] + sens = await sensor.new_sensor(conf) + cg.add(var.set_invertor_power_sensor(sens)) cg.add(var.set_period(config[CONF_PERIOD].total_milliseconds)) cg.add(var.set_show_action(config[CONF_SHOW_ACTION])) @@ -166,8 +280,6 @@ async def to_code(config): if CONF_CUSTOM_FAN_MODES in config: cg.add(var.set_custom_fan_modes(config[CONF_CUSTOM_FAN_MODES])) - - DISPLAY_ACTION_SCHEMA = maybe_simple_id( { cv.Required(CONF_ID): cv.use_id(AirCon), @@ -185,6 +297,7 @@ async def display_on_to_code(config, action_id, template_arg, args): return cg.new_Pvariable(action_id, template_arg, paren) + SEND_TEST_PACKET_ACTION_SCHEMA = maybe_simple_id( { cv.Required(CONF_ID): cv.use_id(AirCon),