UNPKG

matterbridge-roborock-vacuum-plugin

Version:
134 lines 7.37 kB
import { AnsiLogger } from 'matterbridge/logger'; import { ServiceArea } from 'matterbridge/matter/clusters'; import { LocalStorage } from 'node-persist'; import { CleanModeSetting } from '../behaviors/roborock.vacuum/core/CleanModeSetting.js'; import { MapInfo, RoomIndexMap } from '../core/application/models/index.js'; import { AuthenticationResponse } from '../model/AuthenticationResponse.js'; import { PlatformConfigManager } from '../platform/platformConfigManager.js'; import { RoborockAuthenticateApi } from '../roborockCommunication/api/authClient.js'; import { RoborockIoTApi } from '../roborockCommunication/api/iotClient.js'; import { RawRoomMappingData, RoomDto } from '../roborockCommunication/models/home/index.js'; import { Device, Home, Scene, UserData } from '../roborockCommunication/models/index.js'; import { ServiceContainer } from '../services/index.js'; import { DeviceNotifyCallback, Factory } from '../types/index.js'; import { WssSendSnackbarMessage } from '../types/WssSendSnackbarMessage.js'; export interface RoborockServiceConfig { authenticateApiFactory?: (logger: AnsiLogger, baseUrl: string) => RoborockAuthenticateApi; iotApiFactory?: Factory<UserData, RoborockIoTApi>; refreshInterval: number; baseUrl: string; persist: LocalStorage; configManager: PlatformConfigManager; container?: ServiceContainer; toastMessage: WssSendSnackbarMessage; } /** Facade coordinating Auth, Device, Area, and Message services via ServiceContainer. */ export declare class RoborockService { private logger; private configManager; private readonly container; private readonly authCoordinator; private readonly deviceService; private readonly areaService; private readonly messageRoutingService; private readonly pollingService; private readonly connectionService; private readonly toastMessage; deviceNotify: DeviceNotifyCallback | undefined; constructor(params: RoborockServiceConfig, logger: AnsiLogger, configManager: PlatformConfigManager); authenticate(): Promise<AuthenticationResponse>; /** List all devices for the user's account. */ listDevices(): Promise<Device[]>; getSerialNumber(duid: string): Promise<string>; /** Get home data for periodic updates. */ getHomeDataForUpdating(homeid: number): Promise<Home | undefined>; /** Initialize MQTT client for cloud communication. */ initializeMessageClient(device: Device, userdata: UserData): Promise<void>; /** Initialize local network connection for a device. */ initializeMessageClientForLocal(device: Device): Promise<boolean>; /** Send a test email to verify email notification settings. */ sendTestEmailNotification(): Promise<void>; /** Set callback for device status notifications. */ setDeviceNotify(callback: DeviceNotifyCallback): void; /** Start polling device status via local network. */ activateDeviceNotify(device: Device): void; /** Trigger a one-shot local/MQTT status request for a device. */ requestDeviceStatusOnce(duid: string): Promise<void>; /** Stop service and clean up resources. */ stopService(): void; /** Set selected cleaning areas for a device. */ setSelectedAreas(duid: string, selectedAreas: number[]): void; /** Get selected cleaning areas for a device. */ getSelectedAreas(duid: string): number[]; /** Set progress for cleaning areas for a device. */ setProgress(duid: string, progress: ServiceArea.Progress[]): void; /** Get progress for cleaning areas for a device. */ getProgress(duid: string): ServiceArea.Progress[]; /** Set the stored "was actively cleaning" state for a device. */ setLastActivelyCleaningState(duid: string, isActivelyCleaning: boolean): void; /** Get the stored "was actively cleaning" state for a device. */ getLastActivelyCleaningState(duid: string): boolean; /** Register a callback invoked whenever supported areas are updated for a device. */ registerAreasListener(duid: string, callback: (areas: ServiceArea.Area[], maps: ServiceArea.Map[]) => void): void; /** Set supported maps for a device. */ setSupportedMaps(duid: string, maps: ServiceArea.Map[]): void; /** Get supported maps for a device. */ getSupportedMaps(duid: string): ServiceArea.Map[]; /** Start periodic area refresh (getMapInfo) on a timer. */ startPeriodicAreaRefresh(duid: string, intervalMs?: number): void; /** Set supported cleaning areas (rooms) for a device. */ setSupportedAreas(duid: string, supportedAreas: ServiceArea.Area[]): void; /** Set area-to-room index mapping for a device. */ setSupportedAreaIndexMap(duid: string, indexMap: RoomIndexMap): void; /** Set supported cleaning routines/scenes for a device. */ setSupportedRoutines(duid: string, routineAsRooms: ServiceArea.Area[]): void; getSupportedRoutines(duid: string): ServiceArea.Area[] | undefined; /** Get supported cleaning areas for a device. */ getSupportedAreas(duid: string): ServiceArea.Area[]; /** Get area index map for a device. */ getSupportedAreasIndexMap(duid: string): RoomIndexMap | undefined; /** Get map information for a device. */ getMapInfo(duid: string): Promise<MapInfo | undefined>; /** Store device room list for explicit room mapping. */ setDeviceRooms(duid: string, rooms: RoomDto[]): void; /** Get room mapping for a device. */ getRoomMap(duid: string, activeMap: number): Promise<RawRoomMappingData | undefined>; /** Resolve initial areas (rooms and maps) before device registration. */ resolveInitialAreas(duid: string): Promise<{ supportedAreas: ServiceArea.Area[]; supportedMaps: ServiceArea.Map[]; }>; /** Lazy-fetch room areas for a map when missing from cache. */ ensureAreasForMap(duid: string, mapId: number, options?: { switchFirst?: boolean; }): Promise<boolean>; /** Switch to a different map on the device. */ switchMap(duid: string, mapId: number): Promise<void>; /** Get V1 resolved segment ID from cache if available and not stale. */ getV1ResolvedSegment(duid: string): number | undefined; /** Request V1 map push (fire-and-forget). */ requestV1MapRefresh(duid: string): Promise<void>; /** Get all scenes for a home. */ getScenes(homeId: number): Promise<Scene[] | undefined>; /** Start a cleaning scene/routine. */ startScene(sceneId: number): Promise<unknown>; /** Get current cleaning mode settings. */ getCleanModeData(duid: string): Promise<CleanModeSetting>; /** Change cleaning mode settings. */ changeCleanMode(duid: string, settings: CleanModeSetting): Promise<void>; /** Start cleaning with selected areas. */ startClean(duid: string): Promise<void>; /** Pause cleaning. */ pauseClean(duid: string): Promise<void>; /** Stop cleaning and return to dock. */ stopAndGoHome(duid: string): Promise<void>; /** Resume paused cleaning. */ resumeClean(duid: string): Promise<void>; /** Skip the current room/segment during cleaning. */ skipRoomCleaning(duid: string): Promise<void>; stopClean(duid: string): Promise<void>; /** Play sound to locate vacuum. */ playSoundToLocate(duid: string): Promise<void>; private buildCleanCommand; } //# sourceMappingURL=roborockService.d.ts.map