UNPKG

node-red-contrib-tplink-tapo-connect-api

Version:

This unofficial node-RED node allows connection to TP-Link Tapo devices. This project has been enhanced with AI support to enable new features. Starting with v0.50, we have added support for the KLAP protocol. To prioritize the operation of this node, we

107 lines (106 loc) 2.93 kB
/** * Base class for Tapo Smart Bulbs */ import { BaseTapoDevice, TapoCredentials, TapoApiRequest, TapoApiResponse } from '../../types'; import { TapoBulbInfo, HSVColor, RGBColor, NamedColor, LightEffectConfig, BulbCapabilities } from '../../types/bulb'; import { TapoAuth } from '../../core/auth'; import { KlapAuth } from '../../core/klap-auth'; export declare abstract class BaseBulb extends BaseTapoDevice { protected auth: TapoAuth; protected klapAuth: KlapAuth; protected useKlap: boolean; private requestQueue; private lastRequestTime; private readonly minRequestInterval; constructor(ip: string, credentials: TapoCredentials); /** * Get device model - to be implemented by subclasses */ protected abstract getDeviceModel(): string; /** * Get device capabilities */ getCapabilities(): BulbCapabilities; private checkDeviceConnectivity; connect(): Promise<void>; disconnect(): Promise<void>; /** * Send request with rate limiting and session management */ protected sendRequest<T>(request: TapoApiRequest): Promise<TapoApiResponse<T>>; /** * Turn bulb on */ turnOn(): Promise<void>; /** * Turn bulb off */ turnOff(): Promise<void>; /** * Toggle bulb state */ toggle(): Promise<void>; /** * Convenience aliases following Python API pattern */ on(): Promise<void>; off(): Promise<void>; /** * Check if bulb is on */ isOn(): Promise<boolean>; /** * Get device information */ getDeviceInfo(): Promise<TapoBulbInfo>; /** * Set brightness level */ setBrightness(brightness: number): Promise<void>; /** * Get current brightness */ getBrightness(): Promise<number>; /** * Set color using HSV values */ setColor(color: HSVColor): Promise<void>; /** * Set color using RGB values */ setColorRGB(color: RGBColor): Promise<void>; /** * Set color using named color */ setNamedColor(color: NamedColor): Promise<void>; /** * Get current color in HSV format */ getColor(): Promise<HSVColor | null>; /** * Set color temperature */ setColorTemperature(temperature: number, brightness?: number): Promise<void>; /** * Get current color temperature */ getColorTemperature(): Promise<number | null>; /** * Set light effect */ setLightEffect(config: LightEffectConfig): Promise<void>; /** * Turn off light effects */ turnOffEffect(): Promise<void>; /** * Check if device supports a specific feature */ supportsFeature(feature: keyof BulbCapabilities): boolean; /** * Get device capabilities */ hasColorSupport(): Promise<boolean>; hasColorTemperatureSupport(): Promise<boolean>; hasEffectsSupport(): Promise<boolean>; }