UNPKG

matterbridge-dyson-robot

Version:

A Matterbridge plugin that connects Dyson robot vacuums and air treatment devices to the Matter smart home ecosystem via their local or cloud MQTT APIs.

123 lines 5.29 kB
import { DeviceTypeDefinition, MatterbridgeEndpoint } from 'matterbridge'; import { AnsiLogger } from 'matterbridge/logger'; import { Config, EntityName } from './config-types.js'; import { EndpointBase, EndpointOptionsBase } from './endpoint-base.js'; import { AtLeastOne, ClusterId } from 'matterbridge/matter'; import { AirQuality, ConcentrationMeasurement, FanControl, ResourceMonitoring, Thermostat } from 'matterbridge/matter/clusters'; import { FanControlOptions, FilterMonitoringOptions } from './endpoint-air-purifier.js'; import { Changed } from './decorator-changed.js'; import { MaybePromise } from 'matterbridge/matter'; export type EndpointOptionsAirSensors = { [K in keyof UpdateAirSensors as undefined extends UpdateAirSensors[K] ? K : never]-?: boolean; }; export interface EndpointOptionsAir extends EndpointOptionsBase { validatedNames: EntityName[]; fanControl: FanControlOptions; hepaFilter: FilterMonitoringOptions; carbonFilter?: FilterMonitoringOptions; sensors: EndpointOptionsAirSensors; } export type HandlerAir<T> = (newValue: T, oldValue: T) => MaybePromise; export type HandlerAirMap<T extends Record<string, unknown>> = { [K in keyof T & string]: HandlerAir<T[K]>; }; export interface HandlersAirFan { onOff: HandlerAir<boolean>; airflowDirection: HandlerAir<FanControl.AirflowDirection>; fanMode: HandlerAir<FanControl.FanMode>; percentSetting: HandlerAir<number>; rockSetting: HandlerAir<AirFanRockSetting>; speedSetting: HandlerAir<number>; windSetting: HandlerAir<AirWindSetting>; } export interface HandlersAirThermostat { occupiedHeatingSetpoint: HandlerAir<number>; systemMode: HandlerAir<Thermostat.SystemMode>; } export interface AirFanRockSetting { rockLeftRight?: boolean; rockUpDown?: boolean; rockRound?: boolean; } export interface AirWindSetting { sleepWind?: boolean; naturalWind?: boolean; } export interface UpdateAirFan { onOff: boolean; airflowDirection?: FanControl.AirflowDirection; fanMode: FanControl.FanMode; percentSetting: number | null; rockSetting?: AirFanRockSetting; speedSetting: number | null; windSetting?: AirWindSetting; percentCurrent: number; speedCurrent: number; } export interface UpdateAirThermostatRunningState { cool?: false; coolStage2?: false; heat: boolean; heatStage2?: boolean; fan: boolean; fanStage2?: boolean; fanStage3?: boolean; } export interface UpdateAirThermostat { occupiedHeatingSetpoint: number; systemMode: Thermostat.SystemMode; localTemperature: number | null; piHeatingDemand: number; thermostatRunningState: UpdateAirThermostatRunningState; } export interface UpdateAirFilterMonitoringSingle { condition: number; changeIndication: ResourceMonitoring.ChangeIndication; inPlaceIndicator: boolean; } export interface UpdateAirFilterMonitoring { hepa: UpdateAirFilterMonitoringSingle; carbon?: UpdateAirFilterMonitoringSingle; } export interface UpdateAirSensors { airQuality: AirQuality.AirQualityEnum; temperature: number | null; humidity: number | null; voc?: ConcentrationMeasurement.LevelValue; co2?: number | null; nox?: ConcentrationMeasurement.LevelValue; hcho?: number | null; pm25?: number | null; pm10?: number | null; } export declare class EndpointsAir { readonly log: AnsiLogger; readonly config: Config; readonly options: EndpointOptionsAir; bridged: EndpointBase[]; purifier?: MatterbridgeEndpoint; thermostat?: MatterbridgeEndpoint; airQuality: MatterbridgeEndpoint[]; temperature: MatterbridgeEndpoint[]; humidity: MatterbridgeEndpoint[]; changed: Changed; lastWrite: Map<string, unknown>; constructor(log: AnsiLogger, config: Config, options: EndpointOptionsAir); createAirPurifierEndpoint(composed?: boolean): MatterbridgeEndpoint | undefined; createHumiditySensorEndpoint(parent?: MatterbridgeEndpoint): MatterbridgeEndpoint | undefined; createTemperatureSensorEndpoint(parent?: MatterbridgeEndpoint): MatterbridgeEndpoint | undefined; createThermostatEndpoint(parent?: MatterbridgeEndpoint): MatterbridgeEndpoint | undefined; createAirQualitySensorEndpoint(parent?: MatterbridgeEndpoint): MatterbridgeEndpoint | undefined; createDevice(endpointName: EntityName, definition: AtLeastOne<DeviceTypeDefinition>, parent?: MatterbridgeEndpoint): MatterbridgeEndpoint | undefined; get bridgedNodeEndpoints(): MatterbridgeEndpoint[]; setFanControlHandlers(handlers: HandlersAirFan): Promise<void>; setThermostatHandlers(handlers: HandlersAirThermostat): Promise<void>; subscribeAttributes<T extends Record<keyof T, unknown>>(endpoint: MatterbridgeEndpoint, clusterId: ClusterId, name: string, handlers: HandlerAirMap<T>, keys?: (keyof T & string)[]): Promise<void>; updateReachable(reachable: boolean): Promise<void>; updateFanControl(fan: UpdateAirFan): Promise<void>; updateThermostat(thermostat: UpdateAirThermostat): Promise<void>; updateFilterMonitoring(filters: UpdateAirFilterMonitoring): Promise<void>; updateSensors(measurements: UpdateAirSensors): Promise<void>; updateNextStatus(): void; } //# sourceMappingURL=endpoint-air.d.ts.map