mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 15:12:06 +00:00 
			
		
		
		
	[haier] climate ID auto generation (#6949)
This commit is contained in:
		| @@ -56,7 +56,7 @@ SENSOR_TYPES = { | |||||||
|  |  | ||||||
| CONFIG_SCHEMA = cv.Schema( | CONFIG_SCHEMA = cv.Schema( | ||||||
|     { |     { | ||||||
|         cv.Required(CONF_HAIER_ID): cv.use_id(HonClimate), |         cv.GenerateID(CONF_HAIER_ID): cv.use_id(HonClimate), | ||||||
|     } |     } | ||||||
| ).extend({cv.Optional(type): schema for type, schema in SENSOR_TYPES.items()}) | ).extend({cv.Optional(type): schema for type, schema in SENSOR_TYPES.items()}) | ||||||
|  |  | ||||||
| @@ -64,8 +64,8 @@ CONFIG_SCHEMA = cv.Schema( | |||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     paren = await cg.get_variable(config[CONF_HAIER_ID]) |     paren = await cg.get_variable(config[CONF_HAIER_ID]) | ||||||
|  |  | ||||||
|     for type, _ in SENSOR_TYPES.items(): |     for type_ in SENSOR_TYPES: | ||||||
|         if conf := config.get(type): |         if conf := config.get(type_): | ||||||
|             sens = await binary_sensor.new_binary_sensor(conf) |             sens = await binary_sensor.new_binary_sensor(conf) | ||||||
|             binary_sensor_type = getattr(BinarySensorTypeEnum, type.upper()) |             binary_sensor_type = getattr(BinarySensorTypeEnum, type_.upper()) | ||||||
|             cg.add(paren.set_sub_binary_sensor(binary_sensor_type, sens)) |             cg.add(paren.set_sub_binary_sensor(binary_sensor_type, sens)) | ||||||
|   | |||||||
| @@ -21,7 +21,7 @@ ICON_SPRAY_BOTTLE = "mdi:spray-bottle" | |||||||
|  |  | ||||||
| CONFIG_SCHEMA = cv.Schema( | CONFIG_SCHEMA = cv.Schema( | ||||||
|     { |     { | ||||||
|         cv.Required(CONF_HAIER_ID): cv.use_id(HonClimate), |         cv.GenerateID(CONF_HAIER_ID): cv.use_id(HonClimate), | ||||||
|         cv.Optional(CONF_SELF_CLEANING): button.button_schema( |         cv.Optional(CONF_SELF_CLEANING): button.button_schema( | ||||||
|             SelfCleaningButton, |             SelfCleaningButton, | ||||||
|             icon=ICON_SPRAY_BOTTLE, |             icon=ICON_SPRAY_BOTTLE, | ||||||
|   | |||||||
| @@ -183,7 +183,6 @@ BASE_CONFIG_SCHEMA = ( | |||||||
|             cv.Optional( |             cv.Optional( | ||||||
|                 CONF_SUPPORTED_SWING_MODES, |                 CONF_SUPPORTED_SWING_MODES, | ||||||
|                 default=[ |                 default=[ | ||||||
|                     "OFF", |  | ||||||
|                     "VERTICAL", |                     "VERTICAL", | ||||||
|                     "HORIZONTAL", |                     "HORIZONTAL", | ||||||
|                     "BOTH", |                     "BOTH", | ||||||
| @@ -211,7 +210,7 @@ CONFIG_SCHEMA = cv.All( | |||||||
|                     ): cv.boolean, |                     ): cv.boolean, | ||||||
|                     cv.Optional( |                     cv.Optional( | ||||||
|                         CONF_SUPPORTED_PRESETS, |                         CONF_SUPPORTED_PRESETS, | ||||||
|                         default=list(["BOOST", "COMFORT"]),  # No AWAY by default |                         default=["BOOST", "COMFORT"],  # No AWAY by default | ||||||
|                     ): cv.ensure_list( |                     ): cv.ensure_list( | ||||||
|                         cv.enum(SUPPORTED_CLIMATE_PRESETS_SMARTAIR2_OPTIONS, upper=True) |                         cv.enum(SUPPORTED_CLIMATE_PRESETS_SMARTAIR2_OPTIONS, upper=True) | ||||||
|                     ), |                     ), | ||||||
| @@ -231,7 +230,7 @@ CONFIG_SCHEMA = cv.All( | |||||||
|                     ): cv.int_range(min=PROTOCOL_CONTROL_PACKET_SIZE, max=50), |                     ): cv.int_range(min=PROTOCOL_CONTROL_PACKET_SIZE, max=50), | ||||||
|                     cv.Optional( |                     cv.Optional( | ||||||
|                         CONF_SUPPORTED_PRESETS, |                         CONF_SUPPORTED_PRESETS, | ||||||
|                         default=list(["BOOST", "ECO", "SLEEP"]),  # No AWAY by default |                         default=["BOOST", "ECO", "SLEEP"],  # No AWAY by default | ||||||
|                     ): cv.ensure_list( |                     ): cv.ensure_list( | ||||||
|                         cv.enum(SUPPORTED_CLIMATE_PRESETS_HON_OPTIONS, upper=True) |                         cv.enum(SUPPORTED_CLIMATE_PRESETS_HON_OPTIONS, upper=True) | ||||||
|                     ), |                     ), | ||||||
| @@ -427,11 +426,7 @@ def _final_validate(config): | |||||||
|             "No logger component found, logging for Haier protocol is disabled" |             "No logger component found, logging for Haier protocol is disabled" | ||||||
|         ) |         ) | ||||||
|         cg.add_build_flag("-DHAIER_LOG_LEVEL=0") |         cg.add_build_flag("-DHAIER_LOG_LEVEL=0") | ||||||
|     if ( |     if config.get(CONF_WIFI_SIGNAL) and CONF_WIFI not in full_config: | ||||||
|         (CONF_WIFI_SIGNAL in config) |  | ||||||
|         and (config[CONF_WIFI_SIGNAL]) |  | ||||||
|         and CONF_WIFI not in full_config |  | ||||||
|     ): |  | ||||||
|         raise cv.Invalid( |         raise cv.Invalid( | ||||||
|             f"No WiFi configured, if you want to use haier climate without WiFi add {CONF_WIFI_SIGNAL}: false to climate configuration" |             f"No WiFi configured, if you want to use haier climate without WiFi add {CONF_WIFI_SIGNAL}: false to climate configuration" | ||||||
|         ) |         ) | ||||||
|   | |||||||
| @@ -137,16 +137,16 @@ SENSOR_TYPES = { | |||||||
|  |  | ||||||
| CONFIG_SCHEMA = cv.Schema( | CONFIG_SCHEMA = cv.Schema( | ||||||
|     { |     { | ||||||
|         cv.Required(CONF_HAIER_ID): cv.use_id(HonClimate), |         cv.GenerateID(CONF_HAIER_ID): cv.use_id(HonClimate), | ||||||
|     } |     } | ||||||
| ).extend({cv.Optional(type): schema for type, schema in SENSOR_TYPES.items()}) | ).extend({cv.Optional(type_): schema for type_, schema in SENSOR_TYPES.items()}) | ||||||
|  |  | ||||||
|  |  | ||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     paren = await cg.get_variable(config[CONF_HAIER_ID]) |     paren = await cg.get_variable(config[CONF_HAIER_ID]) | ||||||
|  |  | ||||||
|     for type, _ in SENSOR_TYPES.items(): |     for type_ in SENSOR_TYPES: | ||||||
|         if conf := config.get(type): |         if conf := config.get(type_): | ||||||
|             sens = await sensor.new_sensor(conf) |             sens = await sensor.new_sensor(conf) | ||||||
|             sensor_type = getattr(SensorTypeEnum, type.upper()) |             sensor_type = getattr(SensorTypeEnum, type_.upper()) | ||||||
|             cg.add(paren.set_sub_sensor(sensor_type, sens)) |             cg.add(paren.set_sub_sensor(sensor_type, sens)) | ||||||
|   | |||||||
| @@ -39,7 +39,7 @@ TEXT_SENSOR_TYPES = { | |||||||
|  |  | ||||||
| CONFIG_SCHEMA = cv.Schema( | CONFIG_SCHEMA = cv.Schema( | ||||||
|     { |     { | ||||||
|         cv.Required(CONF_HAIER_ID): cv.use_id(HonClimate), |         cv.GenerateID(CONF_HAIER_ID): cv.use_id(HonClimate), | ||||||
|     } |     } | ||||||
| ).extend({cv.Optional(type): schema for type, schema in TEXT_SENSOR_TYPES.items()}) | ).extend({cv.Optional(type): schema for type, schema in TEXT_SENSOR_TYPES.items()}) | ||||||
|  |  | ||||||
| @@ -47,8 +47,8 @@ CONFIG_SCHEMA = cv.Schema( | |||||||
| async def to_code(config): | async def to_code(config): | ||||||
|     paren = await cg.get_variable(config[CONF_HAIER_ID]) |     paren = await cg.get_variable(config[CONF_HAIER_ID]) | ||||||
|  |  | ||||||
|     for type, _ in TEXT_SENSOR_TYPES.items(): |     for type_ in TEXT_SENSOR_TYPES: | ||||||
|         if conf := config.get(type): |         if conf := config.get(type_): | ||||||
|             sens = await text_sensor.new_text_sensor(conf) |             sens = await text_sensor.new_text_sensor(conf) | ||||||
|             text_sensor_type = getattr(TextSensorTypeEnum, type.upper()) |             text_sensor_type = getattr(TextSensorTypeEnum, type_.upper()) | ||||||
|             cg.add(paren.set_sub_text_sensor(text_sensor_type, sens)) |             cg.add(paren.set_sub_text_sensor(text_sensor_type, sens)) | ||||||
|   | |||||||
| @@ -54,7 +54,6 @@ climate: | |||||||
|  |  | ||||||
| sensor: | sensor: | ||||||
|   - platform: haier |   - platform: haier | ||||||
|     haier_id: haier_ac |  | ||||||
|     outdoor_temperature: |     outdoor_temperature: | ||||||
|       name: Haier outdoor temperature |       name: Haier outdoor temperature | ||||||
|     humidity: |     humidity: | ||||||
| @@ -80,7 +79,6 @@ sensor: | |||||||
|  |  | ||||||
| binary_sensor: | binary_sensor: | ||||||
|   - platform: haier |   - platform: haier | ||||||
|     haier_id: haier_ac |  | ||||||
|     compressor_status: |     compressor_status: | ||||||
|       name: Haier Outdoor Compressor Status |       name: Haier Outdoor Compressor Status | ||||||
|     defrost_status: |     defrost_status: | ||||||
| @@ -96,7 +94,6 @@ binary_sensor: | |||||||
|  |  | ||||||
| button: | button: | ||||||
|   - platform: haier |   - platform: haier | ||||||
|     haier_id: haier_ac |  | ||||||
|     self_cleaning: |     self_cleaning: | ||||||
|       name: Haier start self cleaning |       name: Haier start self cleaning | ||||||
|     steri_cleaning: |     steri_cleaning: | ||||||
| @@ -104,7 +101,6 @@ button: | |||||||
|  |  | ||||||
| text_sensor: | text_sensor: | ||||||
|   - platform: haier |   - platform: haier | ||||||
|     haier_id: haier_ac |  | ||||||
|     appliance_name: |     appliance_name: | ||||||
|       name: Haier appliance name |       name: Haier appliance name | ||||||
|     cleaning_status: |     cleaning_status: | ||||||
|   | |||||||
| @@ -54,7 +54,6 @@ climate: | |||||||
|  |  | ||||||
| sensor: | sensor: | ||||||
|   - platform: haier |   - platform: haier | ||||||
|     haier_id: haier_ac |  | ||||||
|     outdoor_temperature: |     outdoor_temperature: | ||||||
|       name: Haier outdoor temperature |       name: Haier outdoor temperature | ||||||
|     humidity: |     humidity: | ||||||
| @@ -80,7 +79,6 @@ sensor: | |||||||
|  |  | ||||||
| binary_sensor: | binary_sensor: | ||||||
|   - platform: haier |   - platform: haier | ||||||
|     haier_id: haier_ac |  | ||||||
|     compressor_status: |     compressor_status: | ||||||
|       name: Haier Outdoor Compressor Status |       name: Haier Outdoor Compressor Status | ||||||
|     defrost_status: |     defrost_status: | ||||||
| @@ -96,7 +94,6 @@ binary_sensor: | |||||||
|  |  | ||||||
| button: | button: | ||||||
|   - platform: haier |   - platform: haier | ||||||
|     haier_id: haier_ac |  | ||||||
|     self_cleaning: |     self_cleaning: | ||||||
|       name: Haier start self cleaning |       name: Haier start self cleaning | ||||||
|     steri_cleaning: |     steri_cleaning: | ||||||
| @@ -104,7 +101,6 @@ button: | |||||||
|  |  | ||||||
| text_sensor: | text_sensor: | ||||||
|   - platform: haier |   - platform: haier | ||||||
|     haier_id: haier_ac |  | ||||||
|     appliance_name: |     appliance_name: | ||||||
|       name: Haier appliance name |       name: Haier appliance name | ||||||
|     cleaning_status: |     cleaning_status: | ||||||
|   | |||||||
| @@ -54,7 +54,6 @@ climate: | |||||||
|  |  | ||||||
| sensor: | sensor: | ||||||
|   - platform: haier |   - platform: haier | ||||||
|     haier_id: haier_ac |  | ||||||
|     outdoor_temperature: |     outdoor_temperature: | ||||||
|       name: Haier outdoor temperature |       name: Haier outdoor temperature | ||||||
|     humidity: |     humidity: | ||||||
| @@ -80,7 +79,6 @@ sensor: | |||||||
|  |  | ||||||
| binary_sensor: | binary_sensor: | ||||||
|   - platform: haier |   - platform: haier | ||||||
|     haier_id: haier_ac |  | ||||||
|     compressor_status: |     compressor_status: | ||||||
|       name: Haier Outdoor Compressor Status |       name: Haier Outdoor Compressor Status | ||||||
|     defrost_status: |     defrost_status: | ||||||
| @@ -96,7 +94,6 @@ binary_sensor: | |||||||
|  |  | ||||||
| button: | button: | ||||||
|   - platform: haier |   - platform: haier | ||||||
|     haier_id: haier_ac |  | ||||||
|     self_cleaning: |     self_cleaning: | ||||||
|       name: Haier start self cleaning |       name: Haier start self cleaning | ||||||
|     steri_cleaning: |     steri_cleaning: | ||||||
| @@ -104,7 +101,6 @@ button: | |||||||
|  |  | ||||||
| text_sensor: | text_sensor: | ||||||
|   - platform: haier |   - platform: haier | ||||||
|     haier_id: haier_ac |  | ||||||
|     appliance_name: |     appliance_name: | ||||||
|       name: Haier appliance name |       name: Haier appliance name | ||||||
|     cleaning_status: |     cleaning_status: | ||||||
|   | |||||||
| @@ -54,7 +54,6 @@ climate: | |||||||
|  |  | ||||||
| sensor: | sensor: | ||||||
|   - platform: haier |   - platform: haier | ||||||
|     haier_id: haier_ac |  | ||||||
|     outdoor_temperature: |     outdoor_temperature: | ||||||
|       name: Haier outdoor temperature |       name: Haier outdoor temperature | ||||||
|     humidity: |     humidity: | ||||||
| @@ -80,7 +79,6 @@ sensor: | |||||||
|  |  | ||||||
| binary_sensor: | binary_sensor: | ||||||
|   - platform: haier |   - platform: haier | ||||||
|     haier_id: haier_ac |  | ||||||
|     compressor_status: |     compressor_status: | ||||||
|       name: Haier Outdoor Compressor Status |       name: Haier Outdoor Compressor Status | ||||||
|     defrost_status: |     defrost_status: | ||||||
| @@ -96,7 +94,6 @@ binary_sensor: | |||||||
|  |  | ||||||
| button: | button: | ||||||
|   - platform: haier |   - platform: haier | ||||||
|     haier_id: haier_ac |  | ||||||
|     self_cleaning: |     self_cleaning: | ||||||
|       name: Haier start self cleaning |       name: Haier start self cleaning | ||||||
|     steri_cleaning: |     steri_cleaning: | ||||||
| @@ -104,7 +101,6 @@ button: | |||||||
|  |  | ||||||
| text_sensor: | text_sensor: | ||||||
|   - platform: haier |   - platform: haier | ||||||
|     haier_id: haier_ac |  | ||||||
|     appliance_name: |     appliance_name: | ||||||
|       name: Haier appliance name |       name: Haier appliance name | ||||||
|     cleaning_status: |     cleaning_status: | ||||||
|   | |||||||
| @@ -54,7 +54,6 @@ climate: | |||||||
|  |  | ||||||
| sensor: | sensor: | ||||||
|   - platform: haier |   - platform: haier | ||||||
|     haier_id: haier_ac |  | ||||||
|     outdoor_temperature: |     outdoor_temperature: | ||||||
|       name: Haier outdoor temperature |       name: Haier outdoor temperature | ||||||
|     humidity: |     humidity: | ||||||
| @@ -80,7 +79,6 @@ sensor: | |||||||
|  |  | ||||||
| binary_sensor: | binary_sensor: | ||||||
|   - platform: haier |   - platform: haier | ||||||
|     haier_id: haier_ac |  | ||||||
|     compressor_status: |     compressor_status: | ||||||
|       name: Haier Outdoor Compressor Status |       name: Haier Outdoor Compressor Status | ||||||
|     defrost_status: |     defrost_status: | ||||||
| @@ -96,7 +94,6 @@ binary_sensor: | |||||||
|  |  | ||||||
| button: | button: | ||||||
|   - platform: haier |   - platform: haier | ||||||
|     haier_id: haier_ac |  | ||||||
|     self_cleaning: |     self_cleaning: | ||||||
|       name: Haier start self cleaning |       name: Haier start self cleaning | ||||||
|     steri_cleaning: |     steri_cleaning: | ||||||
| @@ -104,7 +101,6 @@ button: | |||||||
|  |  | ||||||
| text_sensor: | text_sensor: | ||||||
|   - platform: haier |   - platform: haier | ||||||
|     haier_id: haier_ac |  | ||||||
|     appliance_name: |     appliance_name: | ||||||
|       name: Haier appliance name |       name: Haier appliance name | ||||||
|     cleaning_status: |     cleaning_status: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user