dirigera
Version:
A TypeScript client for IKEA's DIRIGERA smart home hub
67 lines (58 loc) • 1.72 kB
text/typescript
import {
type CommonDeviceAttributes,
type Device,
type IdentifiableDeviceAttributes,
type JoinableDeviceAttributes,
type OtaUpdatableDeviceAttributes,
} from './Device.ts'
export interface CommonControllerAttributes
extends
CommonDeviceAttributes,
JoinableDeviceAttributes,
OtaUpdatableDeviceAttributes {
batteryPercentage: number
isOn: boolean
lightLevel: number
circadianPresets?: any[]
}
interface CommonControllerProperties extends Device {
type: 'controller'
isHidden: boolean
}
export interface ShortcutController extends CommonControllerProperties {
deviceType: 'shortcutController'
attributes: CommonControllerAttributes
}
export interface LightController extends CommonControllerProperties {
deviceType: 'lightController'
attributes: CommonControllerAttributes
}
export interface BlindsController extends CommonControllerProperties {
deviceType: 'blindsController'
attributes: CommonControllerAttributes & {
blindsCurrentLevel: number
blindsState: 'stopped' | 'up' | 'down'
}
}
export interface SoundController extends CommonControllerProperties {
deviceType: 'soundController'
attributes: CommonControllerAttributes
}
export interface GenericSwitch extends CommonControllerProperties {
deviceType: 'genericSwitch'
attributes: CommonDeviceAttributes &
OtaUpdatableDeviceAttributes &
JoinableDeviceAttributes &
IdentifiableDeviceAttributes & {
switchGroup?: number
switchLabel: string
controlMode: 'light' | 'speaker' | 'blind' | 'shortcut'
batteryPercentage: number
}
}
export type Controller =
| ShortcutController
| LightController
| SoundController
| BlindsController
| GenericSwitch