avoid downloading the whole entity registry again as well

This commit is contained in:
J. Nick Koston 2023-02-24 18:29:30 -06:00
parent c636eacc51
commit 23ba92e4ad
No known key found for this signature in database

View File

@ -11,10 +11,8 @@ import {
} from "date-fns/esm"; } from "date-fns/esm";
import { Collection, getCollection } from "home-assistant-js-websocket"; import { Collection, getCollection } from "home-assistant-js-websocket";
import { groupBy } from "../common/util/group-by"; import { groupBy } from "../common/util/group-by";
import { subscribeOne } from "../common/util/subscribe-one";
import { HomeAssistant } from "../types"; import { HomeAssistant } from "../types";
import { ConfigEntry, getConfigEntries } from "./config_entries"; import { ConfigEntry, getConfigEntries } from "./config_entries";
import { subscribeEntityRegistry } from "./entity_registry";
import { import {
fetchStatistics, fetchStatistics,
getStatisticMetadata, getStatisticMetadata,
@ -341,9 +339,8 @@ const getEnergyData = async (
end?: Date, end?: Date,
compare?: boolean compare?: boolean
): Promise<EnergyData> => { ): Promise<EnergyData> => {
const [configEntries, entityRegistryEntries, info] = await Promise.all([ const [configEntries, info] = await Promise.all([
getConfigEntries(hass, { domain: "co2signal" }), getConfigEntries(hass, { domain: "co2signal" }),
subscribeOne(hass.connection, subscribeEntityRegistry),
getEnergyInfo(hass), getEnergyInfo(hass),
]); ]);
@ -352,15 +349,15 @@ const getEnergyData = async (
: undefined; : undefined;
let co2SignalEntity: string | undefined; let co2SignalEntity: string | undefined;
if (co2SignalConfigEntry) { if (co2SignalConfigEntry) {
for (const entry of entityRegistryEntries) { for (const entityId of Object.keys(hass.entities)) {
if (entry.config_entry_id !== co2SignalConfigEntry.entry_id) { const entity = hass.entities[entityId];
if (entity.platform !== "co2signal") {
continue; continue;
} }
// The integration offers 2 entities. We want the % one. // The integration offers 2 entities. We want the % one.
const co2State = hass.states[entry.entity_id]; const co2State = hass.states[entityId];
if (!co2State || co2State.attributes.unit_of_measurement !== "%") { if (!co2State || co2State.attributes.unit_of_measurement !== "%") {
continue; continue;
} }