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.
50 lines • 2.32 kB
TypeScript
import EventEmitter from 'events';
import { ErrorWithReasonCode, IClientOptions, IConnackPacket, IPublishPacket, MqttClient } from 'mqtt';
import { Config, DeviceConfigLocalMqtt } from './config-types.js';
import { AnsiLogger } from 'matterbridge/logger';
import { MaybePromise } from 'matterbridge/matter';
import { DysonIoTCredentialsResponse } from './dyson-cloud-types.js';
export interface DeviceConfigRemoteMqtt {
name: string;
serialNumber: string;
rootTopic: string;
getCredentials: () => Promise<DysonIoTCredentialsResponse>;
}
export type DeviceConfigMqtt = DeviceConfigLocalMqtt | DeviceConfigRemoteMqtt;
export interface DysonMqttClientEventMap {
close: [];
connect: [packet: IConnackPacket];
error: [error: Error | ErrorWithReasonCode];
message: [topic: string, payload: Buffer, packet: IPublishPacket];
}
export interface DysonMqttClientOptions {
brokerUrl: string;
options: IClientOptions;
}
export declare abstract class DysonMqttClient extends EventEmitter<DysonMqttClientEventMap> {
readonly log: AnsiLogger;
readonly config: Config;
private delegate?;
private clientOptions?;
private count;
constructor(log: AnsiLogger, config: Config);
protected abstract getConnectionOptions(): MaybePromise<DysonMqttClientOptions>;
private destroyClient;
private createClient;
connect(): Promise<void>;
get mqtt(): MqttClient;
publishAsync(...args: Parameters<MqttClient['publishAsync']>): Promise<import("mqtt-packet").Packet | undefined>;
subscribeAsync(...args: Parameters<MqttClient['subscribeAsync']>): Promise<import("mqtt").ISubscriptionGrant[]>;
endAsync(...args: Parameters<MqttClient['endAsync']>): Promise<void>;
}
export declare class DysonMqttClientLocal extends DysonMqttClient {
readonly deviceConfig: DeviceConfigLocalMqtt;
constructor(log: AnsiLogger, config: Config, deviceConfig: DeviceConfigLocalMqtt);
protected getConnectionOptions(): DysonMqttClientOptions;
}
export declare class DysonMqttClientRemote extends DysonMqttClient {
readonly deviceConfig: DeviceConfigRemoteMqtt;
constructor(log: AnsiLogger, config: Config, deviceConfig: DeviceConfigRemoteMqtt);
protected getConnectionOptions(): Promise<DysonMqttClientOptions>;
}
//# sourceMappingURL=dyson-mqtt-client.d.ts.map