From 8361b42a22b05fe5d16c388ff5faed4777d11aca Mon Sep 17 00:00:00 2001 From: Jan Bouwhuis Date: Wed, 26 Aug 2026 17:22:45 +0200 Subject: [PATCH] Use device class selector for random (#180291) --- .../components/random/config_flow.py | 27 ++--- homeassistant/components/random/strings.json | 98 ------------------- 2 files changed, 7 insertions(+), 118 deletions(-) diff --git a/homeassistant/components/random/config_flow.py b/homeassistant/components/random/config_flow.py index b407d72bcf1f..0b57aa1f03ee 100644 --- a/homeassistant/components/random/config_flow.py +++ b/homeassistant/components/random/config_flow.py @@ -6,8 +6,7 @@ from typing import Any, cast, override import voluptuous as vol -from homeassistant.components.binary_sensor import BinarySensorDeviceClass -from homeassistant.components.sensor import DEVICE_CLASS_UNITS, SensorDeviceClass +from homeassistant.components.sensor import DEVICE_CLASS_UNITS from homeassistant.const import ( CONF_DEVICE_CLASS, CONF_MAXIMUM, @@ -25,6 +24,8 @@ from homeassistant.helpers.schema_config_entry_flow import ( SchemaFlowMenuStep, ) from homeassistant.helpers.selector import ( + DeviceClassSelector, + DeviceClassSelectorConfig, SelectSelector, SelectSelectorConfig, SelectSelectorMode, @@ -48,13 +49,8 @@ def _generate_schema(domain: str, flow_type: _FlowType) -> vol.Schema: schema[vol.Required(CONF_NAME)] = TextSelector() if domain == Platform.BINARY_SENSOR: - schema[vol.Optional(CONF_DEVICE_CLASS)] = SelectSelector( - SelectSelectorConfig( - options=[cls.value for cls in BinarySensorDeviceClass], - sort=True, - mode=SelectSelectorMode.DROPDOWN, - translation_key="binary_sensor_device_class", - ), + schema[vol.Optional(CONF_DEVICE_CLASS)] = DeviceClassSelector( + DeviceClassSelectorConfig(domain=Platform.BINARY_SENSOR) ) if domain == Platform.SENSOR: @@ -62,17 +58,8 @@ def _generate_schema(domain: str, flow_type: _FlowType) -> vol.Schema: { vol.Optional(CONF_MINIMUM, default=DEFAULT_MIN): cv.positive_int, vol.Optional(CONF_MAXIMUM, default=DEFAULT_MAX): cv.positive_int, - vol.Optional(CONF_DEVICE_CLASS): SelectSelector( - SelectSelectorConfig( - options=[ - cls.value - for cls in SensorDeviceClass - if cls != SensorDeviceClass.ENUM - ], - sort=True, - mode=SelectSelectorMode.DROPDOWN, - translation_key="sensor_device_class", - ), + vol.Optional(CONF_DEVICE_CLASS): DeviceClassSelector( + DeviceClassSelectorConfig(domain=Platform.NUMBER) ), vol.Optional(CONF_UNIT_OF_MEASUREMENT): SelectSelector( SelectSelectorConfig( diff --git a/homeassistant/components/random/strings.json b/homeassistant/components/random/strings.json index db6b55429368..32fc3e339912 100644 --- a/homeassistant/components/random/strings.json +++ b/homeassistant/components/random/strings.json @@ -45,103 +45,5 @@ } } }, - - "selector": { - "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%]" - } - }, - "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%]", - "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%]" - } - } - }, "title": "Random" }