tsvesync
Version:
A TypeScript library for interacting with VeSync smart home devices
172 lines (171 loc) • 4.88 kB
TypeScript
/**
* 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 {
[]: 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;
[]: 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 {};