diff --git a/src/data/history.ts b/src/data/history.ts index 6bd1f3359d..92c4a2caf8 100644 --- a/src/data/history.ts +++ b/src/data/history.ts @@ -224,12 +224,15 @@ export const computeHistory = ( if (stateWithUnit) { unit = stateWithUnit.attributes.unit_of_measurement; - } else if (computeStateDomain(stateInfo[0]) === "climate") { - unit = hass.config.unit_system.temperature; - } else if (computeStateDomain(stateInfo[0]) === "water_heater") { - unit = hass.config.unit_system.temperature; - } else if (computeStateDomain(stateInfo[0]) === "humidifier") { - unit = "%"; + } else { + unit = { + climate: hass.config.unit_system.temperature, + counter: "#", + humidifier: "%", + input_number: "#", + number: "#", + water_heater: hass.config.unit_system.temperature, + }[computeStateDomain(stateInfo[0])]; } if (!unit) { diff --git a/src/panels/lovelace/cards/hui-gauge-card.ts b/src/panels/lovelace/cards/hui-gauge-card.ts index a6bcf33024..9560e015c3 100644 --- a/src/panels/lovelace/cards/hui-gauge-card.ts +++ b/src/panels/lovelace/cards/hui-gauge-card.ts @@ -44,7 +44,7 @@ class HuiGaugeCard extends LitElement implements LovelaceCard { entities: string[], entitiesFallback: string[] ): GaugeCardConfig { - const includeDomains = ["sensor"]; + const includeDomains = ["counter", "input_number", "number", "sensor"]; const maxEntities = 1; const entityFilter = (stateObj: HassEntity): boolean => !isNaN(Number(stateObj.state)); diff --git a/src/panels/lovelace/cards/hui-sensor-card.ts b/src/panels/lovelace/cards/hui-sensor-card.ts index e8cb258662..b0dfaed69c 100644 --- a/src/panels/lovelace/cards/hui-sensor-card.ts +++ b/src/panels/lovelace/cards/hui-sensor-card.ts @@ -1,4 +1,5 @@ import { HassEntity } from "home-assistant-js-websocket/dist/types"; +import { computeDomain } from "../../../common/entity/compute_domain"; import { customElement } from "lit-element"; import { HomeAssistant } from "../../../types"; import { findEntities } from "../common/find-entities"; @@ -7,6 +8,8 @@ import { LovelaceCardEditor } from "../types"; import { HuiEntityCard } from "./hui-entity-card"; import { EntityCardConfig, SensorCardConfig } from "./types"; +const includeDomains = ["counter", "input_number", "number", "sensor"]; + @customElement("hui-sensor-card") class HuiSensorCard extends HuiEntityCard { public static async getConfigElement(): Promise { @@ -19,7 +22,6 @@ class HuiSensorCard extends HuiEntityCard { entities: string[], entitiesFallback: string[] ): SensorCardConfig { - const includeDomains = ["sensor"]; const maxEntities = 1; const entityFilter = (stateObj: HassEntity): boolean => !isNaN(Number(stateObj.state)) && @@ -38,7 +40,10 @@ class HuiSensorCard extends HuiEntityCard { } public setConfig(config: SensorCardConfig): void { - if (!config.entity || config.entity.split(".")[0] !== "sensor") { + if ( + !config.entity || + !includeDomains.includes(computeDomain(config.entity)) + ) { throw new Error("Specify an entity from within the sensor domain"); } diff --git a/src/panels/lovelace/editor/config-elements/hui-gauge-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-gauge-card-editor.ts index 246ee75729..13a61042a9 100644 --- a/src/panels/lovelace/editor/config-elements/hui-gauge-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-gauge-card-editor.ts @@ -33,7 +33,7 @@ const cardConfigStruct = object({ theme: optional(string()), }); -const includeDomains = ["sensor"]; +const includeDomains = ["counter", "input_number", "number", "sensor"]; @customElement("hui-gauge-card-editor") export class HuiGaugeCardEditor diff --git a/src/panels/lovelace/editor/config-elements/hui-sensor-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-sensor-card-editor.ts index 11b4da9d7c..9d12608660 100644 --- a/src/panels/lovelace/editor/config-elements/hui-sensor-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-sensor-card-editor.ts @@ -37,7 +37,7 @@ const cardConfigStruct = object({ hours_to_show: optional(number()), }); -const includeDomains = ["sensor"]; +const includeDomains = ["counter", "input_number", "number", "sensor"]; @customElement("hui-sensor-card-editor") export class HuiSensorCardEditor diff --git a/src/panels/lovelace/header-footer/hui-graph-header-footer.ts b/src/panels/lovelace/header-footer/hui-graph-header-footer.ts index bc80313c02..918ead0d81 100644 --- a/src/panels/lovelace/header-footer/hui-graph-header-footer.ts +++ b/src/panels/lovelace/header-footer/hui-graph-header-footer.ts @@ -12,6 +12,7 @@ import { } from "lit-element"; import "../../../components/ha-circular-progress"; import { fetchRecent } from "../../../data/history"; +import { computeDomain } from "../../../common/entity/compute_domain"; import { HomeAssistant } from "../../../types"; import { findEntities } from "../common/find-entities"; import { coordinates } from "../common/graph/coordinates"; @@ -22,6 +23,7 @@ import { GraphHeaderFooterConfig } from "./types"; const MINUTE = 60000; const HOUR = MINUTE * 60; +const includeDomains = ["counter", "input_number", "number", "sensor"]; @customElement("hui-graph-header-footer") export class HuiGraphHeaderFooter @@ -37,7 +39,6 @@ export class HuiGraphHeaderFooter entities: string[], entitiesFallback: string[] ): GraphHeaderFooterConfig { - const includeDomains = ["sensor"]; const maxEntities = 1; const entityFilter = (stateObj: HassEntity): boolean => !isNaN(Number(stateObj.state)) && @@ -75,7 +76,10 @@ export class HuiGraphHeaderFooter } public setConfig(config: GraphHeaderFooterConfig): void { - if (!config?.entity || config.entity.split(".")[0] !== "sensor") { + if ( + !config?.entity || + !includeDomains.includes(computeDomain(config.entity)) + ) { throw new Error("Specify an entity from within the sensor domain"); }