UNPKG

dirigera

Version:

A TypeScript client for IKEA's DIRIGERA smart home hub

182 lines (172 loc) 3.84 kB
import type { Device } from './device/Device.ts' interface CommonSceneTriggerProperties { id?: string type: | 'time' | 'sunriseSunset' | 'motionSensor' | 'controller' | 'app' | 'duration' | 'event' | 'other' triggeredAt?: string disabled?: boolean endTrigger?: SceneEndTrigger endTriggerEvent?: SceneEndTrigger } type SceneEndTrigger = | { type: 'duration' trigger: { duration: number } } | { type: 'time' trigger: { time: string } } | { type: 'sunriseSunset' trigger: { type: 'sunrise' | 'sunset' offset: number } nextTriggerAt?: string | null } type TimeSceneTrigger = CommonSceneTriggerProperties & { type: 'time' trigger: { days?: string[] time: string } nextTriggerAt?: string } type SunriseSunsetSceneTrigger = CommonSceneTriggerProperties & { type: 'sunriseSunset' trigger: { days: string[] type: 'sunrise' | 'sunset' offset: number } nextTriggerAt?: string } type ControllerSceneTrigger = CommonSceneTriggerProperties & { type: 'controller' trigger: { days: string[] controllerType: 'shortcutController' clickPattern: 'singlePress' | 'doublePress' | 'longPress' buttonIndex: 0 deviceId: string } } type AppSceneTrigger = CommonSceneTriggerProperties & { type: 'app' } type EventSceneTrigger = CommonSceneTriggerProperties & { type: 'event' trigger: { days: string[] deviceId: string undo?: boolean filter: { attribute: Partial<Device['attributes']> } notifications?: { type: 'opened' | 'closed' }[] } } type SceneTrigger = | TimeSceneTrigger | SunriseSunsetSceneTrigger | ControllerSceneTrigger | AppSceneTrigger | EventSceneTrigger export interface Scene { id: string info: { name: string icon: | 'scenes_arrive_home' | 'scenes_book' | 'scenes_briefcase' | 'scenes_brightness_up' | 'scenes_broom' | 'scenes_cake' | 'scenes_clapper' | 'scenes_clean_sparkles' | 'scenes_cutlery' | 'scenes_disco_ball' | 'scenes_game_pad' | 'scenes_gift_bag' | 'scenes_gift_box' | 'scenes_headphones' | 'scenes_heart' | 'scenes_home_filled' | 'scenes_hot_drink' | 'scenes_ladle' | 'scenes_leaf' | 'scenes_leave_home' | 'scenes_moon' | 'scenes_music_note' | 'scenes_painting' | 'scenes_popcorn' | 'scenes_pot_with_lid' | 'scenes_speaker_generic' | 'scenes_spray_bottle' | 'scenes_suitcase' | 'scenes_suitcase_2' | 'scenes_sun_horizon' | 'scenes_tree' | 'scenes_trophy' | 'scenes_wake_up' | 'scenes_weights' | 'scenes_yoga' } type: 'userScene' | 'customScene' | 'playlistScene' | 'wakeUpScene' triggers?: SceneTrigger[] actions: { id?: string type: 'device' | 'deviceSet' enabled?: boolean deviceId?: string attributes: Partial<Device['attributes']> }[] commands: { id: string type: 'device' enabled?: boolean commands: ( | { type: 'playAudioClipByName' playAudioClipName: | 'ikea://notify/03_device_open' | 'ikea://notify/04_device_close' volume: number } | { type: 'transitionLight' duration: number startState: { lightLevel: number colorTemperature: number isOn: boolean } endState: { lightLevel: number colorTemperature: number isOn: boolean } } )[] }[] createdAt: string lastCompleted?: string lastTriggered?: string undoAllowedDuration: number lastUndo?: string }