tsvesync
Version:
A TypeScript library for interacting with VeSync smart home devices
106 lines (105 loc) • 2.69 kB
TypeScript
/**
* VeSync Bulb Base Class
*/
import { VeSyncBaseDevice } from './vesyncBaseDevice';
import { VeSync } from './vesync';
interface RgbValues {
red: number;
green: number;
blue: number;
}
interface BulbConfig {
[key: string]: {
module: string;
features: string[];
colorModel: string;
};
}
export declare const bulbConfig: BulbConfig;
/**
* VeSync Bulb Base Class
*/
export declare abstract class VeSyncBulb extends VeSyncBaseDevice {
protected brightness: number;
protected colorTemp: number;
protected colorValue: number;
protected colorHue: number;
protected colorSaturation: number;
protected colorMode: string;
protected features: string[];
protected rgbValues: RgbValues;
constructor(details: Record<string, any>, manager: VeSync);
hasFeature(feature: string): boolean;
getColorModel(): string;
getBrightness(): number;
/**
* Get bulb details
*/
getDetails(): Promise<Boolean>;
/**
* Update bulb details
*/
update(): Promise<Boolean>;
/**
* Turn bulb on
*/
turnOn(): Promise<boolean>;
/**
* Turn bulb off
*/
turnOff(): Promise<boolean>;
/**
* Set bulb brightness
*/
setBrightness(brightness: number): Promise<boolean>;
/**
* Get bulb brightness
*/
/**
* Get color temperature in Kelvin
*/
getColorTempKelvin(): number;
/**
* Get color temperature in percent
*/
getColorTempPercent(): number;
/**
* Get color hue
*/
getColorHue(): number;
/**
* Get color saturation
*/
getColorSaturation(): number;
/**
* Get color value
*/
getColorValue(): number;
/**
* Get RGB values
*/
getRGBValues(): {
red: number;
green: number;
blue: number;
};
/**
* Set color temperature wrapper to maintain compatibility with consumers
*/
setColorTemperature(colorTemp: number): Promise<boolean>;
/**
* Set color via hue/saturation/value when supported
*/
setColor(hue: number, saturation: number, value?: number): Promise<boolean>;
/**
* Process standard bypass (v1) detail responses shared by multiple bulbs
*/
protected processStandardBypassDetails(response: any, statusCode: number): boolean;
/**
* Set color temperature - Abstract method to be implemented by subclasses
*/
abstract setColorTemp(colorTemp: number): Promise<boolean>;
protected static clamp(value: number, min: number, max: number): number;
protected static hsvToRgb(h: number, s: number, v: number): RgbValues;
}
export {};