homebridge-securitysystem 7.2.1 → 7.4.0

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.
@@ -1,756 +1,835 @@
1
- {
2
- "pluginAlias": "security-system",
3
- "pluginType": "accessory",
4
- "headerDisplay": "Create a security system accessory that can be triggered by HomeKit sensors.",
5
- "footerDisplay": "[Need help?](https://github.com/MiguelRipoll23/homebridge-securitysystem/issues) | [Donate](https://paypal.me/miguelripoll23)",
6
- "schema": {
7
- "title": "Security System",
8
- "type": "object",
9
- "properties": {
10
- "name": {
11
- "title": "Name",
12
- "type": "string",
13
- "default": "Security System",
14
- "required": true
15
- },
16
- "serial_number": {
17
- "title": "Serial Number",
18
- "type": "string",
19
- "default": "S3CUR1TYSYST3M",
20
- "required": true
21
- },
22
- "default_mode": {
23
- "title": "Default Mode",
24
- "type": "string",
25
- "default": "Off",
26
- "required": true,
27
- "enum": ["Off", "Home", "Night", "Away"]
28
- },
29
- "arm_seconds": {
30
- "title": "Arming Delay Seconds",
31
- "type": "integer",
32
- "default": 0,
33
- "required": false,
34
- "minimum": 0
35
- },
36
- "trigger_seconds": {
37
- "title": "Trigger Delay Seconds",
38
- "type": "integer",
39
- "default": 0,
40
- "required": false,
41
- "minimum": 0
42
- },
43
- "reset_minutes": {
44
- "title": "Reset Delay Minutes",
45
- "type": "integer",
46
- "default": 10,
47
- "required": false,
48
- "minimum": 1
49
- },
50
- "save_state": {
51
- "title": "Save Data Using Storage",
52
- "description": "Persists the previous state after shutdowns and reboots.",
53
- "type": "boolean",
54
- "default": false,
55
- "required": false
56
- },
57
- "proxy_mode": {
58
- "title": "Enable Proxy Mode",
59
- "description": "Ignores webhooks/commands for server requests.",
60
- "type": "boolean",
61
- "default": false,
62
- "required": false
63
- },
64
- "test_mode": {
65
- "title": "Enable Test Mode",
66
- "description": "Ignores the webhook and command when the security system triggers.",
67
- "type": "boolean",
68
- "default": false,
69
- "required": false
70
- },
71
- "security_system_name": {
72
- "title": "Security System Name",
73
- "type": "string",
74
- "default": "Security System",
75
- "required": false
76
- },
77
- "trip_switch_name": {
78
- "title": "Trip Switch Name",
79
- "type": "string",
80
- "default": "Trip",
81
- "required": false
82
- },
83
- "trip_home_switch_name": {
84
- "title": "Trip Home Switch Name",
85
- "type": "string",
86
- "default": "Trip Home",
87
- "required": false
88
- },
89
- "trip_away_switch_name": {
90
- "title": "Trip Away Switch Name",
91
- "type": "string",
92
- "default": "Trip Away",
93
- "required": false
94
- },
95
- "trip_night_switch_name": {
96
- "title": "Trip Night Switch Name",
97
- "type": "string",
98
- "default": "Trip Night",
99
- "required": false
100
- },
101
- "trip_override_switch_name": {
102
- "title": "Trip Override Switch Name",
103
- "type": "string",
104
- "default": "Trip Override",
105
- "required": false
106
- },
107
- "log_directory": {
108
- "title": "Log Directory Path",
109
- "type": "string",
110
- "required": false,
111
- "placeholder": "/home/user/logs"
112
- },
113
- "home_arm_seconds": {
114
- "title": "Home Arming Delay Seconds",
115
- "type": "integer",
116
- "required": false,
117
- "minimum": 0
118
- },
119
- "night_arm_seconds": {
120
- "title": "Night Arming Delay Seconds",
121
- "type": "integer",
122
- "required": false,
123
- "minimum": 0
124
- },
125
- "away_arm_seconds": {
126
- "title": "Away Arming Delay Seconds",
127
- "type": "integer",
128
- "required": false,
129
- "minimum": 0
130
- },
131
- "home_trigger_seconds": {
132
- "title": "Home Trigger Delay Seconds",
133
- "type": "integer",
134
- "required": false,
135
- "minimum": 0
136
- },
137
- "night_trigger_seconds": {
138
- "title": "Night Trigger Delay Seconds",
139
- "type": "integer",
140
- "required": false,
141
- "minimum": 0
142
- },
143
- "away_trigger_seconds": {
144
- "title": "Away Trigger Delay Seconds",
145
- "type": "integer",
146
- "required": false,
147
- "minimum": 0
148
- },
149
- "away_extended_trigger_seconds": {
150
- "title": "Away Extended Delay Trigger Seconds",
151
- "type": "integer",
152
- "required": false,
153
- "minimum": 0
154
- },
155
- "override_off": {
156
- "title": "Trigger During Off Mode",
157
- "description": "Allows the security system to be triggered while disarmed.",
158
- "type": "boolean",
159
- "default": false,
160
- "required": false
161
- },
162
- "reset_off_flow": {
163
- "title": "Reset Using Off Mode",
164
- "description": "Resets the security system when triggered by passing through the Off mode.",
165
- "type": "boolean",
166
- "default": false,
167
- "required": false
168
- },
169
- "double_knock": {
170
- "title": "Use Double-Knock",
171
- "description": "Needs the Trip switch to be turn on twice within a time window.",
172
- "type": "boolean",
173
- "default": false,
174
- "required": false
175
- },
176
- "double_knock_seconds": {
177
- "title": "Time Window Seconds",
178
- "type": "integer",
179
- "default": 90,
180
- "required": false,
181
- "minimum": 0
182
- },
183
- "home_double_knock_seconds": {
184
- "title": "Home Double-Knock Seconds",
185
- "type": "integer",
186
- "required": false,
187
- "minimum": 0
188
- },
189
- "away_double_knock_seconds": {
190
- "title": "Away Double-Knock Seconds",
191
- "type": "integer",
192
- "required": false,
193
- "minimum": 0
194
- },
195
- "night_double_knock_seconds": {
196
- "title": "Night Double-Knock Seconds",
197
- "type": "integer",
198
- "required": false,
199
- "minimum": 0
200
- },
201
- "double_knock_modes": {
202
- "title": "Double-Knock Modes",
203
- "type": "array",
204
- "default": ["Away"],
205
- "required": false,
206
- "items": {
207
- "title": "Mode",
208
- "type": "string",
209
- "enum": ["Home", "Night", "Away"],
210
- "uniqueItems": true
211
- }
212
- },
213
- "disabled_modes": {
214
- "title": "Disabled Modes",
215
- "type": "array",
216
- "required": false,
217
- "items": {
218
- "title": "Mode",
219
- "type": "string",
220
- "enum": ["Home", "Night", "Away"],
221
- "uniqueItems": true
222
- }
223
- },
224
- "tripped_sensor": {
225
- "title": "Show Tripped Sensor",
226
- "description": "Adds a sensor that triggers multiple times when any of the Trip switches have been turned on.",
227
- "type": "boolean",
228
- "default": false,
229
- "required": false
230
- },
231
- "tripped_sensor_seconds": {
232
- "title": "Tripped Sensor Seconds",
233
- "type": "integer",
234
- "default": 5,
235
- "required": false,
236
- "minimum": 0
237
- },
238
- "siren_sensor": {
239
- "title": "Show Triggered Sensor",
240
- "description": "Adds a sensor that triggers multiple times when the security system has been triggered.",
241
- "type": "boolean",
242
- "default": false,
243
- "required": false
244
- },
245
- "siren_sensor_seconds": {
246
- "title": "Triggered Sensor Seconds",
247
- "type": "integer",
248
- "default": 5,
249
- "required": false,
250
- "minimum": 0
251
- },
252
- "reset_sensor": {
253
- "title": "Show Triggered Reset Sensor",
254
- "description": "Adds a sensor that triggers when the security system has reset after being triggered.",
255
- "type": "boolean",
256
- "default": false,
257
- "required": false
258
- },
259
- "mode_switches": {
260
- "title": "Show Mode Switches",
261
- "description": "Adds switches for every mode in order to create automations based on a mode change or bypass confirmations.",
262
- "type": "boolean",
263
- "default": false,
264
- "required": false
265
- },
266
- "mode_off_switch": {
267
- "title": "Show Mode Off Switch",
268
- "description": "Adds a switch to disarm the security system if the \"Show Mode Switches\" option is enabled.",
269
- "type": "boolean",
270
- "default": true,
271
- "required": false
272
- },
273
- "mode_away_extended_switch": {
274
- "title": "Show Mode Away Extended Switch",
275
- "description": "Adds a switch that sets the Away mode and can be used as a condition in automations.",
276
- "type": "boolean",
277
- "default": false,
278
- "required": false
279
- },
280
- "mode_pause_switch": {
281
- "title": "Show Mode Pause Switch",
282
- "description": "Adds a switch that will temporarily or indefinitely (if minutes is to zero) disarm the security system.",
283
- "type": "boolean",
284
- "default": false,
285
- "required": false
286
- },
287
- "pause_minutes": {
288
- "title": "Pause Minutes",
289
- "type": "integer",
290
- "default": 0,
291
- "required": false,
292
- "minimum": 0
293
- },
294
- "arming_lock_switch": {
295
- "title": "Show Arming Lock Switch (experimental)",
296
- "description": "Adds a global switch that will prevent arming the security system.",
297
- "type": "boolean",
298
- "default": false,
299
- "required": false
300
- },
301
- "arming_lock_switches": {
302
- "title": "Show Arming Lock Mode Switches (experimental)",
303
- "description": "Adds switches that will prevent arming the security system when their mode is set.",
304
- "type": "boolean",
305
- "default": false,
306
- "required": false
307
- },
308
- "siren_switch": {
309
- "title": "Show Trip Switch",
310
- "description": "Adds a global switch that will trip the security system.",
311
- "type": "boolean",
312
- "default": false,
313
- "required": false
314
- },
315
- "siren_override_switch": {
316
- "title": "Show Trip Override Switch",
317
- "description": "Adds a special switch that will trigger the security system bypassing the conditions set.",
318
- "type": "boolean",
319
- "default": false,
320
- "required": false
321
- },
322
- "siren_mode_switches": {
323
- "title": "Show Trip Mode Switches",
324
- "description": "Adds switches that will trigger the security system when their mode is set.",
325
- "type": "boolean",
326
- "default": true,
327
- "required": false
328
- },
329
- "audio_switch": {
330
- "title": "Show Audio Switch",
331
- "description": "Adds a global switch to enable or disable audio except for alarm triggered.",
332
- "type": "boolean",
333
- "default": false,
334
- "required": false
335
- },
336
- "audio": {
337
- "title": "Play Sounds (local-only, ffmpeg required)",
338
- "description": "Warns of pending or current events by playing sounds.",
339
- "type": "boolean",
340
- "default": false,
341
- "required": false
342
- },
343
- "audio_language": {
344
- "title": "Audio Language",
345
- "type": "string",
346
- "default": "en-US",
347
- "required": false,
348
- "enum": ["en-US", "de-DE"]
349
- },
350
- "audio_extra_variables": {
351
- "title": "Audio Extra Variables",
352
- "type": "array",
353
- "items": {
354
- "title": "Environment Variable",
355
- "type": "object",
356
- "properties": {
357
- "key": {
358
- "title": "Name",
359
- "type": "string",
360
- "required": true
361
- },
362
- "value": {
363
- "title": "Value",
364
- "type": "string",
365
- "required": true
366
- }
367
- }
368
- },
369
- "required": true,
370
- "description": "Add extra environment variables to the ffplay command that will be executed"
371
- },
372
- "audio_path": {
373
- "title": "Custom Audio Path",
374
- "description": "Instructions will be created in this path.",
375
- "type": "string",
376
- "required": false,
377
- "placeholder": "/home/user/sounds"
378
- },
379
- "audio_volume": {
380
- "title": "Audio Volume",
381
- "type": "string",
382
- "required": false,
383
- "default": 100,
384
- "placeholder": "100"
385
- },
386
- "audio_arming_looped": {
387
- "title": "Loop Arming Sound",
388
- "type": "boolean",
389
- "default": false,
390
- "required": false
391
- },
392
- "audio_alert_looped": {
393
- "title": "Loop Warning Sound",
394
- "type": "boolean",
395
- "default": false,
396
- "required": false
397
- },
398
- "server_port": {
399
- "title": "Listening Port",
400
- "type": "integer",
401
- "required": false,
402
- "minimum": 0,
403
- "placeholder": 80
404
- },
405
- "server_code": {
406
- "title": "Security Code",
407
- "description": "All requests will require this code to be sent.",
408
- "type": "integer",
409
- "required": false,
410
- "minimum": 0,
411
- "placeholder": "XXXX"
412
- },
413
- "webhook_url": {
414
- "title": "Base URL",
415
- "type": "string",
416
- "required": false,
417
- "format": "uri",
418
- "placeholder": "http://localhost"
419
- },
420
- "webhook_target_home": {
421
- "title": "Target Mode: Home",
422
- "type": "string",
423
- "required": false,
424
- "placeholder": "/target/home"
425
- },
426
- "webhook_target_away": {
427
- "title": "Target Mode: Away",
428
- "type": "string",
429
- "required": false,
430
- "placeholder": "/target/away"
431
- },
432
- "webhook_target_night": {
433
- "title": "Target Mode: Night",
434
- "type": "string",
435
- "required": false,
436
- "placeholder": "/target/night"
437
- },
438
- "webhook_target_off": {
439
- "title": "Target Mode: Off",
440
- "type": "string",
441
- "required": false,
442
- "placeholder": "/target/off"
443
- },
444
- "webhook_current_home": {
445
- "title": "Current Mode: Home",
446
- "type": "string",
447
- "required": false,
448
- "placeholder": "/current/home"
449
- },
450
- "webhook_current_away": {
451
- "title": "Current Mode: Away",
452
- "type": "string",
453
- "required": false,
454
- "placeholder": "/current/away"
455
- },
456
- "webhook_current_night": {
457
- "title": "Current Mode: Night",
458
- "type": "string",
459
- "required": false,
460
- "placeholder": "/current/night"
461
- },
462
- "webhook_current_off": {
463
- "title": "Current Mode: Off",
464
- "type": "string",
465
- "required": false,
466
- "placeholder": "/current/off"
467
- },
468
- "webhook_current_warning": {
469
- "title": "Current Event: Warning",
470
- "type": "string",
471
- "required": false,
472
- "placeholder": "/current/warning"
473
- },
474
- "webhook_current_triggered": {
475
- "title": "Current Mode: Triggered",
476
- "type": "string",
477
- "required": false,
478
- "placeholder": "/current/triggered"
479
- },
480
- "command_target_home": {
481
- "title": "Target Mode: Home",
482
- "type": "string",
483
- "required": false,
484
- "placeholder": "echo target home"
485
- },
486
- "command_target_away": {
487
- "title": "Target Mode: Away",
488
- "type": "string",
489
- "required": false,
490
- "placeholder": "echo target away"
491
- },
492
- "command_target_off": {
493
- "title": "Target Mode: Off",
494
- "type": "string",
495
- "required": false,
496
- "placeholder": "echo target off"
497
- },
498
- "command_target_night": {
499
- "title": "Target Mode: Night",
500
- "type": "string",
501
- "required": false,
502
- "placeholder": "echo target night"
503
- },
504
- "command_current_home": {
505
- "title": "Current Mode: Home",
506
- "type": "string",
507
- "required": false,
508
- "placeholder": "echo current home"
509
- },
510
- "command_current_away": {
511
- "title": "Current Mode: Away",
512
- "type": "string",
513
- "required": false,
514
- "placeholder": "echo current away"
515
- },
516
- "command_current_night": {
517
- "title": "Current Mode: Night",
518
- "type": "string",
519
- "required": false,
520
- "placeholder": "echo current night"
521
- },
522
- "command_current_off": {
523
- "title": "Current Mode: Off",
524
- "type": "string",
525
- "required": false,
526
- "placeholder": "echo current off"
527
- },
528
- "command_current_warning": {
529
- "title": "Current Event: Warning",
530
- "type": "string",
531
- "required": false,
532
- "placeholder": "echo current warning"
533
- },
534
- "command_current_triggered": {
535
- "title": "Current Mode: Triggered",
536
- "type": "string",
537
- "required": false,
538
- "placeholder": "echo current triggered"
539
- }
540
- }
541
- },
542
- "layout": [
543
- "name",
544
- "serial_number",
545
- "default_mode",
546
- {
547
- "type": "div",
548
- "displayFlex": true,
549
- "flex-flow": "row wrap",
550
- "flex-direction": "row",
551
- "items": ["arm_seconds", "trigger_seconds", "reset_minutes"]
552
- },
553
- "save_state",
554
- "test_mode",
555
- {
556
- "type": "fieldset",
557
- "title": "Accessory Names",
558
- "description": "Change the accessory names provided by your own.",
559
- "expandable": true,
560
- "expanded": false,
561
- "items": [
562
- "security_system_name",
563
- "trip_switch_name",
564
- "trip_home_switch_name",
565
- "trip_away_switch_name",
566
- "trip_night_switch_name",
567
- "trip_override_switch_name"
568
- ]
569
- },
570
- {
571
- "type": "fieldset",
572
- "title": "Advanced Options",
573
- "description": "Need more options? You know what do do.",
574
- "expandable": true,
575
- "expanded": false,
576
- "items": [
577
- "log_directory",
578
- {
579
- "type": "div",
580
- "displayFlex": true,
581
- "flex-flow": "row wrap",
582
- "flex-direction": "row",
583
- "items": ["home_arm_seconds", "away_arm_seconds", "night_arm_seconds"]
584
- },
585
- {
586
- "type": "div",
587
- "displayFlex": true,
588
- "flex-flow": "row wrap",
589
- "flex-direction": "row",
590
- "items": [
591
- "home_trigger_seconds",
592
- "away_trigger_seconds",
593
- "night_trigger_seconds"
594
- ]
595
- },
596
- "override_off",
597
- "reset_off_flow",
598
- "proxy_mode",
599
- {
600
- "type": "div",
601
- "displayFlex": true,
602
- "flex-flow": "row wrap",
603
- "flex-direction": "row",
604
- "items": ["double_knock", "double_knock_seconds"]
605
- },
606
- {
607
- "type": "div",
608
- "displayFlex": true,
609
- "flex-flow": "row wrap",
610
- "flex-direction": "row",
611
- "items": [
612
- "home_double_knock_seconds",
613
- "away_double_knock_seconds",
614
- "night_double_knock_seconds"
615
- ]
616
- },
617
- "double_knock_modes",
618
- "disabled_modes"
619
- ]
620
- },
621
- {
622
- "type": "fieldset",
623
- "title": "Switches",
624
- "description": "Create simpler automations or bypass HomeKit confirmations.",
625
- "expandable": true,
626
- "expanded": false,
627
- "items": [
628
- "mode_switches",
629
- "mode_off_switch",
630
- {
631
- "type": "div",
632
- "displayFlex": true,
633
- "flex-flow": "row",
634
- "flex-direction": "row",
635
- "items": [
636
- "mode_away_extended_switch",
637
- "away_extended_trigger_seconds"
638
- ]
639
- },
640
- {
641
- "type": "div",
642
- "displayFlex": true,
643
- "flex-flow": "row",
644
- "flex-direction": "row",
645
- "items": ["mode_pause_switch", "pause_minutes"]
646
- },
647
- "arming_lock_switch",
648
- "arming_lock_switches",
649
- "siren_switch",
650
- "siren_override_switch",
651
- "siren_mode_switches",
652
- "audio_switch"
653
- ]
654
- },
655
- {
656
- "type": "fieldset",
657
- "title": "Sensors",
658
- "description": "Automate based on custom events or get alerted by multiple notifications.",
659
- "expandable": true,
660
- "expanded": false,
661
- "items": [
662
- "tripped_sensor",
663
- "siren_sensor",
664
- {
665
- "type": "div",
666
- "displayFlex": true,
667
- "flex-flow": "row wrap",
668
- "flex-direction": "row",
669
- "items": ["tripped_sensor_seconds", "siren_sensor_seconds"]
670
- },
671
- "reset_sensor"
672
- ]
673
- },
674
- {
675
- "type": "fieldset",
676
- "title": "Audio",
677
- "description": "Play sounds on your connected speakers to notify events.",
678
- "expandable": true,
679
- "expanded": false,
680
- "items": [
681
- {
682
- "type": "div",
683
- "displayFlex": true,
684
- "flex-flow": "row wrap",
685
- "flex-direction": "row",
686
- "items": ["audio", "audio_language"]
687
- },
688
- {
689
- "type": "div",
690
- "displayFlex": true,
691
- "flex-flow": "row wrap",
692
- "flex-direction": "row",
693
- "items": ["audio_path", "audio_volume"]
694
- },
695
- "audio_arming_looped",
696
- "audio_alert_looped",
697
- {
698
- "key": "audio_extra_variables",
699
- "type": "tabarray",
700
- "title": "{{ value.key || 'Environment Variable' }}",
701
- "items": [
702
- "audio_extra_variables[].key",
703
- "audio_extra_variables[].value"
704
- ]
705
- }
706
- ]
707
- },
708
- {
709
- "type": "fieldset",
710
- "title": "Server",
711
- "description": "Expose a server to interact with the security system remotely.",
712
- "expandable": true,
713
- "expanded": false,
714
- "items": ["server_port", "server_code"]
715
- },
716
- {
717
- "type": "fieldset",
718
- "title": "Webhooks",
719
- "description": "Interact with other devices or web services during events",
720
- "expandable": true,
721
- "expanded": false,
722
- "items": [
723
- "webhook_url",
724
- "webhook_target_home",
725
- "webhook_target_away",
726
- "webhook_target_night",
727
- "webhook_target_off",
728
- "webhook_current_home",
729
- "webhook_current_away",
730
- "webhook_current_night",
731
- "webhook_current_off",
732
- "webhook_current_warning",
733
- "webhook_current_triggered"
734
- ]
735
- },
736
- {
737
- "type": "fieldset",
738
- "title": "Commands",
739
- "description": "Execute commands on this device based on events.",
740
- "expandable": true,
741
- "expanded": false,
742
- "items": [
743
- "command_target_home",
744
- "command_target_away",
745
- "command_target_night",
746
- "command_target_off",
747
- "command_current_home",
748
- "command_current_away",
749
- "command_current_night",
750
- "command_current_off",
751
- "command_current_warning",
752
- "command_current_triggered"
753
- ]
754
- }
755
- ]
756
- }
1
+ {
2
+ "pluginAlias": "security-system",
3
+ "pluginType": "accessory",
4
+ "headerDisplay": "Create a security system accessory that can be triggered by HomeKit sensors.",
5
+ "footerDisplay": "[Need help?](https://github.com/MiguelRipoll23/homebridge-securitysystem/issues) | [Donate](https://www.paypal.com/donate/?hosted_button_id=CQTHU44XTXK2L)",
6
+ "schema": {
7
+ "title": "Security System",
8
+ "type": "object",
9
+ "properties": {
10
+ "name": {
11
+ "title": "Name",
12
+ "description": "",
13
+ "type": "string",
14
+ "default": "Security System",
15
+ "required": true
16
+ },
17
+ "serial_number": {
18
+ "title": "Serial Number",
19
+ "description": "",
20
+ "type": "string",
21
+ "default": "S3CUR1TYSYST3M",
22
+ "required": true
23
+ },
24
+ "default_mode": {
25
+ "title": "Default Mode",
26
+ "description": "",
27
+ "type": "string",
28
+ "default": "Off",
29
+ "required": true,
30
+ "enum": ["Off", "Home", "Night", "Away"]
31
+ },
32
+ "arm_seconds": {
33
+ "title": "Arming Delay Seconds",
34
+ "description": "",
35
+ "type": "integer",
36
+ "default": 0,
37
+ "required": false,
38
+ "minimum": 0
39
+ },
40
+ "trigger_seconds": {
41
+ "title": "Trigger Delay Seconds",
42
+ "description": "",
43
+ "type": "integer",
44
+ "default": 0,
45
+ "required": false,
46
+ "minimum": 0
47
+ },
48
+ "reset_minutes": {
49
+ "title": "Reset Delay Minutes",
50
+ "description": "",
51
+ "type": "integer",
52
+ "default": 10,
53
+ "required": false,
54
+ "minimum": 1
55
+ },
56
+ "save_state": {
57
+ "title": "Save Data Using Storage",
58
+ "description": "Persists the previous state after shutdowns and reboots.",
59
+ "type": "boolean",
60
+ "default": false,
61
+ "required": false
62
+ },
63
+ "proxy_mode": {
64
+ "title": "Enable Proxy Mode",
65
+ "description": "Ignores webhooks/commands for server requests.",
66
+ "type": "boolean",
67
+ "default": false,
68
+ "required": false
69
+ },
70
+ "test_mode": {
71
+ "title": "Enable Test Mode",
72
+ "description": "Ignores the webhook and command when the security system triggers.",
73
+ "type": "boolean",
74
+ "default": false,
75
+ "required": false
76
+ },
77
+ "trip_switch_name": {
78
+ "title": "Trip Switch Name",
79
+ "description": "",
80
+ "type": "string",
81
+ "default": "Trip",
82
+ "required": false
83
+ },
84
+ "trip_home_switch_name": {
85
+ "title": "Trip Home Switch Name",
86
+ "description": "",
87
+ "type": "string",
88
+ "default": "Trip Home",
89
+ "required": false
90
+ },
91
+ "trip_away_switch_name": {
92
+ "title": "Trip Away Switch Name",
93
+ "description": "",
94
+ "type": "string",
95
+ "default": "Trip Away",
96
+ "required": false
97
+ },
98
+ "trip_night_switch_name": {
99
+ "title": "Trip Night Switch Name",
100
+ "description": "",
101
+ "type": "string",
102
+ "default": "Trip Night",
103
+ "required": false
104
+ },
105
+ "trip_override_switch_name": {
106
+ "title": "Trip Override Switch Name",
107
+ "description": "",
108
+ "type": "string",
109
+ "default": "Trip Override",
110
+ "required": false
111
+ },
112
+ "mode_home_switch_name": {
113
+ "title": "Mode Home Switch Name",
114
+ "description": "",
115
+ "type": "string",
116
+ "default": "Mode Home",
117
+ "required": false
118
+ },
119
+ "mode_away_switch_name": {
120
+ "title": "Mode Away Switch Name",
121
+ "description": "",
122
+ "type": "string",
123
+ "default": "Mode Away",
124
+ "required": false
125
+ },
126
+ "mode_night_switch_name": {
127
+ "title": "Mode Night Switch Name",
128
+ "description": "",
129
+ "type": "string",
130
+ "default": "Mode Night",
131
+ "required": false
132
+ },
133
+ "mode_off_switch_name": {
134
+ "title": "Mode Off Switch Name",
135
+ "description": "",
136
+ "type": "string",
137
+ "default": "Mode Off",
138
+ "required": false
139
+ },
140
+ "log_directory": {
141
+ "title": "Log Directory Path",
142
+ "description": "",
143
+ "type": "string",
144
+ "required": false,
145
+ "placeholder": "/home/user/logs"
146
+ },
147
+ "home_arm_seconds": {
148
+ "title": "Home Arming Delay Seconds",
149
+ "description": "",
150
+ "type": "integer",
151
+ "required": false,
152
+ "minimum": 0
153
+ },
154
+ "night_arm_seconds": {
155
+ "title": "Night Arming Delay Seconds",
156
+ "description": "",
157
+ "type": "integer",
158
+ "required": false,
159
+ "minimum": 0
160
+ },
161
+ "away_arm_seconds": {
162
+ "title": "Away Arming Delay Seconds",
163
+ "description": "",
164
+ "type": "integer",
165
+ "required": false,
166
+ "minimum": 0
167
+ },
168
+ "home_trigger_seconds": {
169
+ "title": "Home Trigger Delay Seconds",
170
+ "description": "",
171
+ "type": "integer",
172
+ "required": false,
173
+ "minimum": 0
174
+ },
175
+ "night_trigger_seconds": {
176
+ "title": "Night Trigger Delay Seconds",
177
+ "description": "",
178
+ "type": "integer",
179
+ "required": false,
180
+ "minimum": 0
181
+ },
182
+ "away_trigger_seconds": {
183
+ "title": "Away Trigger Delay Seconds",
184
+ "description": "",
185
+ "type": "integer",
186
+ "required": false,
187
+ "minimum": 0
188
+ },
189
+ "away_extended_trigger_seconds": {
190
+ "title": "Away Extended Delay Trigger Seconds",
191
+ "description": "",
192
+ "type": "integer",
193
+ "required": false,
194
+ "minimum": 0
195
+ },
196
+ "override_off": {
197
+ "title": "Trigger During Off Mode",
198
+ "description": "Allows the security system to be triggered while disarmed.",
199
+ "type": "boolean",
200
+ "default": false,
201
+ "required": false
202
+ },
203
+ "reset_off_flow": {
204
+ "title": "Reset Using Off Mode",
205
+ "description": "Resets the security system when triggered by passing through the Off mode.",
206
+ "type": "boolean",
207
+ "default": false,
208
+ "required": false
209
+ },
210
+ "double_knock": {
211
+ "title": "Use Double-Knock",
212
+ "description": "Needs the Trip switch to be turn on twice within a time window.",
213
+ "type": "boolean",
214
+ "default": false,
215
+ "required": false
216
+ },
217
+ "double_knock_seconds": {
218
+ "title": "Time Window Seconds",
219
+ "description": "",
220
+ "type": "integer",
221
+ "default": 90,
222
+ "required": false,
223
+ "minimum": 0
224
+ },
225
+ "home_double_knock_seconds": {
226
+ "title": "Home Double-Knock Seconds",
227
+ "description": "",
228
+ "type": "integer",
229
+ "required": false,
230
+ "minimum": 0
231
+ },
232
+ "away_double_knock_seconds": {
233
+ "title": "Away Double-Knock Seconds",
234
+ "description": "",
235
+ "type": "integer",
236
+ "required": false,
237
+ "minimum": 0
238
+ },
239
+ "night_double_knock_seconds": {
240
+ "title": "Night Double-Knock Seconds",
241
+ "description": "",
242
+ "type": "integer",
243
+ "required": false,
244
+ "minimum": 0
245
+ },
246
+ "double_knock_modes": {
247
+ "title": "Double-Knock Modes",
248
+ "description": "",
249
+ "type": "array",
250
+ "default": ["Away"],
251
+ "required": false,
252
+ "items": {
253
+ "title": "Mode",
254
+ "type": "string",
255
+ "enum": ["Home", "Night", "Away"],
256
+ "uniqueItems": true
257
+ }
258
+ },
259
+ "disabled_modes": {
260
+ "title": "Disabled Modes",
261
+ "description": "",
262
+ "type": "array",
263
+ "required": false,
264
+ "items": {
265
+ "title": "Mode",
266
+ "type": "string",
267
+ "enum": ["Home", "Night", "Away"],
268
+ "uniqueItems": true
269
+ }
270
+ },
271
+ "tripped_sensor": {
272
+ "title": "Show Tripped Sensor",
273
+ "description": "Adds a sensor that triggers multiple times when any of the Trip switches have been turned on.",
274
+ "type": "boolean",
275
+ "default": false,
276
+ "required": false
277
+ },
278
+ "tripped_sensor_seconds": {
279
+ "title": "Tripped Sensor Seconds",
280
+ "description": "",
281
+ "type": "integer",
282
+ "default": 5,
283
+ "required": false,
284
+ "minimum": 0
285
+ },
286
+ "siren_sensor": {
287
+ "title": "Show Triggered Sensor",
288
+ "description": "Adds a sensor that triggers multiple times when the security system has been triggered.",
289
+ "type": "boolean",
290
+ "default": false,
291
+ "required": false
292
+ },
293
+ "siren_sensor_seconds": {
294
+ "title": "Triggered Sensor Seconds",
295
+ "description": "",
296
+ "type": "integer",
297
+ "default": 5,
298
+ "required": false,
299
+ "minimum": 0
300
+ },
301
+ "reset_sensor": {
302
+ "title": "Show Triggered Reset Sensor",
303
+ "description": "Adds a sensor that triggers when the security system has reset after being triggered.",
304
+ "type": "boolean",
305
+ "default": false,
306
+ "required": false
307
+ },
308
+ "mode_switches": {
309
+ "title": "Show Mode Switches",
310
+ "description": "Adds switches for every mode in order to create automations based on a mode change or bypass confirmations.",
311
+ "type": "boolean",
312
+ "default": false,
313
+ "required": false
314
+ },
315
+ "mode_off_switch": {
316
+ "title": "Show Mode Off Switch",
317
+ "description": "Adds a switch to disarm the security system if the \"Show Mode Switches\" option is enabled.",
318
+ "type": "boolean",
319
+ "default": true,
320
+ "required": false
321
+ },
322
+ "mode_away_extended_switch": {
323
+ "title": "Show Mode Away Extended Switch",
324
+ "description": "Adds a switch that sets the Away mode and can be used as a condition in automations.",
325
+ "type": "boolean",
326
+ "default": false,
327
+ "required": false
328
+ },
329
+ "mode_pause_switch": {
330
+ "title": "Show Mode Pause Switch",
331
+ "description": "Adds a switch that will temporarily or indefinitely (if minutes is to zero) disarm the security system.",
332
+ "type": "boolean",
333
+ "default": false,
334
+ "required": false
335
+ },
336
+ "pause_minutes": {
337
+ "title": "Pause Minutes",
338
+ "description": "",
339
+ "type": "integer",
340
+ "default": 0,
341
+ "required": false,
342
+ "minimum": 0
343
+ },
344
+ "arming_lock_switch": {
345
+ "title": "Show Arming Lock Switch (experimental)",
346
+ "description": "Adds a global switch that will prevent arming the security system.",
347
+ "type": "boolean",
348
+ "default": false,
349
+ "required": false
350
+ },
351
+ "arming_lock_switches": {
352
+ "title": "Show Arming Lock Mode Switches (experimental)",
353
+ "description": "Adds switches that will prevent arming the security system when their mode is set.",
354
+ "type": "boolean",
355
+ "default": false,
356
+ "required": false
357
+ },
358
+ "siren_switch": {
359
+ "title": "Show Trip Switch",
360
+ "description": "Adds a global switch that will trip the security system.",
361
+ "type": "boolean",
362
+ "default": false,
363
+ "required": false
364
+ },
365
+ "siren_override_switch": {
366
+ "title": "Show Trip Override Switch",
367
+ "description": "Adds a special switch that will trigger the security system bypassing the conditions set.",
368
+ "type": "boolean",
369
+ "default": false,
370
+ "required": false
371
+ },
372
+ "siren_mode_switches": {
373
+ "title": "Show Trip Mode Switches",
374
+ "description": "Adds switches that will trigger the security system when their mode is set.",
375
+ "type": "boolean",
376
+ "default": true,
377
+ "required": false
378
+ },
379
+ "audio_switch": {
380
+ "title": "Show Audio Switch",
381
+ "description": "Adds a global switch to enable or disable audio except for alarm triggered.",
382
+ "type": "boolean",
383
+ "default": false,
384
+ "required": false
385
+ },
386
+ "audio": {
387
+ "title": "Play Sounds (local-only, ffmpeg required)",
388
+ "description": "Warns of pending or current events by playing sounds.",
389
+ "type": "boolean",
390
+ "default": false,
391
+ "required": false
392
+ },
393
+ "audio_language": {
394
+ "title": "Audio Language",
395
+ "description": "",
396
+ "type": "string",
397
+ "default": "en-US",
398
+ "required": false,
399
+ "enum": ["en-US", "de-DE"]
400
+ },
401
+ "audio_extra_variables": {
402
+ "title": "Audio Extra Variables",
403
+ "description": "Add extra environment variables to the ffplay command that will be executed",
404
+ "type": "array",
405
+ "items": {
406
+ "title": "Environment Variable",
407
+ "type": "object",
408
+ "properties": {
409
+ "key": {
410
+ "title": "Name",
411
+ "type": "string",
412
+ "required": true
413
+ },
414
+ "value": {
415
+ "title": "Value",
416
+ "type": "string",
417
+ "required": true
418
+ }
419
+ }
420
+ },
421
+ "required": true
422
+ },
423
+ "audio_path": {
424
+ "title": "Custom Audio Path",
425
+ "description": "Instructions will be created in this path.",
426
+ "type": "string",
427
+ "required": false,
428
+ "placeholder": "/home/user/sounds"
429
+ },
430
+ "audio_volume": {
431
+ "title": "Audio Volume",
432
+ "description": "",
433
+ "type": "string",
434
+ "required": false,
435
+ "default": 100,
436
+ "placeholder": "100"
437
+ },
438
+ "audio_arming_looped": {
439
+ "title": "Loop Arming Sound",
440
+ "description": "",
441
+ "type": "boolean",
442
+ "default": false,
443
+ "required": false
444
+ },
445
+ "audio_alert_looped": {
446
+ "title": "Loop Tripped Sound",
447
+ "description": "",
448
+ "type": "boolean",
449
+ "default": false,
450
+ "required": false
451
+ },
452
+ "server_port": {
453
+ "title": "Listening Port",
454
+ "description": "",
455
+ "type": "integer",
456
+ "required": false,
457
+ "minimum": 0,
458
+ "placeholder": 80
459
+ },
460
+ "server_code": {
461
+ "title": "Security Code",
462
+ "description": "All requests will require this code to be sent.",
463
+ "type": "integer",
464
+ "required": false,
465
+ "minimum": 0,
466
+ "placeholder": "XXXX"
467
+ },
468
+ "webhook_url": {
469
+ "title": "Base URL",
470
+ "description": "",
471
+ "type": "string",
472
+ "required": false,
473
+ "format": "uri",
474
+ "placeholder": "http://localhost"
475
+ },
476
+ "webhook_target_home": {
477
+ "title": "Target Mode: Home",
478
+ "description": "",
479
+ "type": "string",
480
+ "required": false,
481
+ "placeholder": "/target/home"
482
+ },
483
+ "webhook_target_away": {
484
+ "title": "Target Mode: Away",
485
+ "description": "",
486
+ "type": "string",
487
+ "required": false,
488
+ "placeholder": "/target/away"
489
+ },
490
+ "webhook_target_night": {
491
+ "title": "Target Mode: Night",
492
+ "description": "",
493
+ "type": "string",
494
+ "required": false,
495
+ "placeholder": "/target/night"
496
+ },
497
+ "webhook_target_off": {
498
+ "title": "Target Mode: Off",
499
+ "description": "",
500
+ "type": "string",
501
+ "required": false,
502
+ "placeholder": "/target/off"
503
+ },
504
+ "webhook_current_home": {
505
+ "title": "Current Mode: Home",
506
+ "description": "",
507
+ "type": "string",
508
+ "required": false,
509
+ "placeholder": "/current/home"
510
+ },
511
+ "webhook_current_away": {
512
+ "title": "Current Mode: Away",
513
+ "description": "",
514
+ "type": "string",
515
+ "required": false,
516
+ "placeholder": "/current/away"
517
+ },
518
+ "webhook_current_night": {
519
+ "title": "Current Mode: Night",
520
+ "description": "",
521
+ "type": "string",
522
+ "required": false,
523
+ "placeholder": "/current/night"
524
+ },
525
+ "webhook_current_off": {
526
+ "title": "Current Mode: Off",
527
+ "description": "",
528
+ "type": "string",
529
+ "required": false,
530
+ "placeholder": "/current/off"
531
+ },
532
+ "webhook_current_warning": {
533
+ "title": "Current Event: Warning",
534
+ "description": "",
535
+ "type": "string",
536
+ "required": false,
537
+ "placeholder": "/current/warning"
538
+ },
539
+ "webhook_current_triggered": {
540
+ "title": "Current Mode: Triggered",
541
+ "description": "",
542
+ "type": "string",
543
+ "required": false,
544
+ "placeholder": "/current/triggered"
545
+ },
546
+ "command_target_home": {
547
+ "title": "Target Mode: Home",
548
+ "description": "",
549
+ "type": "string",
550
+ "required": false,
551
+ "placeholder": "echo target home"
552
+ },
553
+ "command_target_away": {
554
+ "title": "Target Mode: Away",
555
+ "description": "",
556
+ "type": "string",
557
+ "required": false,
558
+ "placeholder": "echo target away"
559
+ },
560
+ "command_target_off": {
561
+ "title": "Target Mode: Off",
562
+ "description": "",
563
+ "type": "string",
564
+ "required": false,
565
+ "placeholder": "echo target off"
566
+ },
567
+ "command_target_night": {
568
+ "title": "Target Mode: Night",
569
+ "description": "",
570
+ "type": "string",
571
+ "required": false,
572
+ "placeholder": "echo target night"
573
+ },
574
+ "command_current_home": {
575
+ "title": "Current Mode: Home",
576
+ "description": "",
577
+ "type": "string",
578
+ "required": false,
579
+ "placeholder": "echo current home"
580
+ },
581
+ "command_current_away": {
582
+ "title": "Current Mode: Away",
583
+ "description": "",
584
+ "type": "string",
585
+ "required": false,
586
+ "placeholder": "echo current away"
587
+ },
588
+ "command_current_night": {
589
+ "title": "Current Mode: Night",
590
+ "description": "",
591
+ "type": "string",
592
+ "required": false,
593
+ "placeholder": "echo current night"
594
+ },
595
+ "command_current_off": {
596
+ "title": "Current Mode: Off",
597
+ "description": "",
598
+ "type": "string",
599
+ "required": false,
600
+ "placeholder": "echo current off"
601
+ },
602
+ "command_current_warning": {
603
+ "title": "Current Event: Warning",
604
+ "description": "",
605
+ "type": "string",
606
+ "required": false,
607
+ "placeholder": "echo current warning"
608
+ },
609
+ "command_current_triggered": {
610
+ "title": "Current Mode: Triggered",
611
+ "description": "",
612
+ "type": "string",
613
+ "required": false,
614
+ "placeholder": "echo current triggered"
615
+ }
616
+ }
617
+ },
618
+ "layout": [
619
+ "name",
620
+ "serial_number",
621
+ "default_mode",
622
+ {
623
+ "type": "div",
624
+ "displayFlex": true,
625
+ "flex-flow": "row wrap",
626
+ "flex-direction": "row",
627
+ "items": ["arm_seconds", "trigger_seconds", "reset_minutes"]
628
+ },
629
+ "save_state",
630
+ "test_mode",
631
+ {
632
+ "type": "fieldset",
633
+ "title": "Accessory Names",
634
+ "description": "Change the accessory names provided by your own.",
635
+ "expandable": true,
636
+ "expanded": false,
637
+ "items": [
638
+ "trip_switch_name",
639
+ "trip_home_switch_name",
640
+ "trip_away_switch_name",
641
+ "trip_night_switch_name",
642
+ "trip_override_switch_name",
643
+ "mode_home_switch_name",
644
+ "mode_away_switch_name",
645
+ "mode_night_switch_name",
646
+ "mode_off_switch_name"
647
+ ]
648
+ },
649
+ {
650
+ "type": "fieldset",
651
+ "title": "Advanced Options",
652
+ "description": "Need more options? You know what do do.",
653
+ "expandable": true,
654
+ "expanded": false,
655
+ "items": [
656
+ "log_directory",
657
+ {
658
+ "type": "div",
659
+ "displayFlex": true,
660
+ "flex-flow": "row wrap",
661
+ "flex-direction": "row",
662
+ "items": ["home_arm_seconds", "away_arm_seconds", "night_arm_seconds"]
663
+ },
664
+ {
665
+ "type": "div",
666
+ "displayFlex": true,
667
+ "flex-flow": "row wrap",
668
+ "flex-direction": "row",
669
+ "items": [
670
+ "home_trigger_seconds",
671
+ "away_trigger_seconds",
672
+ "night_trigger_seconds"
673
+ ]
674
+ },
675
+ "override_off",
676
+ "reset_off_flow",
677
+ "proxy_mode",
678
+ {
679
+ "type": "div",
680
+ "displayFlex": true,
681
+ "flex-flow": "row wrap",
682
+ "flex-direction": "row",
683
+ "items": ["double_knock", "double_knock_seconds"]
684
+ },
685
+ {
686
+ "type": "div",
687
+ "displayFlex": true,
688
+ "flex-flow": "row wrap",
689
+ "flex-direction": "row",
690
+ "items": [
691
+ "home_double_knock_seconds",
692
+ "away_double_knock_seconds",
693
+ "night_double_knock_seconds"
694
+ ]
695
+ },
696
+ "double_knock_modes",
697
+ "disabled_modes"
698
+ ]
699
+ },
700
+ {
701
+ "type": "fieldset",
702
+ "title": "Switches",
703
+ "description": "Create simpler automations or bypass HomeKit confirmations.",
704
+ "expandable": true,
705
+ "expanded": false,
706
+ "items": [
707
+ "mode_switches",
708
+ "mode_off_switch",
709
+ {
710
+ "type": "div",
711
+ "displayFlex": true,
712
+ "flex-flow": "row",
713
+ "flex-direction": "row",
714
+ "items": [
715
+ "mode_away_extended_switch",
716
+ "away_extended_trigger_seconds"
717
+ ]
718
+ },
719
+ {
720
+ "type": "div",
721
+ "displayFlex": true,
722
+ "flex-flow": "row",
723
+ "flex-direction": "row",
724
+ "items": ["mode_pause_switch", "pause_minutes"]
725
+ },
726
+ "arming_lock_switch",
727
+ "arming_lock_switches",
728
+ "siren_switch",
729
+ "siren_override_switch",
730
+ "siren_mode_switches",
731
+ "audio_switch"
732
+ ]
733
+ },
734
+ {
735
+ "type": "fieldset",
736
+ "title": "Sensors",
737
+ "description": "Automate based on custom events or get alerted by multiple notifications.",
738
+ "expandable": true,
739
+ "expanded": false,
740
+ "items": [
741
+ "tripped_sensor",
742
+ "siren_sensor",
743
+ {
744
+ "type": "div",
745
+ "displayFlex": true,
746
+ "flex-flow": "row wrap",
747
+ "flex-direction": "row",
748
+ "items": ["tripped_sensor_seconds", "siren_sensor_seconds"]
749
+ },
750
+ "reset_sensor"
751
+ ]
752
+ },
753
+ {
754
+ "type": "fieldset",
755
+ "title": "Audio",
756
+ "description": "Play sounds on your connected speakers to notify events.",
757
+ "expandable": true,
758
+ "expanded": false,
759
+ "items": [
760
+ {
761
+ "type": "div",
762
+ "displayFlex": true,
763
+ "flex-flow": "row wrap",
764
+ "flex-direction": "row",
765
+ "items": ["audio", "audio_language"]
766
+ },
767
+ {
768
+ "type": "div",
769
+ "displayFlex": true,
770
+ "flex-flow": "row wrap",
771
+ "flex-direction": "row",
772
+ "items": ["audio_path", "audio_volume"]
773
+ },
774
+ "audio_arming_looped",
775
+ "audio_alert_looped",
776
+ {
777
+ "key": "audio_extra_variables",
778
+ "type": "tabarray",
779
+ "title": "{{ value.key || 'Environment Variable' }}",
780
+ "items": [
781
+ "audio_extra_variables[].key",
782
+ "audio_extra_variables[].value"
783
+ ]
784
+ }
785
+ ]
786
+ },
787
+ {
788
+ "type": "fieldset",
789
+ "title": "Server",
790
+ "description": "Expose a server to interact with the security system remotely.",
791
+ "expandable": true,
792
+ "expanded": false,
793
+ "items": ["server_port", "server_code"]
794
+ },
795
+ {
796
+ "type": "fieldset",
797
+ "title": "Webhooks",
798
+ "description": "Interact with other devices or web services during events",
799
+ "expandable": true,
800
+ "expanded": false,
801
+ "items": [
802
+ "webhook_url",
803
+ "webhook_target_home",
804
+ "webhook_target_away",
805
+ "webhook_target_night",
806
+ "webhook_target_off",
807
+ "webhook_current_home",
808
+ "webhook_current_away",
809
+ "webhook_current_night",
810
+ "webhook_current_off",
811
+ "webhook_current_warning",
812
+ "webhook_current_triggered"
813
+ ]
814
+ },
815
+ {
816
+ "type": "fieldset",
817
+ "title": "Commands",
818
+ "description": "Execute commands on this device based on events.",
819
+ "expandable": true,
820
+ "expanded": false,
821
+ "items": [
822
+ "command_target_home",
823
+ "command_target_away",
824
+ "command_target_night",
825
+ "command_target_off",
826
+ "command_current_home",
827
+ "command_current_away",
828
+ "command_current_night",
829
+ "command_current_off",
830
+ "command_current_warning",
831
+ "command_current_triggered"
832
+ ]
833
+ }
834
+ ]
835
+ }