homebridge-dummy 1.1.0-beta.1 → 1.1.0-beta.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.
Files changed (67) hide show
  1. package/CHANGELOG.md +15 -5
  2. package/README.md +59 -27
  3. package/config.schema.json +178 -93
  4. package/dist/accessory/base.d.ts +6 -3
  5. package/dist/accessory/base.js +22 -10
  6. package/dist/accessory/base.js.map +1 -1
  7. package/dist/accessory/helpers.js +3 -0
  8. package/dist/accessory/helpers.js.map +1 -1
  9. package/dist/accessory/lock.d.ts +1 -1
  10. package/dist/accessory/lock.js +12 -1
  11. package/dist/accessory/lock.js.map +1 -1
  12. package/dist/accessory/onoff/lightbulb.d.ts +2 -2
  13. package/dist/accessory/onoff/lightbulb.js +5 -0
  14. package/dist/accessory/onoff/lightbulb.js.map +1 -1
  15. package/dist/accessory/onoff/onoff.d.ts +3 -4
  16. package/dist/accessory/onoff/onoff.js +15 -6
  17. package/dist/accessory/onoff/onoff.js.map +1 -1
  18. package/dist/accessory/position/position.d.ts +1 -1
  19. package/dist/accessory/position/position.js +12 -1
  20. package/dist/accessory/position/position.js.map +1 -1
  21. package/dist/accessory/sensor.d.ts +11 -11
  22. package/dist/accessory/sensor.js +44 -30
  23. package/dist/accessory/sensor.js.map +1 -1
  24. package/dist/accessory/thermostat.d.ts +28 -0
  25. package/dist/accessory/thermostat.js +151 -0
  26. package/dist/accessory/thermostat.js.map +1 -0
  27. package/dist/homebridge-ui/public/index.html +2 -2
  28. package/dist/homebridge-ui/public/ui.js +1 -1
  29. package/dist/i18n/en.d.ts +26 -4
  30. package/dist/i18n/en.js +34 -12
  31. package/dist/i18n/en.js.map +1 -1
  32. package/dist/i18n/i18n.d.ts +26 -4
  33. package/dist/i18n/template.d.ts +26 -4
  34. package/dist/i18n/zz.d.ts +26 -4
  35. package/dist/model/types.d.ts +33 -9
  36. package/dist/model/types.js +19 -5
  37. package/dist/model/types.js.map +1 -1
  38. package/dist/timeout/schedule.d.ts +14 -0
  39. package/dist/timeout/schedule.js +68 -0
  40. package/dist/timeout/schedule.js.map +1 -0
  41. package/dist/timeout/timeout.d.ts +23 -0
  42. package/dist/timeout/timeout.js +91 -0
  43. package/dist/timeout/timeout.js.map +1 -0
  44. package/dist/timeout/timer.d.ts +10 -0
  45. package/dist/timeout/timer.js +29 -0
  46. package/dist/timeout/timer.js.map +1 -0
  47. package/dist/tools/configMigration.js +2 -2
  48. package/dist/tools/configMigration.js.map +1 -1
  49. package/dist/tools/storage.d.ts +1 -0
  50. package/dist/tools/storage.js +1 -0
  51. package/dist/tools/storage.js.map +1 -1
  52. package/dist/tools/temperature.d.ts +3 -0
  53. package/dist/tools/temperature.js +14 -0
  54. package/dist/tools/temperature.js.map +1 -0
  55. package/dist/tools/validation.d.ts +2 -0
  56. package/dist/tools/validation.js +7 -0
  57. package/dist/tools/validation.js.map +1 -1
  58. package/package.json +19 -3
  59. package/dist/model/timer.d.ts +0 -16
  60. package/dist/model/timer.js +0 -65
  61. package/dist/model/timer.js.map +0 -1
  62. package/dist/model/trigger.d.ts +0 -14
  63. package/dist/model/trigger.js +0 -73
  64. package/dist/model/trigger.js.map +0 -1
  65. package/dist/tools/time.d.ts +0 -5
  66. package/dist/tools/time.js +0 -15
  67. package/dist/tools/time.js.map +0 -1
@@ -7,20 +7,37 @@
7
7
  "schema": {
8
8
  "type": "object",
9
9
  "definitions": {
10
+ "units": {
11
+ "type": "string",
12
+ "title": "${config.title.units}",
13
+ "enum": [ "MILLISECONDS", "SECONDS", "MINUTES", "HOURS"],
14
+ "enumNames": ["${config.enumNames.milliseconds}", "${config.enumNames.seconds}", "${config.enumNames.minutes}", "${config.enumNames.hours}"]
15
+ },
16
+ "sensor": {
17
+ "type": "object",
18
+ "properties": {
19
+ "type": {
20
+ "type": "string",
21
+ "title": "${config.title.sensor}",
22
+ "enum": ["CarbonDioxideSensor", "CarbonMonoxideSensor", "ContactSensor", "LeakSensor", "MotionSensor", "OccupancySensor", "SmokeSensor"],
23
+ "enumNames": ["${config.enumNames.carbonDioxideSensor}", "${config.enumNames.carbonMonoxideSensor}", "${config.enumNames.contactSensor}", "${config.enumNames.leakSensor}", "${config.enumNames.motionSensor}", "${config.enumNames.occupancySensor}", "${config.enumNames.smokeSensor}"]
24
+ },
25
+ "timerControlled": {
26
+ "type": "boolean",
27
+ "title": "${config.title.timerControlled}",
28
+ "description": "${config.description.timerControlled}"
29
+ }
30
+ }
31
+ },
10
32
  "timer": {
11
33
  "type": "object",
12
34
  "properties": {
13
35
  "delay": {
14
36
  "type": "integer",
15
- "title": "${config.title.delay}",
37
+ "title": "${config.title.delay}",
16
38
  "minimum": 1
17
39
  },
18
- "units": {
19
- "type": "string",
20
- "title": "${config.title.units}",
21
- "enum": [ "SECONDS", "MINUTES", "HOURS"],
22
- "enumNames": ["${config.enumNames.seconds}", "${config.enumNames.minutes}", "${config.enumNames.hours}"]
23
- },
40
+ "units": { "$ref": "#/definitions/units" },
24
41
  "random": {
25
42
  "type": "boolean",
26
43
  "title": "${config.title.random}",
@@ -28,26 +45,21 @@
28
45
  }
29
46
  }
30
47
  },
31
- "trigger": {
48
+ "schedule": {
32
49
  "type": "object",
33
50
  "properties": {
34
51
  "type": {
35
52
  "type": "string",
36
- "title": "${config.title.type}",
53
+ "title": "${config.title.type}",
37
54
  "enum": [ "INTERVAL", "CRON"],
38
55
  "enumNames": ["${config.enumNames.interval}", "${config.enumNames.cron}"]
39
56
  },
40
57
  "interval": {
41
58
  "type": "integer",
42
- "title": "${config.title.interval}",
59
+ "title": "${config.title.interval}",
43
60
  "minimum": 1
44
61
  },
45
- "units": {
46
- "type": "string",
47
- "title": "${config.title.units}",
48
- "enum": [ "SECONDS", "MINUTES", "HOURS"],
49
- "enumNames": ["${config.enumNames.seconds}", "${config.enumNames.minutes}", "${config.enumNames.hours}"]
50
- },
62
+ "units": { "$ref": "#/definitions/units" },
51
63
  "random": {
52
64
  "type": "boolean",
53
65
  "title": "${config.title.random}",
@@ -55,12 +67,12 @@
55
67
  },
56
68
  "cron": {
57
69
  "type": "string",
58
- "title": "${config.title.cron}",
59
- "description": "${config.description.cron}",
70
+ "title": "${config.title.cron}",
71
+ "description": "${config.description.cron}",
60
72
  "placeholder": "* * * * * *",
61
73
  "minimum": 1
62
74
  }
63
- }
75
+ }
64
76
  }
65
77
  },
66
78
  "properties": {
@@ -83,21 +95,22 @@
83
95
  },
84
96
  "type": {
85
97
  "type": "string",
86
- "title": "${config.title.type}",
87
- "enum": ["Door", "Lightbulb", "LockMechanism", "Outlet", "Switch", "Window", "WindowCovering"],
88
- "enumNames": ["${config.enumNames.door}", "${config.enumNames.lightbulb}", "${config.enumNames.lockMechanism}", "${config.enumNames.outlet}", "${config.enumNames.switch}", "${config.enumNames.window}", "${config.enumNames.windowCovering}"]
98
+ "title": "${config.title.type}",
99
+ "enum": ["Door", "Lightbulb", "LockMechanism", "Outlet", "Switch", "Thermostat", "Window", "WindowCovering"],
100
+ "enumNames": ["${config.enumNames.door}", "${config.enumNames.lightbulb}", "${config.enumNames.lockMechanism}", "${config.enumNames.outlet}", "${config.enumNames.switch}", "${config.enumNames.thermostat}", "${config.enumNames.window}", "${config.enumNames.windowCovering}"]
89
101
  },
90
102
  "groupName": {
91
103
  "type": "string",
92
104
  "title": "${config.title.groupName}"
93
105
  },
106
+ "sensor": { "$ref": "#/definitions/sensor" },
94
107
  "timer": { "$ref": "#/definitions/timer" },
95
- "trigger": { "$ref": "#/definitions/trigger" },
96
- "sensor": {
108
+ "schedule": { "$ref": "#/definitions/schedule" },
109
+ "temperatureUnits": {
97
110
  "type": "string",
98
- "title": "${config.title.sensor}",
99
- "enum": ["CarbonDioxideSensor", "CarbonMonoxideSensor", "ContactSensor", "LeakSensor", "MotionSensor", "OccupancySensor", "SmokeSensor"],
100
- "enumNames": ["${config.enumNames.carbonDioxideSensor}", "${config.enumNames.carbonMonoxideSensor}", "${config.enumNames.contactSensor}", "${config.enumNames.leakSensor}", "${config.enumNames.motionSensor}", "${config.enumNames.occupancySensor}", "${config.enumNames.smokeSensor}"]
111
+ "title": "${config.title.units}",
112
+ "enum": ["C", "F"],
113
+ "enumNames": ["${config.enumNames.celsius}", "${config.enumNames.fahrenheit}"]
101
114
  },
102
115
  "defaultBrightness": {
103
116
  "type": "number",
@@ -123,6 +136,16 @@
123
136
  "enum": ["open", "closed"],
124
137
  "enumNames": ["${config.enumNames.open}", "${config.enumNames.closed}"]
125
138
  },
139
+ "defaultThermostatState": {
140
+ "type": "string",
141
+ "title": "${config.title.defaultState}",
142
+ "enum": ["auto", "heat", "cool", "off"],
143
+ "enumNames": ["${config.enumNames.auto}", "${config.enumNames.heat}", "${config.enumNames.cool}", "${config.enumNames.off}"]
144
+ },
145
+ "defaultTemperature": {
146
+ "type": "number",
147
+ "title": "${config.title.defaultTemperature}"
148
+ },
126
149
  "commandOn": {
127
150
  "type": "string",
128
151
  "title": "${config.title.commandOn}"
@@ -147,16 +170,20 @@
147
170
  "type": "string",
148
171
  "title": "${config.title.commandClose}"
149
172
  },
173
+ "commandTemperature": {
174
+ "type": "string",
175
+ "title": "${config.title.commandTemperature}"
176
+ },
150
177
  "resetOnRestart": {
151
178
  "type": "boolean",
152
179
  "title": "${config.title.resetOnRestart}"
153
180
  },
154
181
  "disableLogging": {
155
- "title": "${config.title.disableLogging}",
156
- "type": "boolean"
182
+ "type": "boolean",
183
+ "title": "${config.title.disableLogging}"
157
184
  }
158
185
  }
159
- }
186
+ }
160
187
  }
161
188
  }
162
189
  },
@@ -178,15 +205,15 @@
178
205
  "items": [
179
206
  {
180
207
  "key": "accessories[].name",
181
- "flex": "1 1 0"
208
+ "flex": "1 1 33%"
182
209
  },
183
210
  {
184
211
  "key": "accessories[].type",
185
- "flex": "1 1 0"
212
+ "flex": "1 1 33%"
186
213
  },
187
214
  {
188
215
  "key": "accessories[].groupName",
189
- "flex": "1 1 0"
216
+ "flex": "1 1 33%"
190
217
  }
191
218
  ]
192
219
  },
@@ -207,15 +234,15 @@
207
234
  "items": [
208
235
  {
209
236
  "key": "accessories[].defaultOn",
210
- "flex": "0 0 25%"
237
+ "flex": "0 0 33%"
211
238
  },
212
239
  {
213
- "key": "accessories[].sensor",
214
- "flex": "0 0 25%"
240
+ "key": "accessories[].sensor.type",
241
+ "flex": "0 0 33%"
215
242
  },
216
243
  {
217
244
  "key": "accessories[].defaultBrightness",
218
- "flex": "0 0 25%",
245
+ "flex": "0 0 33%",
219
246
  "condition": {
220
247
  "functionBody": "return ['Lightbulb'].includes(model.accessories?.[arguments[1]]?.type);"
221
248
  }
@@ -232,7 +259,11 @@
232
259
  "items": [
233
260
  {
234
261
  "key": "accessories[].defaultLockState",
235
- "flex": "0 0 25%"
262
+ "flex": "0 0 33%"
263
+ },
264
+ {
265
+ "key": "accessories[].sensor.type",
266
+ "flex": "0 0 33%"
236
267
  }
237
268
  ]
238
269
  },
@@ -246,10 +277,36 @@
246
277
  "items": [
247
278
  {
248
279
  "key": "accessories[].defaultPosition",
249
- "flex": "0 0 25%"
280
+ "flex": "0 0 33%"
281
+ },
282
+ {
283
+ "key": "accessories[].sensor.type",
284
+ "flex": "0 0 33%"
250
285
  }
251
286
  ]
252
- },
287
+ },
288
+ {
289
+ "type": "div",
290
+ "displayFlex": true,
291
+ "flex-direction": "row",
292
+ "condition": {
293
+ "functionBody": "return ['Thermostat'].includes(model.accessories?.[arguments[1]]?.type);"
294
+ },
295
+ "items": [
296
+ {
297
+ "key": "accessories[].temperatureUnits",
298
+ "flex": "0 0 33%"
299
+ },
300
+ {
301
+ "key": "accessories[].defaultThermostatState",
302
+ "flex": "0 0 33%"
303
+ },
304
+ {
305
+ "key": "accessories[].defaultTemperature",
306
+ "flex": "0 0 33%"
307
+ }
308
+ ]
309
+ },
253
310
  {
254
311
  "type": "div",
255
312
  "displayFlex": true,
@@ -257,13 +314,13 @@
257
314
  "items": [
258
315
  {
259
316
  "key": "accessories[].disableLogging",
260
- "flex": "0 1 25%"
317
+ "flex": "0 1 33%"
261
318
  },
262
319
  {
263
320
  "key": "accessories[].resetOnRestart",
264
- "flex": "0 1 25%",
321
+ "flex": "0 1 33%",
265
322
  "condition": {
266
- "functionBody": "return model.accessories?.[arguments[1]]?.timer?.delay === undefined;"
323
+ "functionBody": "return model.accessories?.[arguments[1]]?.schedule?.type === undefined && model.accessories?.[arguments[1]]?.timer?.delay === undefined;"
267
324
  }
268
325
  }
269
326
  ]
@@ -272,10 +329,10 @@
272
329
  },
273
330
  {
274
331
  "type": "fieldset",
275
- "title": "${config.title.trigger}",
276
- "description": "${config.description.trigger}",
332
+ "title": "${config.title.schedule}",
333
+ "description": "${config.description.schedule}",
277
334
  "condition": {
278
- "functionBody": "return model.accessories?.[arguments[1]]?.type !== undefined;"
335
+ "functionBody": "const type = model.accessories?.[arguments[1]]?.type; return type !== undefined && type !== 'Thermostat';"
279
336
  },
280
337
  "items": [
281
338
  {
@@ -284,35 +341,35 @@
284
341
  "flex-direction": "row",
285
342
  "items": [
286
343
  {
287
- "key": "accessories[].trigger.type",
288
- "flex": "1 1 0"
344
+ "key": "accessories[].schedule.type",
345
+ "flex": "1 1 33%"
289
346
  },
290
347
  {
291
- "key": "accessories[].trigger.interval",
292
- "flex": "1 1 0",
348
+ "key": "accessories[].schedule.interval",
349
+ "flex": "1 1 33%",
293
350
  "condition": {
294
- "functionBody": "return model.accessories?.[arguments[1]]?.trigger?.type === 'INTERVAL';"
351
+ "functionBody": "return model.accessories?.[arguments[1]]?.schedule?.type === 'INTERVAL';"
295
352
  }
296
353
  },
297
354
  {
298
- "key": "accessories[].trigger.units",
299
- "flex": "1 1 0",
355
+ "key": "accessories[].schedule.units",
356
+ "flex": "1 1 33%",
300
357
  "condition": {
301
- "functionBody": "return model.accessories?.[arguments[1]]?.trigger?.type === 'INTERVAL';"
358
+ "functionBody": "return model.accessories?.[arguments[1]]?.schedule?.type === 'INTERVAL';"
302
359
  }
303
360
  }
304
361
  ]
305
362
  },
306
363
  {
307
- "key": "accessories[].trigger.cron",
364
+ "key": "accessories[].schedule.cron",
308
365
  "condition": {
309
- "functionBody": "return model.accessories?.[arguments[1]]?.trigger?.type === 'CRON';"
366
+ "functionBody": "return model.accessories?.[arguments[1]]?.schedule?.type === 'CRON';"
310
367
  }
311
368
  },
312
369
  {
313
- "key": "accessories[].trigger.random",
370
+ "key": "accessories[].schedule.random",
314
371
  "condition": {
315
- "functionBody": "return model.accessories?.[arguments[1]]?.trigger?.type === 'INTERVAL';"
372
+ "functionBody": "const schedule = model.accessories?.[arguments[1]]?.schedule; return schedule?.type === 'INTERVAL' && schedule?.interval !== undefined;"
316
373
  }
317
374
  }
318
375
  ]
@@ -322,7 +379,7 @@
322
379
  "title": "${config.title.timer}",
323
380
  "description": "${config.description.timer}",
324
381
  "condition": {
325
- "functionBody": "return model.accessories?.[arguments[1]]?.type !== undefined;"
382
+ "functionBody": "const type = model.accessories?.[arguments[1]]?.type; return type !== undefined && type !== 'Thermostat';"
326
383
  },
327
384
  "items": [
328
385
  {
@@ -332,30 +389,30 @@
332
389
  "items": [
333
390
  {
334
391
  "key": "accessories[].timer.delay",
335
- "flex": "1 1 0"
392
+ "flex": "1 1 33%"
336
393
  },
337
394
  {
338
395
  "key": "accessories[].timer.units",
339
- "flex": "1 1 0"
340
- },
341
- {
342
- "flex": "1 1 0"
396
+ "flex": "1 1 33%"
343
397
  }
344
398
  ]
345
399
  },
346
- "accessories[].timer.random"
347
- ]
348
- },
349
- {
350
- "type": "fieldset",
351
- "title": "${config.title.commands}",
352
- "description": "${config.description.commands}",
353
- "condition": {
354
- "functionBody": "return ['Lightbulb','Outlet','Switch'].includes(model.accessories?.[arguments[1]]?.type);"
355
- },
356
- "items": [
357
- "accessories[].commandOn",
358
- "accessories[].commandOff"
400
+ {
401
+ "type": "fieldset",
402
+ "notitle": true,
403
+ "condition": {
404
+ "functionBody": "return model.accessories?.[arguments[1]]?.timer?.delay !== undefined;"
405
+ },
406
+ "items": [
407
+ "accessories[].timer.random",
408
+ {
409
+ "key": "accessories[].sensor.timerControlled",
410
+ "condition": {
411
+ "functionBody": "return model.accessories?.[arguments[1]]?.sensor?.type !== undefined;"
412
+ }
413
+ }
414
+ ]
415
+ }
359
416
  ]
360
417
  },
361
418
  {
@@ -363,25 +420,53 @@
363
420
  "title": "${config.title.commands}",
364
421
  "description": "${config.description.commands}",
365
422
  "condition": {
366
- "functionBody": "return ['LockMechanism'].includes(model.accessories?.[arguments[1]]?.type);"
367
- },
368
- "items": [
369
- "accessories[].commandLock",
370
- "accessories[].commandUnlock"
371
- ]
372
- },
373
- {
374
- "type": "fieldset",
375
- "title": "${config.title.commands}",
376
- "description": "${config.description.commands}",
377
- "condition": {
378
- "functionBody": "return ['Door', 'Window', 'WindowCovering'].includes(model.accessories?.[arguments[1]]?.type);"
423
+ "functionBody": "return model.accessories?.[arguments[1]]?.type !== undefined;"
379
424
  },
380
425
  "items": [
381
- "accessories[].commandOpen",
382
- "accessories[].commandClose"
426
+ {
427
+ "key": "accessories[].commandOn",
428
+ "condition": {
429
+ "functionBody": "return ['Lightbulb','Outlet','Switch','Thermostat'].includes(model.accessories?.[arguments[1]]?.type);"
430
+ }
431
+ },
432
+ {
433
+ "key": "accessories[].commandOff",
434
+ "condition": {
435
+ "functionBody": "return ['Lightbulb','Outlet','Switch','Thermostat'].includes(model.accessories?.[arguments[1]]?.type);"
436
+ }
437
+ },
438
+ {
439
+ "key": "accessories[].commandLock",
440
+ "condition": {
441
+ "functionBody": "return ['LockMechanism'].includes(model.accessories?.[arguments[1]]?.type);"
442
+ }
443
+ },
444
+ {
445
+ "key": "accessories[].commandUnlock",
446
+ "condition": {
447
+ "functionBody": "return ['LockMechanism'].includes(model.accessories?.[arguments[1]]?.type);"
448
+ }
449
+ },
450
+ {
451
+ "key": "accessories[].commandOpen",
452
+ "condition": {
453
+ "functionBody": "return ['Door', 'Window', 'WindowCovering'].includes(model.accessories?.[arguments[1]]?.type);"
454
+ }
455
+ },
456
+ {
457
+ "key": "accessories[].commandClose",
458
+ "condition": {
459
+ "functionBody": "return ['Door', 'Window', 'WindowCovering'].includes(model.accessories?.[arguments[1]]?.type);"
460
+ }
461
+ },
462
+ {
463
+ "key": "accessories[].commandTemperature",
464
+ "condition": {
465
+ "functionBody": "return ['Thermostat'].includes(model.accessories?.[arguments[1]]?.type);"
466
+ }
467
+ }
383
468
  ]
384
- }
469
+ }
385
470
  ]
386
471
  }
387
472
  ]
@@ -1,4 +1,5 @@
1
1
  import { PlatformAccessory, Service } from 'homebridge';
2
+ import { SensorAccessory } from './sensor.js';
2
3
  import { AccessoryType, CharacteristicType, DummyConfig, ServiceType } from '../model/types.js';
3
4
  import { Log } from '../tools/log.js';
4
5
  export declare abstract class DummyAccessory<C extends DummyConfig> {
@@ -8,12 +9,14 @@ export declare abstract class DummyAccessory<C extends DummyConfig> {
8
9
  protected readonly config: C;
9
10
  protected readonly log: Log;
10
11
  protected readonly persistPath: string;
12
+ protected sensor?: SensorAccessory;
11
13
  static identifier(config: DummyConfig): string;
12
14
  protected readonly accessoryService: Service;
13
- private readonly timer;
15
+ private readonly _schedule?;
16
+ private readonly _timer?;
14
17
  constructor(Service: ServiceType, Characteristic: CharacteristicType, accessory: PlatformAccessory, config: C, log: Log, persistPath: string, isGrouped: boolean);
15
18
  protected abstract getAccessoryType(): AccessoryType;
16
- protected abstract trigger(): Promise<void>;
19
+ protected abstract schedule(): Promise<void>;
17
20
  protected abstract reset(): Promise<void>;
18
21
  get subtype(): string | undefined;
19
22
  teardown(): void;
@@ -23,5 +26,5 @@ export declare abstract class DummyAccessory<C extends DummyConfig> {
23
26
  protected startTimer(): void;
24
27
  protected cancelTimer(): void;
25
28
  protected executeCommand(command: string): void;
26
- protected logIfDesired(message: string, ...parameters: string[]): void;
29
+ protected logIfDesired(message: string, ...parameters: (string | number)[]): void;
27
30
  }
@@ -1,10 +1,12 @@
1
1
  import { exec } from 'child_process';
2
2
  import { PLATFORM_NAME, PLUGIN_ALIAS } from '../homebridge/settings.js';
3
+ import { SensorAccessory } from './sensor.js';
3
4
  import { strings } from '../i18n/i18n.js';
5
+ import { AccessoryType } from '../model/types.js';
6
+ import { Schedule } from '../timeout/schedule.js';
7
+ import { Timer } from '../timeout/timer.js';
4
8
  import { STORAGE_KEY_SUFFIX_DEFAULT_STATE } from '../tools/storage.js';
5
- import { Timer } from '../model/timer.js';
6
9
  import getVersion from '../tools/version.js';
7
- import { Trigger } from '../model/trigger.js';
8
10
  export class DummyAccessory {
9
11
  Service;
10
12
  Characteristic;
@@ -12,11 +14,13 @@ export class DummyAccessory {
12
14
  config;
13
15
  log;
14
16
  persistPath;
17
+ sensor;
15
18
  static identifier(config) {
16
19
  return config.id ?? `${PLATFORM_NAME}:${config.type}:${config.name.replace(/\s+/g, '')}`;
17
20
  }
18
21
  accessoryService;
19
- timer = undefined;
22
+ _schedule;
23
+ _timer;
20
24
  constructor(Service, Characteristic, accessory, config, log, persistPath, isGrouped) {
21
25
  this.Service = Service;
22
26
  this.Characteristic = Characteristic;
@@ -24,11 +28,12 @@ export class DummyAccessory {
24
28
  this.config = config;
25
29
  this.log = log;
26
30
  this.persistPath = persistPath;
31
+ this.sensor = SensorAccessory.new(Service, Characteristic, accessory, this.config.name, log, this.config.disableLogging === true, config.sensor);
27
32
  if (config.timer) {
28
- this.timer = Timer.new(config.timer, config.name, log, config.disableLogging === true);
33
+ this._timer = Timer.new(config.timer, config.name, log, config.disableLogging === true);
29
34
  }
30
- if (config.trigger) {
31
- new Trigger(config.trigger, config.name, log, config.disableLogging === true, this.trigger.bind(this));
35
+ if (config.schedule) {
36
+ this._schedule = Schedule.new(config.schedule, config.name, log, config.disableLogging === true, this.schedule.bind(this));
32
37
  }
33
38
  const serviceInstance = Service[this.getAccessoryType()];
34
39
  if (isGrouped) {
@@ -48,27 +53,34 @@ export class DummyAccessory {
48
53
  .setCharacteristic(Characteristic.SerialNumber, this.identifier)
49
54
  .setCharacteristic(Characteristic.FirmwareRevision, getVersion());
50
55
  this.accessoryService = accessory.getService(serviceInstance) || accessory.addService(serviceInstance);
56
+ for (const type of Object.values(AccessoryType)) {
57
+ const existingService = accessory.getService(Service[type]);
58
+ if (existingService && type !== this.getAccessoryType()) {
59
+ accessory.removeService(existingService);
60
+ }
61
+ }
51
62
  }
52
63
  get subtype() {
53
64
  return this.accessoryService.subtype;
54
65
  }
55
66
  teardown() {
56
- this.timer?.teardown();
67
+ this._timer?.teardown();
68
+ this._schedule?.teardown();
57
69
  }
58
70
  get identifier() {
59
71
  return DummyAccessory.identifier(this.config);
60
72
  }
61
73
  get isStateful() {
62
- return this.config.timer?.delay === undefined && !this.config.resetOnRestart;
74
+ return this._timer === undefined && this._schedule === undefined && !this.config.resetOnRestart;
63
75
  }
64
76
  get defaultStateStorageKey() {
65
77
  return `${this.identifier}:${STORAGE_KEY_SUFFIX_DEFAULT_STATE}`;
66
78
  }
67
79
  startTimer() {
68
- this.timer?.start(this.reset.bind(this));
80
+ this._timer?.start(this.reset.bind(this));
69
81
  }
70
82
  cancelTimer() {
71
- this.timer?.cancel();
83
+ this._timer?.cancel();
72
84
  }
73
85
  executeCommand(command) {
74
86
  exec(command, (_error, stdout, stderr) => {
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/accessory/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAGrC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAK1C,OAAO,EAAE,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,MAAM,OAAgB,cAAc;IAWb;IACA;IACA;IACA;IACA;IACA;IAdd,MAAM,CAAC,UAAU,CAAC,MAAmB;QAC1C,OAAO,MAAM,CAAC,EAAE,IAAI,GAAG,aAAa,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAC,EAAE,CAAC,EAAE,CAAC;IAC1F,CAAC;IAEkB,gBAAgB,CAAU;IAE5B,KAAK,GAAsB,SAAS,CAAC;IAEtD,YACqB,OAAoB,EACpB,cAAkC,EAClC,SAA4B,EAC5B,MAAS,EACT,GAAQ,EACR,WAAmB,EACtC,SAAkB;QANC,YAAO,GAAP,OAAO,CAAa;QACpB,mBAAc,GAAd,cAAc,CAAoB;QAClC,cAAS,GAAT,SAAS,CAAmB;QAC5B,WAAM,GAAN,MAAM,CAAG;QACT,QAAG,GAAH,GAAG,CAAK;QACR,gBAAW,GAAX,WAAW,CAAQ;QAItC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC;QACzF,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,cAAc,KAAK,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzG,CAAC;QAED,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAEzD,IAAI,SAAS,EAAE,CAAC;YAEd,IAAI,gBAAgB,GAAG,SAAS,CAAC,cAAc,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAClF,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,gBAAgB,GAAG,SAAS,CAAC,UAAU,CAAC,eAAe,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBACvF,gBAAgB,CAAC,iBAAiB,CAAC,cAAc,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACjF,CAAC;YAED,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;YAEzC,OAAO;QACT,CAAC;QAED,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAE;aAChD,iBAAiB,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;aACnD,iBAAiB,CAAC,cAAc,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC;aAC7D,iBAAiB,CAAC,cAAc,CAAC,YAAY,EAAE,YAAY,CAAC;aAC5D,iBAAiB,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC;aACpD,iBAAiB,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC;aAC/D,iBAAiB,CAAC,cAAc,CAAC,gBAAgB,EAAE,UAAU,EAAE,CAAC,CAAC;QAEpE,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IACzG,CAAC;IAQD,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;IACvC,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,IAAc,UAAU;QACtB,OAAO,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,IAAc,UAAU;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;IAC/E,CAAC;IAED,IAAc,sBAAsB;QAClC,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,gCAAgC,EAAE,CAAC;IAClE,CAAC;IAES,UAAU;QAClB,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAC;IAES,WAAW;QACnB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IACvB,CAAC;IAES,cAAc,CAAC,OAAe;QACtC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACvC,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAClG,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACxG,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAES,YAAY,CAAC,OAAe,EAAE,GAAG,UAAoB;QAE7D,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC;IAC1C,CAAC;CACF"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/accessory/base.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { LightbulbAccessory } from './onoff/lightbulb.js';
4
4
  import { LockAccessory } from './lock.js';
5
5
  import { OutletAccessory } from './onoff/outlet.js';
6
6
  import { SwitchAccessory } from './onoff/switch.js';
7
+ import { ThermostatAccessory } from './thermostat.js';
7
8
  import { WindowAccessory } from './position/window.js';
8
9
  import { strings } from '../i18n/i18n.js';
9
10
  import * as Types from '../model/types.js';
@@ -19,6 +20,8 @@ export function createDummyAccessory(Service, Characteristic, accessory, config,
19
20
  return new OutletAccessory(Service, Characteristic, accessory, config, log, persistPath, isGrouped);
20
21
  case Types.AccessoryType.Switch:
21
22
  return new SwitchAccessory(Service, Characteristic, accessory, config, log, persistPath, isGrouped);
23
+ case Types.AccessoryType.Thermostat:
24
+ return new ThermostatAccessory(Service, Characteristic, accessory, config, log, persistPath, isGrouped);
22
25
  case Types.AccessoryType.Window:
23
26
  return new WindowAccessory(Service, Characteristic, accessory, config, log, persistPath, isGrouped);
24
27
  case Types.AccessoryType.WindowCovering:
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/accessory/helpers.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAI3C,MAAM,UAAU,oBAAoB,CAClC,OAA0B,EAC1B,cAAwC,EACxC,SAA4B,EAC5B,MAAyB,EACzB,GAAQ,EACR,WAAmB,EACnB,YAAqB,KAAK;IAG1B,QAAO,MAAM,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,KAAK,CAAC,aAAa,CAAC,IAAI;YAC3B,OAAO,IAAI,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QACpG,KAAK,KAAK,CAAC,aAAa,CAAC,SAAS;YAChC,OAAO,IAAI,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QACzG,KAAK,KAAK,CAAC,aAAa,CAAC,aAAa;YACpC,OAAO,IAAI,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QACpG,KAAK,KAAK,CAAC,aAAa,CAAC,MAAM;YAC7B,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QACtG,KAAK,KAAK,CAAC,aAAa,CAAC,MAAM;YAC7B,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QACtG,KAAK,KAAK,CAAC,aAAa,CAAC,MAAM;YAC7B,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QACtG,KAAK,KAAK,CAAC,aAAa,CAAC,cAAc;YACrC,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QACrG;YACE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;YAC/D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/accessory/helpers.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAI3C,MAAM,UAAU,oBAAoB,CAClC,OAA0B,EAC1B,cAAwC,EACxC,SAA4B,EAC5B,MAAyB,EACzB,GAAQ,EACR,WAAmB,EACnB,YAAqB,KAAK;IAG1B,QAAO,MAAM,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,KAAK,CAAC,aAAa,CAAC,IAAI;YAC3B,OAAO,IAAI,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QACpG,KAAK,KAAK,CAAC,aAAa,CAAC,SAAS;YAChC,OAAO,IAAI,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QACzG,KAAK,KAAK,CAAC,aAAa,CAAC,aAAa;YACpC,OAAO,IAAI,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QACpG,KAAK,KAAK,CAAC,aAAa,CAAC,MAAM;YAC7B,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QACtG,KAAK,KAAK,CAAC,aAAa,CAAC,MAAM;YAC7B,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QACtG,KAAK,KAAK,CAAC,aAAa,CAAC,UAAU;YACjC,OAAO,IAAI,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QAC1G,KAAK,KAAK,CAAC,aAAa,CAAC,MAAM;YAC7B,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QACtG,KAAK,KAAK,CAAC,aAAa,CAAC,cAAc;YACrC,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QACrG;YACE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;YAC/D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -10,7 +10,7 @@ export declare class LockAccessory extends DummyAccessory<LockConfig> {
10
10
  private get defaultLockState();
11
11
  protected getState(): Promise<CharacteristicValue>;
12
12
  protected setState(value: CharacteristicValue): Promise<void>;
13
- trigger(): Promise<void>;
13
+ schedule(): Promise<void>;
14
14
  reset(): Promise<void>;
15
15
  protected logLockState(value: CharacteristicValue): void;
16
16
  }