UNPKG

tsvesync

Version:

A TypeScript library for interacting with VeSync smart home devices

172 lines (171 loc) 4.88 kB
/** * VeSync Fan Classes */ import { VeSyncBaseDevice } from './vesyncBaseDevice'; import { VeSync } from './vesync'; interface FanConfigEntry { module: 'VeSyncAirBypass' | 'VeSyncHumidifier' | 'VeSyncWarmHumidifier' | 'VeSyncTowerFan' | 'VeSyncAirBaseV2' | 'VeSyncSuperior6000S' | 'VeSyncHumid1000S' | 'VeSyncHumid200S' | 'VeSyncAir131'; features: string[]; levels?: number[]; modes?: ReadonlyArray<string>; autoPreferences?: ReadonlyArray<string>; } interface FanConfig { [key: string]: FanConfigEntry; } export declare const fanConfig: FanConfig; /** * Base class for VeSync Fans */ export declare abstract class VeSyncFan extends VeSyncBaseDevice { protected details: { mode?: string; speed?: number; filter_life?: number | { percent: number; }; screen_status?: 'on' | 'off'; child_lock?: boolean; air_quality?: string | number; air_quality_value?: number; air_quality_level?: number; air_quality_label?: string; pm1?: number; pm10?: number; aq_percent?: number; humidity?: number; mist_level?: number; warm_level?: number; warm_enabled?: boolean; [key: string]: any; }; protected mode_dict: Record<string, any>; protected speed_dict: Record<string, any>; protected _timer: number | { duration: number; action: string; } | null; protected config: FanConfigEntry; constructor(details: Record<string, any>, manager: VeSync); /** * Find config entry by substring matching for variant device types * Maps LAP variants to their base model configs (e.g., LAP-C401S-WUSR → Core400S) */ private findConfigBySubstring; /** * Check if feature is supported */ hasFeature(feature: string): boolean; /** * Get configured modes for the device, falling back to provided defaults. */ protected getConfigModes(defaultModes?: ReadonlyArray<string>): ReadonlyArray<string>; /** * Get configured auto preferences for the device, falling back to provided defaults. */ protected getConfigAutoPreferences(defaultPreferences?: ReadonlyArray<string>): ReadonlyArray<string>; /** * Public accessor for supported modes for consumers that need to inspect capability metadata. */ getSupportedModes(defaultModes?: ReadonlyArray<string>): ReadonlyArray<string>; /** * Public accessor for supported auto preference profiles. */ getSupportedAutoPreferences(defaultPreferences?: ReadonlyArray<string>): ReadonlyArray<string>; /** * Check if feature is supported in current mode */ isFeatureSupportedInCurrentMode(feature: string): boolean; /** * Get maximum fan speed level */ getMaxFanSpeed(): number; /** * Get current mode */ get mode(): string; /** * Get current speed */ get speed(): number; /** * Get filter life percentage */ get filterLife(): number; /** * Get screen status */ get screenStatus(): 'on' | 'off'; /** * Get child lock status */ get childLock(): boolean; /** * Get air quality level (if supported) */ get airQualityLevel(): string | number; /** * Get air quality (alias for airQualityLevel for backward compatibility) */ get airQuality(): string | number; /** * Get air quality value - PM2.5 in μg/m³ (if supported) */ get airQualityValue(): number; /** * Normalized air quality metadata aligned with pyvesync levels. */ getNormalizedAirQuality(): { level: number; label: string; }; /** * Get PM1 value (if supported) */ get pm1(): number; /** * Get PM10 value (if supported) */ get pm10(): number; /** * Get air quality percentage (if supported) */ get aqPercent(): number; /** * Get humidity level (if supported) */ get humidity(): number; /** * Get mist level (if supported) */ get mistLevel(): number; /** * Get warm level (if supported) */ get warmLevel(): number; /** * Get timer status */ get timer(): number | { duration: number; action: string; } | null; set timer(value: number | { duration: number; action: string; } | null); /** * Return formatted device info to stdout */ display(): void; /** * Return JSON details for fan */ displayJSON(): string; abstract getDetails(): Promise<Boolean>; abstract turnOn(): Promise<boolean>; abstract turnOff(): Promise<boolean>; abstract changeFanSpeed(speed: number): Promise<boolean>; abstract setMode(mode: string): Promise<boolean>; } export {};