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.

52 lines 2.26 kB
import { AnsiLogger } from 'matterbridge/logger'; import { Config } from './config-types.js'; import EventEmitter from 'events'; import { DysonMsg } from './dyson-types.js'; import { DysonMqttParserConfig, DysonMsgAny } from './dyson-mqtt-parse.js'; import { DysonMqttSubscribeConfig } from './dyson-mqtt-subscribe.js'; import { DysonMqttFiltered } from './dyson-mqtt-filter.js'; import { AsyncEventEmitter } from './async-eventemitter.js'; import { DeviceConfigMqtt } from './dyson-mqtt-client.js'; export interface DysonMqttConfig<T> { topics: DysonMqttSubscribeConfig; messages: DysonMqttParserConfig<T>; } export interface DysonMqttStatusBase { reachable: boolean; initialised: boolean; } export type DysonMqttStatus<T> = T & DysonMqttStatusBase; export interface DysonMqttEventMapBase { error: [unknown]; subscribed: []; status: []; } export interface DysonMqttEventMap<T> extends DysonMqttEventMapBase { message: [DysonMsgAny<T>]; } export type PublishArgs<T, O extends string> = { [K in keyof T]: T[K] extends DysonMsg ? (Omit<T[K], O | 'msg'> extends Record<string, never> ? [T[K]['msg']] : [T[K]['msg'], Omit<T[K], O | 'msg'>]) : never; }[keyof T]; export interface DysonMqttLike extends EventEmitter { waitUntilInitialised(): Promise<void>; stop(): Promise<void>; } export declare abstract class DysonMqtt<T, S> extends AsyncEventEmitter<DysonMqttEventMap<T>> implements DysonMqttLike { readonly log: AnsiLogger; readonly config: Config; readonly deviceConfig: DeviceConfigMqtt; readonly mqttConfig: DysonMqttConfig<T>; private mqtt; private mqttConnection; private mqttSubscribe; private mqttFilter; readonly status: DysonMqttStatus<S>; constructor(log: AnsiLogger, config: Config, deviceConfig: DeviceConfigMqtt, mqttConfig: DysonMqttConfig<T>); downTimerHandle: Map<string, NodeJS.Timeout>; updateReachable(key: 'mqtt' | 'msg', reachable: boolean): void; waitUntilInitialised(): Promise<void>; stop(): Promise<void>; publish(...[msg, params]: PublishArgs<T, 'time'>): Promise<void>; logPayload(direction: 'publish' | 'receive', topic: string, payload: DysonMsg, filter?: DysonMqttFiltered): void; } //# sourceMappingURL=dyson-mqtt.d.ts.map