UNPKG

homebridge-kef-speaker

Version:

Homebridge plugin for KEF wireless speakers (LS50 Wireless II, LSX II, LS60)

107 lines (106 loc) 2.63 kB
import type { Logger } from 'homebridge'; /** * KEF Speaker states and interfaces */ export interface SpeakerStatus { power: 'powerOn' | 'standby'; source: string; volume: number; muted: boolean; isPlaying: boolean; songInfo?: { title?: string; artist?: string; album?: string; coverUrl?: string; }; songLength?: number; songProgress?: number; } export interface SpeakerChange { power?: 'powerOn' | 'standby'; source?: string; volume?: number; muted?: boolean; isPlaying?: boolean; songInfo?: { title?: string; artist?: string; album?: string; coverUrl?: string; }; songLength?: number; songProgress?: number; } /** * KEF Speaker Connector * Based on pykefcontrol Python library */ export declare class KefConnector { private readonly host; private readonly log; private readonly baseUrl; constructor(host: string, log: Logger); /** * Power control */ powerOn(): Promise<void>; shutdown(): Promise<void>; /** * Volume control */ getVolume(): Promise<number>; setVolume(volume: number): Promise<void>; mute(): Promise<void>; unmute(previousVolume: number): Promise<void>; /** * Source control */ getSource(): Promise<string>; setSource(source: string): Promise<void>; /** * Status control */ getStatus(): Promise<'powerOn' | 'standby'>; setStatus(status: 'powerOn' | 'standby'): Promise<void>; /** * Playback control */ togglePlayPause(): Promise<void>; nextTrack(): Promise<void>; previousTrack(): Promise<void>; private trackControl; /** * Media information */ getPlayerData(): Promise<any>; getSongInformation(): Promise<{ title?: string; artist?: string; album?: string; coverUrl?: string; }>; isPlaying(): Promise<boolean>; getSongLength(): Promise<number | undefined>; getSongProgress(): Promise<number>; /** * Speaker information */ getSpeakerName(): Promise<string>; getMacAddress(): Promise<string>; getSpeakerModel(): Promise<string>; getFirmwareVersion(): Promise<string>; private extractSongInfo; /** * Get complete speaker status for periodic checking */ getCompleteStatus(): Promise<SpeakerStatus>; /** * Check if speaker status has changed since last check */ checkForChanges(lastStatus: SpeakerStatus): Promise<SpeakerChange>; /** * API request helper */ private apiRequest; }