@nice2dev/ui-tools 1.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -0
- package/dist/access-control.d.ts +726 -0
- package/dist/access-control.d.ts.map +1 -0
- package/dist/accessibility-i18n.d.ts +1017 -0
- package/dist/accessibility-i18n.d.ts.map +1 -0
- package/dist/ai-assistant.d.ts +263 -0
- package/dist/ai-assistant.d.ts.map +1 -0
- package/dist/ai-playgrounds.d.ts +842 -0
- package/dist/ai-playgrounds.d.ts.map +1 -0
- package/dist/alerting-incidents.d.ts +558 -0
- package/dist/alerting-incidents.d.ts.map +1 -0
- package/dist/api-designer.d.ts +1568 -0
- package/dist/api-designer.d.ts.map +1 -0
- package/dist/api-testing.d.ts +1146 -0
- package/dist/api-testing.d.ts.map +1 -0
- package/dist/apm-profiling.d.ts +656 -0
- package/dist/apm-profiling.d.ts.map +1 -0
- package/dist/artifacts.d.ts +421 -0
- package/dist/artifacts.d.ts.map +1 -0
- package/dist/audit-compliance.d.ts +752 -0
- package/dist/audit-compliance.d.ts.map +1 -0
- package/dist/certificates.d.ts +256 -0
- package/dist/certificates.d.ts.map +1 -0
- package/dist/chart-builder.d.ts +1404 -0
- package/dist/chart-builder.d.ts.map +1 -0
- package/dist/cloud-instances.d.ts +169 -0
- package/dist/cloud-instances.d.ts.map +1 -0
- package/dist/config-management.d.ts +350 -0
- package/dist/config-management.d.ts.map +1 -0
- package/dist/containers.d.ts +256 -0
- package/dist/containers.d.ts.map +1 -0
- package/dist/dashboard-designer.d.ts +1238 -0
- package/dist/dashboard-designer.d.ts.map +1 -0
- package/dist/data-management.d.ts +496 -0
- package/dist/data-management.d.ts.map +1 -0
- package/dist/data-pipeline.d.ts +1105 -0
- package/dist/data-pipeline.d.ts.map +1 -0
- package/dist/data-warehouse.d.ts +1097 -0
- package/dist/data-warehouse.d.ts.map +1 -0
- package/dist/dataset-management.d.ts +782 -0
- package/dist/dataset-management.d.ts.map +1 -0
- package/dist/db-adapters.d.ts +704 -0
- package/dist/db-adapters.d.ts.map +1 -0
- package/dist/db-admin.d.ts +699 -0
- package/dist/db-admin.d.ts.map +1 -0
- package/dist/db-designer.d.ts +366 -0
- package/dist/db-designer.d.ts.map +1 -0
- package/dist/debugger.d.ts +356 -0
- package/dist/debugger.d.ts.map +1 -0
- package/dist/device-management.d.ts +871 -0
- package/dist/device-management.d.ts.map +1 -0
- package/dist/distributed-tracing.d.ts +427 -0
- package/dist/distributed-tracing.d.ts.map +1 -0
- package/dist/dns-management.d.ts +215 -0
- package/dist/dns-management.d.ts.map +1 -0
- package/dist/download-manager.d.ts +271 -0
- package/dist/download-manager.d.ts.map +1 -0
- package/dist/download-torrent.d.ts +1062 -0
- package/dist/download-torrent.d.ts.map +1 -0
- package/dist/edge-computing.d.ts +720 -0
- package/dist/edge-computing.d.ts.map +1 -0
- package/dist/education.d.ts +1135 -0
- package/dist/education.d.ts.map +1 -0
- package/dist/email-template.d.ts +1141 -0
- package/dist/email-template.d.ts.map +1 -0
- package/dist/erp-enterprise.d.ts +1270 -0
- package/dist/erp-enterprise.d.ts.map +1 -0
- package/dist/form-builder.d.ts +1117 -0
- package/dist/form-builder.d.ts.map +1 -0
- package/dist/game-engine-advanced.d.ts +1049 -0
- package/dist/game-engine-advanced.d.ts.map +1 -0
- package/dist/git.d.ts +415 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/hardware-integration.d.ts +966 -0
- package/dist/hardware-integration.d.ts.map +1 -0
- package/dist/iac.d.ts +318 -0
- package/dist/iac.d.ts.map +1 -0
- package/dist/icon-tools.d.ts +1023 -0
- package/dist/icon-tools.d.ts.map +1 -0
- package/dist/ide.d.ts +322 -0
- package/dist/ide.d.ts.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +176 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +1887 -0
- package/dist/index.mjs.map +1 -0
- package/dist/integration-platform.d.ts +857 -0
- package/dist/integration-platform.d.ts.map +1 -0
- package/dist/kubernetes.d.ts +278 -0
- package/dist/kubernetes.d.ts.map +1 -0
- package/dist/life-management.d.ts +1132 -0
- package/dist/life-management.d.ts.map +1 -0
- package/dist/log-management.d.ts +473 -0
- package/dist/log-management.d.ts.map +1 -0
- package/dist/mathematics.d.ts +870 -0
- package/dist/mathematics.d.ts.map +1 -0
- package/dist/message-queue.d.ts +1006 -0
- package/dist/message-queue.d.ts.map +1 -0
- package/dist/metrics-dashboard.d.ts +596 -0
- package/dist/metrics-dashboard.d.ts.map +1 -0
- package/dist/mobile-components.d.ts +766 -0
- package/dist/mobile-components.d.ts.map +1 -0
- package/dist/model-deployment.d.ts +787 -0
- package/dist/model-deployment.d.ts.map +1 -0
- package/dist/model-registry.d.ts +740 -0
- package/dist/model-registry.d.ts.map +1 -0
- package/dist/model-training.d.ts +706 -0
- package/dist/model-training.d.ts.map +1 -0
- package/dist/network-config.d.ts +334 -0
- package/dist/network-config.d.ts.map +1 -0
- package/dist/network-monitoring.d.ts +291 -0
- package/dist/network-monitoring.d.ts.map +1 -0
- package/dist/pdf-tools.d.ts +1003 -0
- package/dist/pdf-tools.d.ts.map +1 -0
- package/dist/pipelines.d.ts +250 -0
- package/dist/pipelines.d.ts.map +1 -0
- package/dist/remote-desktop.d.ts +207 -0
- package/dist/remote-desktop.d.ts.map +1 -0
- package/dist/report-designer.d.ts +1153 -0
- package/dist/report-designer.d.ts.map +1 -0
- package/dist/scada-industrial.d.ts +848 -0
- package/dist/scada-industrial.d.ts.map +1 -0
- package/dist/scientific-research.d.ts +1149 -0
- package/dist/scientific-research.d.ts.map +1 -0
- package/dist/secret-management.d.ts +617 -0
- package/dist/secret-management.d.ts.map +1 -0
- package/dist/security-scanning.d.ts +714 -0
- package/dist/security-scanning.d.ts.map +1 -0
- package/dist/self-service-analytics.d.ts +1208 -0
- package/dist/self-service-analytics.d.ts.map +1 -0
- package/dist/sensor-dashboard.d.ts +845 -0
- package/dist/sensor-dashboard.d.ts.map +1 -0
- package/dist/server-management.d.ts +331 -0
- package/dist/server-management.d.ts.map +1 -0
- package/dist/smart-home.d.ts +861 -0
- package/dist/smart-home.d.ts.map +1 -0
- package/dist/spreadsheet.d.ts +1043 -0
- package/dist/spreadsheet.d.ts.map +1 -0
- package/dist/sql-editor.d.ts +402 -0
- package/dist/sql-editor.d.ts.map +1 -0
- package/dist/terminal.d.ts +245 -0
- package/dist/terminal.d.ts.map +1 -0
- package/dist/testing-qa.d.ts +1013 -0
- package/dist/testing-qa.d.ts.map +1 -0
- package/dist/torrent-client.d.ts +298 -0
- package/dist/torrent-client.d.ts.map +1 -0
- package/dist/traceless.d.ts +759 -0
- package/dist/traceless.d.ts.map +1 -0
- package/dist/virtual-machines.d.ts +199 -0
- package/dist/virtual-machines.d.ts.map +1 -0
- package/dist/visual-scripting.d.ts +381 -0
- package/dist/visual-scripting.d.ts.map +1 -0
- package/dist/word-processor.d.ts +1124 -0
- package/dist/word-processor.d.ts.map +1 -0
- package/dist/workspace.d.ts +333 -0
- package/dist/workspace.d.ts.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,861 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file smart-home.ts
|
|
3
|
+
* @module @nice2dev/ui-tools
|
|
4
|
+
* @description PRO-16.5 — Smart Home
|
|
5
|
+
*
|
|
6
|
+
* Types for smart home automation: device discovery, scene editor,
|
|
7
|
+
* energy monitoring, climate control, lighting, security, voice assistants.
|
|
8
|
+
*/
|
|
9
|
+
/** Home device type */
|
|
10
|
+
export type HomeDeviceType = 'light' | 'switch' | 'dimmer' | 'outlet' | 'thermostat' | 'sensor' | 'camera' | 'doorbell' | 'lock' | 'blinds' | 'shades' | 'garage' | 'speaker' | 'tv' | 'fan' | 'vacuum' | 'irrigation' | 'appliance' | 'button' | 'remote' | 'hub' | 'custom';
|
|
11
|
+
/** Device protocol */
|
|
12
|
+
export type HomeProtocol = 'zigbee' | 'zwave' | 'wifi' | 'bluetooth' | 'thread' | 'matter' | 'homekit' | 'tuya' | 'mqtt' | 'http' | 'custom';
|
|
13
|
+
/** Device state */
|
|
14
|
+
export type HomeDeviceState = 'on' | 'off' | 'unavailable' | 'unknown' | 'idle' | 'active' | 'standby';
|
|
15
|
+
/** Automation trigger */
|
|
16
|
+
export type AutomationTriggerType = 'time' | 'state' | 'sunrise' | 'sunset' | 'event' | 'geo' | 'webhook' | 'tag' | 'template';
|
|
17
|
+
/** Smart home configuration */
|
|
18
|
+
export interface SmartHomeConfig {
|
|
19
|
+
/** Hub connection */
|
|
20
|
+
hub?: SmartHomeHub;
|
|
21
|
+
/** Theme */
|
|
22
|
+
theme?: SmartHomeTheme;
|
|
23
|
+
/** Locale */
|
|
24
|
+
locale?: string;
|
|
25
|
+
/** Features */
|
|
26
|
+
features?: SmartHomeFeatures;
|
|
27
|
+
/** Rooms */
|
|
28
|
+
rooms?: Room[];
|
|
29
|
+
/** Integrations */
|
|
30
|
+
integrations?: HomeIntegration[];
|
|
31
|
+
/** Voice assistants */
|
|
32
|
+
voice?: VoiceAssistantConfig;
|
|
33
|
+
/** Energy config */
|
|
34
|
+
energy?: EnergyConfig;
|
|
35
|
+
}
|
|
36
|
+
/** Smart home hub */
|
|
37
|
+
export interface SmartHomeHub {
|
|
38
|
+
type: 'homeAssistant' | 'smartThings' | 'hubitat' | 'openhab' | 'domoticz' | 'custom';
|
|
39
|
+
url?: string;
|
|
40
|
+
token?: string;
|
|
41
|
+
apiKey?: string;
|
|
42
|
+
websocket?: boolean;
|
|
43
|
+
}
|
|
44
|
+
/** Smart home theme */
|
|
45
|
+
export interface SmartHomeTheme {
|
|
46
|
+
name?: string;
|
|
47
|
+
background?: string;
|
|
48
|
+
surface?: string;
|
|
49
|
+
primary?: string;
|
|
50
|
+
deviceColors?: DeviceColorScheme;
|
|
51
|
+
roomIcons?: RoomIconSet;
|
|
52
|
+
}
|
|
53
|
+
/** Device color scheme */
|
|
54
|
+
export interface DeviceColorScheme {
|
|
55
|
+
light?: string;
|
|
56
|
+
switch?: string;
|
|
57
|
+
thermostat?: string;
|
|
58
|
+
sensor?: string;
|
|
59
|
+
camera?: string;
|
|
60
|
+
lock?: string;
|
|
61
|
+
default?: string;
|
|
62
|
+
}
|
|
63
|
+
/** Room icon set */
|
|
64
|
+
export interface RoomIconSet {
|
|
65
|
+
livingRoom?: string;
|
|
66
|
+
bedroom?: string;
|
|
67
|
+
kitchen?: string;
|
|
68
|
+
bathroom?: string;
|
|
69
|
+
office?: string;
|
|
70
|
+
garage?: string;
|
|
71
|
+
outdoor?: string;
|
|
72
|
+
default?: string;
|
|
73
|
+
}
|
|
74
|
+
/** Smart home features */
|
|
75
|
+
export interface SmartHomeFeatures {
|
|
76
|
+
discovery?: boolean;
|
|
77
|
+
scenes?: boolean;
|
|
78
|
+
automations?: boolean;
|
|
79
|
+
energy?: boolean;
|
|
80
|
+
climate?: boolean;
|
|
81
|
+
lighting?: boolean;
|
|
82
|
+
security?: boolean;
|
|
83
|
+
voice?: boolean;
|
|
84
|
+
presence?: boolean;
|
|
85
|
+
schedules?: boolean;
|
|
86
|
+
}
|
|
87
|
+
/** Room */
|
|
88
|
+
export interface Room {
|
|
89
|
+
id: string;
|
|
90
|
+
name: string;
|
|
91
|
+
icon?: string;
|
|
92
|
+
floor?: number;
|
|
93
|
+
area?: number;
|
|
94
|
+
devices?: string[];
|
|
95
|
+
climate?: RoomClimate;
|
|
96
|
+
position?: FloorPlanPosition;
|
|
97
|
+
}
|
|
98
|
+
/** Room climate */
|
|
99
|
+
export interface RoomClimate {
|
|
100
|
+
targetTemperature?: number;
|
|
101
|
+
currentTemperature?: number;
|
|
102
|
+
humidity?: number;
|
|
103
|
+
hvacMode?: HVACMode;
|
|
104
|
+
}
|
|
105
|
+
/** HVAC mode */
|
|
106
|
+
export type HVACMode = 'off' | 'heat' | 'cool' | 'auto' | 'fan_only' | 'dry';
|
|
107
|
+
/** Floor plan position */
|
|
108
|
+
export interface FloorPlanPosition {
|
|
109
|
+
x: number;
|
|
110
|
+
y: number;
|
|
111
|
+
width?: number;
|
|
112
|
+
height?: number;
|
|
113
|
+
}
|
|
114
|
+
/** Home integration */
|
|
115
|
+
export interface HomeIntegration {
|
|
116
|
+
id: string;
|
|
117
|
+
name: string;
|
|
118
|
+
type: IntegrationType;
|
|
119
|
+
enabled: boolean;
|
|
120
|
+
config?: IntegrationConfig;
|
|
121
|
+
status?: IntegrationStatus;
|
|
122
|
+
}
|
|
123
|
+
/** Integration type */
|
|
124
|
+
export type IntegrationType = 'homeAssistant' | 'googleHome' | 'alexa' | 'homeKit' | 'smartThings' | 'ifttt' | 'philipsHue' | 'nest' | 'ring' | 'wyze' | 'tuya' | 'mqtt' | 'zigbee2mqtt' | 'zwave-js' | 'custom';
|
|
125
|
+
/** Integration config */
|
|
126
|
+
export interface IntegrationConfig {
|
|
127
|
+
host?: string;
|
|
128
|
+
port?: number;
|
|
129
|
+
username?: string;
|
|
130
|
+
password?: string;
|
|
131
|
+
apiKey?: string;
|
|
132
|
+
clientId?: string;
|
|
133
|
+
clientSecret?: string;
|
|
134
|
+
refreshToken?: string;
|
|
135
|
+
region?: string;
|
|
136
|
+
bridgeId?: string;
|
|
137
|
+
options?: Record<string, unknown>;
|
|
138
|
+
}
|
|
139
|
+
/** Integration status */
|
|
140
|
+
export interface IntegrationStatus {
|
|
141
|
+
connected: boolean;
|
|
142
|
+
lastSync?: Date;
|
|
143
|
+
deviceCount?: number;
|
|
144
|
+
error?: string;
|
|
145
|
+
}
|
|
146
|
+
/** Voice assistant config */
|
|
147
|
+
export interface VoiceAssistantConfig {
|
|
148
|
+
enabled?: boolean;
|
|
149
|
+
assistants?: VoiceAssistant[];
|
|
150
|
+
wakeWord?: string;
|
|
151
|
+
language?: string;
|
|
152
|
+
}
|
|
153
|
+
/** Voice assistant */
|
|
154
|
+
export interface VoiceAssistant {
|
|
155
|
+
type: 'alexa' | 'googleAssistant' | 'siri' | 'cortana' | 'custom';
|
|
156
|
+
enabled: boolean;
|
|
157
|
+
linked?: boolean;
|
|
158
|
+
skillId?: string;
|
|
159
|
+
config?: Record<string, unknown>;
|
|
160
|
+
}
|
|
161
|
+
/** Energy config */
|
|
162
|
+
export interface EnergyConfig {
|
|
163
|
+
enabled?: boolean;
|
|
164
|
+
gridSource?: GridSource;
|
|
165
|
+
solar?: SolarConfig;
|
|
166
|
+
battery?: BatteryConfig;
|
|
167
|
+
tariff?: TariffConfig;
|
|
168
|
+
goals?: EnergyGoals;
|
|
169
|
+
}
|
|
170
|
+
/** Grid source */
|
|
171
|
+
export interface GridSource {
|
|
172
|
+
entityId?: string;
|
|
173
|
+
importPrice?: number;
|
|
174
|
+
exportPrice?: number;
|
|
175
|
+
currency?: string;
|
|
176
|
+
}
|
|
177
|
+
/** Solar config */
|
|
178
|
+
export interface SolarConfig {
|
|
179
|
+
entityId?: string;
|
|
180
|
+
capacity?: number;
|
|
181
|
+
orientation?: string;
|
|
182
|
+
tilt?: number;
|
|
183
|
+
}
|
|
184
|
+
/** Battery config */
|
|
185
|
+
export interface BatteryConfig {
|
|
186
|
+
entityId?: string;
|
|
187
|
+
capacity?: number;
|
|
188
|
+
minCharge?: number;
|
|
189
|
+
maxCharge?: number;
|
|
190
|
+
}
|
|
191
|
+
/** Tariff config */
|
|
192
|
+
export interface TariffConfig {
|
|
193
|
+
type: 'flat' | 'tou' | 'realtime';
|
|
194
|
+
rates?: TariffRate[];
|
|
195
|
+
provider?: string;
|
|
196
|
+
}
|
|
197
|
+
/** Tariff rate */
|
|
198
|
+
export interface TariffRate {
|
|
199
|
+
name: string;
|
|
200
|
+
price: number;
|
|
201
|
+
startTime?: string;
|
|
202
|
+
endTime?: string;
|
|
203
|
+
days?: number[];
|
|
204
|
+
}
|
|
205
|
+
/** Energy goals */
|
|
206
|
+
export interface EnergyGoals {
|
|
207
|
+
dailyBudget?: number;
|
|
208
|
+
monthlyBudget?: number;
|
|
209
|
+
selfSufficiency?: number;
|
|
210
|
+
}
|
|
211
|
+
/** Home device */
|
|
212
|
+
export interface HomeDevice {
|
|
213
|
+
id: string;
|
|
214
|
+
name: string;
|
|
215
|
+
type: HomeDeviceType;
|
|
216
|
+
protocol: HomeProtocol;
|
|
217
|
+
room?: string;
|
|
218
|
+
state: DeviceStateData;
|
|
219
|
+
attributes?: DeviceAttributes;
|
|
220
|
+
capabilities?: DeviceCapability[];
|
|
221
|
+
config?: DeviceConfig;
|
|
222
|
+
metadata?: DeviceMetadata;
|
|
223
|
+
}
|
|
224
|
+
/** Device state data */
|
|
225
|
+
export interface DeviceStateData {
|
|
226
|
+
value: HomeDeviceState | number | string;
|
|
227
|
+
lastChanged?: Date;
|
|
228
|
+
lastUpdated?: Date;
|
|
229
|
+
}
|
|
230
|
+
/** Device attributes */
|
|
231
|
+
export interface DeviceAttributes {
|
|
232
|
+
brightness?: number;
|
|
233
|
+
colorTemp?: number;
|
|
234
|
+
color?: ColorValue;
|
|
235
|
+
position?: number;
|
|
236
|
+
temperature?: number;
|
|
237
|
+
humidity?: number;
|
|
238
|
+
battery?: number;
|
|
239
|
+
power?: number;
|
|
240
|
+
energy?: number;
|
|
241
|
+
voltage?: number;
|
|
242
|
+
current?: number;
|
|
243
|
+
motion?: boolean;
|
|
244
|
+
contact?: boolean;
|
|
245
|
+
locked?: boolean;
|
|
246
|
+
playing?: boolean;
|
|
247
|
+
volume?: number;
|
|
248
|
+
source?: string;
|
|
249
|
+
[key: string]: unknown;
|
|
250
|
+
}
|
|
251
|
+
/** Color value */
|
|
252
|
+
export interface ColorValue {
|
|
253
|
+
rgb?: [number, number, number];
|
|
254
|
+
hs?: [number, number];
|
|
255
|
+
xy?: [number, number];
|
|
256
|
+
kelvin?: number;
|
|
257
|
+
}
|
|
258
|
+
/** Device capability */
|
|
259
|
+
export type DeviceCapability = 'on_off' | 'brightness' | 'color' | 'color_temp' | 'position' | 'tilt' | 'temperature' | 'humidity' | 'motion' | 'contact' | 'lock' | 'media' | 'volume' | 'battery' | 'power' | 'energy';
|
|
260
|
+
/** Device config */
|
|
261
|
+
export interface DeviceConfig {
|
|
262
|
+
icon?: string;
|
|
263
|
+
hidden?: boolean;
|
|
264
|
+
disabled?: boolean;
|
|
265
|
+
readonly?: boolean;
|
|
266
|
+
confirmActions?: boolean;
|
|
267
|
+
updateInterval?: number;
|
|
268
|
+
}
|
|
269
|
+
/** Device metadata */
|
|
270
|
+
export interface DeviceMetadata {
|
|
271
|
+
manufacturer?: string;
|
|
272
|
+
model?: string;
|
|
273
|
+
swVersion?: string;
|
|
274
|
+
hwVersion?: string;
|
|
275
|
+
ieeeAddress?: string;
|
|
276
|
+
zigbeeId?: string;
|
|
277
|
+
zwaveId?: number;
|
|
278
|
+
added?: Date;
|
|
279
|
+
lastSeen?: Date;
|
|
280
|
+
}
|
|
281
|
+
/** Scene */
|
|
282
|
+
export interface HomeScene {
|
|
283
|
+
id: string;
|
|
284
|
+
name: string;
|
|
285
|
+
icon?: string;
|
|
286
|
+
room?: string;
|
|
287
|
+
entities: SceneEntity[];
|
|
288
|
+
snapshot?: boolean;
|
|
289
|
+
metadata?: SceneMetadata;
|
|
290
|
+
}
|
|
291
|
+
/** Scene entity */
|
|
292
|
+
export interface SceneEntity {
|
|
293
|
+
entityId: string;
|
|
294
|
+
state?: string | number | boolean;
|
|
295
|
+
attributes?: Partial<DeviceAttributes>;
|
|
296
|
+
}
|
|
297
|
+
/** Scene metadata */
|
|
298
|
+
export interface SceneMetadata {
|
|
299
|
+
created?: Date;
|
|
300
|
+
createdBy?: string;
|
|
301
|
+
modified?: Date;
|
|
302
|
+
lastActivated?: Date;
|
|
303
|
+
activationCount?: number;
|
|
304
|
+
}
|
|
305
|
+
/** Automation */
|
|
306
|
+
export interface HomeAutomation {
|
|
307
|
+
id: string;
|
|
308
|
+
name: string;
|
|
309
|
+
description?: string;
|
|
310
|
+
enabled: boolean;
|
|
311
|
+
mode: AutomationMode;
|
|
312
|
+
triggers: AutomationTrigger[];
|
|
313
|
+
conditions?: AutomationCondition[];
|
|
314
|
+
actions: AutomationAction[];
|
|
315
|
+
metadata?: AutomationMetadata;
|
|
316
|
+
}
|
|
317
|
+
/** Automation mode */
|
|
318
|
+
export type AutomationMode = 'single' | 'restart' | 'queued' | 'parallel';
|
|
319
|
+
/** Automation trigger */
|
|
320
|
+
export interface AutomationTrigger {
|
|
321
|
+
id?: string;
|
|
322
|
+
type: AutomationTriggerType;
|
|
323
|
+
platform?: string;
|
|
324
|
+
config: TriggerConfig;
|
|
325
|
+
}
|
|
326
|
+
/** Trigger config */
|
|
327
|
+
export interface TriggerConfig {
|
|
328
|
+
entityId?: string;
|
|
329
|
+
state?: string;
|
|
330
|
+
from?: string;
|
|
331
|
+
to?: string;
|
|
332
|
+
for?: Duration;
|
|
333
|
+
at?: string;
|
|
334
|
+
offset?: string;
|
|
335
|
+
event?: string;
|
|
336
|
+
eventData?: Record<string, unknown>;
|
|
337
|
+
zone?: string;
|
|
338
|
+
webhookId?: string;
|
|
339
|
+
tag?: string;
|
|
340
|
+
template?: string;
|
|
341
|
+
[key: string]: unknown;
|
|
342
|
+
}
|
|
343
|
+
/** Duration */
|
|
344
|
+
export interface Duration {
|
|
345
|
+
hours?: number;
|
|
346
|
+
minutes?: number;
|
|
347
|
+
seconds?: number;
|
|
348
|
+
}
|
|
349
|
+
/** Automation condition */
|
|
350
|
+
export interface AutomationCondition {
|
|
351
|
+
type: ConditionType;
|
|
352
|
+
config: ConditionConfig;
|
|
353
|
+
}
|
|
354
|
+
/** Condition type */
|
|
355
|
+
export type ConditionType = 'state' | 'numeric_state' | 'time' | 'sun' | 'zone' | 'template' | 'and' | 'or' | 'not';
|
|
356
|
+
/** Condition config */
|
|
357
|
+
export interface ConditionConfig {
|
|
358
|
+
entityId?: string;
|
|
359
|
+
state?: string;
|
|
360
|
+
above?: number;
|
|
361
|
+
below?: number;
|
|
362
|
+
after?: string;
|
|
363
|
+
before?: string;
|
|
364
|
+
afterOffset?: string;
|
|
365
|
+
beforeOffset?: string;
|
|
366
|
+
zone?: string;
|
|
367
|
+
template?: string;
|
|
368
|
+
conditions?: AutomationCondition[];
|
|
369
|
+
[key: string]: unknown;
|
|
370
|
+
}
|
|
371
|
+
/** Automation action */
|
|
372
|
+
export interface AutomationAction {
|
|
373
|
+
type: ActionType;
|
|
374
|
+
config: ActionConfig;
|
|
375
|
+
delay?: Duration;
|
|
376
|
+
enabled?: boolean;
|
|
377
|
+
}
|
|
378
|
+
/** Action type */
|
|
379
|
+
export type ActionType = 'service' | 'scene' | 'delay' | 'wait' | 'condition' | 'repeat' | 'choose' | 'notification' | 'script';
|
|
380
|
+
/** Action config */
|
|
381
|
+
export interface ActionConfig {
|
|
382
|
+
service?: string;
|
|
383
|
+
target?: ActionTarget;
|
|
384
|
+
data?: Record<string, unknown>;
|
|
385
|
+
sceneId?: string;
|
|
386
|
+
delay?: Duration;
|
|
387
|
+
timeout?: Duration;
|
|
388
|
+
condition?: AutomationCondition;
|
|
389
|
+
sequence?: AutomationAction[];
|
|
390
|
+
count?: number;
|
|
391
|
+
while?: AutomationCondition;
|
|
392
|
+
until?: AutomationCondition;
|
|
393
|
+
options?: ChooseOption[];
|
|
394
|
+
default?: AutomationAction[];
|
|
395
|
+
message?: string;
|
|
396
|
+
title?: string;
|
|
397
|
+
notifyTarget?: string;
|
|
398
|
+
scriptId?: string;
|
|
399
|
+
[key: string]: unknown;
|
|
400
|
+
}
|
|
401
|
+
/** Action target */
|
|
402
|
+
export interface ActionTarget {
|
|
403
|
+
entityId?: string | string[];
|
|
404
|
+
deviceId?: string | string[];
|
|
405
|
+
areaId?: string | string[];
|
|
406
|
+
}
|
|
407
|
+
/** Choose option */
|
|
408
|
+
export interface ChooseOption {
|
|
409
|
+
conditions: AutomationCondition[];
|
|
410
|
+
sequence: AutomationAction[];
|
|
411
|
+
}
|
|
412
|
+
/** Automation metadata */
|
|
413
|
+
export interface AutomationMetadata {
|
|
414
|
+
created?: Date;
|
|
415
|
+
createdBy?: string;
|
|
416
|
+
modified?: Date;
|
|
417
|
+
lastTriggered?: Date;
|
|
418
|
+
triggerCount?: number;
|
|
419
|
+
}
|
|
420
|
+
/** Energy data */
|
|
421
|
+
export interface EnergyData {
|
|
422
|
+
summary: EnergySummary;
|
|
423
|
+
consumption: EnergyConsumption[];
|
|
424
|
+
production?: EnergyProduction[];
|
|
425
|
+
battery?: BatteryData;
|
|
426
|
+
comparison?: EnergyComparison;
|
|
427
|
+
}
|
|
428
|
+
/** Energy summary */
|
|
429
|
+
export interface EnergySummary {
|
|
430
|
+
totalConsumption: number;
|
|
431
|
+
totalProduction?: number;
|
|
432
|
+
netUsage: number;
|
|
433
|
+
selfConsumption?: number;
|
|
434
|
+
gridImport?: number;
|
|
435
|
+
gridExport?: number;
|
|
436
|
+
cost: number;
|
|
437
|
+
savings?: number;
|
|
438
|
+
period: string;
|
|
439
|
+
}
|
|
440
|
+
/** Energy consumption */
|
|
441
|
+
export interface EnergyConsumption {
|
|
442
|
+
timestamp: Date;
|
|
443
|
+
value: number;
|
|
444
|
+
cost?: number;
|
|
445
|
+
tariff?: string;
|
|
446
|
+
devices?: DeviceConsumption[];
|
|
447
|
+
}
|
|
448
|
+
/** Device consumption */
|
|
449
|
+
export interface DeviceConsumption {
|
|
450
|
+
deviceId: string;
|
|
451
|
+
deviceName?: string;
|
|
452
|
+
value: number;
|
|
453
|
+
cost?: number;
|
|
454
|
+
percentage?: number;
|
|
455
|
+
}
|
|
456
|
+
/** Energy production */
|
|
457
|
+
export interface EnergyProduction {
|
|
458
|
+
timestamp: Date;
|
|
459
|
+
value: number;
|
|
460
|
+
source: 'solar' | 'wind' | 'other';
|
|
461
|
+
exported?: number;
|
|
462
|
+
selfConsumed?: number;
|
|
463
|
+
}
|
|
464
|
+
/** Battery data */
|
|
465
|
+
export interface BatteryData {
|
|
466
|
+
level: number;
|
|
467
|
+
charging: boolean;
|
|
468
|
+
power: number;
|
|
469
|
+
charged?: number;
|
|
470
|
+
discharged?: number;
|
|
471
|
+
cycles?: number;
|
|
472
|
+
}
|
|
473
|
+
/** Energy comparison */
|
|
474
|
+
export interface EnergyComparison {
|
|
475
|
+
previousPeriod: number;
|
|
476
|
+
change: number;
|
|
477
|
+
changePercent: number;
|
|
478
|
+
trend: 'up' | 'down' | 'stable';
|
|
479
|
+
neighborhoodAvg?: number;
|
|
480
|
+
ranking?: string;
|
|
481
|
+
}
|
|
482
|
+
/** Climate zone */
|
|
483
|
+
export interface ClimateZone {
|
|
484
|
+
id: string;
|
|
485
|
+
name: string;
|
|
486
|
+
rooms: string[];
|
|
487
|
+
thermostat?: string;
|
|
488
|
+
sensors?: string[];
|
|
489
|
+
mode: HVACMode;
|
|
490
|
+
targetTemperature: number;
|
|
491
|
+
currentTemperature?: number;
|
|
492
|
+
schedule?: ClimateSchedule;
|
|
493
|
+
presence?: PresenceInfo;
|
|
494
|
+
}
|
|
495
|
+
/** Climate schedule */
|
|
496
|
+
export interface ClimateSchedule {
|
|
497
|
+
enabled: boolean;
|
|
498
|
+
periods: SchedulePeriod[];
|
|
499
|
+
overrides?: ScheduleOverride[];
|
|
500
|
+
}
|
|
501
|
+
/** Schedule period */
|
|
502
|
+
export interface SchedulePeriod {
|
|
503
|
+
id: string;
|
|
504
|
+
name?: string;
|
|
505
|
+
days: number[];
|
|
506
|
+
startTime: string;
|
|
507
|
+
endTime: string;
|
|
508
|
+
temperature: number;
|
|
509
|
+
mode?: HVACMode;
|
|
510
|
+
}
|
|
511
|
+
/** Schedule override */
|
|
512
|
+
export interface ScheduleOverride {
|
|
513
|
+
temperature: number;
|
|
514
|
+
mode?: HVACMode;
|
|
515
|
+
until?: Date;
|
|
516
|
+
reason?: string;
|
|
517
|
+
}
|
|
518
|
+
/** Presence info */
|
|
519
|
+
export interface PresenceInfo {
|
|
520
|
+
occupied: boolean;
|
|
521
|
+
lastDetected?: Date;
|
|
522
|
+
persons?: string[];
|
|
523
|
+
awayMode?: boolean;
|
|
524
|
+
}
|
|
525
|
+
/** Climate preset */
|
|
526
|
+
export interface ClimatePreset {
|
|
527
|
+
id: string;
|
|
528
|
+
name: string;
|
|
529
|
+
icon?: string;
|
|
530
|
+
zones: ZonePreset[];
|
|
531
|
+
}
|
|
532
|
+
/** Zone preset */
|
|
533
|
+
export interface ZonePreset {
|
|
534
|
+
zoneId: string;
|
|
535
|
+
temperature: number;
|
|
536
|
+
mode?: HVACMode;
|
|
537
|
+
}
|
|
538
|
+
/** Light group */
|
|
539
|
+
export interface LightGroup {
|
|
540
|
+
id: string;
|
|
541
|
+
name: string;
|
|
542
|
+
lights: string[];
|
|
543
|
+
room?: string;
|
|
544
|
+
state: LightGroupState;
|
|
545
|
+
scenes?: LightScene[];
|
|
546
|
+
}
|
|
547
|
+
/** Light group state */
|
|
548
|
+
export interface LightGroupState {
|
|
549
|
+
on: boolean;
|
|
550
|
+
brightness?: number;
|
|
551
|
+
colorTemp?: number;
|
|
552
|
+
color?: ColorValue;
|
|
553
|
+
effect?: string;
|
|
554
|
+
}
|
|
555
|
+
/** Light scene */
|
|
556
|
+
export interface LightScene {
|
|
557
|
+
id: string;
|
|
558
|
+
name: string;
|
|
559
|
+
icon?: string;
|
|
560
|
+
lights: LightState[];
|
|
561
|
+
transition?: number;
|
|
562
|
+
}
|
|
563
|
+
/** Light state */
|
|
564
|
+
export interface LightState {
|
|
565
|
+
lightId: string;
|
|
566
|
+
on: boolean;
|
|
567
|
+
brightness?: number;
|
|
568
|
+
colorTemp?: number;
|
|
569
|
+
color?: ColorValue;
|
|
570
|
+
effect?: string;
|
|
571
|
+
}
|
|
572
|
+
/** Circadian rhythm config */
|
|
573
|
+
export interface CircadianConfig {
|
|
574
|
+
enabled: boolean;
|
|
575
|
+
lights: string[];
|
|
576
|
+
sunrise?: string;
|
|
577
|
+
sunset?: string;
|
|
578
|
+
minBrightness?: number;
|
|
579
|
+
maxBrightness?: number;
|
|
580
|
+
minColorTemp?: number;
|
|
581
|
+
maxColorTemp?: number;
|
|
582
|
+
transition?: number;
|
|
583
|
+
}
|
|
584
|
+
/** Motion lighting config */
|
|
585
|
+
export interface MotionLightingConfig {
|
|
586
|
+
motionSensor: string;
|
|
587
|
+
lights: string[];
|
|
588
|
+
brightness?: number;
|
|
589
|
+
colorTemp?: number;
|
|
590
|
+
timeout: number;
|
|
591
|
+
onlyAfterSunset?: boolean;
|
|
592
|
+
onlyWhenDark?: boolean;
|
|
593
|
+
disabled?: boolean;
|
|
594
|
+
}
|
|
595
|
+
/** Security system */
|
|
596
|
+
export interface SecuritySystem {
|
|
597
|
+
state: SecurityState;
|
|
598
|
+
armedMode?: SecurityMode;
|
|
599
|
+
alarm?: AlarmInfo;
|
|
600
|
+
zones: SecurityZone[];
|
|
601
|
+
sensors: SecuritySensor[];
|
|
602
|
+
cameras?: SecurityCamera[];
|
|
603
|
+
history?: SecurityEvent[];
|
|
604
|
+
}
|
|
605
|
+
/** Security state */
|
|
606
|
+
export type SecurityState = 'disarmed' | 'armed_home' | 'armed_away' | 'armed_night' | 'arming' | 'pending' | 'triggered';
|
|
607
|
+
/** Security mode */
|
|
608
|
+
export type SecurityMode = 'home' | 'away' | 'night' | 'vacation' | 'custom';
|
|
609
|
+
/** Alarm info */
|
|
610
|
+
export interface AlarmInfo {
|
|
611
|
+
active: boolean;
|
|
612
|
+
triggeredAt?: Date;
|
|
613
|
+
triggeredBy?: string;
|
|
614
|
+
zones?: string[];
|
|
615
|
+
}
|
|
616
|
+
/** Security zone */
|
|
617
|
+
export interface SecurityZone {
|
|
618
|
+
id: string;
|
|
619
|
+
name: string;
|
|
620
|
+
type: ZoneType;
|
|
621
|
+
sensors: string[];
|
|
622
|
+
armed: boolean;
|
|
623
|
+
bypassed?: boolean;
|
|
624
|
+
delay?: number;
|
|
625
|
+
}
|
|
626
|
+
/** Zone type */
|
|
627
|
+
export type ZoneType = 'entry' | 'perimeter' | 'interior' | 'motion' | 'panic' | 'fire' | 'water' | 'co';
|
|
628
|
+
/** Security sensor */
|
|
629
|
+
export interface SecuritySensor {
|
|
630
|
+
id: string;
|
|
631
|
+
name: string;
|
|
632
|
+
type: SensorType;
|
|
633
|
+
zone?: string;
|
|
634
|
+
state: boolean;
|
|
635
|
+
battery?: number;
|
|
636
|
+
tampered?: boolean;
|
|
637
|
+
bypassed?: boolean;
|
|
638
|
+
lastTriggered?: Date;
|
|
639
|
+
}
|
|
640
|
+
/** Sensor type */
|
|
641
|
+
export type SensorType = 'door' | 'window' | 'motion' | 'glass_break' | 'smoke' | 'co' | 'water' | 'vibration' | 'panic';
|
|
642
|
+
/** Security camera */
|
|
643
|
+
export interface SecurityCamera {
|
|
644
|
+
id: string;
|
|
645
|
+
name: string;
|
|
646
|
+
type: CameraType;
|
|
647
|
+
room?: string;
|
|
648
|
+
stream?: StreamInfo;
|
|
649
|
+
recording?: RecordingConfig;
|
|
650
|
+
detection?: DetectionConfig;
|
|
651
|
+
ptz?: PTZCapability;
|
|
652
|
+
}
|
|
653
|
+
/** Camera type */
|
|
654
|
+
export type CameraType = 'indoor' | 'outdoor' | 'doorbell' | 'floodlight' | 'ptz';
|
|
655
|
+
/** Stream info */
|
|
656
|
+
export interface StreamInfo {
|
|
657
|
+
url: string;
|
|
658
|
+
type: 'hls' | 'rtsp' | 'webrtc' | 'mjpeg';
|
|
659
|
+
audioEnabled?: boolean;
|
|
660
|
+
resolution?: string;
|
|
661
|
+
}
|
|
662
|
+
/** Recording config */
|
|
663
|
+
export interface RecordingConfig {
|
|
664
|
+
enabled: boolean;
|
|
665
|
+
continuous?: boolean;
|
|
666
|
+
motionOnly?: boolean;
|
|
667
|
+
retention?: number;
|
|
668
|
+
storage?: string;
|
|
669
|
+
}
|
|
670
|
+
/** Detection config */
|
|
671
|
+
export interface DetectionConfig {
|
|
672
|
+
motion?: boolean;
|
|
673
|
+
person?: boolean;
|
|
674
|
+
vehicle?: boolean;
|
|
675
|
+
animal?: boolean;
|
|
676
|
+
package?: boolean;
|
|
677
|
+
zones?: DetectionZone[];
|
|
678
|
+
}
|
|
679
|
+
/** Detection zone */
|
|
680
|
+
export interface DetectionZone {
|
|
681
|
+
id: string;
|
|
682
|
+
name: string;
|
|
683
|
+
points: Array<{
|
|
684
|
+
x: number;
|
|
685
|
+
y: number;
|
|
686
|
+
}>;
|
|
687
|
+
enabled: boolean;
|
|
688
|
+
}
|
|
689
|
+
/** PTZ capability */
|
|
690
|
+
export interface PTZCapability {
|
|
691
|
+
pan: boolean;
|
|
692
|
+
tilt: boolean;
|
|
693
|
+
zoom: boolean;
|
|
694
|
+
presets?: PTZPreset[];
|
|
695
|
+
}
|
|
696
|
+
/** PTZ preset */
|
|
697
|
+
export interface PTZPreset {
|
|
698
|
+
id: string;
|
|
699
|
+
name: string;
|
|
700
|
+
pan?: number;
|
|
701
|
+
tilt?: number;
|
|
702
|
+
zoom?: number;
|
|
703
|
+
}
|
|
704
|
+
/** Security event */
|
|
705
|
+
export interface SecurityEvent {
|
|
706
|
+
id: string;
|
|
707
|
+
timestamp: Date;
|
|
708
|
+
type: SecurityEventType;
|
|
709
|
+
description: string;
|
|
710
|
+
user?: string;
|
|
711
|
+
zone?: string;
|
|
712
|
+
sensor?: string;
|
|
713
|
+
camera?: string;
|
|
714
|
+
}
|
|
715
|
+
/** Security event type */
|
|
716
|
+
export type SecurityEventType = 'arm' | 'disarm' | 'trigger' | 'alarm' | 'tamper' | 'motion' | 'entry' | 'bypass' | 'fault' | 'restore';
|
|
717
|
+
/** Discovery result */
|
|
718
|
+
export interface DiscoveryResult {
|
|
719
|
+
devices: DiscoveredDevice[];
|
|
720
|
+
scanTime: Date;
|
|
721
|
+
duration: number;
|
|
722
|
+
protocols: HomeProtocol[];
|
|
723
|
+
}
|
|
724
|
+
/** Discovered device */
|
|
725
|
+
export interface DiscoveredDevice {
|
|
726
|
+
id: string;
|
|
727
|
+
name?: string;
|
|
728
|
+
type?: HomeDeviceType;
|
|
729
|
+
protocol: HomeProtocol;
|
|
730
|
+
address?: string;
|
|
731
|
+
manufacturer?: string;
|
|
732
|
+
model?: string;
|
|
733
|
+
alreadyAdded?: boolean;
|
|
734
|
+
supported?: boolean;
|
|
735
|
+
capabilities?: DeviceCapability[];
|
|
736
|
+
}
|
|
737
|
+
/** Discovery config */
|
|
738
|
+
export interface DiscoveryConfig {
|
|
739
|
+
protocols?: HomeProtocol[];
|
|
740
|
+
timeout?: number;
|
|
741
|
+
deep?: boolean;
|
|
742
|
+
includeUnsupported?: boolean;
|
|
743
|
+
}
|
|
744
|
+
/** Voice command */
|
|
745
|
+
export interface VoiceCommand {
|
|
746
|
+
id: string;
|
|
747
|
+
text: string;
|
|
748
|
+
intent: VoiceIntent;
|
|
749
|
+
entities?: VoiceEntity[];
|
|
750
|
+
response?: string;
|
|
751
|
+
actions?: AutomationAction[];
|
|
752
|
+
}
|
|
753
|
+
/** Voice intent */
|
|
754
|
+
export type VoiceIntent = 'turn_on' | 'turn_off' | 'toggle' | 'set_brightness' | 'set_color' | 'set_temperature' | 'arm_security' | 'disarm_security' | 'lock' | 'unlock' | 'play' | 'pause' | 'stop' | 'volume' | 'scene' | 'query' | 'unknown';
|
|
755
|
+
/** Voice entity */
|
|
756
|
+
export interface VoiceEntity {
|
|
757
|
+
type: string;
|
|
758
|
+
value: string;
|
|
759
|
+
confidence?: number;
|
|
760
|
+
deviceId?: string;
|
|
761
|
+
room?: string;
|
|
762
|
+
}
|
|
763
|
+
/** Routine */
|
|
764
|
+
export interface Routine {
|
|
765
|
+
id: string;
|
|
766
|
+
name: string;
|
|
767
|
+
icon?: string;
|
|
768
|
+
voicePhrases?: string[];
|
|
769
|
+
triggers?: AutomationTrigger[];
|
|
770
|
+
actions: AutomationAction[];
|
|
771
|
+
enabled: boolean;
|
|
772
|
+
metadata?: AutomationMetadata;
|
|
773
|
+
}
|
|
774
|
+
/** Floor plan */
|
|
775
|
+
export interface FloorPlan {
|
|
776
|
+
id: string;
|
|
777
|
+
name: string;
|
|
778
|
+
floor: number;
|
|
779
|
+
image?: string;
|
|
780
|
+
width: number;
|
|
781
|
+
height: number;
|
|
782
|
+
scale?: number;
|
|
783
|
+
rooms: FloorPlanRoom[];
|
|
784
|
+
devices: FloorPlanDevice[];
|
|
785
|
+
}
|
|
786
|
+
/** Floor plan room */
|
|
787
|
+
export interface FloorPlanRoom {
|
|
788
|
+
roomId: string;
|
|
789
|
+
points: Array<{
|
|
790
|
+
x: number;
|
|
791
|
+
y: number;
|
|
792
|
+
}>;
|
|
793
|
+
label?: FloorPlanLabel;
|
|
794
|
+
}
|
|
795
|
+
/** Floor plan label */
|
|
796
|
+
export interface FloorPlanLabel {
|
|
797
|
+
text: string;
|
|
798
|
+
x: number;
|
|
799
|
+
y: number;
|
|
800
|
+
}
|
|
801
|
+
/** Floor plan device */
|
|
802
|
+
export interface FloorPlanDevice {
|
|
803
|
+
deviceId: string;
|
|
804
|
+
x: number;
|
|
805
|
+
y: number;
|
|
806
|
+
rotation?: number;
|
|
807
|
+
icon?: string;
|
|
808
|
+
}
|
|
809
|
+
/** Home notification */
|
|
810
|
+
export interface HomeNotification {
|
|
811
|
+
id: string;
|
|
812
|
+
title: string;
|
|
813
|
+
message: string;
|
|
814
|
+
timestamp: Date;
|
|
815
|
+
type: NotificationType;
|
|
816
|
+
priority: NotificationPriority;
|
|
817
|
+
entity?: string;
|
|
818
|
+
room?: string;
|
|
819
|
+
read?: boolean;
|
|
820
|
+
dismissed?: boolean;
|
|
821
|
+
actions?: NotificationAction[];
|
|
822
|
+
}
|
|
823
|
+
/** Notification type */
|
|
824
|
+
export type NotificationType = 'security' | 'energy' | 'climate' | 'device' | 'automation' | 'system' | 'info';
|
|
825
|
+
/** Notification priority */
|
|
826
|
+
export type NotificationPriority = 'critical' | 'high' | 'normal' | 'low';
|
|
827
|
+
/** Notification action */
|
|
828
|
+
export interface NotificationAction {
|
|
829
|
+
id: string;
|
|
830
|
+
label: string;
|
|
831
|
+
action: AutomationAction;
|
|
832
|
+
}
|
|
833
|
+
/** Notification config */
|
|
834
|
+
export interface NotificationConfigSettings {
|
|
835
|
+
enabled: boolean;
|
|
836
|
+
channels?: NotificationChannel[];
|
|
837
|
+
quiet?: QuietHours;
|
|
838
|
+
filters?: NotificationFilter[];
|
|
839
|
+
}
|
|
840
|
+
/** Notification channel */
|
|
841
|
+
export interface NotificationChannel {
|
|
842
|
+
type: 'push' | 'email' | 'sms' | 'voice';
|
|
843
|
+
enabled: boolean;
|
|
844
|
+
target?: string;
|
|
845
|
+
priorityThreshold?: NotificationPriority;
|
|
846
|
+
}
|
|
847
|
+
/** Quiet hours */
|
|
848
|
+
export interface QuietHours {
|
|
849
|
+
enabled: boolean;
|
|
850
|
+
start: string;
|
|
851
|
+
end: string;
|
|
852
|
+
allowCritical?: boolean;
|
|
853
|
+
}
|
|
854
|
+
/** Notification filter */
|
|
855
|
+
export interface NotificationFilter {
|
|
856
|
+
type?: NotificationType;
|
|
857
|
+
entity?: string;
|
|
858
|
+
room?: string;
|
|
859
|
+
muted: boolean;
|
|
860
|
+
}
|
|
861
|
+
//# sourceMappingURL=smart-home.d.ts.map
|