diff --git a/src/data/selector.ts b/src/data/selector.ts index c77b722fd9..98e4136c9b 100644 --- a/src/data/selector.ts +++ b/src/data/selector.ts @@ -240,6 +240,7 @@ interface EntitySelectorFilter { integration?: string; domain?: string | readonly string[]; device_class?: string | readonly string[]; + unit_of_measurement?: string | readonly string[]; supported_features?: number | [number]; } @@ -811,6 +812,7 @@ export const filterSelectorEntities = ( domain: filterDomain, device_class: filterDeviceClass, supported_features: filterSupportedFeature, + unit_of_measurement: filterUnitOfMeasurement, integration: filterIntegration, } = filterEntity; @@ -846,6 +848,18 @@ export const filterSelectorEntities = ( } } + if (filterUnitOfMeasurement) { + const entityUnitOfMeasurement = entity.attributes.unit_of_measurement; + if ( + !entityUnitOfMeasurement || + (Array.isArray(filterUnitOfMeasurement) + ? !filterUnitOfMeasurement.includes(entityUnitOfMeasurement) + : entityUnitOfMeasurement !== filterUnitOfMeasurement) + ) { + return false; + } + } + if ( filterIntegration && entitySources?.[entity.entity_id]?.domain !== filterIntegration