From 3d130b790c33b17d63d5dc1b379e6ecda8a14e09 Mon Sep 17 00:00:00 2001 From: Paul Bottein Date: Tue, 15 Apr 2025 23:10:40 +0200 Subject: [PATCH] Create covers section in area strategy dashboard (#25073) * Move cover domain and garage, door, window binary sensor to opening section in area strategy * Rename to cover and add input boolean and select --- .../strategies/areas/area-view-strategy.ts | 15 ++++++- .../areas/helpers/areas-strategy-helper.ts | 42 ++++++------------- src/translations/en.json | 1 + 3 files changed, 27 insertions(+), 31 deletions(-) diff --git a/src/panels/lovelace/strategies/areas/area-view-strategy.ts b/src/panels/lovelace/strategies/areas/area-view-strategy.ts index 853568dfbb..c2c2597a9f 100644 --- a/src/panels/lovelace/strategies/areas/area-view-strategy.ts +++ b/src/panels/lovelace/strategies/areas/area-view-strategy.ts @@ -76,7 +76,7 @@ export class AreaViewStrategy extends ReactiveElement { const computeTileCard = computeAreaTileCardConfig(hass, area.name, true); - const { lights, climate, media_players, security, others } = + const { lights, climate, covers, media_players, security, others } = groupedEntities; if (lights.length > 0) { @@ -92,6 +92,19 @@ export class AreaViewStrategy extends ReactiveElement { }); } + if (covers.length > 0) { + sections.push({ + type: "grid", + cards: [ + computeHeadingCard( + hass.localize("ui.panel.lovelace.strategy.areas.groups.covers"), + AREA_STRATEGY_GROUP_ICONS.covers + ), + ...covers.map(computeTileCard), + ], + }); + } + if (climate.length > 0) { sections.push({ type: "grid", diff --git a/src/panels/lovelace/strategies/areas/helpers/areas-strategy-helper.ts b/src/panels/lovelace/strategies/areas/helpers/areas-strategy-helper.ts index 2c284fcca8..3c64b21457 100644 --- a/src/panels/lovelace/strategies/areas/helpers/areas-strategy-helper.ts +++ b/src/panels/lovelace/strategies/areas/helpers/areas-strategy-helper.ts @@ -19,6 +19,7 @@ import type { TileCardConfig } from "../../../cards/types"; export const AREA_STRATEGY_GROUPS = [ "lights", "climate", + "covers", "media_players", "security", "others", @@ -27,6 +28,7 @@ export const AREA_STRATEGY_GROUPS = [ export const AREA_STRATEGY_GROUP_ICONS = { lights: "mdi:lamps", climate: "mdi:home-thermometer", + covers: "mdi:blinds-horizontal", media_players: "mdi:multimedia", security: "mdi:security", others: "mdi:shape", @@ -60,22 +62,20 @@ export const getAreaGroupedEntities = ( entity_category: "none", }), ], - climate: [ + covers: [ generateEntityFilter(hass, { domain: "cover", area: area, - device_class: [ - "shutter", - "awning", - "blind", - "curtain", - "shade", - "shutter", - "window", - "none", - ], entity_category: "none", }), + generateEntityFilter(hass, { + domain: "binary_sensor", + area: area, + device_class: ["door", "garage_door", "window"], + entity_category: "none", + }), + ], + climate: [ generateEntityFilter(hass, { domain: "climate", area: area, @@ -96,12 +96,6 @@ export const getAreaGroupedEntities = ( area: area, entity_category: "none", }), - generateEntityFilter(hass, { - domain: "binary_sensor", - area: area, - device_class: "window", - entity_category: "none", - }), ], media_players: [ generateEntityFilter(hass, { @@ -121,23 +115,11 @@ export const getAreaGroupedEntities = ( area: area, entity_category: "none", }), - generateEntityFilter(hass, { - domain: "cover", - device_class: ["door", "garage", "gate"], - area: area, - entity_category: "none", - }), generateEntityFilter(hass, { domain: "camera", area: area, entity_category: "none", }), - generateEntityFilter(hass, { - domain: "binary_sensor", - device_class: ["door", "garage_door"], - area: area, - entity_category: "none", - }), ], others: [ generateEntityFilter(hass, { @@ -156,7 +138,7 @@ export const getAreaGroupedEntities = ( entity_category: "none", }), generateEntityFilter(hass, { - domain: "switch", + domain: ["switch", "select", "input_boolean", "input_select"], area: area, entity_category: "none", }), diff --git a/src/translations/en.json b/src/translations/en.json index 2676ae3004..11025cff96 100644 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -6388,6 +6388,7 @@ "areas": { "groups": { "lights": "Lights", + "covers": "Covers", "climate": "Climate", "media_players": "Entertainment", "security": "Security",