diff --git a/src/common/entity/state_active.ts b/src/common/entity/state_active.ts index 6be6728c20..51c1496f63 100644 --- a/src/common/entity/state_active.ts +++ b/src/common/entity/state_active.ts @@ -1,33 +1,30 @@ import { HassEntity } from "home-assistant-js-websocket"; -import { OFF_STATES } from "../../data/entity"; +import { OFF_STATES, UNAVAILABLE } from "../../data/entity"; import { computeDomain } from "./compute_domain"; -const NORMAL_UNKNOWN_DOMAIN = ["button", "input_button", "scene"]; -const NORMAL_OFF_DOMAIN = ["script"]; - export function stateActive(stateObj: HassEntity, state?: string): boolean { const domain = computeDomain(stateObj.entity_id); const compareState = state !== undefined ? state : stateObj?.state; - if ( - OFF_STATES.includes(compareState) && - !(NORMAL_UNKNOWN_DOMAIN.includes(domain) && compareState === "unknown") && - !(NORMAL_OFF_DOMAIN.includes(domain) && compareState === "script") - ) { + if (["button", "input_button", "scene"].includes(domain)) { + return compareState !== UNAVAILABLE; + } + + if (OFF_STATES.includes(compareState)) { return false; } // Custom cases switch (domain) { case "cover": - return compareState === "open" || compareState === "opening"; + return !["close", "closing"].includes(compareState); case "device_tracker": case "person": return compareState !== "not_home"; - case "media-player": - return compareState !== "idle" && compareState !== "standby"; + case "media_player": + return compareState !== "standby"; case "vacuum": - return compareState === "on" || compareState === "cleaning"; + return !["idle", "docked", "paused"].includes(compareState); case "plant": return compareState === "problem"; default: