UNPKG

node-switchbot

Version:

The node-switchbot is a Node.js module which allows you to control your Switchbot Devices through Bluetooth (BLE).

382 lines 13.2 kB
import type { MacAddress, SwitchBotBLEModel, SwitchBotBLEModelFriendlyName, SwitchBotBLEModelName } from '../device.js'; /** * BLE discovery and wait methods for SwitchBot devices. */ export interface SwitchBotScanner { /** Discover BLE devices based on filter criteria */ discover: (args: { duration?: number; model: string; quick: boolean; id?: MacAddress; }) => Promise<unknown>; /** Wait for given milliseconds */ wait: (ms: number) => void; } /** * Common service data across BLE devices. */ interface BLEServiceData { model: SwitchBotBLEModel; modelName: SwitchBotBLEModelName; modelFriendlyName: SwitchBotBLEModelFriendlyName; } /** * Base interface for color-controllable devices. */ export interface ColorLightServiceDataBase extends BLEServiceData { color_temperature: number; power: boolean; state: boolean; red: number; green: number; blue: number; brightness: number; delay: number; preset: number; color_mode: number; speed: number; loop_index: number; } /** * Base interface for temperature-humidity meter devices. */ export interface TemperatureServiceDataBase extends BLEServiceData { celsius: number; fahrenheit: number; fahrenheit_mode: boolean; humidity: number; battery: number; } /** * Base interface for mini plug devices (US/JP share same schema). */ export interface PlugMiniServiceDataBase extends BLEServiceData { state: string; delay: boolean; timer: boolean; syncUtcTime: boolean; wifiRssi: number; overload: boolean; currentPower: number; } /** * Base interface for lock-style devices. */ export interface LockBaseServiceData extends BLEServiceData { battery: number; calibration: boolean; status: string; update_from_secondary_lock: boolean; door_open: boolean; double_lock_mode: boolean; unclosed_alarm: boolean; unlocked_alarm: boolean; auto_lock_paused: boolean; night_latch: boolean; } export type botServiceData = BLEServiceData & { model: SwitchBotBLEModel.Bot; modelName: SwitchBotBLEModelName.Bot; modelFriendlyName: SwitchBotBLEModelFriendlyName.Bot; mode: boolean; state: boolean; battery: number; }; export type colorBulbServiceData = ColorLightServiceDataBase & { model: SwitchBotBLEModel.ColorBulb; modelName: SwitchBotBLEModelName.ColorBulb; modelFriendlyName: SwitchBotBLEModelFriendlyName.ColorBulb; }; export type contactSensorServiceData = BLEServiceData & { model: SwitchBotBLEModel.ContactSensor; modelName: SwitchBotBLEModelName.ContactSensor; modelFriendlyName: SwitchBotBLEModelFriendlyName.ContactSensor; movement: boolean; tested: boolean; battery: number; contact_open: boolean; contact_timeout: boolean; lightLevel: string; button_count: number; doorState: string; }; export type curtainServiceData = BLEServiceData & { model: SwitchBotBLEModel.Curtain; modelName: SwitchBotBLEModelName.Curtain; modelFriendlyName: SwitchBotBLEModelFriendlyName.Curtain; calibration: boolean; battery: number; inMotion: boolean; position: number; lightLevel: number; deviceChain: number; }; export type curtain3ServiceData = BLEServiceData & { model: SwitchBotBLEModel.Curtain3; modelName: SwitchBotBLEModelName.Curtain3; modelFriendlyName: SwitchBotBLEModelFriendlyName.Curtain3; calibration: boolean; battery: number; inMotion: boolean; position: number; lightLevel: number; deviceChain: number; }; export type stripLightServiceData = ColorLightServiceDataBase & { model: SwitchBotBLEModel.StripLight; modelName: SwitchBotBLEModelName.StripLight; modelFriendlyName: SwitchBotBLEModelFriendlyName.StripLight; }; export type lockServiceData = LockBaseServiceData & { model: SwitchBotBLEModel.Lock; modelName: SwitchBotBLEModelName.Lock; modelFriendlyName: SwitchBotBLEModelFriendlyName.Lock; }; export type lockProServiceData = LockBaseServiceData & { model: SwitchBotBLEModel.LockPro; modelName: SwitchBotBLEModelName.LockPro; modelFriendlyName: SwitchBotBLEModelFriendlyName.LockPro; }; export type meterServiceData = TemperatureServiceDataBase & { model: SwitchBotBLEModel.Meter; modelName: SwitchBotBLEModelName.Meter; modelFriendlyName: SwitchBotBLEModelFriendlyName.Meter; }; export type meterPlusServiceData = TemperatureServiceDataBase & { model: SwitchBotBLEModel.MeterPlus; modelName: SwitchBotBLEModelName.MeterPlus; modelFriendlyName: SwitchBotBLEModelFriendlyName.MeterPlus; }; export type meterProServiceData = TemperatureServiceDataBase & { model: SwitchBotBLEModel.MeterPro; modelName: SwitchBotBLEModelName.MeterPro; modelFriendlyName: SwitchBotBLEModelFriendlyName.MeterPro; }; export type meterProCO2ServiceData = TemperatureServiceDataBase & { model: SwitchBotBLEModel.MeterProCO2; modelName: SwitchBotBLEModelName.MeterProCO2; modelFriendlyName: SwitchBotBLEModelFriendlyName.MeterProCO2; co2: number; }; export type outdoorMeterServiceData = TemperatureServiceDataBase & { model: SwitchBotBLEModel.OutdoorMeter; modelName: SwitchBotBLEModelName.OutdoorMeter; modelFriendlyName: SwitchBotBLEModelFriendlyName.OutdoorMeter; }; export type motionSensorServiceData = BLEServiceData & { model: SwitchBotBLEModel.MotionSensor; modelName: SwitchBotBLEModelName.MotionSensor; modelFriendlyName: SwitchBotBLEModelFriendlyName.MotionSensor; tested: boolean; movement: boolean; battery: number; led: number; iot: number; sense_distance: number; lightLevel: string; is_light: boolean; }; export type presenceSensorServiceData = BLEServiceData & { model: SwitchBotBLEModel.PresenceSensor; modelName: SwitchBotBLEModelName.PresenceSensor; modelFriendlyName: SwitchBotBLEModelFriendlyName.PresenceSensor; sequenceNumber: number; adaptiveState: boolean; motionDetected: boolean; batteryRange: string; triggerFlag: number; ledState: boolean; lightLevel: number; battery?: number; }; export type plugMiniUSServiceData = PlugMiniServiceDataBase & { model: SwitchBotBLEModel.PlugMiniUS; modelName: SwitchBotBLEModelName.PlugMini; modelFriendlyName: SwitchBotBLEModelFriendlyName.PlugMini; }; export type plugMiniJPServiceData = PlugMiniServiceDataBase & { model: SwitchBotBLEModel.PlugMiniJP; modelName: SwitchBotBLEModelName.PlugMini; modelFriendlyName: SwitchBotBLEModelFriendlyName.PlugMini; }; export type blindTiltServiceData = BLEServiceData & { model: SwitchBotBLEModel.BlindTilt; modelName: SwitchBotBLEModelName.BlindTilt; modelFriendlyName: SwitchBotBLEModelFriendlyName.BlindTilt; calibration: boolean; battery: number; inMotion: boolean; tilt: number; lightLevel: number; sequenceNumber: number; }; export type ceilingLightServiceData = BLEServiceData & { model: SwitchBotBLEModel.CeilingLight; modelName: SwitchBotBLEModelName.CeilingLight; modelFriendlyName: SwitchBotBLEModelFriendlyName.CeilingLight; color_temperature: number; power: boolean; state: boolean; red: number; green: number; blue: number; brightness: number; delay: number; preset: number; color_mode: number; speed: number; loop_index: number; }; export type ceilingLightProServiceData = BLEServiceData & { model: SwitchBotBLEModel.CeilingLightPro; modelName: SwitchBotBLEModelName.CeilingLightPro; modelFriendlyName: SwitchBotBLEModelFriendlyName.CeilingLightPro; color_temperature: number; power: boolean; state: boolean; red: number; green: number; blue: number; brightness: number; delay: number; preset: number; color_mode: number; speed: number; loop_index: number; }; export type hub2ServiceData = BLEServiceData & { model: SwitchBotBLEModel.Hub2; modelName: SwitchBotBLEModelName.Hub2; modelFriendlyName: SwitchBotBLEModelFriendlyName.Hub2; celsius: number; fahrenheit: number; fahrenheit_mode: boolean; humidity: number; lightLevel: number; }; export type hub3ServiceData = BLEServiceData & { model: SwitchBotBLEModel.Hub3; modelName: SwitchBotBLEModelName.Hub3; modelFriendlyName: SwitchBotBLEModelFriendlyName.Hub3; celsius: number; fahrenheit: number; fahrenheit_mode: boolean; humidity: number; lightLevel: number; }; export type batteryCirculatorFanServiceData = BLEServiceData & { model: SwitchBotBLEModel.Unknown; modelName: SwitchBotBLEModelName.Unknown; modelFriendlyName: SwitchBotBLEModelFriendlyName.Unknown; state: string; fanSpeed: number; }; export type waterLeakDetectorServiceData = BLEServiceData & { model: SwitchBotBLEModel.Leak; modelName: SwitchBotBLEModelName.Leak; modelFriendlyName: SwitchBotBLEModelFriendlyName.Leak; leak: boolean; tampered: boolean; battery: number; low_battery: boolean; }; export type humidifierServiceData = BLEServiceData & { model: SwitchBotBLEModel.Humidifier; modelName: SwitchBotBLEModelName.Humidifier; modelFriendlyName: SwitchBotBLEModelFriendlyName.Humidifier; onState: boolean; autoMode: boolean; percentage: number; humidity: number; }; export type humidifier2ServiceData = BLEServiceData & { model: SwitchBotBLEModel.Humidifier2; modelName: SwitchBotBLEModelName.Humidifier2; modelFriendlyName: SwitchBotBLEModelFriendlyName.Humidifier2; onState: boolean; autoMode: boolean; percentage: number; humidity: number; childLock: boolean; overHumidifyProtection: boolean; tankRemoved: boolean; tiltedAlert: boolean; filterMissing: boolean; temperature: number; filterRunTime: number; filterAlert: boolean; waterLevel: number; }; export type robotVacuumCleanerServiceData = BLEServiceData & { model: SwitchBotBLEModel.Unknown; modelName: SwitchBotBLEModelName.Unknown; modelFriendlyName: SwitchBotBLEModelFriendlyName.Unknown; state: string; battery: number; }; export type keypadDetectorServiceData = BLEServiceData & { model: SwitchBotBLEModel.Keypad; modelName: SwitchBotBLEModelName.Keypad; modelFriendlyName: SwitchBotBLEModelFriendlyName.Keypad; event: boolean; tampered: boolean; battery: number; low_battery: boolean; }; export type relaySwitch1ServiceData = BLEServiceData & { model: SwitchBotBLEModel.RelaySwitch1; modelName: SwitchBotBLEModelName.RelaySwitch1; modelFriendlyName: SwitchBotBLEModelFriendlyName.RelaySwitch1; mode: boolean; state: boolean; sequence_number: number; }; export type relaySwitch1PMServiceData = BLEServiceData & { model: SwitchBotBLEModel.RelaySwitch1PM; modelName: SwitchBotBLEModelName.RelaySwitch1PM; modelFriendlyName: SwitchBotBLEModelFriendlyName.RelaySwitch1PM; mode: boolean; state: boolean; sequence_number: number; power: number; voltage: number; current: number; }; export type remoteServiceData = BLEServiceData & { model: SwitchBotBLEModel.Remote; modelName: SwitchBotBLEModelName.Remote; modelFriendlyName: SwitchBotBLEModelFriendlyName.Remote; battery: number; }; export type airPurifierServiceData = BLEServiceData & { model: SwitchBotBLEModel.AirPurifier; modelName: SwitchBotBLEModelName.AirPurifier; modelFriendlyName: SwitchBotBLEModelFriendlyName.AirPurifier; isOn: boolean; mode: string | null; isAqiValid: boolean; child_lock: boolean; speed: number; aqi_level: string; filter_element_working_time: number; err_code: number; sequence_number: number; }; export type airPurifierTableServiceData = BLEServiceData & { model: SwitchBotBLEModel.AirPurifierTable; modelName: SwitchBotBLEModelName.AirPurifierTable; modelFriendlyName: SwitchBotBLEModelFriendlyName.AirPurifierTable; isOn: boolean; mode: string | null; isAqiValid: boolean; child_lock: boolean; speed: number; aqi_level: string; filter_element_working_time: number; err_code: number; sequence_number: number; }; export type BLEDeviceServiceData = airPurifierServiceData | airPurifierTableServiceData | batteryCirculatorFanServiceData | blindTiltServiceData | botServiceData | ceilingLightServiceData | ceilingLightProServiceData | colorBulbServiceData | contactSensorServiceData | curtain3ServiceData | curtainServiceData | hub2ServiceData | hub3ServiceData | keypadDetectorServiceData | lockProServiceData | lockServiceData | meterPlusServiceData | meterProCO2ServiceData | meterProServiceData | meterServiceData | motionSensorServiceData | outdoorMeterServiceData | presenceSensorServiceData | plugMiniJPServiceData | plugMiniUSServiceData | relaySwitch1PMServiceData | relaySwitch1ServiceData | remoteServiceData | robotVacuumCleanerServiceData | stripLightServiceData | waterLeakDetectorServiceData | humidifier2ServiceData | humidifierServiceData; export {}; //# sourceMappingURL=ble.d.ts.map