From 196c15ff3e0a44ac47b9680dee97a54c3904c991 Mon Sep 17 00:00:00 2001 From: Michael Arthur Date: Mon, 21 Aug 2023 22:19:15 +1200 Subject: [PATCH] Add lawn mower entity state, icon and color (#17558) * start of lawn mower entity in the frontend * added colours for states * remove schedule states as no longer needed * change mowing to teal * remove docking as not included in architecture discussion and was missed --- src/common/const.ts | 3 +++ src/common/entity/get_states.ts | 1 + src/common/entity/state_active.ts | 2 ++ src/common/entity/state_color.ts | 1 + src/resources/ha-style.ts | 2 ++ 5 files changed, 9 insertions(+) diff --git a/src/common/const.ts b/src/common/const.ts index 399654a10b..03e2f424d6 100644 --- a/src/common/const.ts +++ b/src/common/const.ts @@ -49,6 +49,7 @@ import { mdiProgressClock, mdiRayVertex, mdiRemote, + mdiRobotMower, mdiRobotVacuum, mdiScriptText, mdiSineWave, @@ -99,6 +100,7 @@ export const FIXED_DOMAIN_ICONS = { input_number: mdiRayVertex, input_select: mdiFormatListBulleted, input_text: mdiFormTextbox, + lawn_mower: mdiRobotMower, light: mdiLightbulb, mailbox: mdiMailbox, notify: mdiCommentAlert, @@ -187,6 +189,7 @@ export const DOMAINS_WITH_CARD = [ "input_number", "input_text", "humidifier", + "lawn_mower", "lock", "media_player", "number", diff --git a/src/common/entity/get_states.ts b/src/common/entity/get_states.ts index 9ac8bcfbaa..29c11ca48c 100644 --- a/src/common/entity/get_states.ts +++ b/src/common/entity/get_states.ts @@ -26,6 +26,7 @@ export const FIXED_DOMAIN_STATES = { humidifier: ["on", "off"], input_boolean: ["on", "off"], input_button: [], + lawn_mower: ["error", "paused", "mowing", "docked"], light: ["on", "off"], lock: ["jammed", "locked", "locking", "unlocked", "unlocking"], media_player: [ diff --git a/src/common/entity/state_active.ts b/src/common/entity/state_active.ts index 34162fcc0b..7c304f0389 100644 --- a/src/common/entity/state_active.ts +++ b/src/common/entity/state_active.ts @@ -34,6 +34,8 @@ export function stateActive(stateObj: HassEntity, state?: string): boolean { case "device_tracker": case "person": return compareState !== "not_home"; + case "lawn_mower": + return ["mowing", "error"].includes(compareState); case "lock": return compareState !== "locked"; case "media_player": diff --git a/src/common/entity/state_color.ts b/src/common/entity/state_color.ts index d1c8e25d78..0abaca4c17 100644 --- a/src/common/entity/state_color.ts +++ b/src/common/entity/state_color.ts @@ -22,6 +22,7 @@ const STATE_COLORED_DOMAIN = new Set([ "group", "humidifier", "input_boolean", + "lawn_mower", "light", "lock", "media_player", diff --git a/src/resources/ha-style.ts b/src/resources/ha-style.ts index b0f80d7d41..4e311d8d6b 100644 --- a/src/resources/ha-style.ts +++ b/src/resources/ha-style.ts @@ -158,6 +158,8 @@ documentContainer.innerHTML = ` --state-device_tracker-home-color: var(--green-color); --state-fan-active-color: var(--cyan-color); --state-humidifier-on-color: var(--blue-color); + --state-lawn_mower-error-color: var(--red-color); + --state-lawn_mower-mowing-color: var(--teal-color); --state-light-active-color: var(--amber-color); --state-lock-jammed-color: var(--red-color); --state-lock-locked-color: var(--green-color);