diff --git a/homeassistant/components/template/config_flow.py b/homeassistant/components/template/config_flow.py index 9682d9e542566..335820b3e79f0 100644 --- a/homeassistant/components/template/config_flow.py +++ b/homeassistant/components/template/config_flow.py @@ -7,19 +7,12 @@ import voluptuous as vol from homeassistant.components import websocket_api -from homeassistant.components.binary_sensor import BinarySensorDeviceClass -from homeassistant.components.button import ButtonDeviceClass -from homeassistant.components.cover import CoverDeviceClass -from homeassistant.components.event import EventDeviceClass -from homeassistant.components.number import NumberDeviceClass from homeassistant.components.sensor import ( CONF_STATE_CLASS, DEVICE_CLASS_STATE_CLASSES, DEVICE_CLASS_UNITS, - SensorDeviceClass, SensorStateClass, ) -from homeassistant.components.update import UpdateDeviceClass from homeassistant.const import ( CONF_DEVICE_CLASS, CONF_DEVICE_ID, @@ -188,13 +181,8 @@ def generate_schema(domain: str, flow_type: str) -> vol.Schema: if domain == Platform.BINARY_SENSOR: schema |= _SCHEMA_STATE | { - vol.Optional(CONF_DEVICE_CLASS): selector.SelectSelector( - selector.SelectSelectorConfig( - options=[cls.value for cls in BinarySensorDeviceClass], - mode=selector.SelectSelectorMode.DROPDOWN, - translation_key="binary_sensor_device_class", - sort=True, - ), + vol.Optional(CONF_DEVICE_CLASS): selector.DeviceClassSelector( + selector.DeviceClassSelectorConfig(domain=Platform.BINARY_SENSOR), ), } @@ -204,14 +192,9 @@ def generate_schema(domain: str, flow_type: str) -> vol.Schema: } if flow_type == "config": schema |= { - vol.Optional(CONF_DEVICE_CLASS): selector.SelectSelector( - selector.SelectSelectorConfig( - options=[cls.value for cls in ButtonDeviceClass], - mode=selector.SelectSelectorMode.DROPDOWN, - translation_key="button_device_class", - sort=True, - ), - ) + vol.Optional(CONF_DEVICE_CLASS): selector.DeviceClassSelector( + selector.DeviceClassSelectorConfig(domain=Platform.BUTTON), + ), } if domain == Platform.COVER: @@ -224,14 +207,9 @@ def generate_schema(domain: str, flow_type: str) -> vol.Schema: } if flow_type == "config": schema |= { - vol.Optional(CONF_DEVICE_CLASS): selector.SelectSelector( - selector.SelectSelectorConfig( - options=[cls.value for cls in CoverDeviceClass], - mode=selector.SelectSelectorMode.DROPDOWN, - translation_key="cover_device_class", - sort=True, - ), - ) + vol.Optional(CONF_DEVICE_CLASS): selector.DeviceClassSelector( + selector.DeviceClassSelectorConfig(domain=Platform.COVER), + ), } if domain == Platform.DEVICE_TRACKER: @@ -252,14 +230,9 @@ def generate_schema(domain: str, flow_type: str) -> vol.Schema: if flow_type == "config": schema |= { - vol.Optional(CONF_DEVICE_CLASS): selector.SelectSelector( - selector.SelectSelectorConfig( - options=[cls.value for cls in EventDeviceClass], - mode=selector.SelectSelectorMode.DROPDOWN, - translation_key="event_device_class", - sort=True, - ), - ) + vol.Optional(CONF_DEVICE_CLASS): selector.DeviceClassSelector( + selector.DeviceClassSelectorConfig(domain=Platform.EVENT), + ), } if domain == Platform.FAN: @@ -303,13 +276,8 @@ def generate_schema(domain: str, flow_type: str) -> vol.Schema: if domain == Platform.NUMBER: schema |= { - vol.Optional(CONF_DEVICE_CLASS): selector.SelectSelector( - selector.SelectSelectorConfig( - options=[cls.value for cls in NumberDeviceClass], - mode=selector.SelectSelectorMode.DROPDOWN, - translation_key="number_device_class", - sort=True, - ), + vol.Optional(CONF_DEVICE_CLASS): selector.DeviceClassSelector( + selector.DeviceClassSelectorConfig(domain=Platform.NUMBER), ), vol.Required(CONF_STATE): selector.TemplateSelector(), vol.Required(CONF_MIN, default=DEFAULT_MIN_VALUE): selector.NumberSelector( @@ -353,17 +321,8 @@ def generate_schema(domain: str, flow_type: str) -> vol.Schema: sort=True, ), ), - vol.Optional(CONF_DEVICE_CLASS): selector.SelectSelector( - selector.SelectSelectorConfig( - options=[ - cls.value - for cls in SensorDeviceClass - if cls != SensorDeviceClass.ENUM - ], - mode=selector.SelectSelectorMode.DROPDOWN, - translation_key="sensor_device_class", - sort=True, - ), + vol.Optional(CONF_DEVICE_CLASS): selector.DeviceClassSelector( + selector.DeviceClassSelectorConfig(domain=Platform.SENSOR), ), vol.Optional(CONF_STATE_CLASS): selector.SelectSelector( selector.SelectSelectorConfig( @@ -397,13 +356,8 @@ def generate_schema(domain: str, flow_type: str) -> vol.Schema: } if flow_type == "config": schema |= { - vol.Optional(CONF_DEVICE_CLASS): selector.SelectSelector( - selector.SelectSelectorConfig( - options=[cls.value for cls in UpdateDeviceClass], - mode=selector.SelectSelectorMode.DROPDOWN, - translation_key="update_device_class", - sort=True, - ), + vol.Optional(CONF_DEVICE_CLASS): selector.DeviceClassSelector( + selector.DeviceClassSelectorConfig(domain=Platform.UPDATE), ), } diff --git a/homeassistant/components/template/strings.json b/homeassistant/components/template/strings.json index 4a6ecd4f1dfc8..702be3b61052d 100644 --- a/homeassistant/components/template/strings.json +++ b/homeassistant/components/template/strings.json @@ -1146,191 +1146,6 @@ "text": "Text" } }, - "binary_sensor_device_class": { - "options": { - "battery": "[%key:component::binary_sensor::entity_component::battery::name%]", - "battery_charging": "[%key:component::binary_sensor::entity_component::battery_charging::name%]", - "carbon_monoxide": "[%key:component::binary_sensor::entity_component::carbon_monoxide::name%]", - "cold": "[%key:component::binary_sensor::entity_component::cold::name%]", - "connectivity": "[%key:component::binary_sensor::entity_component::connectivity::name%]", - "door": "[%key:component::binary_sensor::entity_component::door::name%]", - "garage_door": "[%key:component::binary_sensor::entity_component::garage_door::name%]", - "gas": "[%key:component::binary_sensor::entity_component::gas::name%]", - "heat": "[%key:component::binary_sensor::entity_component::heat::name%]", - "light": "[%key:component::binary_sensor::entity_component::light::name%]", - "lock": "[%key:component::binary_sensor::entity_component::lock::name%]", - "moisture": "[%key:component::binary_sensor::entity_component::moisture::name%]", - "motion": "[%key:component::binary_sensor::entity_component::motion::name%]", - "moving": "[%key:component::binary_sensor::entity_component::moving::name%]", - "occupancy": "[%key:component::binary_sensor::entity_component::occupancy::name%]", - "opening": "[%key:component::binary_sensor::entity_component::opening::name%]", - "plug": "[%key:component::binary_sensor::entity_component::plug::name%]", - "power": "[%key:component::binary_sensor::entity_component::power::name%]", - "presence": "[%key:component::binary_sensor::entity_component::presence::name%]", - "problem": "[%key:component::binary_sensor::entity_component::problem::name%]", - "running": "[%key:component::binary_sensor::entity_component::running::name%]", - "safety": "[%key:component::binary_sensor::entity_component::safety::name%]", - "smoke": "[%key:component::binary_sensor::entity_component::smoke::name%]", - "sound": "[%key:component::binary_sensor::entity_component::sound::name%]", - "tamper": "[%key:component::binary_sensor::entity_component::tamper::name%]", - "update": "[%key:component::binary_sensor::entity_component::update::name%]", - "vibration": "[%key:component::binary_sensor::entity_component::vibration::name%]", - "window": "[%key:component::binary_sensor::entity_component::window::name%]" - } - }, - "button_device_class": { - "options": { - "identify": "[%key:component::button::entity_component::identify::name%]", - "restart": "[%key:common::action::restart%]", - "update": "[%key:component::button::entity_component::update::name%]" - } - }, - "cover_device_class": { - "options": { - "awning": "[%key:component::cover::entity_component::awning::name%]", - "blind": "[%key:component::cover::entity_component::blind::name%]", - "curtain": "[%key:component::cover::entity_component::curtain::name%]", - "damper": "[%key:component::cover::entity_component::damper::name%]", - "door": "[%key:component::cover::entity_component::door::name%]", - "garage": "[%key:component::cover::entity_component::garage::name%]", - "gate": "[%key:component::cover::entity_component::gate::name%]", - "shade": "[%key:component::cover::entity_component::shade::name%]", - "shutter": "[%key:component::cover::entity_component::shutter::name%]", - "window": "[%key:component::cover::entity_component::window::name%]" - } - }, - "event_device_class": { - "options": { - "button": "[%key:component::event::entity_component::button::name%]", - "doorbell": "[%key:component::event::entity_component::doorbell::name%]", - "motion": "[%key:component::event::entity_component::motion::name%]" - } - }, - "number_device_class": { - "options": { - "absolute_humidity": "[%key:component::sensor::entity_component::absolute_humidity::name%]", - "apparent_power": "[%key:component::sensor::entity_component::apparent_power::name%]", - "aqi": "[%key:component::sensor::entity_component::aqi::name%]", - "area": "[%key:component::sensor::entity_component::area::name%]", - "atmospheric_pressure": "[%key:component::sensor::entity_component::atmospheric_pressure::name%]", - "battery": "[%key:component::sensor::entity_component::battery::name%]", - "blood_glucose_concentration": "[%key:component::sensor::entity_component::blood_glucose_concentration::name%]", - "carbon_dioxide": "[%key:component::sensor::entity_component::carbon_dioxide::name%]", - "carbon_monoxide": "[%key:component::sensor::entity_component::carbon_monoxide::name%]", - "conductivity": "[%key:component::sensor::entity_component::conductivity::name%]", - "current": "[%key:component::sensor::entity_component::current::name%]", - "data_rate": "[%key:component::sensor::entity_component::data_rate::name%]", - "data_size": "[%key:component::sensor::entity_component::data_size::name%]", - "distance": "[%key:component::sensor::entity_component::distance::name%]", - "duration": "[%key:component::sensor::entity_component::duration::name%]", - "energy": "[%key:component::sensor::entity_component::energy::name%]", - "energy_distance": "[%key:component::sensor::entity_component::energy_distance::name%]", - "energy_storage": "[%key:component::sensor::entity_component::energy_storage::name%]", - "frequency": "[%key:component::sensor::entity_component::frequency::name%]", - "gas": "[%key:component::sensor::entity_component::gas::name%]", - "humidity": "[%key:component::sensor::entity_component::humidity::name%]", - "illuminance": "[%key:component::sensor::entity_component::illuminance::name%]", - "irradiance": "[%key:component::sensor::entity_component::irradiance::name%]", - "moisture": "[%key:component::sensor::entity_component::moisture::name%]", - "monetary": "[%key:component::sensor::entity_component::monetary::name%]", - "nitrogen_dioxide": "[%key:component::sensor::entity_component::nitrogen_dioxide::name%]", - "nitrogen_monoxide": "[%key:component::sensor::entity_component::nitrogen_monoxide::name%]", - "nitrous_oxide": "[%key:component::sensor::entity_component::nitrous_oxide::name%]", - "ozone": "[%key:component::sensor::entity_component::ozone::name%]", - "ph": "[%key:component::sensor::entity_component::ph::name%]", - "pm1": "[%key:component::sensor::entity_component::pm1::name%]", - "pm10": "[%key:component::sensor::entity_component::pm10::name%]", - "pm25": "[%key:component::sensor::entity_component::pm25::name%]", - "pm4": "[%key:component::sensor::entity_component::pm4::name%]", - "power": "[%key:component::sensor::entity_component::power::name%]", - "power_factor": "[%key:component::sensor::entity_component::power_factor::name%]", - "precipitation": "[%key:component::sensor::entity_component::precipitation::name%]", - "precipitation_intensity": "[%key:component::sensor::entity_component::precipitation_intensity::name%]", - "pressure": "[%key:component::sensor::entity_component::pressure::name%]", - "reactive_energy": "[%key:component::sensor::entity_component::reactive_energy::name%]", - "reactive_power": "[%key:component::sensor::entity_component::reactive_power::name%]", - "signal_strength": "[%key:component::sensor::entity_component::signal_strength::name%]", - "sound_pressure": "[%key:component::sensor::entity_component::sound_pressure::name%]", - "speed": "[%key:component::sensor::entity_component::speed::name%]", - "sulphur_dioxide": "[%key:component::sensor::entity_component::sulphur_dioxide::name%]", - "temperature": "[%key:component::sensor::entity_component::temperature::name%]", - "temperature_delta": "[%key:component::sensor::entity_component::temperature_delta::name%]", - "volatile_organic_compounds": "[%key:component::sensor::entity_component::volatile_organic_compounds::name%]", - "volatile_organic_compounds_parts": "[%key:component::sensor::entity_component::volatile_organic_compounds_parts::name%]", - "voltage": "[%key:component::sensor::entity_component::voltage::name%]", - "volume": "[%key:component::sensor::entity_component::volume::name%]", - "volume_flow_rate": "[%key:component::sensor::entity_component::volume_flow_rate::name%]", - "volume_storage": "[%key:component::sensor::entity_component::volume_storage::name%]", - "water": "[%key:component::sensor::entity_component::water::name%]", - "weight": "[%key:component::sensor::entity_component::weight::name%]", - "wind_direction": "[%key:component::sensor::entity_component::wind_direction::name%]", - "wind_speed": "[%key:component::sensor::entity_component::wind_speed::name%]" - } - }, - "sensor_device_class": { - "options": { - "absolute_humidity": "[%key:component::sensor::entity_component::absolute_humidity::name%]", - "apparent_power": "[%key:component::sensor::entity_component::apparent_power::name%]", - "aqi": "[%key:component::sensor::entity_component::aqi::name%]", - "area": "[%key:component::sensor::entity_component::area::name%]", - "atmospheric_pressure": "[%key:component::sensor::entity_component::atmospheric_pressure::name%]", - "battery": "[%key:component::sensor::entity_component::battery::name%]", - "blood_glucose_concentration": "[%key:component::sensor::entity_component::blood_glucose_concentration::name%]", - "carbon_dioxide": "[%key:component::sensor::entity_component::carbon_dioxide::name%]", - "carbon_monoxide": "[%key:component::sensor::entity_component::carbon_monoxide::name%]", - "conductivity": "[%key:component::sensor::entity_component::conductivity::name%]", - "current": "[%key:component::sensor::entity_component::current::name%]", - "data_rate": "[%key:component::sensor::entity_component::data_rate::name%]", - "data_size": "[%key:component::sensor::entity_component::data_size::name%]", - "date": "[%key:component::sensor::entity_component::date::name%]", - "distance": "[%key:component::sensor::entity_component::distance::name%]", - "duration": "[%key:component::sensor::entity_component::duration::name%]", - "energy": "[%key:component::sensor::entity_component::energy::name%]", - "energy_distance": "[%key:component::sensor::entity_component::energy_distance::name%]", - "energy_storage": "[%key:component::sensor::entity_component::energy_storage::name%]", - "frequency": "[%key:component::sensor::entity_component::frequency::name%]", - "gas": "[%key:component::sensor::entity_component::gas::name%]", - "humidity": "[%key:component::sensor::entity_component::humidity::name%]", - "illuminance": "[%key:component::sensor::entity_component::illuminance::name%]", - "irradiance": "[%key:component::sensor::entity_component::irradiance::name%]", - "moisture": "[%key:component::sensor::entity_component::moisture::name%]", - "monetary": "[%key:component::sensor::entity_component::monetary::name%]", - "nitrogen_dioxide": "[%key:component::sensor::entity_component::nitrogen_dioxide::name%]", - "nitrogen_monoxide": "[%key:component::sensor::entity_component::nitrogen_monoxide::name%]", - "nitrous_oxide": "[%key:component::sensor::entity_component::nitrous_oxide::name%]", - "ozone": "[%key:component::sensor::entity_component::ozone::name%]", - "ph": "[%key:component::sensor::entity_component::ph::name%]", - "pm1": "[%key:component::sensor::entity_component::pm1::name%]", - "pm10": "[%key:component::sensor::entity_component::pm10::name%]", - "pm25": "[%key:component::sensor::entity_component::pm25::name%]", - "pm4": "[%key:component::sensor::entity_component::pm4::name%]", - "power": "[%key:component::sensor::entity_component::power::name%]", - "power_factor": "[%key:component::sensor::entity_component::power_factor::name%]", - "precipitation": "[%key:component::sensor::entity_component::precipitation::name%]", - "precipitation_intensity": "[%key:component::sensor::entity_component::precipitation_intensity::name%]", - "pressure": "[%key:component::sensor::entity_component::pressure::name%]", - "reactive_energy": "[%key:component::sensor::entity_component::reactive_energy::name%]", - "reactive_power": "[%key:component::sensor::entity_component::reactive_power::name%]", - "signal_strength": "[%key:component::sensor::entity_component::signal_strength::name%]", - "sound_pressure": "[%key:component::sensor::entity_component::sound_pressure::name%]", - "speed": "[%key:component::sensor::entity_component::speed::name%]", - "sulphur_dioxide": "[%key:component::sensor::entity_component::sulphur_dioxide::name%]", - "temperature": "[%key:component::sensor::entity_component::temperature::name%]", - "temperature_delta": "[%key:component::sensor::entity_component::temperature_delta::name%]", - "timestamp": "[%key:component::sensor::entity_component::timestamp::name%]", - "uptime": "[%key:component::sensor::entity_component::uptime::name%]", - "volatile_organic_compounds": "[%key:component::sensor::entity_component::volatile_organic_compounds::name%]", - "volatile_organic_compounds_parts": "[%key:component::sensor::entity_component::volatile_organic_compounds_parts::name%]", - "voltage": "[%key:component::sensor::entity_component::voltage::name%]", - "volume": "[%key:component::sensor::entity_component::volume::name%]", - "volume_flow_rate": "[%key:component::sensor::entity_component::volume_flow_rate::name%]", - "volume_storage": "[%key:component::sensor::entity_component::volume_storage::name%]", - "water": "[%key:component::sensor::entity_component::water::name%]", - "weight": "[%key:component::sensor::entity_component::weight::name%]", - "wind_direction": "[%key:component::sensor::entity_component::wind_direction::name%]", - "wind_speed": "[%key:component::sensor::entity_component::wind_speed::name%]" - } - }, "sensor_state_class": { "options": { "measurement": "[%key:component::sensor::entity_component::_::state_attributes::state_class::state::measurement%]",