homebridge-securitysystem 7.4.0 → 7.5.0-beta.2

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