Add entities, devices and areas to hass (#13530)

This commit is contained in:
Bram Kragten 2022-08-31 15:15:21 +02:00 committed by GitHub
parent e976f9c119
commit 3fc94106b8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 1 deletions

View File

@ -18,13 +18,16 @@ import { serviceCallWillDisconnect } from "../data/service";
import { NumberFormat, TimeFormat } from "../data/translation";
import { subscribePanels } from "../data/ws-panels";
import { translationMetadata } from "../resources/translations-metadata";
import { Constructor, ServiceCallResponse } from "../types";
import { Constructor, HomeAssistant, ServiceCallResponse } from "../types";
import { fetchWithAuth } from "../util/fetch-with-auth";
import { getState } from "../util/ha-pref-storage";
import hassCallApi from "../util/hass-call-api";
import { getLocalLanguage } from "../util/common-translation";
import { HassBaseEl } from "./hass-base-mixin";
import { polyfillsLoaded } from "../common/translations/localize";
import { subscribeAreaRegistry } from "../data/area_registry";
import { subscribeDeviceRegistry } from "../data/device_registry";
import { subscribeEntityRegistry } from "../data/entity_registry";
export const connectionMixin = <T extends Constructor<HassBaseEl>>(
superClass: T
@ -38,6 +41,9 @@ export const connectionMixin = <T extends Constructor<HassBaseEl>>(
connection: conn,
connected: true,
states: null as any,
entities: null as any,
devices: null as any,
areas: null as any,
config: null as any,
themes: null as any,
selectedTheme: null,
@ -180,6 +186,27 @@ export const connectionMixin = <T extends Constructor<HassBaseEl>>(
});
subscribeEntities(conn, (states) => this._updateHass({ states }));
subscribeEntityRegistry(conn, (entityReg) => {
const entities: HomeAssistant["entities"] = {};
for (const entity of entityReg) {
entities[entity.entity_id] = entity;
}
this._updateHass({ entities });
});
subscribeDeviceRegistry(conn, (deviceReg) => {
const devices: HomeAssistant["devices"] = {};
for (const device of deviceReg) {
devices[device.id] = device;
}
this._updateHass({ devices });
});
subscribeAreaRegistry(conn, (areaReg) => {
const areas: HomeAssistant["areas"] = {};
for (const area of areaReg) {
areas[area.area_id] = area;
}
this._updateHass({ areas });
});
subscribeConfig(conn, (config) => {
if (this.hass?.config?.time_zone !== config.time_zone) {
if (__BUILD__ === "latest" && polyfillsLoaded) {

View File

@ -8,6 +8,9 @@ import {
MessageBase,
} from "home-assistant-js-websocket";
import { LocalizeFunc } from "./common/translations/localize";
import { AreaRegistryEntry } from "./data/area_registry";
import { DeviceRegistryEntry } from "./data/device_registry";
import { EntityRegistryEntry } from "./data/entity_registry";
import { CoreFrontendUserData } from "./data/frontend";
import { FrontendLocaleData, getHassTranslations } from "./data/translation";
import { Themes } from "./data/ws-themes";
@ -197,6 +200,9 @@ export interface HomeAssistant {
connection: Connection;
connected: boolean;
states: HassEntities;
entities: { [id: string]: EntityRegistryEntry };
devices: { [id: string]: DeviceRegistryEntry };
areas: { [id: string]: AreaRegistryEntry };
services: HassServices;
config: HassConfig;
themes: Themes;