homebridge-http-webhooks-plus 0.2.1

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.
@@ -0,0 +1,1821 @@
1
+ {
2
+ "pluginAlias": "HttpWebHooks",
3
+ "pluginType": "platform",
4
+ "singular": true,
5
+ "headerDisplay": "A `http` plugin with support of webhooks for homebridge.\n\nThe plugin gets its states from any system that is calling the url to trigger a state change.\n\nCurrently supports `contact`, `motion`, `occupancy`, `smoke`, `switches`, `push buttons`, `doorbells`, `lights` (only on/off and brightness), `temperature`, `humidity`, `thermostats`, `co2sensors`, and `leak` sensors.",
6
+ "footerDisplay": "Visit the Project [Readme](https://github.com/benzman81/homebridge-http-webhooks#readme) for more details.",
7
+ "schema": {
8
+ "type": "object",
9
+ "properties": {
10
+ "webhook_port": {
11
+ "title": "Webhook Port",
12
+ "type": "string",
13
+ "placeholder": "51828",
14
+ "required": true,
15
+ "typeahead": {
16
+ "source": [
17
+ "51828"
18
+ ]
19
+ }
20
+ },
21
+ "webhook_listen_host": {
22
+ "title": "Webhook Listen Host",
23
+ "type": "string",
24
+ "placeholder": "::",
25
+ "required": false
26
+ },
27
+ "webhook_enable_cors": {
28
+ "title": "Webhook enable CORS",
29
+ "type": "boolean",
30
+ "placeholder": false,
31
+ "required": false
32
+ },
33
+ "cache_directory": {
34
+ "title": "Cache Directory",
35
+ "type": "string",
36
+ "placeholder": "./.node-persist/storage",
37
+ "required": false
38
+ },
39
+ "http_auth_user": {
40
+ "title": "HTTP Auth User",
41
+ "type": "string",
42
+ "placeholder": "admin",
43
+ "required": false
44
+ },
45
+ "http_auth_pass": {
46
+ "title": "HTTP Auth Pass",
47
+ "type": "string",
48
+ "placeholder": "admin",
49
+ "required": false
50
+ },
51
+ "https": {
52
+ "title": "HTTPS",
53
+ "type": "boolean",
54
+ "placeholder": false,
55
+ "required": false
56
+ },
57
+ "https_keyfile": {
58
+ "title": "HTTPS Key Location",
59
+ "type": "string",
60
+ "placeholder": "/pathToKeyFile/server.key",
61
+ "required": false
62
+ },
63
+ "https_certfile": {
64
+ "title": "HTTPS Cert Location",
65
+ "type": "string",
66
+ "placeholder": "/pathToKeyFile/server.cert",
67
+ "required": false
68
+ },
69
+ "sensors": {
70
+ "type": "array",
71
+ "title": "Sensors",
72
+ "description": "Create contact, motion, occupancy, smoke, temperature, humidity, airquality, light, or leak sensors.",
73
+ "items": {
74
+ "title": "Sensors",
75
+ "type": "object",
76
+ "properties": {
77
+ "id": {
78
+ "title": "ID",
79
+ "type": "string",
80
+ "placeholder": "sensor1",
81
+ "required": false
82
+ },
83
+ "name": {
84
+ "title": "Name",
85
+ "type": "string",
86
+ "placeholder": "Sensor 1",
87
+ "required": false
88
+ },
89
+ "type": {
90
+ "title": "Type",
91
+ "type": "string",
92
+ "required": false,
93
+ "enum": [
94
+ "contact",
95
+ "motion",
96
+ "occupancy",
97
+ "smoke",
98
+ "temperature",
99
+ "humidity",
100
+ "airquality",
101
+ "light",
102
+ "leak"
103
+ ]
104
+ },
105
+ "autoRelease": {
106
+ "title": "Enable Auto Release",
107
+ "type": "boolean",
108
+ "required": false
109
+ },
110
+ "autoReleaseTime": {
111
+ "title": "Auto Release Time",
112
+ "type": "integer",
113
+ "placeholder": "7500",
114
+ "required": false
115
+ }
116
+ }
117
+ }
118
+ },
119
+ "switches": {
120
+ "type": "array",
121
+ "title": "Switches",
122
+ "description": "Turn on and off switches by triggering a URL from any system.",
123
+ "items": {
124
+ "title": "Switches",
125
+ "type": "object",
126
+ "properties": {
127
+ "id": {
128
+ "title": "ID",
129
+ "type": "string",
130
+ "placeholder": "Switch1",
131
+ "required": false
132
+ },
133
+ "name": {
134
+ "title": "Name",
135
+ "type": "string",
136
+ "placeholder": "Switch 1",
137
+ "required": false
138
+ },
139
+ "rejectUnauthorized": {
140
+ "title": "Reject Unauthorized SSL Certificate",
141
+ "type": "boolean",
142
+ "placeholder": true,
143
+ "required": false
144
+ },
145
+ "on_url": {
146
+ "title": "On URL",
147
+ "type": "string",
148
+ "placeholder": "your url to call when the switch is turned on",
149
+ "required": false
150
+ },
151
+ "on_method": {
152
+ "title": "On Method",
153
+ "type": "string",
154
+ "placeholder": "GET",
155
+ "required": false
156
+ },
157
+ "on_body": {
158
+ "title": "On Body",
159
+ "type": "string",
160
+ "placeholder": "{ \"on\" : true }",
161
+ "required": false
162
+ },
163
+ "on_headers": {
164
+ "title": "On Headers",
165
+ "type": "string",
166
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
167
+ "required": false
168
+ },
169
+ "off_url": {
170
+ "title": "Off URL",
171
+ "type": "string",
172
+ "placeholder": "your url to call when the switch is turned off",
173
+ "required": false
174
+ },
175
+ "off_method": {
176
+ "title": "Off Method",
177
+ "type": "string",
178
+ "placeholder": "GET",
179
+ "required": false
180
+ },
181
+ "off_body": {
182
+ "title": "Off Body",
183
+ "type": "string",
184
+ "placeholder": "{ \"on\": false }",
185
+ "required": false
186
+ },
187
+ "off_headers": {
188
+ "title": "Off Headers",
189
+ "type": "string",
190
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
191
+ "required": false
192
+ }
193
+ }
194
+ }
195
+ },
196
+ "pushbuttons": {
197
+ "type": "array",
198
+ "title": "Sensors",
199
+ "description": "Push Buttons by triggerring a URL from any system. The button will be released automatically.",
200
+ "items": {
201
+ "title": "Sensors",
202
+ "type": "object",
203
+ "properties": {
204
+ "id": {
205
+ "title": "ID",
206
+ "type": "string",
207
+ "placeholder": "pushbutton1",
208
+ "required": false
209
+ },
210
+ "name": {
211
+ "title": "Name",
212
+ "type": "string",
213
+ "placeholder": "Push Button 1",
214
+ "required": false
215
+ },
216
+ "rejectUnauthorized": {
217
+ "title": "Reject Unauthorized SSL Certificate",
218
+ "type": "boolean",
219
+ "placeholder": true,
220
+ "required": false
221
+ },
222
+ "push_url": {
223
+ "title": "Push URL",
224
+ "type": "string",
225
+ "placeholder": "your url to call when the pushbutton is pushed",
226
+ "required": false
227
+ },
228
+ "push_method": {
229
+ "title": "Push Method",
230
+ "type": "string",
231
+ "placeholder": "GET",
232
+ "required": false
233
+ },
234
+ "push_body": {
235
+ "title": "Push Body",
236
+ "type": "string",
237
+ "placeholder": "{ \"push\": true }",
238
+ "required": false
239
+ },
240
+ "push_headers": {
241
+ "title": "Push Headers",
242
+ "type": "string",
243
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
244
+ "required": false
245
+ }
246
+ }
247
+ }
248
+ },
249
+ "doorbells": {
250
+ "type": "array",
251
+ "title": "Doorbells",
252
+ "description": "Ring doorbells via a URL from any system.",
253
+ "items": {
254
+ "title": "Doorbells",
255
+ "type": "object",
256
+ "properties": {
257
+ "id": {
258
+ "title": "ID",
259
+ "type": "string",
260
+ "placeholder": "doorbell1",
261
+ "required": false
262
+ },
263
+ "name": {
264
+ "title": "Name",
265
+ "type": "string",
266
+ "placeholder": "Doorbell 1",
267
+ "required": false
268
+ },
269
+ "double_press": {
270
+ "title": "Enable Double Press",
271
+ "type": "boolean",
272
+ "required": false
273
+ },
274
+ "long_press": {
275
+ "title": "Enable Long Press",
276
+ "type": "boolean",
277
+ "required": false
278
+ }
279
+ }
280
+ }
281
+ },
282
+ "lights": {
283
+ "type": "array",
284
+ "title": "Lights",
285
+ "description": "Turn on and off Lights by triggering a URL from any system.",
286
+ "items": {
287
+ "title": "Lights",
288
+ "type": "object",
289
+ "properties": {
290
+ "id": {
291
+ "title": "ID",
292
+ "type": "string",
293
+ "placeholder": "light1",
294
+ "required": false
295
+ },
296
+ "name": {
297
+ "title": "Name",
298
+ "type": "string",
299
+ "placeholder": "Light 1",
300
+ "required": false
301
+ },
302
+ "rejectUnauthorized": {
303
+ "title": "Reject Unauthorized SSL Certificate",
304
+ "type": "boolean",
305
+ "placeholder": true,
306
+ "required": false
307
+ },
308
+ "on_url": {
309
+ "title": "On URL",
310
+ "type": "string",
311
+ "placeholder": "your url to call when the light is turned on",
312
+ "required": false
313
+ },
314
+ "on_method": {
315
+ "title": "On Method",
316
+ "type": "string",
317
+ "placeholder": "GET",
318
+ "required": false
319
+ },
320
+ "on_body": {
321
+ "title": "On Body",
322
+ "type": "string",
323
+ "placeholder": "{ \"on\" : true }",
324
+ "required": false
325
+ },
326
+ "on_headers": {
327
+ "title": "On Headers",
328
+ "type": "string",
329
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
330
+ "required": false
331
+ },
332
+ "off_url": {
333
+ "title": "Off URL",
334
+ "type": "string",
335
+ "placeholder": "your url to call when the light is turned off",
336
+ "required": false
337
+ },
338
+ "off_method": {
339
+ "title": "Off Method",
340
+ "type": "string",
341
+ "placeholder": "GET",
342
+ "required": false
343
+ },
344
+ "off_body": {
345
+ "title": "Off Body",
346
+ "type": "string",
347
+ "placeholder": "{ \"on\": false }",
348
+ "required": false
349
+ },
350
+ "off_headers": {
351
+ "title": "Off Headers",
352
+ "type": "string",
353
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
354
+ "required": false
355
+ },
356
+ "brightness_url": {
357
+ "title": "Brightness URL",
358
+ "type": "string",
359
+ "placeholder": "your url to call when the light brightness is changed",
360
+ "required": false
361
+ },
362
+ "brightness_method": {
363
+ "title": "Brightness Method",
364
+ "type": "string",
365
+ "placeholder": "GET",
366
+ "required": false
367
+ },
368
+ "brightness_body": {
369
+ "title": "Brightness Body",
370
+ "type": "string",
371
+ "placeholder": "{ \"on\" : %statusPlaceholder, \"bri\" : %brightnessPlaceholder}",
372
+ "required": false
373
+ },
374
+ "brightness_headers": {
375
+ "title": "Brightness Headers",
376
+ "type": "string",
377
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
378
+ "required": false
379
+ },
380
+ "brightness_factor": {
381
+ "title": "Brightness Factor",
382
+ "type": "number",
383
+ "placeholder": 2.55,
384
+ "required": false,
385
+ "typeahead": {
386
+ "source": [
387
+ 2.55
388
+ ]
389
+ }
390
+ }
391
+ }
392
+ }
393
+ },
394
+ "co2sensors": {
395
+ "type": "array",
396
+ "title": "CO2 Sensor",
397
+ "description": "Control a CO2 sensor by updating the PPM value.",
398
+ "items": {
399
+ "title": "CO2 Sensors",
400
+ "type": "object",
401
+ "properties": {
402
+ "id": {
403
+ "title": "ID",
404
+ "type": "string",
405
+ "placeholder": "co2sensor1",
406
+ "required": false
407
+ },
408
+ "name": {
409
+ "title": "Name",
410
+ "type": "string",
411
+ "placeholder": "CO2 sensor 1",
412
+ "required": false
413
+ },
414
+ "co2_peak_level": {
415
+ "title": "CO2 peak level",
416
+ "type": "integer",
417
+ "required": false
418
+ }
419
+ }
420
+ }
421
+ },
422
+ "thermostats": {
423
+ "type": "array",
424
+ "title": "Thermostats",
425
+ "description": "Control a thermostat by updating four different values.",
426
+ "items": {
427
+ "title": "Thermostats",
428
+ "type": "object",
429
+ "properties": {
430
+ "id": {
431
+ "title": "ID",
432
+ "type": "string",
433
+ "placeholder": "thermostat1",
434
+ "required": false
435
+ },
436
+ "name": {
437
+ "title": "Name",
438
+ "type": "string",
439
+ "placeholder": "Thermostat 1",
440
+ "required": false
441
+ },
442
+ "minTemp": {
443
+ "title": "Lower bound for the temperature selector in the Home app",
444
+ "type": "number",
445
+ "placeholder": "15",
446
+ "required": false
447
+ },
448
+ "maxTemp": {
449
+ "title": "Upper bound for the temperature selector in the Home app",
450
+ "type": "number",
451
+ "placeholder": "30",
452
+ "required": false
453
+ },
454
+ "minStep": {
455
+ "title": "Minimum increment value for the temperature selector in the Home app",
456
+ "type": "number",
457
+ "placeholder": "0.5",
458
+ "required": false
459
+ },
460
+ "rejectUnauthorized": {
461
+ "title": "Reject Unauthorized SSL Certificate",
462
+ "type": "boolean",
463
+ "placeholder": true,
464
+ "required": false
465
+ },
466
+ "set_target_temperature_url": {
467
+ "title": "Set Target Temperature URL",
468
+ "type": "string",
469
+ "placeholder": "http://127.0.0.1/thermostatscript.php?targettemperature=%f",
470
+ "required": false
471
+ },
472
+ "set_target_temperature_method": {
473
+ "title": "Set Target Temperature Method",
474
+ "type": "string",
475
+ "placeholder": "GET",
476
+ "required": false
477
+ },
478
+ "set_target_temperature_body": {
479
+ "title": "Set Target Temperature Body",
480
+ "type": "string",
481
+ "placeholder": "{ \"on\" : true }",
482
+ "required": false
483
+ },
484
+ "set_target_temperature_headers": {
485
+ "title": "Set Target Temperature Headers",
486
+ "type": "string",
487
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
488
+ "required": false
489
+ },
490
+ "set_target_heating_cooling_state_url": {
491
+ "title": "Set Target Heating/Cooling State URL",
492
+ "type": "string",
493
+ "placeholder": "http://127.0.0.1/thermostatscript.php?targetstate=%b",
494
+ "required": false
495
+ },
496
+ "set_target_heating_cooling_state_method": {
497
+ "title": "Set Target Heating/Cooling State Method",
498
+ "type": "string",
499
+ "placeholder": "GET",
500
+ "required": false
501
+ },
502
+ "set_target_heating_cooling_state_body": {
503
+ "title": "Set Target Heating/Cooling State Body",
504
+ "type": "string",
505
+ "placeholder": "{ \"on\" : true }",
506
+ "required": false
507
+ },
508
+ "set_target_heating_cooling_state_headers": {
509
+ "title": "Set Target Heating/Cooling State Headers",
510
+ "type": "string",
511
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
512
+ "required": false
513
+ }
514
+ }
515
+ }
516
+ },
517
+ "outlets": {
518
+ "type": "array",
519
+ "title": "Outlets",
520
+ "description": "Turn on and off Outlets by triggering a URL from any system.",
521
+ "items": {
522
+ "title": "Outlets",
523
+ "type": "object",
524
+ "properties": {
525
+ "id": {
526
+ "title": "ID",
527
+ "type": "string",
528
+ "placeholder": "outlet1",
529
+ "required": false
530
+ },
531
+ "name": {
532
+ "title": "Name",
533
+ "type": "string",
534
+ "placeholder": "Outlet 1",
535
+ "required": false
536
+ },
537
+ "rejectUnauthorized": {
538
+ "title": "Reject Unauthorized SSL Certificate",
539
+ "type": "boolean",
540
+ "placeholder": true,
541
+ "required": false
542
+ },
543
+ "on_url": {
544
+ "title": "On URL",
545
+ "type": "string",
546
+ "placeholder": "your url to call when the outlet is turned on",
547
+ "required": false
548
+ },
549
+ "on_method": {
550
+ "title": "On Method",
551
+ "type": "string",
552
+ "placeholder": "GET",
553
+ "required": false
554
+ },
555
+ "on_body": {
556
+ "title": "On Body",
557
+ "type": "string",
558
+ "placeholder": "{ \"on\" : true }",
559
+ "required": false
560
+ },
561
+ "on_headers": {
562
+ "title": "On Headers",
563
+ "type": "string",
564
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
565
+ "required": false
566
+ },
567
+ "off_url": {
568
+ "title": "Off URL",
569
+ "type": "string",
570
+ "placeholder": "your url to call when the outlet is turned off",
571
+ "required": false
572
+ },
573
+ "off_method": {
574
+ "title": "Off Method",
575
+ "type": "string",
576
+ "placeholder": "GET",
577
+ "required": false
578
+ },
579
+ "off_body": {
580
+ "title": "Off Body",
581
+ "type": "string",
582
+ "placeholder": "{ \"on\": false }",
583
+ "required": false
584
+ },
585
+ "off_headers": {
586
+ "title": "Off Headers",
587
+ "type": "string",
588
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
589
+ "required": false
590
+ }
591
+ }
592
+ }
593
+ },
594
+ "security": {
595
+ "type": "array",
596
+ "title": "Security",
597
+ "description": "Control a security system by updating two different values.",
598
+ "items": {
599
+ "title": "Security",
600
+ "type": "object",
601
+ "properties": {
602
+ "id": {
603
+ "title": "ID",
604
+ "type": "string",
605
+ "placeholder": "security1",
606
+ "required": false
607
+ },
608
+ "name": {
609
+ "title": "Name",
610
+ "type": "string",
611
+ "placeholder": "Security 1",
612
+ "required": false
613
+ },
614
+ "rejectUnauthorized": {
615
+ "title": "Reject Unauthorized SSL Certificate",
616
+ "type": "boolean",
617
+ "placeholder": true,
618
+ "required": false
619
+ },
620
+ "set_state_url": {
621
+ "title": "Set State URL",
622
+ "type": "string",
623
+ "placeholder": "http://localhost/security/mode/%d",
624
+ "required": false
625
+ },
626
+ "set_state_method": {
627
+ "title": "Set State Method",
628
+ "type": "string",
629
+ "placeholder": "GET",
630
+ "required": false
631
+ },
632
+ "set_state_body": {
633
+ "title": "Set State Body",
634
+ "type": "string",
635
+ "placeholder": "{ \"on\": true }",
636
+ "required": false
637
+ },
638
+ "set_state_headers": {
639
+ "title": "Set State Headers",
640
+ "type": "string",
641
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
642
+ "required": false
643
+ }
644
+ }
645
+ }
646
+ },
647
+ "garagedooropeners": {
648
+ "type": "array",
649
+ "title": "Garage Door Openers",
650
+ "description": "Control a garage door opener by updating three different values.",
651
+ "items": {
652
+ "title": "Garage Door Openers",
653
+ "type": "object",
654
+ "properties": {
655
+ "id": {
656
+ "title": "ID",
657
+ "type": "string",
658
+ "placeholder": "garagedooropeners1",
659
+ "required": false
660
+ },
661
+ "name": {
662
+ "title": "Name",
663
+ "type": "string",
664
+ "placeholder": "Garage Door Opener 1",
665
+ "required": false
666
+ },
667
+ "rejectUnauthorized": {
668
+ "title": "Reject Unauthorized SSL Certificate",
669
+ "type": "boolean",
670
+ "placeholder": true,
671
+ "required": false
672
+ },
673
+ "open_url": {
674
+ "title": "Open URL",
675
+ "type": "string",
676
+ "placeholder": "your url to call when the garage door is opened",
677
+ "required": false
678
+ },
679
+ "open_method": {
680
+ "title": "Open Method",
681
+ "type": "string",
682
+ "placeholder": "GET",
683
+ "required": false
684
+ },
685
+ "open_body": {
686
+ "title": "Open Body",
687
+ "type": "string",
688
+ "placeholder": "{ \"open\": true }",
689
+ "required": false
690
+ },
691
+ "open_headers": {
692
+ "title": "Open Headers",
693
+ "type": "string",
694
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
695
+ "required": false
696
+ },
697
+ "close_url": {
698
+ "title": "Close URL",
699
+ "type": "string",
700
+ "placeholder": "your url to call when the garage door is closed",
701
+ "required": false
702
+ },
703
+ "close_method": {
704
+ "title": "Close Method",
705
+ "type": "string",
706
+ "placeholder": "Get",
707
+ "required": false
708
+ },
709
+ "close_body": {
710
+ "title": "Close Body",
711
+ "type": "string",
712
+ "placeholder": "{ \"open\": false }",
713
+ "required": false
714
+ },
715
+ "close_headers": {
716
+ "title": "Close Headers",
717
+ "type": "string",
718
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
719
+ "required": false
720
+ }
721
+ }
722
+ }
723
+ },
724
+ "statelessswitches": {
725
+ "type": "array",
726
+ "title": "Stateless Switches",
727
+ "description": "Stateless switches requires 3 parameters accessoryId, buttonName and the event to trigger: Single press = 0, Double press = 1, Long press = 2.",
728
+ "items": {
729
+ "title": "Stateless Switches",
730
+ "type": "object",
731
+ "properties": {
732
+ "id": {
733
+ "title": "ID",
734
+ "type": "string",
735
+ "placeholder": "statelessswitches1",
736
+ "required": false
737
+ },
738
+ "name": {
739
+ "title": "Name",
740
+ "type": "string",
741
+ "placeholder": "Stateless Switch 1",
742
+ "required": false
743
+ },
744
+ "buttons": {
745
+ "type": "array",
746
+ "title": "Buttons",
747
+ "items": {
748
+ "title": "Buttons",
749
+ "type": "object",
750
+ "properties": {
751
+ "name": {
752
+ "title": "Name",
753
+ "type": "string",
754
+ "placeholder": "Button1",
755
+ "required": false
756
+ },
757
+ "double_press": {
758
+ "title": "Enable Double Press",
759
+ "type": "boolean",
760
+ "required": false
761
+ },
762
+ "long_press": {
763
+ "title": "Enable Long Press",
764
+ "type": "boolean",
765
+ "required": false
766
+ }
767
+ }
768
+ }
769
+ }
770
+ }
771
+ }
772
+ },
773
+ "windowcoverings": {
774
+ "type": "array",
775
+ "title": "Window Coverings",
776
+ "description": "Control a window coverings by updating three different values.",
777
+ "items": {
778
+ "title": "Window Coverings",
779
+ "type": "object",
780
+ "properties": {
781
+ "id": {
782
+ "title": "ID",
783
+ "type": "string",
784
+ "placeholder": "windowcovering1",
785
+ "required": false
786
+ },
787
+ "name": {
788
+ "title": "Name",
789
+ "type": "string",
790
+ "placeholder": "Window Covering 1",
791
+ "required": false
792
+ },
793
+ "rejectUnauthorized": {
794
+ "title": "Reject Unauthorized SSL Certificate",
795
+ "type": "boolean",
796
+ "placeholder": true,
797
+ "required": false
798
+ },
799
+ "open_url": {
800
+ "title": "Open URL",
801
+ "type": "string",
802
+ "placeholder": "http://your.url/to/open",
803
+ "required": false
804
+ },
805
+ "open_method": {
806
+ "title": "Open Method",
807
+ "type": "string",
808
+ "placeholder": "GET",
809
+ "required": false
810
+ },
811
+ "open_body": {
812
+ "title": "Open Body",
813
+ "type": "string",
814
+ "placeholder": "{ \"open\": true }",
815
+ "required": false
816
+ },
817
+ "open_headers": {
818
+ "title": "Open Headers",
819
+ "type": "string",
820
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
821
+ "required": false
822
+ },
823
+ "open_80_url": {
824
+ "title": "Open 80 URL",
825
+ "type": "string",
826
+ "placeholder": "http://your.url/to/open80%",
827
+ "required": false
828
+ },
829
+ "open_80_method": {
830
+ "title": "Open 80 Method",
831
+ "type": "string",
832
+ "placeholder": "GET",
833
+ "required": false
834
+ },
835
+ "open_80_body": {
836
+ "title": "Open 80 Body",
837
+ "type": "string",
838
+ "placeholder": "{ \"open\": true }",
839
+ "required": false
840
+ },
841
+ "open_80_headers": {
842
+ "title": "Open 80 Headers",
843
+ "type": "string",
844
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
845
+ "required": false
846
+ },
847
+ "open_60_url": {
848
+ "title": "Open 60 URL",
849
+ "type": "string",
850
+ "placeholder": "http://your.url/to/open60%",
851
+ "required": false
852
+ },
853
+ "open_60_method": {
854
+ "title": "Open 60 Method",
855
+ "type": "string",
856
+ "placeholder": "GET",
857
+ "required": false
858
+ },
859
+ "open_60_body": {
860
+ "title": "Open 60 Body",
861
+ "type": "string",
862
+ "placeholder": "{ \"open\": true }",
863
+ "required": false
864
+ },
865
+ "open_60_headers": {
866
+ "title": "Open 60 Headers",
867
+ "type": "string",
868
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
869
+ "required": false
870
+ },
871
+ "open_40_url": {
872
+ "title": "Open 40 URL",
873
+ "type": "string",
874
+ "placeholder": "http://your.url/to/open40%",
875
+ "required": false
876
+ },
877
+ "open_40_method": {
878
+ "title": "Open 40 Method",
879
+ "type": "string",
880
+ "placeholder": "GET",
881
+ "required": false
882
+ },
883
+ "open_40_body": {
884
+ "title": "Open 40 Body",
885
+ "type": "string",
886
+ "placeholder": "{ \"open\": true }",
887
+ "required": false
888
+ },
889
+ "open_40_headers": {
890
+ "title": "Open 40 Headers",
891
+ "type": "string",
892
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
893
+ "required": false
894
+ },
895
+ "open_20_url": {
896
+ "title": "Open 20 URL",
897
+ "type": "string",
898
+ "placeholder": "http://your.url/to/open20%",
899
+ "required": false
900
+ },
901
+ "open_20_method": {
902
+ "title": "Open 20 Method",
903
+ "type": "string",
904
+ "placeholder": "GET",
905
+ "required": false
906
+ },
907
+ "open_20_body": {
908
+ "title": "Open 20 Body",
909
+ "type": "string",
910
+ "placeholder": "{ \"open\": true }",
911
+ "required": false
912
+ },
913
+ "open_20_headers": {
914
+ "title": "Open 20 Headers",
915
+ "type": "string",
916
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
917
+ "required": false
918
+ },
919
+ "close_url": {
920
+ "title": "Close URL",
921
+ "type": "string",
922
+ "placeholder": "http://your.url/to/close",
923
+ "required": false
924
+ },
925
+ "close_method": {
926
+ "title": "Close Method",
927
+ "type": "string",
928
+ "placeholder": "GET",
929
+ "required": false
930
+ },
931
+ "close_body": {
932
+ "title": "Close Body",
933
+ "type": "string",
934
+ "placeholder": "{ \"open\": false }",
935
+ "required": false
936
+ },
937
+ "close_headers": {
938
+ "title": "Close Headers",
939
+ "type": "string",
940
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
941
+ "required": false
942
+ },
943
+ "auto_set_current_position": {
944
+ "title": "Auto set current position",
945
+ "type": "boolean",
946
+ "placeholder": false,
947
+ "required": false
948
+ }
949
+ }
950
+ }
951
+ },
952
+ "lockmechanisms": {
953
+ "type": "array",
954
+ "title": "Lock Mechanisms",
955
+ "description": "Control a lock mechanism by updating two different values.",
956
+ "items": {
957
+ "title": "Lock Mechanisms",
958
+ "type": "object",
959
+ "properties": {
960
+ "id": {
961
+ "title": "ID",
962
+ "type": "string",
963
+ "placeholder": "lockmechanisms1",
964
+ "required": false
965
+ },
966
+ "name": {
967
+ "title": "Name",
968
+ "type": "string",
969
+ "placeholder": "Lock 1",
970
+ "required": false
971
+ },
972
+ "rejectUnauthorized": {
973
+ "title": "Reject Unauthorized SSL Certificate",
974
+ "type": "boolean",
975
+ "placeholder": true,
976
+ "required": false
977
+ },
978
+ "open_url": {
979
+ "title": "Open URL",
980
+ "type": "string",
981
+ "placeholder": "your url to call when the lock mechanism is unlocked (opened)",
982
+ "required": false
983
+ },
984
+ "open_method": {
985
+ "title": "Open Method",
986
+ "type": "string",
987
+ "placeholder": "GET",
988
+ "required": false
989
+ },
990
+ "open_body": {
991
+ "title": "Open Body",
992
+ "type": "string",
993
+ "placeholder": "{ \"open\": true }",
994
+ "required": false
995
+ },
996
+ "open_headers": {
997
+ "title": "Open Headers",
998
+ "type": "string",
999
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
1000
+ "required": false
1001
+ },
1002
+ "close_url": {
1003
+ "title": "Close URL",
1004
+ "type": "string",
1005
+ "placeholder": "your url to call when the lock mechanism is locked (closed)",
1006
+ "required": false
1007
+ },
1008
+ "close_method": {
1009
+ "title": "Close Method",
1010
+ "type": "string",
1011
+ "placeholder": "GET",
1012
+ "required": false
1013
+ },
1014
+ "close_body": {
1015
+ "title": "Close Body",
1016
+ "type": "string",
1017
+ "placeholder": "{ \"open\": false }",
1018
+ "required": false
1019
+ },
1020
+ "close_headers": {
1021
+ "title": "Close Headers",
1022
+ "type": "string",
1023
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
1024
+ "required": false
1025
+ }
1026
+ }
1027
+ }
1028
+ },
1029
+ "fanv2s": {
1030
+ "type": "array",
1031
+ "title": "Fanv2",
1032
+ "description": "Turn on and off Fanv2s by triggering a URL from any system.",
1033
+ "items": {
1034
+ "title": "Fanv2s",
1035
+ "type": "object",
1036
+ "properties": {
1037
+ "id": {
1038
+ "title": "ID",
1039
+ "type": "string",
1040
+ "placeholder": "fanv2-1",
1041
+ "required": false
1042
+ },
1043
+ "name": {
1044
+ "title": "Name",
1045
+ "type": "string",
1046
+ "placeholder": "Fanv2 1",
1047
+ "required": false
1048
+ },
1049
+ "rejectUnauthorized": {
1050
+ "title": "Reject Unauthorized SSL Certificate",
1051
+ "type": "boolean",
1052
+ "placeholder": true,
1053
+ "required": false
1054
+ },
1055
+ "on_url": {
1056
+ "title": "On URL",
1057
+ "type": "string",
1058
+ "placeholder": "your url to call when the fanv2 is turned on",
1059
+ "required": false
1060
+ },
1061
+ "on_method": {
1062
+ "title": "On Method",
1063
+ "type": "string",
1064
+ "placeholder": "GET",
1065
+ "required": false
1066
+ },
1067
+ "on_body": {
1068
+ "title": "On Body",
1069
+ "type": "string",
1070
+ "placeholder": "{ \"on\" : true }",
1071
+ "required": false
1072
+ },
1073
+ "on_headers": {
1074
+ "title": "On Headers",
1075
+ "type": "string",
1076
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
1077
+ "required": false
1078
+ },
1079
+ "off_url": {
1080
+ "title": "Off URL",
1081
+ "type": "string",
1082
+ "placeholder": "your url to call when the fanv2 is turned off",
1083
+ "required": false
1084
+ },
1085
+ "off_method": {
1086
+ "title": "Off Method",
1087
+ "type": "string",
1088
+ "placeholder": "GET",
1089
+ "required": false
1090
+ },
1091
+ "off_body": {
1092
+ "title": "Off Body",
1093
+ "type": "string",
1094
+ "placeholder": "{ \"on\": false }",
1095
+ "required": false
1096
+ },
1097
+ "off_headers": {
1098
+ "title": "Off Headers",
1099
+ "type": "string",
1100
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
1101
+ "required": false
1102
+ },
1103
+ "speed_url": {
1104
+ "title": "Speed URL",
1105
+ "type": "string",
1106
+ "placeholder": "your url to call when the fanv2 speed is changed",
1107
+ "required": false
1108
+ },
1109
+ "speed_method": {
1110
+ "title": "Speed Method",
1111
+ "type": "string",
1112
+ "placeholder": "GET",
1113
+ "required": false
1114
+ },
1115
+ "speed_body": {
1116
+ "title": "Speed Body",
1117
+ "type": "string",
1118
+ "placeholder": "{ \"on\" : %statusPlaceholder, \"speed\" : %speedPlaceholder}",
1119
+ "required": false
1120
+ },
1121
+ "speed_headers": {
1122
+ "title": "Speed Headers",
1123
+ "type": "string",
1124
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
1125
+ "required": false
1126
+ },
1127
+ "speed_factor": {
1128
+ "title": "Speed Factor",
1129
+ "type": "number",
1130
+ "placeholder": 2.55,
1131
+ "required": false,
1132
+ "typeahead": {
1133
+ "source": [
1134
+ 2.55
1135
+ ]
1136
+ }
1137
+ },
1138
+ "enableLockPhysicalControls": {
1139
+ "title": "Enable lock physical controls",
1140
+ "type": "boolean",
1141
+ "required": false
1142
+ },
1143
+ "lock_url": {
1144
+ "title": "Lock URL",
1145
+ "type": "string",
1146
+ "placeholder": "your url to call when the fanv2's physical controls are locked",
1147
+ "required": false
1148
+ },
1149
+ "lock_method": {
1150
+ "title": "Lock Method",
1151
+ "type": "string",
1152
+ "placeholder": "GET",
1153
+ "required": false
1154
+ },
1155
+ "lock_body": {
1156
+ "title": "Lock Body",
1157
+ "type": "string",
1158
+ "placeholder": "{ \"physicalLock\": true }",
1159
+ "required": false
1160
+ },
1161
+ "lock_headers": {
1162
+ "title": "Lock Headers",
1163
+ "type": "string",
1164
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
1165
+ "required": false
1166
+ },
1167
+ "unlock_url": {
1168
+ "title": "Unlock URL",
1169
+ "type": "string",
1170
+ "placeholder": "your url to call when the fanv2's physical controls are unlocked",
1171
+ "required": false
1172
+ },
1173
+ "unlock_method": {
1174
+ "title": "Unlock Method",
1175
+ "type": "string",
1176
+ "placeholder": "GET",
1177
+ "required": false
1178
+ },
1179
+ "unlock_body": {
1180
+ "title": "Unlock Body",
1181
+ "type": "string",
1182
+ "placeholder": "{ \"physicalLock\": false }",
1183
+ "required": false
1184
+ },
1185
+ "unlock_headers": {
1186
+ "title": "Unlock Headers",
1187
+ "type": "string",
1188
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
1189
+ "required": false
1190
+ },
1191
+ "enableTargetStateControls": {
1192
+ "title": "Enable Target State Controls",
1193
+ "type": "boolean",
1194
+ "required": false
1195
+ },
1196
+ "target_state_url": {
1197
+ "title": "Target State URL",
1198
+ "type": "string",
1199
+ "placeholder": "your url to call when the fanv2's target state is changed",
1200
+ "required": false
1201
+ },
1202
+ "target_state_method": {
1203
+ "title": "Target State Method",
1204
+ "type": "string",
1205
+ "placeholder": "GET",
1206
+ "required": false
1207
+ },
1208
+ "target_state_body": {
1209
+ "title": "Target State Body",
1210
+ "type": "string",
1211
+ "placeholder": "{ \"mode\": %targetState }",
1212
+ "required": false
1213
+ },
1214
+ "target_state_headers": {
1215
+ "title": "Target State Headers",
1216
+ "type": "string",
1217
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
1218
+ "required": false
1219
+ },
1220
+ "enableSwingModeControls": {
1221
+ "title": "Enable Swing Mode Controls",
1222
+ "type": "boolean",
1223
+ "required": false
1224
+ },
1225
+ "swing_mode_url": {
1226
+ "title": "Swing Mode URL",
1227
+ "type": "string",
1228
+ "placeholder": "your url to call when the fanv2's swing mode is changed",
1229
+ "required": false
1230
+ },
1231
+ "swing_mode_method": {
1232
+ "title": "Swing Mode Method",
1233
+ "type": "string",
1234
+ "placeholder": "GET",
1235
+ "required": false
1236
+ },
1237
+ "swing_mode_body": {
1238
+ "title": "Swing Mode Body",
1239
+ "type": "string",
1240
+ "placeholder": "{ \"swing_mode\": %swingMode }",
1241
+ "required": false
1242
+ },
1243
+ "swing_mode_headers": {
1244
+ "title": "Swing Mode Headers",
1245
+ "type": "string",
1246
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
1247
+ "required": false
1248
+ },
1249
+ "rotation_direction_url": {
1250
+ "title": "Rotation Direction URL",
1251
+ "type": "string",
1252
+ "placeholder": "your url to call when the fanv2's rotation direction is changed",
1253
+ "required": false
1254
+ },
1255
+ "rotation_direction_method": {
1256
+ "title": "Rotation Direction Method",
1257
+ "type": "string",
1258
+ "placeholder": "GET",
1259
+ "required": false
1260
+ },
1261
+ "rotation_direction_body": {
1262
+ "title": "Rotation Direction Body",
1263
+ "type": "string",
1264
+ "placeholder": "{ \"rotation_direction\": %rotationDirection }",
1265
+ "required": false
1266
+ },
1267
+ "rotation_direction_headers": {
1268
+ "title": "Rotation Direction Headers",
1269
+ "type": "string",
1270
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
1271
+ "required": false
1272
+ }
1273
+ }
1274
+ }
1275
+ },
1276
+ "valves": {
1277
+ "type": "array",
1278
+ "title": "Valves",
1279
+ "description": "Turn on and off valves by triggering a URL from any system.",
1280
+ "items": {
1281
+ "title": "Valves",
1282
+ "type": "object",
1283
+ "properties": {
1284
+ "id": {
1285
+ "title": "ID",
1286
+ "type": "string",
1287
+ "placeholder": "valve1",
1288
+ "required": false
1289
+ },
1290
+ "name": {
1291
+ "title": "Name",
1292
+ "type": "string",
1293
+ "placeholder": "Valve 1",
1294
+ "required": false
1295
+ },
1296
+ "type": {
1297
+ "title": "Type",
1298
+ "type": "string",
1299
+ "enum": ["generic valve","irrigation", "shower head", "water faucet"]
1300
+ },
1301
+ "rejectUnauthorized": {
1302
+ "title": "Reject Unauthorized SSL Certificate",
1303
+ "type": "boolean",
1304
+ "placeholder": true,
1305
+ "required": false
1306
+ },
1307
+ "on_url": {
1308
+ "title": "On URL",
1309
+ "type": "string",
1310
+ "placeholder": "your url to call when the valve is turned on",
1311
+ "required": false
1312
+ },
1313
+ "on_method": {
1314
+ "title": "On Method",
1315
+ "type": "string",
1316
+ "placeholder": "GET",
1317
+ "required": false
1318
+ },
1319
+ "on_body": {
1320
+ "title": "On Body",
1321
+ "type": "string",
1322
+ "placeholder": "{ \"on\" : true }",
1323
+ "required": false
1324
+ },
1325
+ "on_headers": {
1326
+ "title": "On Headers",
1327
+ "type": "string",
1328
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
1329
+ "required": false
1330
+ },
1331
+ "off_url": {
1332
+ "title": "Off URL",
1333
+ "type": "string",
1334
+ "placeholder": "your url to call when the valve is turned off",
1335
+ "required": false
1336
+ },
1337
+ "off_method": {
1338
+ "title": "Off Method",
1339
+ "type": "string",
1340
+ "placeholder": "GET",
1341
+ "required": false
1342
+ },
1343
+ "off_body": {
1344
+ "title": "Off Body",
1345
+ "type": "string",
1346
+ "placeholder": "{ \"on\": false }",
1347
+ "required": false
1348
+ },
1349
+ "off_headers": {
1350
+ "title": "Off Headers",
1351
+ "type": "string",
1352
+ "placeholder": "{\"Authorization\": \"Bearer ABCDEFGH\", \"Content-Type\": \"application/json\"}",
1353
+ "required": false
1354
+ }
1355
+ }
1356
+ }
1357
+ }
1358
+ }
1359
+ },
1360
+ "layout": [
1361
+ {
1362
+ "type": "fieldset",
1363
+ "title": "Webhook Settings",
1364
+ "expandable": true,
1365
+ "expanded": false,
1366
+ "items": [
1367
+ {
1368
+ "title": "Webhook Settings",
1369
+ "type": "array",
1370
+ "orderable": false,
1371
+ "items": [
1372
+ "webhook_port",
1373
+ "webhook_listen_host",
1374
+ "cache_directory",
1375
+ "http_auth_user",
1376
+ "http_auth_pass",
1377
+ "https",
1378
+ "https_keyfile",
1379
+ "https_certfile"
1380
+ ]
1381
+ }
1382
+ ]
1383
+ },
1384
+ {
1385
+ "type": "fieldset",
1386
+ "title": "Webhook Devices",
1387
+ "expandable": true,
1388
+ "expanded": false,
1389
+ "items": [
1390
+ {
1391
+ "type": "section",
1392
+ "title": "Sensors",
1393
+ "expandable": true,
1394
+ "expanded": false,
1395
+ "items": [
1396
+ {
1397
+ "title": "Sensors",
1398
+ "type": "array",
1399
+ "orderable": false,
1400
+ "items": [
1401
+ "sensors[].id",
1402
+ "sensors[].name",
1403
+ "sensors[].type",
1404
+ "sensors[].autoRelease",
1405
+ "sensors[].autoReleaseTime"
1406
+ ]
1407
+ }
1408
+ ]
1409
+ },
1410
+ {
1411
+ "type": "section",
1412
+ "title": "Switches",
1413
+ "expandable": true,
1414
+ "expanded": false,
1415
+ "items": [
1416
+ {
1417
+ "title": "Switches",
1418
+ "type": "array",
1419
+ "orderable": false,
1420
+ "items": [
1421
+ "switches[].id",
1422
+ "switches[].name",
1423
+ "switches[].rejectUnauthorized",
1424
+ "switches[].on_url",
1425
+ "switches[].on_method",
1426
+ "switches[].on_body",
1427
+ "switches[].on_headers",
1428
+ "switches[].off_url",
1429
+ "switches[].off_method",
1430
+ "switches[].off_body",
1431
+ "switches[].off_headers"
1432
+ ]
1433
+ }
1434
+ ]
1435
+ },
1436
+ {
1437
+ "type": "section",
1438
+ "title": "Push Buttons",
1439
+ "expandable": true,
1440
+ "expanded": false,
1441
+ "items": [
1442
+ {
1443
+ "title": "Push Button",
1444
+ "type": "array",
1445
+ "orderable": false,
1446
+ "items": [
1447
+ "pushbuttons[].id",
1448
+ "pushbuttons[].name",
1449
+ "pushbuttons[].rejectUnauthorized",
1450
+ "pushbuttons[].push_url",
1451
+ "pushbuttons[].push_method",
1452
+ "pushbuttons[].push_body",
1453
+ "pushbuttons[].push_headers"
1454
+ ]
1455
+ }
1456
+ ]
1457
+ },
1458
+ {
1459
+ "type": "section",
1460
+ "title": "Doorbells",
1461
+ "expandable": true,
1462
+ "expanded": false,
1463
+ "items": [
1464
+ {
1465
+ "title": "Doorbell",
1466
+ "type": "array",
1467
+ "orderable": false,
1468
+ "items": [
1469
+ "doorbells[].id",
1470
+ "doorbells[].name",
1471
+ "doorbells[].double_press",
1472
+ "doorbells[].long_press"
1473
+ ]
1474
+ }
1475
+ ]
1476
+ },
1477
+ {
1478
+ "type": "section",
1479
+ "title": "Lights",
1480
+ "expandable": true,
1481
+ "expanded": false,
1482
+ "items": [
1483
+ {
1484
+ "title": "Lights",
1485
+ "type": "array",
1486
+ "orderable": false,
1487
+ "items": [
1488
+ "lights[].id",
1489
+ "lights[].name",
1490
+ "lights[].rejectUnauthorized",
1491
+ "lights[].on_url",
1492
+ "lights[].on_method",
1493
+ "lights[].on_body",
1494
+ "lights[].on_headers",
1495
+ "lights[].off_url",
1496
+ "lights[].off_method",
1497
+ "lights[].off_body",
1498
+ "lights[].off_headers",
1499
+ "lights[].brightness_url",
1500
+ "lights[].brightness_method",
1501
+ "lights[].brightness_body",
1502
+ "lights[].brightness_headers",
1503
+ "lights[].brightness_factor"
1504
+ ]
1505
+ }
1506
+ ]
1507
+ },
1508
+ {
1509
+ "type": "section",
1510
+ "title": "CO2 Sensors",
1511
+ "expandable": true,
1512
+ "expanded": false,
1513
+ "items": [
1514
+ {
1515
+ "title": "CO2 Sensor",
1516
+ "type": "array",
1517
+ "orderable": false,
1518
+ "items": [
1519
+ "co2sensors[].id",
1520
+ "co2sensors[].name",
1521
+ "co2sensors[].co2_peak_level"
1522
+ ]
1523
+ }
1524
+ ]
1525
+ },
1526
+ {
1527
+ "type": "section",
1528
+ "title": "Thermostats",
1529
+ "expandable": true,
1530
+ "expanded": false,
1531
+ "items": [
1532
+ {
1533
+ "title": "Thermostats",
1534
+ "type": "array",
1535
+ "orderable": false,
1536
+ "items": [
1537
+ "thermostats[].id",
1538
+ "thermostats[].name",
1539
+ "thermostats[].rejectUnauthorized",
1540
+ "thermostats[].set_target_temperature_url",
1541
+ "thermostats[].set_target_temperature_method",
1542
+ "thermostats[].set_target_temperature_body",
1543
+ "thermostats[].set_target_temperature_headers",
1544
+ "thermostats[].set_target_heating_cooling_state_url",
1545
+ "thermostats[].set_target_heating_cooling_state_method",
1546
+ "thermostats[].set_target_heating_cooling_state_body",
1547
+ "thermostats[].set_target_heating_cooling_state_headers"
1548
+ ]
1549
+ }
1550
+ ]
1551
+ },
1552
+ {
1553
+ "type": "section",
1554
+ "title": "Outlets",
1555
+ "expandable": true,
1556
+ "expanded": false,
1557
+ "items": [
1558
+ {
1559
+ "title": "Outlets",
1560
+ "type": "array",
1561
+ "orderable": false,
1562
+ "items": [
1563
+ "outlets[].id",
1564
+ "outlets[].name",
1565
+ "outlets[].rejectUnauthorized",
1566
+ "outlets[].on_url",
1567
+ "outlets[].on_method",
1568
+ "outlets[].on_body",
1569
+ "outlets[].on_headers",
1570
+ "outlets[].off_url",
1571
+ "outlets[].off_method",
1572
+ "outlets[].off_body",
1573
+ "outlets[].off_headers"
1574
+ ]
1575
+ }
1576
+ ]
1577
+ },
1578
+ {
1579
+ "type": "section",
1580
+ "title": "Security Systems",
1581
+ "expandable": true,
1582
+ "expanded": false,
1583
+ "items": [
1584
+ {
1585
+ "title": "Security",
1586
+ "type": "array",
1587
+ "orderable": false,
1588
+ "items": [
1589
+ "security[].id",
1590
+ "security[].name",
1591
+ "security[].rejectUnauthorized",
1592
+ "security[].set_state_url",
1593
+ "security[].set_state_method",
1594
+ "security[].set_state_body",
1595
+ "security[].set_state_headers"
1596
+ ]
1597
+ }
1598
+ ]
1599
+ },
1600
+ {
1601
+ "type": "section",
1602
+ "title": "Garage Door Openers",
1603
+ "expandable": true,
1604
+ "expanded": false,
1605
+ "items": [
1606
+ {
1607
+ "title": "Garage Door Openers",
1608
+ "type": "array",
1609
+ "orderable": false,
1610
+ "items": [
1611
+ "garagedooropeners[].id",
1612
+ "garagedooropeners[].name",
1613
+ "garagedooropeners[].rejectUnauthorized",
1614
+ "garagedooropeners[].open_url",
1615
+ "garagedooropeners[].open_method",
1616
+ "garagedooropeners[].open_body",
1617
+ "garagedooropeners[].open_headers",
1618
+ "garagedooropeners[].close_url",
1619
+ "garagedooropeners[].close_method",
1620
+ "garagedooropeners[].close_body",
1621
+ "garagedooropeners[].close_headers"
1622
+ ]
1623
+ }
1624
+ ]
1625
+ },
1626
+ {
1627
+ "type": "section",
1628
+ "title": "Stateless Switches",
1629
+ "expandable": true,
1630
+ "expanded": false,
1631
+ "items": [
1632
+ {
1633
+ "title": "Stateless Switches",
1634
+ "type": "array",
1635
+ "orderable": false,
1636
+ "items": [
1637
+ {
1638
+ "type": "section",
1639
+ "title": "Stateless Switches",
1640
+ "expandable": true,
1641
+ "expanded": true,
1642
+ "items": [
1643
+ "statelessswitches[].id",
1644
+ "statelessswitches[].name",
1645
+ {
1646
+ "type": "section",
1647
+ "title": "Buttons",
1648
+ "expandable": true,
1649
+ "expanded": true,
1650
+ "items": [
1651
+ {
1652
+ "title": "Buttons",
1653
+ "type": "array",
1654
+ "orderable": false,
1655
+ "items": [
1656
+ "statelessswitches[].buttons[].name",
1657
+ "statelessswitches[].buttons[].double_press",
1658
+ "statelessswitches[].buttons[].long_press"
1659
+ ]
1660
+ }
1661
+ ]
1662
+ }
1663
+ ]
1664
+ }
1665
+ ]
1666
+ }
1667
+ ]
1668
+ },
1669
+ {
1670
+ "type": "section",
1671
+ "title": "Window Coverings",
1672
+ "expandable": true,
1673
+ "expanded": false,
1674
+ "items": [
1675
+ {
1676
+ "title": "Window Coverings",
1677
+ "type": "array",
1678
+ "orderable": false,
1679
+ "items": [
1680
+ "windowcoverings[].id",
1681
+ "windowcoverings[].name",
1682
+ "windowcoverings[].rejectUnauthorized",
1683
+ "windowcoverings[].open_url",
1684
+ "windowcoverings[].open_method",
1685
+ "windowcoverings[].open_body",
1686
+ "windowcoverings[].open_headers",
1687
+ "windowcoverings[].open_80_url",
1688
+ "windowcoverings[].open_80_method",
1689
+ "windowcoverings[].open_80_body",
1690
+ "windowcoverings[].open_80_headers",
1691
+ "windowcoverings[].open_60_url",
1692
+ "windowcoverings[].open_60_method",
1693
+ "windowcoverings[].open_60_body",
1694
+ "windowcoverings[].open_60_headers",
1695
+ "windowcoverings[].open_40_url",
1696
+ "windowcoverings[].open_40_method",
1697
+ "windowcoverings[].open_40_body",
1698
+ "windowcoverings[].open_40_headers",
1699
+ "windowcoverings[].open_20_url",
1700
+ "windowcoverings[].open_20_method",
1701
+ "windowcoverings[].open_20_body",
1702
+ "windowcoverings[].open_20_headers",
1703
+ "windowcoverings[].close_url",
1704
+ "windowcoverings[].close_method",
1705
+ "windowcoverings[].close_body",
1706
+ "windowcoverings[].close_headers"
1707
+ ]
1708
+ }
1709
+ ]
1710
+ },
1711
+ {
1712
+ "type": "section",
1713
+ "title": "Lock Mechanisms",
1714
+ "expandable": true,
1715
+ "expanded": false,
1716
+ "items": [
1717
+ {
1718
+ "title": "Lock Mechanisms",
1719
+ "type": "array",
1720
+ "orderable": false,
1721
+ "items": [
1722
+ "lockmechanisms[].id",
1723
+ "lockmechanisms[].name",
1724
+ "lockmechanisms[].rejectUnauthorized",
1725
+ "lockmechanisms[].open_url",
1726
+ "lockmechanisms[].open_method",
1727
+ "lockmechanisms[].open_body",
1728
+ "lockmechanisms[].open_headers",
1729
+ "lockmechanisms[].close_url",
1730
+ "lockmechanisms[].close_method",
1731
+ "lockmechanisms[].close_body",
1732
+ "lockmechanisms[].close_headers"
1733
+ ]
1734
+ }
1735
+ ]
1736
+ },
1737
+ {
1738
+ "type": "section",
1739
+ "title": "Fanv2",
1740
+ "expandable": true,
1741
+ "expanded": false,
1742
+ "items": [
1743
+ {
1744
+ "title": "Fanv2",
1745
+ "type": "array",
1746
+ "orderable": false,
1747
+ "items": [
1748
+ "fanv2s[].id",
1749
+ "fanv2s[].name",
1750
+ "fanv2s[].rejectUnauthorized",
1751
+ "fanv2s[].on_url",
1752
+ "fanv2s[].on_method",
1753
+ "fanv2s[].on_body",
1754
+ "fanv2s[].on_headers",
1755
+ "fanv2s[].off_url",
1756
+ "fanv2s[].off_method",
1757
+ "fanv2s[].off_body",
1758
+ "fanv2s[].off_headers",
1759
+ "fanv2s[].speed_url",
1760
+ "fanv2s[].speed_method",
1761
+ "fanv2s[].speed_body",
1762
+ "fanv2s[].speed_headers",
1763
+ "fanv2s[].speed_factor",
1764
+ "fanv2s[].enableLockPhysicalControls",
1765
+ "fanv2s[].lock_url",
1766
+ "fanv2s[].lock_method",
1767
+ "fanv2s[].lock_body",
1768
+ "fanv2s[].lock_headers",
1769
+ "fanv2s[].unlock_url",
1770
+ "fanv2s[].unlock_method",
1771
+ "fanv2s[].unlock_body",
1772
+ "fanv2s[].unlock_headers",
1773
+ "fanv2s[].enableTargetStateControls",
1774
+ "fanv2s[].target_state_url",
1775
+ "fanv2s[].target_state_method",
1776
+ "fanv2s[].target_state_body",
1777
+ "fanv2s[].target_state_headers",
1778
+ "fanv2s[].enableSwingModeControls",
1779
+ "fanv2s[].swing_mode_url",
1780
+ "fanv2s[].swing_mode_method",
1781
+ "fanv2s[].swing_mode_body",
1782
+ "fanv2s[].swing_mode_headers",
1783
+ "fanv2s[].rotation_direction_url",
1784
+ "fanv2s[].rotation_direction_method",
1785
+ "fanv2s[].rotation_direction_body",
1786
+ "fanv2s[].rotation_direction_headers"
1787
+ ]
1788
+ }
1789
+ ]
1790
+ },
1791
+ {
1792
+ "type": "section",
1793
+ "title": "Valves",
1794
+ "expandable": true,
1795
+ "expanded": false,
1796
+ "items": [
1797
+ {
1798
+ "title": "Valves",
1799
+ "type": "array",
1800
+ "orderable": false,
1801
+ "items": [
1802
+ "valves[].id",
1803
+ "valves[].name",
1804
+ "valves[].type",
1805
+ "valves[].rejectUnauthorized",
1806
+ "valves[].on_url",
1807
+ "valves[].on_method",
1808
+ "valves[].on_body",
1809
+ "valves[].on_headers",
1810
+ "valves[].off_url",
1811
+ "valves[].off_method",
1812
+ "valves[].off_body",
1813
+ "valves[].off_headers"
1814
+ ]
1815
+ }
1816
+ ]
1817
+ }
1818
+ ]
1819
+ }
1820
+ ]
1821
+ }