diff --git a/src/panels/lovelace/common/evaluate-filter.ts b/src/panels/lovelace/common/evaluate-filter.ts index 70a9837c77..9bc190e494 100644 --- a/src/panels/lovelace/common/evaluate-filter.ts +++ b/src/panels/lovelace/common/evaluate-filter.ts @@ -2,11 +2,24 @@ import { HassEntity } from "home-assistant-js-websocket"; export const evaluateFilter = (stateObj: HassEntity, filter: any): boolean => { const operator = filter.operator || "=="; - const value = filter.value ?? filter; - const state = filter.attribute + let value = filter.value ?? filter; + let state = filter.attribute ? stateObj.attributes[filter.attribute] : stateObj.state; + if (operator === "==" || operator === "!=") { + const valueIsNumeric = + typeof value === "number" || + (typeof value === "string" && value.trim() && !isNaN(Number(value))); + const stateIsNumeric = + typeof state === "number" || + (typeof state === "string" && state.trim() && !isNaN(Number(state))); + if (valueIsNumeric && stateIsNumeric) { + value = Number(value); + state = Number(state); + } + } + switch (operator) { case "==": return state === value;