iobroker.zigbee 1.8.23 → 1.8.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +422 -415
  3. package/admin/adapter-settings.js +244 -244
  4. package/admin/admin.js +2991 -2981
  5. package/admin/i18n/de/translations.json +108 -108
  6. package/admin/i18n/en/translations.json +108 -108
  7. package/admin/i18n/es/translations.json +102 -102
  8. package/admin/i18n/fr/translations.json +108 -108
  9. package/admin/i18n/it/translations.json +102 -102
  10. package/admin/i18n/nl/translations.json +108 -108
  11. package/admin/i18n/pl/translations.json +108 -108
  12. package/admin/i18n/pt/translations.json +102 -102
  13. package/admin/i18n/ru/translations.json +108 -108
  14. package/admin/i18n/uk/translations.json +108 -108
  15. package/admin/i18n/zh-cn/translations.json +102 -102
  16. package/admin/img/LED1923R5.png +0 -0
  17. package/admin/img/philips_hue_lom001.png +0 -0
  18. package/admin/index.html +163 -159
  19. package/admin/index_m.html +1360 -1356
  20. package/admin/moment.min.js +1 -1
  21. package/admin/shuffle.min.js +2 -2
  22. package/admin/tab_m.html +1021 -1009
  23. package/admin/vis-network.min.css +1 -1
  24. package/admin/vis-network.min.js +26 -27
  25. package/admin/words.js +110 -110
  26. package/docs/de/basedocu.md +19 -19
  27. package/docs/de/readme.md +126 -126
  28. package/docs/en/readme.md +128 -128
  29. package/docs/flashing_via_arduino_(en).md +110 -110
  30. package/docs/ru/readme.md +28 -28
  31. package/docs/tutorial/groups-1.png +0 -0
  32. package/docs/tutorial/groups-2.png +0 -0
  33. package/docs/tutorial/tab-dev-1.png +0 -0
  34. package/io-package.json +41 -40
  35. package/lib/backup.js +171 -171
  36. package/lib/binding.js +319 -319
  37. package/lib/colors.js +465 -465
  38. package/lib/commands.js +534 -534
  39. package/lib/developer.js +151 -145
  40. package/lib/devices.js +3139 -3135
  41. package/lib/exclude.js +162 -162
  42. package/lib/exposes.js +913 -913
  43. package/lib/groups.js +345 -345
  44. package/lib/json.js +59 -59
  45. package/lib/networkmap.js +55 -55
  46. package/lib/ota.js +198 -198
  47. package/lib/rgb.js +297 -297
  48. package/lib/seriallist.js +48 -48
  49. package/lib/states.js +6420 -6420
  50. package/lib/statescontroller.js +672 -672
  51. package/lib/tools.js +54 -54
  52. package/lib/utils.js +165 -165
  53. package/lib/zbBaseExtension.js +36 -36
  54. package/lib/zbDelayedAction.js +144 -144
  55. package/lib/zbDeviceAvailability.js +319 -319
  56. package/lib/zbDeviceConfigure.js +151 -147
  57. package/lib/zbDeviceEvent.js +48 -48
  58. package/lib/zigbeecontroller.js +1014 -989
  59. package/main.js +2 -2
  60. package/package.json +14 -14
  61. package/support/docgen.js +93 -93
package/admin/tab_m.html CHANGED
@@ -1,1009 +1,1021 @@
1
- <html>
2
- <head>
3
- <!-- these 4 files always have to be included -->
4
- <link rel="stylesheet" type="text/css" href="../../lib/css/materialize.css">
5
- <link rel="stylesheet" type="text/css" href="../../css/adapter.css"/>
6
-
7
- <script type="text/javascript" src="../../lib/js/jquery-3.2.1.min.js"></script>
8
- <script type="text/javascript" src="../../socket.io/socket.io.js"></script>
9
- <!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js"></script>
10
- <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css"/> -->
11
- <script type="text/javascript" src="vis-network.min.js"></script>
12
- <link rel="stylesheet" type="text/css" href="vis-network.min.css"/>
13
-
14
- <!-- these files always have to be included -->
15
- <script type="text/javascript" src="../../js/translate.js"></script>
16
- <script type="text/javascript" src="../../lib/js/materialize.js"></script>
17
- <script type="text/javascript" >var noConfigDialog = true;</script><!-- Deactivate buttons -->
18
- <script type="text/javascript" src="adapter-settings.js"></script>
19
-
20
- <script>
21
- // overload showMessage
22
- function showMessage(message, title, icon) {
23
- var $dialogMessage;
24
- // noinspection JSJQueryEfficiency
25
- $dialogMessage = $('#dialog-message');
26
- if (!$dialogMessage.length) {
27
- $('body').append(
28
- '<div class="m"><div id="dialog-message" class="modal modal-fixed-footer">' +
29
- ' <div class="modal-content">' +
30
- ' <h6 class="dialog-title title"></h6>' +
31
- ' <p><i class="large material-icons dialog-icon"></i><span class="dialog-text"></span></p>' +
32
- ' </div>' +
33
- ' <div class="modal-footer">' +
34
- ' <a class="modal-action modal-close waves-effect waves-green btn-flat translate">Ok</a>' +
35
- ' </div>' +
36
- '</div></div>');
37
- $dialogMessage = $('#dialog-message');
38
- }
39
- if (icon) {
40
- $dialogMessage.find('.dialog-icon')
41
- .show()
42
- .html(icon);
43
- } else {
44
- $dialogMessage.find('.dialog-icon').hide();
45
- }
46
- if (title) {
47
- $dialogMessage.find('.dialog-title').html(title).show();
48
- } else {
49
- $dialogMessage.find('.dialog-title').hide();
50
- }
51
- $dialogMessage.find('.dialog-text').html(message);
52
- $dialogMessage.modal().modal('open');
53
- }
54
- </script>
55
- <script type="text/javascript" src="words.js"></script>
56
-
57
- <script type="text/javascript" src="admin.js"></script>
58
- <script type="text/javascript" src="shuffle.min.js"></script>
59
- <script type="text/javascript" src="moment.min.js"></script>
60
- <style>
61
- .m.react-dark .tabs {
62
- background-color: #272727 !important;
63
- }
64
- .row.navbar-fixed {
65
- height: 0 !important;
66
- }
67
- .m .col .select-wrapper+label, .m .col input+label:not(.active) {
68
- top: -26px;
69
- }
70
- .select-wrapper li span {
71
- pointer-events: none; /* workarround for checkbox in select, else checkbox and label not clickable */
72
- }
73
- .m .col input+label {
74
- font-size: 0.8rem;
75
- }
76
- .m span{
77
- font-size: 0.9em;
78
- }
79
- .m .zlogo {
80
- padding: 0.5rem;
81
- width: 64px;
82
- }
83
- .input-group {
84
- display: table;
85
- }
86
- .input-group input, .suffix {
87
- display: table-cell;
88
- }
89
- .suffix {
90
- width:1%;
91
- }
92
- .input-field.suffix a {
93
- position: absolute;
94
- font-size: 2rem;
95
- top: 0;
96
- right: 0;
97
- }
98
-
99
- .input-field.suffix a.active {
100
- color: #26a69a;
101
- }
102
-
103
- .input-field.suffix .select-wrapper {
104
- margin-right: 3rem;
105
- width: 92%;
106
- width: calc(100% - 3rem);
107
- }
108
-
109
- .input-field.suffix label {
110
- margin-right: 3rem;
111
- }
112
- #tabs {
113
- margin-top: 120px;
114
- }
115
- #main {
116
- margin-bottom: -50px;
117
- height: 100%;
118
- overflow-y: auto;
119
- }
120
- .page:not(.active) {
121
- /* prevents 'all pages visible for a moment at first load' (because pages are loaded before materialize is loaded)*/
122
- display: none;
123
- }
124
- #dev-selectors > div {
125
- margin-top: 30px;
126
- border-bottom: 1px solid lightblue;
127
- }
128
- #dev_result_log {
129
- overflow: scroll;
130
- height: 10em;
131
- padding: 0.5em;
132
- }
133
- #expert-toggle {
134
- margin-bottom: 3em;
135
- }
136
- #expert-json {
137
- min-height: 18rem;
138
- overflow-y: scroll;
139
- }
140
- #viewconfigbtn {
141
- left: 23px;
142
- width: 45px;
143
- top: 120px;
144
- }
145
- .m .card {
146
- margin: 0px;
147
- width: 100%;
148
- height: 100%;
149
- position: relative;
150
- -webkit-transition: -webkit-transform 0.5s;
151
- -moz-transition: -moz-transform 0.5s;
152
- -o-transition: -o-transform 0.5s;
153
- transition: transform 0.5s;
154
- -webkit-transform-style: preserve-3d;
155
- -moz-transform-style: preserve-3d;
156
- -o-transform-style: preserve-3d;
157
- transform-style: preserve-3d;
158
- -webkit-transform-origin: 50% 50%;
159
- transform-origin: 50% 50%;
160
- }
161
- .m .card .zcard {
162
- padding: 10px;
163
- }
164
- .m .card div {
165
- -webkit-backface-visibility: hidden;
166
- -moz-backface-visibility: hidden;
167
- -o-backface-visibility: hidden;
168
- backface-visibility: hidden;
169
- }
170
- .device {
171
- padding: 5px;
172
- width: 330px;
173
- height: 200px;
174
- -webkit-perspective: 800px;
175
- -moz-perspective: 800px;
176
- -o-perspective: 800px;
177
- perspective: 800px;
178
- }
179
- .m .zcard .card-title {
180
- font-size: 16px;
181
- font-weight: 300;
182
- }
183
- .card-action .card-reveal-buttons {
184
- left: 0;
185
- position: absolute;
186
- border: none;
187
- bottom: 0;
188
- height: 50px;
189
- /*background: #fff;*/
190
- right: 0;
191
- /*text-align: right;*/
192
- padding: 10px;
193
- }
194
- .card-action i {
195
- font-size: 1.7em;
196
- }
197
- .card-action button {
198
- margin-right: 5px;
199
- }
200
- .small-button {
201
- background: #fff;
202
- color: #0e2e4a;
203
- padding: 1px 0 0 0;
204
- cursor: pointer;
205
- transition: .2s linear;
206
- }
207
- .small-button, .small-button-empty {
208
- width: 24px;
209
- margin: 0 1px 0 0;
210
- display: inline-block;
211
- position: relative;
212
- z-index: 1;
213
- border: 0;
214
- border-radius: 2px;
215
- }
216
- i.icon-green {
217
- color: green;
218
- }
219
- .m.react-dark i.icon-green {
220
- color: green!important;
221
- }
222
- .m.react-blue i.icon-green {
223
- color: green!important;
224
- }
225
- i.icon-black {
226
- color: black;
227
- }
228
- i.icon-blue {
229
- color: blue;
230
- }
231
- .m.react-blue div.bg_red {
232
- background-color: #400000;
233
- color: DimGray;
234
- }
235
- .m div.bg_red {
236
- background-color: LightGray;
237
- color: DimGray;
238
- }
239
- .m.react-dark div.bg_red {
240
- background-color: #400000;
241
- }
242
- .m.react-dark i.icon-blue {
243
- color: rgb(100, 181, 246)!important;
244
- }
245
- .m.react-blue i.icon-blue {
246
- color: rgb(100, 181, 246)!important;
247
- }
248
- i.icon-red {
249
- color: red;
250
- }
251
- .m.react-dark i.icon-red {
252
- color: red!important;
253
- }
254
- .m.react-blue i.icon-red {
255
- color: red!important;
256
- }
257
- i.icon-orange {
258
- color: orange;
259
- }
260
- .m.react-dark i.icon-orange {
261
- color: orange!important;
262
- }
263
- .m.react-blue i.icon-orange {
264
- color: orange!important;
265
- }
266
- .m .btn-small.btn-flat {
267
- padding: 0 4px;
268
- }
269
- .m .row .col.tool {
270
- padding: 0 .1rem;
271
- }
272
- .m span.label {
273
- display: inline-block;
274
- width: 100px;
275
- font-weight: bold;
276
- }
277
- .m span.label.dash {
278
- display: inline-block;
279
- width: 140px;
280
- font-weight: bold;
281
- }
282
- .m span.labelinfo {
283
- display: inline-block;
284
- width: 60px;
285
- font-weight: bold;
286
- }
287
- .forcedelete {
288
- float: left;
289
- padding-left: 1rem;
290
- padding-top: 1rem;
291
- }
292
- .modal-header {
293
- position: relative;
294
- height: 50px;
295
- padding: 20px 20px 5px 20px;
296
- border-bottom: 1px solid rgba(0,0,0,.1);
297
- }
298
- .m .modal.modal-fixed-footer.modal-fixed-header .modal-content{
299
- height: calc(100% - 140px)!important;
300
- padding-top: 5px;
301
- padding-bottom: 5px;
302
- }
303
- .m .page {
304
- height: calc(100% - 120px);
305
- overflow: auto;
306
- }
307
- #map {
308
- margin: 0px;
309
- }
310
- #tab-main .main-toolbar-table .filter-input {
311
- display: inline-table;
312
- padding-left: 6px;
313
- height: 24px;
314
- width: 10rem;
315
- margin-top: 5px;
316
- margin-bottom: 0;
317
- }
318
- .face {
319
- overflow:hidden;
320
- position:absolute;
321
- height: 100%;
322
- width: 100%;
323
- /*background: #fff;*/
324
- z-index: 2;
325
- -webkit-transform: rotateY( 0deg );
326
- -moz-transform: rotateY( 0deg );
327
- -o-transform: rotateY( 0deg );
328
- transform: rotateY( 0deg );
329
- }
330
- .back {
331
- overflow:hidden;
332
- position:absolute;
333
- display: block;
334
- box-sizing: border-box;
335
- height: 100%;
336
- width: 100%;
337
- /*background: #fff;*/
338
- -webkit-transform: rotateY( -180deg );
339
- -moz-transform: rotateY( -180deg );
340
- -o-transform: rotateY( -180deg );
341
- transform: rotateY( -180deg );
342
- }
343
- .card.flipped {
344
- -webkit-transform: rotateY( 180deg );
345
- -moz-transform: rotateY( 180deg );
346
- -o-transform: rotateY( 180deg );
347
- transform: rotateY( 180deg );
348
- }
349
- .m .card .card-action {
350
- padding: 22px 24px;
351
- }
352
- .m .switch label .lever {
353
- width: 30px;
354
- height: 12px;
355
- }
356
- .m .switch label .lever:after, .m .switch label .lever:before {
357
- width: 14px;
358
- height: 14px;
359
- border-radius: 50%;
360
- left: 0;
361
- top: -1px;
362
- }
363
- .m .dash input[type=range] {
364
- width: 70px;
365
- margin: 0px;
366
- }
367
- .m .dash input[type=checkbox]:checked+span:not(.lever):before {
368
- width: 10px;
369
- height: 16px;
370
- }
371
- .m .dash input[type=checkbox]+span:not(.lever):before {
372
- width: 10px;
373
- height: 12px;
374
- }
375
- .m .dash input[type="checkbox"]+span:not(.lever) {
376
- width: 10px;
377
- height: 12px;
378
- margin-left: 25px;
379
- margin-top: -1px;
380
- }
381
- .m .dash input[type=checkbox]:not(:checked):disabled+span:not(.lever):before {
382
- background-color: rgba(0,0,0,.1);
383
- }
384
- .m span .dash.value {
385
- margin-left: 25px;
386
- }
387
- .m .idletime {
388
- padding-left: 15px;
389
- }
390
- .m.react-blue .switch label input[type="checkbox"]:checked + .lever {
391
- background-color: #436a93;
392
- }
393
- .m.react-blue .switch label .lever {
394
- background-color: #4dabf5;
395
- }
396
- .m.react-blue .switch label .lever:after {
397
- background-color: #436a93;
398
- }
399
-
400
- .m.react-dark .switch label input[type="checkbox"]:checked + .lever {
401
- background-color: #436a93;
402
- }
403
- .m.react-dark .switch label .lever {
404
- background-color: #4dabf5;
405
- }
406
- .m.react-dark .switch label .lever:after {
407
- background-color: #436a93;
408
- }
409
- </style>
410
- </head>
411
- <body>
412
- <!-- you have to put your config page in a div with id adapter-container -->
413
- <div id="main" class="m adapter-container">
414
- <div class="row navbar-fixed">
415
- <nav class="nav-extended">
416
- <div class="nav-wrapper">
417
- <div class="col">
418
- <img src="zigbee.png" class="zlogo left" height="64px"/>
419
- </div>
420
- <div class="col">
421
- <h5 class="translate center-align">Zigbee adapter</h5>
422
- </div>
423
- <ul id="nav-mobile" class="right">
424
- <li>
425
- <a id="state_cleanup_btn" class="btn-floating waves-effect waves-light red tooltipped center-align hoverable translateT" title="State Cleanup">
426
- <i class="material-icons large icon-blue">sync</i></a>
427
- </li>
428
- <li>
429
- <a id="fw_check_btn" class="btn-floating waves-effect waves-light blue tooltipped center-align hoverable translateT" title="Check firmware updates">
430
- <i class="material-icons large icon-blue">system_update</i></a>
431
- </li>
432
- <li>
433
- <a id="add_grp_btn" class="btn-floating waves-effect waves-light brown tooltipped center-align hoverable translateT" title="Add Group">
434
- <i class="material-icons large">group_work</i></a>
435
- </li>
436
- <li>
437
- <a id="touchlink_btn" class="btn-floating waves-effect waves-light green tooltipped center-align hoverable translateT" title="Touchlink reset and pairing">
438
- <i class="material-icons large">wifi_tethering</i></a>
439
- </li>
440
- <li>
441
- <a id="code_pairing"
442
- class="btn-floating waves-effect waves-light green tooltipped center-align hoverable translateT"
443
- title="Pairing with QR Code">
444
- <i class="material-icons large">select_all</i></a>
445
- </li>
446
- <li>
447
- <a id="pairing" class="btn-floating waves-effect waves-light green tooltipped center-align hoverable translateT" title="Let's pairing!">
448
- <i class="material-icons large">leak_add</i></a>
449
- </li>
450
- </ul>
451
- </div>
452
- <div class="nav-content">
453
- <ul class="tabs tabs-transparent">
454
- <li class="tab col s2"><a href="#tab-main" id="devs" class="translate">Devices</a></li>
455
- <li class="tab col s2"><a href="#tab-map" id="tabmap" class="translate">Network map</a></li>
456
- <li class="tab col s2"><a href="#tab-binding" class="translate">Binding</a></li>
457
- <li class="tab col s2"><a href="#tab-exclude" class="translate">Excludes</a></li>
458
- <!--li class="tab col s2"><a href="#tab-sett" id="settings" class="translate">Settings</a></li-->
459
- <!-- li class="tab col s2"><a href="#tab-dev" id="develop" class="translate">Developer</a></li-->
460
- </ul>
461
- </div>
462
- </nav>
463
- </div>
464
- <div id="tabs" class="tabs-content row">
465
- <div id="tab-main" class="col s12 page active">
466
- <div class="navbar-fixed" style="height: 36px;">
467
- <nav style="height: 36px; margin-left: -12px; line-height: 24px;">
468
- <ul id="nav-mobile" class="left">
469
- <li>
470
- <a id="rotate_btn" class="btn-floating waves-effect waves-light blue tooltipped center-align hoverable translateT" title="Rotate cards">
471
- <i class="material-icons large icon-blue">3d_rotation</i>
472
- </a>
473
- </li>
474
- <li>
475
- <div class="col main-toolbar-table-types-tools main-toolbar-table-filter input-field" style="line-height: 24px;">
476
- <i class="material-icons prefix" style="line-height: 24px;">search</i>
477
- <input id="device-search" class="filter-input translateP" placeholder="Искать" autocomplete="new-password" readonly="readonly" onfocus="if (this.hasAttribute('readonly')) {this.removeAttribute('readonly'); this.blur(); this.focus();}" data-lang-placeholder="Filter">
478
- <a class="filter-clear btn-floating btn-very-small translateT red lighten-3" title="Очистить" data-lang-title="clear" style="display: none;"><i class="material-icons">clear</i></a>
479
- </div>
480
-
481
- </li>
482
- <li>
483
- <div class="col input-field" style="line-height: 24px;">
484
- <i class="material-icons left" style="line-height: 24px; margin-top: 5px;">sort</i>
485
- <a id="device-order-btn" class="dropdown-trigger btn" href="#" data-target="device-order">Default</a>
486
- <ul id="device-order" class="dropdown-content" tabindex="0">
487
- <li class="device-order-item" data-type="a-z" tabindex="0"><a class="translate" data-lang="A-Z">A-Z</a></li>
488
- <li class="device-order-item" data-type="default" tabindex="0"><a class="translate" data-lang="Default">Default</a></li>
489
- </ul>
490
- </div>
491
- </li>
492
- <li>
493
- <div class="col input-field" style="line-height: 24px;">
494
- <i class="material-icons left" style="line-height: 24px; margin-top: 5px;">art_track</i>
495
- <a id="room-filter-btn" class="dropdown-trigger btn" href="#" data-target="room-filter">All</a>
496
- <ul id="room-filter" class="dropdown-content" tabindex="0">
497
- </ul>
498
- </div>
499
- </li>
500
- </ul>
501
- </nav>
502
- </div>
503
- <div id="devices" class="row">
504
- </div>
505
- </div>
506
- <div id="tab-map" class="col s12 page">
507
- <div class="fixed-action-btn">
508
- <a id="refresh" class="btn-floating waves-effect waves-light blue tooltipped center-align hoverable translateT" title="Refresh"><i class="material-icons large">autorenew</i></a>
509
- </div>
510
- <div id="viewconfigbtn" class="fixed-action-btn top left" style="">
511
- <a id="viewconfig" class="btn-floating waves-effect waves-light orange tooltipped center-align hoverable translateT" title="View config"><i class="material-icons large">menu</i></a>
512
- </div>
513
- <div id="map" class="row">
514
- </div>
515
- </div>
516
- <div id="tab-sett" class="col s12 page">
517
- <div id="sett" class="row">
518
- <div class="input-field input-group col s12 m6 l4">
519
- <input id="port" type="text" class="value validate"/>
520
- <label for="port" class="translate">COM port name</label>
521
- <span class="suffix">
522
- <a id="selector" class='dropdown-trigger btn' href='#' data-target='ports'><i class="material-icons">arrow_drop_down</i></a>
523
- <!-- Dropdown Structure -->
524
- <ul id='ports' class='dropdown-content'>
525
- </ul>
526
- </span>
527
- </div>
528
- <div class="input-field col s12 m6 l4">
529
- <select id="adapterType" class="value">
530
- <option value="" disabled selected class="translate">Choose type</option>
531
- <option value="zstack">TI Z-Stack/CCxxxx</option>
532
- <option value="deconz">Deconz/Conbee</option>
533
- </select>
534
- <label class="translate">Type</label>
535
- </div>
536
- <div class="input-field col s6 m3 l3">
537
- <input id="countDown" type="number" min="0" max="180" class="value" />
538
- <label class="translate" for="countDown">Countdown</label>
539
- </div>
540
- </div>
541
- <div class="row">
542
- <h6>Network</h6>
543
- <div class="row">
544
- <div class="input-field col s12 m6 l4">
545
- <input id="extPanID" type="text" pattern="[a-fA-F\d]+" minlength="16" maxlength="16" class="validate value" />
546
- <label class="translate" for="extPanID">ExtPanID</label>
547
- </div>
548
- <div class="input-field col s12 m6 l8">
549
- <p class="translate">ExtPanIDText</p>
550
- </div>
551
- </div>
552
- <div class="row">
553
- <div class="input-field col s12 m6 l4">
554
- <input id="panID" type="number" min="1" max="65565" class="value" />
555
- <label class="translate" for="panID">PanID</label>
556
- </div>
557
- <div class="input-field col s12 m6 l8">
558
- <p class="translate">PanIDText</p>
559
- </div>
560
-
561
- </div>
562
- <div class="row">
563
- <div class="input-field suffix col s12 m6 l4">
564
- <select id="channel" class="value">
565
- <option value="" disabled selected class="translate">Choose channel</option>
566
- <option value="11">11</option>
567
- <option value="12">12</option>
568
- <option value="13">13</option>
569
- <option value="14">14</option>
570
- <option value="15">15</option>
571
- <option value="16">16</option>
572
- <option value="17">17</option>
573
- <option value="18">18</option>
574
- <option value="19">19</option>
575
- <option value="20">20</option>
576
- <option value="21">21</option>
577
- <option value="22">22</option>
578
- <option value="23">23</option>
579
- <option value="24">24</option>
580
- <option value="25">25</option>
581
- <option value="26">26</option>
582
- </select>
583
- <label class="translate">Channel</label>
584
- <a id="scan" class='btn' data-target='channel'><i class="material-icons">graphic_eq</i></a>
585
- </div>
586
- <div class="input-field col s12 m6 l8">
587
- <p class="translate">ChannelChangeText</p>
588
- </div>
589
- </div>
590
- <div class="input-field col s12 m6 l4">
591
- <input id="precfgkey" type="text" pattern="[a-fA-F\d]+" class="validate value"/>
592
- <label class="translate" for="precfgkey">Transport Key</label>
593
- </div>
594
- <div class="input-field col s12 m6 l8">
595
- <p class="translate">Tranport Key Text</p>
596
- </div>
597
- </div>
598
- <div class="row" style="margin-bottom: 90px">
599
- <h6>Others</h6>
600
- <div class="input-field col s12 m6 l4 col-disableLed">
601
- <input id="disableLed" type="checkbox" class="value" />
602
- <label class="translate" for="disableLed">Disable LED for cc2531</label>
603
- </div>
604
- <div class="input-field col s12 m6 l4 col-disablePing">
605
- <input id="disablePing" type="checkbox" class="value" />
606
- <label class="translate" for="disablePing">Disable active availability check</label>
607
- </div>
608
- <div class="input-field col s12 m6 l8 col-transmitPower">
609
- <select id="transmitPower" class="value" >
610
- <option value="" disabled selected class="translate">transmitPower</option>
611
- <option value="-22">low</option>
612
- <option value="0">norm</option>
613
- <option value="19">high</option>
614
- <option value="20">high+</option>
615
- </select>
616
- <label class="translate" for="transmitPower">transmitPower</label>
617
- </div>
618
- <div class="input-field col s12 m6 l4 col-disableLed">
619
- <input id="debugHerdsman" type="checkbox" class="value" />
620
- <label class="translate" for="debugHerdsman">Zigbee-herdsman debug info</label>
621
- </div>
622
- <div class="input-field col s12 m6 l6">
623
- <a id="reset-btn" class="waves-effect waves-light white-text btn-large translate">Reset...</a>
624
- </div>
625
- </div>
626
- </div>
627
-
628
- <div id="tab-groups" class="col s12 page">
629
- <div class="row">
630
- <div class="col s12">
631
- <div class="col s12">
632
- <table class="">
633
- <thead>
634
- <tr>
635
- <th data-name="num" class="translate">№</th>
636
- <th data-name="name" class="translate">Name</th>
637
- </tr>
638
- </thead>
639
- <tbody id="groups_table"></tbody>
640
- </table>
641
- </div>
642
- <a id="add_group" class="btn-floating waves-effect waves-light blue table-button-add tooltipped hoverable translateT" title="Add group">
643
- <i class="material-icons">add</i>
644
- </a>
645
- </div>
646
- </div>
647
- </div>
648
- <div id="tab-binding" class="col s12 page">
649
- <div class="fixed-action-btn">
650
- <a id="add_binding" class="btn-floating waves-effect waves-light blue tooltipped center-align hoverable translateT" title="Add binding"><i class="material-icons large">add</i></a>
651
- </div>
652
- <div id="binding" class="row">
653
- </div>
654
- </div>
655
- <div id="tab-exclude" class="col s12 page">
656
- <div class="row">
657
- <p class="translate">ExcludeTextTranslation</p>
658
- </div>
659
- <div class="fixed-action-btn" style="margin-bottom: 100px">
660
- <a id="add_exclude" class="btn-floating waves-effect waves-light blue tooltipped center-align hoverable translateT" title="Add exlude"><i class="material-icons large">add</i></a>
661
- </div>
662
- <div id="exclude" class="row">
663
- </div>
664
- </div>
665
- </div>
666
- </div>
667
-
668
- <div class="materialize-dialogs m">
669
- <div id="modaledit" class="modal">
670
- <div class="modal-content">
671
- <h3 class="translate">Config device</h3>
672
- <div class="row">
673
- <div class="col">
674
- <div class="input-field">
675
- <input id="d_name" type="text" class="value validate">
676
- <label for="d_name" class="translate">Name</label>
677
- </div>
678
- </div>
679
- </div>
680
- <div class="row epid0">
681
- <div class="col">
682
- <div class=endpointid>
683
- <p class="translate device_with_endpoint">Main Endpoint</p>
684
- </div>
685
- </div>
686
- <div class="col1">
687
- <div class="input-field groups">
688
- <select id="d_groups_ep0" class="materialSelect" multiple><option value="1">value</option></select>
689
- <label for="d_groups_ep0" class="translate">Groups</label>
690
- </div>
691
- </div>
692
- </div>
693
- <div class="row epid1">
694
- <div class="col epid">
695
- <div class=endpointid>
696
- <p class="translate device_with_endpoint">Sub Endpoint 1</p>
697
- </div>
698
- </div>
699
- <div class="col">
700
- <div class="input-field groups">
701
- <select id="d_groups_ep1" class="materialSelect" multiple><option value="1">value</option></select>
702
- <label for="d_groups_ep1" class="translate">Groups</label>
703
- </div>
704
- </div>
705
- </div>
706
- <div class="row epid2">
707
- <div class="col epid">
708
- <div class=endpointid>
709
- <p class="translate device_with_endpoint">Sub Endpoint 2</p>
710
- </div>
711
- </div>
712
- <div class="col">
713
- <div class="input-field groups">
714
- <select id="d_groups_ep2" class="materialSelect" multiple><option value="1">value</option></select>
715
- <label for="d_groups_ep2" class="translate">Groups</label>
716
- </div>
717
- </div>
718
- </div>
719
- <div class="row epid3">
720
- <div class="col epid">
721
- <div class=endpointid>
722
- <p class="translate device_with_endpoint">Sub Endpoint 3</p>
723
- </div>
724
- </div>
725
- <div class="col">
726
- <div class="input-field groups">
727
- <select id="d_groups_ep3" class="materialSelect" multiple><option value="1">value</option></select>
728
- <label for="d_groups_ep3" class="translate">Groups</label>
729
- </div>
730
- </div>
731
- </div>
732
- </div>
733
- <div class="modal-footer">
734
- <a name="save" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Save</a>
735
- <a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
736
- </div>
737
- </div>
738
- <div id="codeentry" class="modal">
739
- <div class="modal-content">
740
- <div class="addgroup">
741
- <h3 class="translate">Enter Pairing Code</h3>
742
- </div>
743
- <div class="row">
744
- <div class="input-field">
745
- <input id="qr_code" type="text" class="value validate">
746
- <label for="qr_code" class="translate">QR Code</label>
747
- </div>
748
- </div>
749
- </div>
750
- <div class="modal-footer">
751
- <a name="pair" href="#!"
752
- class="modal-action modal-close waves-effect waves-green btn green translate">Start Pairing</a>
753
- <a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
754
- </div>
755
- </div>
756
- <div id="groupedit" class="modal">
757
- <div class="modal-content">
758
- <div class = "addgroup">
759
- <h3 class="translate">Add Group</h3>
760
- </div>
761
- <div class = "editgroup">
762
- <h3 class="translate">Edit Group</h3>
763
- </div>
764
- <div class="row">
765
- <div class="col s4 m4 l2">
766
- <div class="input-field groupid">
767
- <input id="g_index" type="number" min="1" class="value validate">
768
- <label for="g_index" class="translate">№</label>
769
- </div>
770
- </div>
771
- <div class="input-field col s8 m8 l10">
772
- <input id="g_name" type="text" class="value validate">
773
- <label for="g_name" class="translate">Name</label>
774
- </div>
775
- </div>
776
- <div class="row hide">
777
- <div class="col s12">
778
- <div class="input-field members">
779
- <label for="g_members" class="translate">Members</label>
780
- <select id="g_members" class="materialSelect" multiple><option value="1">value</option></select>
781
- </div>
782
- </div>
783
- </div>
784
- </div>
785
- <div class="modal-footer">
786
- <a name="save" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Save</a>
787
- <a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
788
- </div>
789
- </div>
790
-
791
- <div id="modaldelete" class="modal">
792
- <div class="modal-content">
793
- <h3 class="translate">Delete confirmation</h3>
794
- <p>A bunch of text</p>
795
- </div>
796
- <div class="modal-footer">
797
- <div id="forcediv" class="hide forcedelete">
798
- <label>
799
- <input id="force" type="checkbox" class="value" />
800
- <span class="translate" for="force">Force delete (for lost devices)</span>
801
- </label>
802
- </div>
803
- <a name="yes" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Yes</a>
804
- <a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
805
- </div>
806
- </div>
807
-
808
- <div id="modalclean" class="modal">
809
- <div class="modal-content">
810
- <h3 class="translate">State cleanup confirmation</h3>
811
- <p>A bunch of text</p>
812
- </div>
813
- <div class="modal-footer">
814
- <div id="cforcediv" class="hide forcedelete">
815
- <input id="cforce" type="checkbox" class="value" />
816
- <label class="translate" for="cforce">Force removed states with custom configuration (history, upnp, etc.)</label>
817
- </div>
818
- <a name="yes" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Yes</a>
819
- <a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
820
- </div>
821
- </div>
822
-
823
- <div id="modalreconfigure" class="modal">
824
- <div class="modal-content">
825
- <h3 class="translate">Reconfigure device</h3>
826
- <p>A bunch of text</p>
827
- </div>
828
- <div class="modal-footer">
829
- <a name="yes" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Yes</a>
830
- <a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
831
- </div>
832
- </div>
833
-
834
- <div id="modalpairing" class="modal modal-fixed-footer">
835
- <div class="modal-content">
836
- <h3 class="translate">Pairing process</h3>
837
- <div class="progress">
838
- <div id="progress_line" class="determinate" style="width: 0%"></div>
839
- </div>
840
- <div class="row textarea">
841
- <textarea id="stdout" disabled="disabled" cols="120" rows="30" style="height: calc(100% - 115px)"></textarea>
842
- </div>
843
- </div>
844
- <div class="modal-footer">
845
- <!-- <a name="stop" href="#!" class="modal-action modal-close waves-effect waves-red btn-flat left">Stop</a> -->
846
- <a name="hide" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Hide</a>
847
- </div>
848
- </div>
849
-
850
- <div id="modalreset" class="modal">
851
- <div class="modal-content">
852
- <h3 class="translate">Reset confirmation</h3>
853
- <p class="translate">Reset Info</p>
854
- <a id="soft" data-mode="soft" class="modal-action modal-close waves-effect waves-red btn translate">Soft-Reset</a>
855
- <a id="hard" data-mode="hard" class="modal-action modal-close waves-effect waves-red btn translate">Hard-Reset</a>
856
- </div>
857
- <div class="modal-footer">
858
- <a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat translate">Cancel</a>
859
- </div>
860
- </div>
861
-
862
- <div id="modalviewconfig" class="modal modal-fixed-footer">
863
- <div class="modal-content">
864
- <h3 class="translate">Map view config</h3>
865
- <div class="row">
866
- <div class="input-field input-group col s12 m6 l6">
867
- <div id="filterParentTgl" class="input-field col s12 admin-tooltip-icon translateT" title="Show parent">
868
- <label for="filterParent" style="pointer-events: auto;">
869
- <!-- workaround input not clickable https://codepen.io/alexisdiel/pen/gxwPWj -->
870
- <input style="pointer-events: none;" id="filterParent" type="checkbox" class="filled-in" checked="checked"/>
871
- <span style="pointer-events: none; color:#0000ff;" class="translate">Parent/Child/Unknown</span>
872
- </label>
873
- </div>
874
- <div id="filterSiblTgl" class="input-field col s12 admin-tooltip-icon translateT" title="Show siblings">
875
- <label for="filterSibl" style="pointer-events: auto;">
876
- <input style="pointer-events: none;" id="filterSibl" type="checkbox" class="filled-in" checked="checked"/>
877
- <span style="pointer-events: none; color:#00bb00;" class="translate">Siblings</span>
878
- </label>
879
- </div>
880
- <div id="filterPrvChildTgl" class="input-field col s12 admin-tooltip-icon translateT" title="Show previous parents">
881
- <label for="filterPrvChild" style="pointer-events: auto;">
882
- <input style="pointer-events: none;" id="filterPrvChild" type="checkbox" class="filled-in"/>
883
- <span style="pointer-events: none; color:#555555;" class="translate">Previous Parents</span>
884
- </label>
885
- </div>
886
- <div id="filterMeshTgl" class="input-field col s12 admin-tooltip-icon translateT" title="Show full mesh">
887
- <label for="filterMesh" style="pointer-events: auto;">
888
- <input style="pointer-events: none;" id="filterMesh" type="checkbox" class="filled-in"/>
889
- <span style="pointer-events: none;">Mesh</span>
890
- </label>
891
- </div>
892
- </div>
893
- <div class="input-field input-group col s12 m6 l6">
894
- <p class="translate">Device map info</p>
895
- </div>
896
- </div>
897
- </div>
898
- <div class="modal-footer">
899
- <!-- <a name="stop" href="#!" class="modal-action modal-close waves-effect waves-red btn-flat left">Stop</a> -->
900
- <a name="hide" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Hide</a>
901
- </div>
902
- </div>
903
-
904
- <div id="bindingmodaledit" class="modal">
905
- <div class="modal-content">
906
- <div class="row">
907
- <h3 class="translate">Binding configuration</h3>
908
- <div class="row">
909
- <div class="col s9 input-field">
910
- <select id="bind_source" class="icons">
911
- </select>
912
- <label for="bind_source" class="translate">Source device</label>
913
- </div>
914
- <div class="col s3 input-field">
915
- <select id="bind_source_ep" class="materialSelect">
916
- </select>
917
- <label for="bind_source_ep" class="translate">Source endpoint</label>
918
- </div>
919
- </div>
920
- <div class="row">
921
- <div class="col s9 input-field">
922
- <select id="bind_target" class="icons">
923
- </select>
924
- <label for="bind_target" class="translate">Target device</label>
925
- </div>
926
- <div class="col s3 input-field">
927
- <select id="bind_target_ep" class="materialSelect">
928
- </select>
929
- <label for="bind_target_ep" class="translate">Target endpoint</label>
930
- </div>
931
- </div>
932
- <div class="row">
933
- <div class="col s9 input-field">
934
- <label>
935
- <input id="unbind_from_coordinator" type="checkbox" class="value" />
936
- <span class="translate" for="unbind_from_coordinator">Unbind remote from Coordinator (necessary for some remotes like HUE Dimmer Switch)</span>
937
- </label>
938
- </div>
939
- </div>
940
- </div>
941
- </div>
942
- <div class="modal-footer">
943
- <a name="save" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Save</a>
944
- <a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
945
- </div>
946
- </div>
947
- <div id="excludemodaledit" class="modal">
948
- <div class="modal-content">
949
- <div class="row">
950
- <h3 class="translate">Exclude configuration</h3>
951
- <div class="row">
952
- <div class="col s9 input-field">
953
- <select id="exclude_target" class="icons">
954
- </select>
955
- <label for="exclude_target" class="translate">exclude device</label>
956
- </div>
957
- </div>
958
- </div>
959
- </div>
960
- <div class="modal-footer">
961
- <a name="save" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Save</a>
962
- <a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
963
- </div>
964
- </div>
965
- <div id="modaldevinfo" class="modal modal-fixed-footer modal-fixed-header">
966
- <div class="modal-header">
967
- <h3 class="translate">Device information</h3>
968
- </div>
969
- <div class="modal-content">
970
- <div id="devinfo" class="row">
971
-
972
- </div>
973
- </div>
974
- <div class="modal-footer">
975
- <a name="hide" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Hide</a>
976
- </div>
977
- </div>
978
-
979
- <div id="modalWaiting" class="modal modal">
980
- <div class="modal-content">
981
- <h3 class="translate">Waiting</h3>
982
- <div class="progress">
983
- <div id="waiting_progress_line" class="determinate" style="width: 0%"></div>
984
- </div>
985
- <div class="row">
986
- <h5 id="waiting_message" class="translate"></h5>
987
- </div>
988
- </div>
989
- </div>
990
-
991
- <div id="modalchannels" class="modal modal-fixed-footer modal-fixed-header">
992
- <div class="modal-header">
993
- <h3 class="translate">Channels</h3>
994
- </div>
995
- <div class="modal-content">
996
- <div class="row">
997
- <h6>Channels energy scan. Lower energy is better</h6>
998
- </div>
999
- <div id="channelsinfo" class="row">
1000
- </div>
1001
- </div>
1002
- <div class="modal-footer">
1003
- <a name="hide" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Hide</a>
1004
- </div>
1005
- </div>
1006
- </div>
1007
- </body>
1008
-
1009
- </html>
1
+ <html>
2
+ <head>
3
+ <!-- these 4 files always have to be included -->
4
+ <link rel="stylesheet" type="text/css" href="../../lib/css/materialize.css">
5
+ <link rel="stylesheet" type="text/css" href="../../css/adapter.css"/>
6
+
7
+ <script type="text/javascript" src="../../lib/js/jquery-3.2.1.min.js"></script>
8
+ <script type="text/javascript" src="../../socket.io/socket.io.js"></script>
9
+ <!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js"></script>
10
+ <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css"/> -->
11
+ <script type="text/javascript" src="vis-network.min.js"></script>
12
+ <link rel="stylesheet" type="text/css" href="vis-network.min.css"/>
13
+
14
+ <!-- these files always have to be included -->
15
+ <script type="text/javascript" src="../../js/translate.js"></script>
16
+ <script type="text/javascript" src="../../lib/js/materialize.js"></script>
17
+ <script type="text/javascript" >var noConfigDialog = true;</script><!-- Deactivate buttons -->
18
+ <script type="text/javascript" src="adapter-settings.js"></script>
19
+
20
+ <script>
21
+ // overload showMessage
22
+ function showMessage(message, title, icon) {
23
+ var $dialogMessage;
24
+ // noinspection JSJQueryEfficiency
25
+ $dialogMessage = $('#dialog-message');
26
+ if (!$dialogMessage.length) {
27
+ $('body').append(
28
+ '<div class="m"><div id="dialog-message" class="modal modal-fixed-footer">' +
29
+ ' <div class="modal-content">' +
30
+ ' <h6 class="dialog-title title"></h6>' +
31
+ ' <p><i class="large material-icons dialog-icon"></i><span class="dialog-text"></span></p>' +
32
+ ' </div>' +
33
+ ' <div class="modal-footer">' +
34
+ ' <a class="modal-action modal-close waves-effect waves-green btn-flat translate">Ok</a>' +
35
+ ' </div>' +
36
+ '</div></div>');
37
+ $dialogMessage = $('#dialog-message');
38
+ }
39
+ if (icon) {
40
+ $dialogMessage.find('.dialog-icon')
41
+ .show()
42
+ .html(icon);
43
+ } else {
44
+ $dialogMessage.find('.dialog-icon').hide();
45
+ }
46
+ if (title) {
47
+ $dialogMessage.find('.dialog-title').html(title).show();
48
+ } else {
49
+ $dialogMessage.find('.dialog-title').hide();
50
+ }
51
+ $dialogMessage.find('.dialog-text').html(message);
52
+ $dialogMessage.modal().modal('open');
53
+ }
54
+ </script>
55
+ <script type="text/javascript" src="words.js"></script>
56
+
57
+ <script type="text/javascript" src="admin.js"></script>
58
+ <script type="text/javascript" src="shuffle.min.js"></script>
59
+ <script type="text/javascript" src="moment.min.js"></script>
60
+ <style>
61
+ .m.react-dark .tabs {
62
+ background-color: #272727 !important;
63
+ }
64
+ .row.navbar-fixed {
65
+ height: 0 !important;
66
+ }
67
+ .m .col .select-wrapper+label, .m .col input+label:not(.active) {
68
+ top: -26px;
69
+ }
70
+ .select-wrapper li span {
71
+ pointer-events: none; /* workarround for checkbox in select, else checkbox and label not clickable */
72
+ }
73
+ .m .col input+label {
74
+ font-size: 0.8rem;
75
+ }
76
+ .m span{
77
+ font-size: 0.9em;
78
+ }
79
+ .m .zlogo {
80
+ padding: 0.5rem;
81
+ width: 64px;
82
+ }
83
+ .input-group {
84
+ display: table;
85
+ }
86
+ .input-group input, .suffix {
87
+ display: table-cell;
88
+ }
89
+ .suffix {
90
+ width:1%;
91
+ }
92
+ .input-field.suffix a {
93
+ position: absolute;
94
+ font-size: 2rem;
95
+ top: 0;
96
+ right: 0;
97
+ }
98
+
99
+ .input-field.suffix a.active {
100
+ color: #26a69a;
101
+ }
102
+
103
+ .input-field.suffix .select-wrapper {
104
+ margin-right: 3rem;
105
+ width: 92%;
106
+ width: calc(100% - 3rem);
107
+ }
108
+
109
+ .input-field.suffix label {
110
+ margin-right: 3rem;
111
+ }
112
+ #tabs {
113
+ margin-top: 120px;
114
+ }
115
+ #main {
116
+ margin-bottom: -50px;
117
+ height: 100%;
118
+ overflow-y: auto;
119
+ }
120
+ .page:not(.active) {
121
+ /* prevents 'all pages visible for a moment at first load' (because pages are loaded before materialize is loaded)*/
122
+ display: none;
123
+ }
124
+ #dev-selectors > div {
125
+ margin-top: 30px;
126
+ border-bottom: 1px solid lightblue;
127
+ }
128
+ #dev_result_log {
129
+ overflow: scroll;
130
+ height: 10em;
131
+ padding: 0.5em;
132
+ }
133
+ #expert-toggle {
134
+ margin-bottom: 3em;
135
+ }
136
+ #expert-json {
137
+ min-height: 18rem;
138
+ overflow-y: scroll;
139
+ }
140
+ #viewconfigbtn {
141
+ left: 23px;
142
+ width: 45px;
143
+ top: 120px;
144
+ }
145
+ .m .card {
146
+ margin: 0px;
147
+ width: 100%;
148
+ height: 100%;
149
+ position: relative;
150
+ -webkit-transition: -webkit-transform 0.5s;
151
+ -moz-transition: -moz-transform 0.5s;
152
+ -o-transition: -o-transform 0.5s;
153
+ transition: transform 0.5s;
154
+ -webkit-transform-style: preserve-3d;
155
+ -moz-transform-style: preserve-3d;
156
+ -o-transform-style: preserve-3d;
157
+ transform-style: preserve-3d;
158
+ -webkit-transform-origin: 50% 50%;
159
+ transform-origin: 50% 50%;
160
+ }
161
+ .m .card .zcard {
162
+ padding: 10px;
163
+ }
164
+ .m .card div {
165
+ -webkit-backface-visibility: hidden;
166
+ -moz-backface-visibility: hidden;
167
+ -o-backface-visibility: hidden;
168
+ backface-visibility: hidden;
169
+ }
170
+ .device {
171
+ padding: 5px;
172
+ width: 330px;
173
+ height: 200px;
174
+ -webkit-perspective: 800px;
175
+ -moz-perspective: 800px;
176
+ -o-perspective: 800px;
177
+ perspective: 800px;
178
+ }
179
+ .m .zcard .card-title {
180
+ font-size: 16px;
181
+ font-weight: 300;
182
+ }
183
+ .card-action .card-reveal-buttons {
184
+ left: 0;
185
+ position: absolute;
186
+ border: none;
187
+ bottom: 0;
188
+ height: 50px;
189
+ /*background: #fff;*/
190
+ right: 0;
191
+ /*text-align: right;*/
192
+ padding: 10px;
193
+ }
194
+ .card-action i {
195
+ font-size: 1.7em;
196
+ }
197
+ .card-action button {
198
+ margin-right: 5px;
199
+ }
200
+ .small-button {
201
+ background: #fff;
202
+ color: #0e2e4a;
203
+ padding: 1px 0 0 0;
204
+ cursor: pointer;
205
+ transition: .2s linear;
206
+ }
207
+ .small-button, .small-button-empty {
208
+ width: 24px;
209
+ margin: 0 1px 0 0;
210
+ display: inline-block;
211
+ position: relative;
212
+ z-index: 1;
213
+ border: 0;
214
+ border-radius: 2px;
215
+ }
216
+ i.icon-green {
217
+ color: green;
218
+ }
219
+ .m.react-dark i.icon-green {
220
+ color: green!important;
221
+ }
222
+ .m.react-blue i.icon-green {
223
+ color: green!important;
224
+ }
225
+ i.icon-black {
226
+ color: black;
227
+ }
228
+ i.icon-blue {
229
+ color: blue;
230
+ }
231
+ .m.react-blue div.bg_red {
232
+ background-color: #400000;
233
+ color: DimGray;
234
+ }
235
+ .m div.bg_red {
236
+ background-color: LightGray;
237
+ color: DimGray;
238
+ }
239
+ .m.react-dark div.bg_red {
240
+ background-color: #400000;
241
+ }
242
+ .m.react-dark i.icon-blue {
243
+ color: rgb(100, 181, 246)!important;
244
+ }
245
+ .m.react-blue i.icon-blue {
246
+ color: rgb(100, 181, 246)!important;
247
+ }
248
+ i.icon-red {
249
+ color: red;
250
+ }
251
+ .m.react-dark i.icon-red {
252
+ color: red!important;
253
+ }
254
+ .m.react-blue i.icon-red {
255
+ color: red!important;
256
+ }
257
+ i.icon-orange {
258
+ color: orange;
259
+ }
260
+ .m.react-dark i.icon-orange {
261
+ color: orange!important;
262
+ }
263
+ .m.react-blue i.icon-orange {
264
+ color: orange!important;
265
+ }
266
+ .m .btn-small.btn-flat {
267
+ padding: 0 4px;
268
+ }
269
+ .m .row .col.tool {
270
+ padding: 0 .1rem;
271
+ }
272
+ .m span.label {
273
+ display: inline-block;
274
+ width: 100px;
275
+ font-weight: bold;
276
+ }
277
+ .m span.label.dash {
278
+ display: inline-block;
279
+ width: 140px;
280
+ font-weight: bold;
281
+ }
282
+ .m span.labelinfo {
283
+ display: inline-block;
284
+ width: 60px;
285
+ font-weight: bold;
286
+ }
287
+ .forcedelete {
288
+ float: left;
289
+ padding-left: 1rem;
290
+ padding-top: 1rem;
291
+ }
292
+ .modal-header {
293
+ position: relative;
294
+ height: 50px;
295
+ padding: 20px 20px 5px 20px;
296
+ border-bottom: 1px solid rgba(0,0,0,.1);
297
+ }
298
+ .m .modal.modal-fixed-footer.modal-fixed-header .modal-content{
299
+ height: calc(100% - 140px)!important;
300
+ padding-top: 5px;
301
+ padding-bottom: 5px;
302
+ }
303
+ .m .page {
304
+ height: calc(100% - 120px);
305
+ overflow: auto;
306
+ }
307
+ #map {
308
+ margin: 0px;
309
+ }
310
+ #tab-main .main-toolbar-table .filter-input {
311
+ display: inline-table;
312
+ padding-left: 6px;
313
+ height: 24px;
314
+ width: 10rem;
315
+ margin-top: 5px;
316
+ margin-bottom: 0;
317
+ }
318
+ .face {
319
+ overflow:hidden;
320
+ position:absolute;
321
+ height: 100%;
322
+ width: 100%;
323
+ /*background: #fff;*/
324
+ z-index: 2;
325
+ -webkit-transform: rotateY( 0deg );
326
+ -moz-transform: rotateY( 0deg );
327
+ -o-transform: rotateY( 0deg );
328
+ transform: rotateY( 0deg );
329
+ }
330
+ .back {
331
+ overflow:hidden;
332
+ position:absolute;
333
+ display: block;
334
+ box-sizing: border-box;
335
+ height: 100%;
336
+ width: 100%;
337
+ /*background: #fff;*/
338
+ -webkit-transform: rotateY( -180deg );
339
+ -moz-transform: rotateY( -180deg );
340
+ -o-transform: rotateY( -180deg );
341
+ transform: rotateY( -180deg );
342
+ }
343
+ .card.flipped {
344
+ -webkit-transform: rotateY( 180deg );
345
+ -moz-transform: rotateY( 180deg );
346
+ -o-transform: rotateY( 180deg );
347
+ transform: rotateY( 180deg );
348
+ }
349
+ .m .card .card-action {
350
+ padding: 22px 24px;
351
+ }
352
+ .m .switch label .lever {
353
+ width: 30px;
354
+ height: 12px;
355
+ }
356
+ .m .switch label .lever:after, .m .switch label .lever:before {
357
+ width: 14px;
358
+ height: 14px;
359
+ border-radius: 50%;
360
+ left: 0;
361
+ top: -1px;
362
+ }
363
+ .m .dash input[type=range] {
364
+ width: 70px;
365
+ margin: 0px;
366
+ }
367
+ .m .dash input[type=checkbox]:checked+span:not(.lever):before {
368
+ width: 10px;
369
+ height: 16px;
370
+ }
371
+ .m .dash input[type=checkbox]+span:not(.lever):before {
372
+ width: 10px;
373
+ height: 12px;
374
+ }
375
+ .m .dash input[type="checkbox"]+span:not(.lever) {
376
+ width: 10px;
377
+ height: 12px;
378
+ margin-left: 25px;
379
+ margin-top: -1px;
380
+ }
381
+ .m .dash input[type=checkbox]:not(:checked):disabled+span:not(.lever):before {
382
+ background-color: rgba(0,0,0,.1);
383
+ }
384
+ .m span .dash.value {
385
+ margin-left: 25px;
386
+ }
387
+ .m .idletime {
388
+ padding-left: 15px;
389
+ }
390
+ .m.react-blue .switch label input[type="checkbox"]:checked + .lever {
391
+ background-color: #436a93;
392
+ }
393
+ .m.react-blue .switch label .lever {
394
+ background-color: #4dabf5;
395
+ }
396
+ .m.react-blue .switch label .lever:after {
397
+ background-color: #436a93;
398
+ }
399
+
400
+ .m.react-dark .switch label input[type="checkbox"]:checked + .lever {
401
+ background-color: #436a93;
402
+ }
403
+ .m.react-dark .switch label .lever {
404
+ background-color: #4dabf5;
405
+ }
406
+ .m.react-dark .switch label .lever:after {
407
+ background-color: #436a93;
408
+ }
409
+ </style>
410
+ </head>
411
+ <body>
412
+ <!-- you have to put your config page in a div with id adapter-container -->
413
+ <div id="main" class="m adapter-container">
414
+ <div class="row navbar-fixed">
415
+ <nav class="nav-extended">
416
+ <div class="nav-wrapper">
417
+ <div class="col">
418
+ <img src="zigbee.png" class="zlogo left" height="64px"/>
419
+ </div>
420
+ <div class="col">
421
+ <h5 class="translate center-align">Zigbee adapter</h5>
422
+ </div>
423
+ <ul id="nav-mobile" class="right">
424
+ <li>
425
+ <a id="state_cleanup_btn" class="btn-floating waves-effect waves-light red tooltipped center-align hoverable translateT" title="State Cleanup">
426
+ <i class="material-icons large icon-blue">sync</i></a>
427
+ </li>
428
+ <li>
429
+ <a id="fw_check_btn" class="btn-floating waves-effect waves-light blue tooltipped center-align hoverable translateT" title="Check firmware updates">
430
+ <i class="material-icons large icon-blue">system_update</i></a>
431
+ </li>
432
+ <li>
433
+ <a id="add_grp_btn" class="btn-floating waves-effect waves-light brown tooltipped center-align hoverable translateT" title="Add Group">
434
+ <i class="material-icons large">group_work</i></a>
435
+ </li>
436
+ <li>
437
+ <a id="touchlink_btn" class="btn-floating waves-effect waves-light green tooltipped center-align hoverable translateT" title="Touchlink reset and pairing">
438
+ <i class="material-icons large">wifi_tethering</i></a>
439
+ </li>
440
+ <li>
441
+ <a id="code_pairing"
442
+ class="btn-floating waves-effect waves-light green tooltipped center-align hoverable translateT"
443
+ title="Pairing with QR Code">
444
+ <i class="material-icons large">select_all</i></a>
445
+ </li>
446
+ <li>
447
+ <a id="pairing" class="btn-floating waves-effect waves-light green tooltipped center-align hoverable translateT" title="Let's pairing!">
448
+ <i class="material-icons large">leak_add</i></a>
449
+ </li>
450
+ </ul>
451
+ </div>
452
+ <div class="nav-content">
453
+ <ul class="tabs tabs-transparent">
454
+ <li class="tab col s2"><a href="#tab-main" id="devs" class="translate">Devices</a></li>
455
+ <li class="tab col s2"><a href="#tab-map" id="tabmap" class="translate">Network map</a></li>
456
+ <li class="tab col s2"><a href="#tab-binding" class="translate">Binding</a></li>
457
+ <li class="tab col s2"><a href="#tab-exclude" class="translate">Excludes</a></li>
458
+ <!--li class="tab col s2"><a href="#tab-sett" id="settings" class="translate">Settings</a></li-->
459
+ <!-- li class="tab col s2"><a href="#tab-dev" id="develop" class="translate">Developer</a></li-->
460
+ </ul>
461
+ </div>
462
+ </nav>
463
+ </div>
464
+ <div id="tabs" class="tabs-content row">
465
+ <div id="tab-main" class="col s12 page active">
466
+ <div class="navbar-fixed" style="height: 36px;">
467
+ <nav style="height: 36px; margin-left: -12px; line-height: 24px;">
468
+ <ul id="nav-mobile" class="left">
469
+ <li>
470
+ <a id="rotate_btn" class="btn-floating waves-effect waves-light blue tooltipped center-align hoverable translateT" title="Rotate cards">
471
+ <i class="material-icons large icon-blue">3d_rotation</i>
472
+ </a>
473
+ </li>
474
+ <li>
475
+ <div class="col main-toolbar-table-types-tools main-toolbar-table-filter input-field" style="line-height: 24px;">
476
+ <i class="material-icons prefix" style="line-height: 24px;">search</i>
477
+ <input id="device-search" class="filter-input translateP" placeholder="Искать" autocomplete="new-password" readonly="readonly" onfocus="if (this.hasAttribute('readonly')) {this.removeAttribute('readonly'); this.blur(); this.focus();}" data-lang-placeholder="Filter">
478
+ <a class="filter-clear btn-floating btn-very-small translateT red lighten-3" title="Очистить" data-lang-title="clear" style="display: none;"><i class="material-icons">clear</i></a>
479
+ </div>
480
+
481
+ </li>
482
+ <li>
483
+ <div class="col input-field" style="line-height: 24px;">
484
+ <i class="material-icons left" style="line-height: 24px; margin-top: 5px;">sort</i>
485
+ <a id="device-order-btn" class="dropdown-trigger btn" href="#" data-target="device-order">Default</a>
486
+ <ul id="device-order" class="dropdown-content" tabindex="0">
487
+ <li class="device-order-item" data-type="a-z" tabindex="0"><a class="translate" data-lang="A-Z">A-Z</a></li>
488
+ <li class="device-order-item" data-type="default" tabindex="0"><a class="translate" data-lang="Default">Default</a></li>
489
+ </ul>
490
+ </div>
491
+ </li>
492
+ <li>
493
+ <div class="col input-field" style="line-height: 24px;">
494
+ <i class="material-icons left" style="line-height: 24px; margin-top: 5px;">art_track</i>
495
+ <a id="room-filter-btn" class="dropdown-trigger btn" href="#" data-target="room-filter">All</a>
496
+ <ul id="room-filter" class="dropdown-content" tabindex="0">
497
+ </ul>
498
+ </div>
499
+ </li>
500
+ </ul>
501
+ </nav>
502
+ </div>
503
+ <div id="devices" class="row">
504
+ </div>
505
+ </div>
506
+ <div id="tab-map" class="col s12 page">
507
+ <div class="fixed-action-btn">
508
+ <a id="refresh" class="btn-floating waves-effect waves-light blue tooltipped center-align hoverable translateT" title="Refresh"><i class="material-icons large">autorenew</i></a>
509
+ </div>
510
+ <div id="viewconfigbtn" class="fixed-action-btn top left" style="">
511
+ <a id="viewconfig" class="btn-floating waves-effect waves-light orange tooltipped center-align hoverable translateT" title="View config"><i class="material-icons large">menu</i></a>
512
+ </div>
513
+ <div id="map" class="row">
514
+ </div>
515
+ </div>
516
+ <div id="tab-sett" class="col s12 page">
517
+ <div id="sett" class="row">
518
+ <div class="input-field input-group col s12 m6 l4">
519
+ <input id="port" type="text" class="value validate"/>
520
+ <label for="port" class="translate">COM port name</label>
521
+ <span class="suffix">
522
+ <a id="selector" class='dropdown-trigger btn' href='#' data-target='ports'><i class="material-icons">arrow_drop_down</i></a>
523
+ <!-- Dropdown Structure -->
524
+ <ul id='ports' class='dropdown-content'>
525
+ </ul>
526
+ </span>
527
+ </div>
528
+ <div class="input-field col s12 m6 l4">
529
+ <select id="adapterType" class="value">
530
+ <option value="" disabled selected class="translate">Choose type</option>
531
+ <option value="zstack">TI Z-Stack/CCxxxx</option>
532
+ <option value="deconz">Deconz/Conbee</option>
533
+ </select>
534
+ <label class="translate">Type</label>
535
+ </div>
536
+ <div class="input-field col s6 m3 l3">
537
+ <input id="countDown" type="number" min="0" max="180" class="value" />
538
+ <label class="translate" for="countDown">Countdown</label>
539
+ </div>
540
+ </div>
541
+ <div class="row">
542
+ <h6>Network</h6>
543
+ <div class="row">
544
+ <div class="input-field col s12 m6 l4">
545
+ <input id="extPanID" type="text" pattern="[a-fA-F\d]+" minlength="16" maxlength="16" class="validate value" />
546
+ <label class="translate" for="extPanID">ExtPanID</label>
547
+ </div>
548
+ <div class="input-field col s12 m6 l8">
549
+ <p class="translate">ExtPanIDText</p>
550
+ </div>
551
+ </div>
552
+ <div class="row">
553
+ <div class="input-field col s12 m6 l4">
554
+ <input id="panID" type="number" min="1" max="65565" class="value" />
555
+ <label class="translate" for="panID">PanID</label>
556
+ </div>
557
+ <div class="input-field col s12 m6 l8">
558
+ <p class="translate">PanIDText</p>
559
+ </div>
560
+
561
+ </div>
562
+ <div class="row">
563
+ <div class="input-field suffix col s12 m6 l4">
564
+ <select id="channel" class="value">
565
+ <option value="" disabled selected class="translate">Choose channel</option>
566
+ <option value="11">11</option>
567
+ <option value="12">12</option>
568
+ <option value="13">13</option>
569
+ <option value="14">14</option>
570
+ <option value="15">15</option>
571
+ <option value="16">16</option>
572
+ <option value="17">17</option>
573
+ <option value="18">18</option>
574
+ <option value="19">19</option>
575
+ <option value="20">20</option>
576
+ <option value="21">21</option>
577
+ <option value="22">22</option>
578
+ <option value="23">23</option>
579
+ <option value="24">24</option>
580
+ <option value="25">25</option>
581
+ <option value="26">26</option>
582
+ </select>
583
+ <label class="translate">Channel</label>
584
+ <a id="scan" class='btn' data-target='channel'><i class="material-icons">graphic_eq</i></a>
585
+ </div>
586
+ <div class="input-field col s12 m6 l8">
587
+ <p class="translate">ChannelChangeText</p>
588
+ </div>
589
+ </div>
590
+ <div class="input-field col s12 m6 l4">
591
+ <input id="precfgkey" type="text" pattern="[a-fA-F\d]+" class="validate value"/>
592
+ <label class="translate" for="precfgkey">Transport Key</label>
593
+ </div>
594
+ <div class="input-field col s12 m6 l8">
595
+ <p class="translate">Tranport Key Text</p>
596
+ </div>
597
+ </div>
598
+ <div class="row" style="margin-bottom: 90px">
599
+ <h6>Others</h6>
600
+ <div class="input-field col s12 m6 l4 col-disableLed">
601
+ <input id="disableLed" type="checkbox" class="value" />
602
+ <label class="translate" for="disableLed">Disable LED for cc2531</label>
603
+ </div>
604
+ <div class="input-field col s12 m6 l4 col-disablePing">
605
+ <input id="disablePing" type="checkbox" class="value" />
606
+ <label class="translate" for="disablePing">Disable active availability check</label>
607
+ </div>
608
+ <div class="input-field col s12 m6 l4 col-warnOnDeviceAnnouncement">
609
+ <input id="warnOnDeviceAnnouncement" type="checkbox" class="value" />
610
+ <label class="translate" for="warnOnDeviceAnnouncement">Log warning on Zigbee device announcement</label>
611
+ </div>
612
+ <div class="input-field col s12 m6 l8 col-transmitPower">
613
+ <select id="transmitPower" class="value" >
614
+ <option value="" disabled selected class="translate">transmitPower</option>
615
+ <option value="-22">low</option>
616
+ <option value="0">norm</option>
617
+ <option value="19">high</option>
618
+ <option value="20">high+</option>
619
+ </select>
620
+ <label class="translate" for="transmitPower">transmitPower</label>
621
+ </div>
622
+ <div class="input-field col s12 m6 l4 col-disableLed">
623
+ <input id="debugHerdsman" type="checkbox" class="value" />
624
+ <label class="translate" for="debugHerdsman">Zigbee-herdsman debug info</label>
625
+ </div>
626
+ <div class="input-field col s12 m6 l6">
627
+ <a id="reset-btn" class="waves-effect waves-light white-text btn-large translate">Reset...</a>
628
+ </div>
629
+ </div>
630
+ </div>
631
+
632
+ <div id="tab-groups" class="col s12 page">
633
+ <div class="row">
634
+ <div class="col s12">
635
+ <div class="col s12">
636
+ <table class="">
637
+ <thead>
638
+ <tr>
639
+ <th data-name="num" class="translate">№</th>
640
+ <th data-name="name" class="translate">Name</th>
641
+ </tr>
642
+ </thead>
643
+ <tbody id="groups_table"></tbody>
644
+ </table>
645
+ </div>
646
+ <a id="add_group" class="btn-floating waves-effect waves-light blue table-button-add tooltipped hoverable translateT" title="Add group">
647
+ <i class="material-icons">add</i>
648
+ </a>
649
+ </div>
650
+ </div>
651
+ </div>
652
+ <div id="tab-binding" class="col s12 page">
653
+ <div class="fixed-action-btn">
654
+ <a id="add_binding" class="btn-floating waves-effect waves-light blue tooltipped center-align hoverable translateT" title="Add binding"><i class="material-icons large">add</i></a>
655
+ </div>
656
+ <div id="binding" class="row">
657
+ </div>
658
+ </div>
659
+ <div id="tab-exclude" class="col s12 page">
660
+ <div class="row">
661
+ <p class="translate">ExcludeTextTranslation</p>
662
+ </div>
663
+ <div class="fixed-action-btn" style="margin-bottom: 100px">
664
+ <a id="add_exclude" class="btn-floating waves-effect waves-light blue tooltipped center-align hoverable translateT" title="Add exlude"><i class="material-icons large">add</i></a>
665
+ </div>
666
+ <div id="exclude" class="row">
667
+ </div>
668
+ </div>
669
+ </div>
670
+ </div>
671
+
672
+ <div class="materialize-dialogs m">
673
+ <div id="modaledit" class="modal">
674
+ <div class="modal-content">
675
+ <h3 class="translate">Config device</h3>
676
+ <div class="row">
677
+ <div class="col1">
678
+ <div class="input-field">
679
+ <input id="d_name" type="text" class="value validate">
680
+ <label for="d_name" class="translate">Name</label>
681
+ </div>
682
+ </div>
683
+ </div>
684
+ <div class="row epid0">
685
+ <div class="col">
686
+ <div class=endpointid>
687
+ <p class="translate device_with_endpoint">Main Endpoint</p>
688
+ </div>
689
+ </div>
690
+ <div class="col1">
691
+ <div class="input-field groups">
692
+ <select id="d_groups_ep0" class="materialSelect" multiple>
693
+ <option value="1">select</option>
694
+ </select>
695
+ <label for="d_groups_ep0" class="translate">Groups</label>
696
+ </div>
697
+ </div>
698
+ </div>
699
+ <div class="row epid1">
700
+ <div class="col epid">
701
+ <div class=endpointid>
702
+ <p class="translate device_with_endpoint">Sub Endpoint 1</p>
703
+ </div>
704
+ </div>
705
+ <div class="col">
706
+ <div class="input-field groups">
707
+ <select id="d_groups_ep1" class="materialSelect" multiple>
708
+ <option value="1">select</option>
709
+ </select>
710
+ <label for="d_groups_ep1" class="translate">Groups</label>
711
+ </div>
712
+ </div>
713
+ </div>
714
+ <div class="row epid2">
715
+ <div class="col epid">
716
+ <div class=endpointid>
717
+ <p class="translate device_with_endpoint">Sub Endpoint 2</p>
718
+ </div>
719
+ </div>
720
+ <div class="col">
721
+ <div class="input-field groups">
722
+ <select id="d_groups_ep2" class="materialSelect" multiple>
723
+ <option value="1">select</option>
724
+ </select>
725
+ <label for="d_groups_ep2" class="translate">Groups</label>
726
+ </div>
727
+ </div>
728
+ </div>
729
+ <div class="row epid3">
730
+ <div class="col epid">
731
+ <div class=endpointid>
732
+ <p class="translate device_with_endpoint">Sub Endpoint 3</p>
733
+ </div>
734
+ </div>
735
+ <div class="col">
736
+ <div class="input-field groups">
737
+ <select id="d_groups_ep3" class="materialSelect" multiple>
738
+ <option value="1">select</option>
739
+ </select>
740
+ <label for="d_groups_ep3" class="translate">Groups</label>
741
+ </div>
742
+ </div>
743
+ </div>
744
+ </div>
745
+ <div class="modal-footer">
746
+ <a name="save" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Save</a>
747
+ <a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
748
+ </div>
749
+ </div>
750
+ <div id="codeentry" class="modal">
751
+ <div class="modal-content">
752
+ <div class="addgroup">
753
+ <h3 class="translate">Enter Pairing Code</h3>
754
+ </div>
755
+ <div class="row">
756
+ <div class="input-field">
757
+ <input id="qr_code" type="text" class="value validate">
758
+ <label for="qr_code" class="translate">QR Code</label>
759
+ </div>
760
+ </div>
761
+ </div>
762
+ <div class="modal-footer">
763
+ <a name="pair" href="#!"
764
+ class="modal-action modal-close waves-effect waves-green btn green translate">Start Pairing</a>
765
+ <a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
766
+ </div>
767
+ </div>
768
+ <div id="groupedit" class="modal">
769
+ <div class="modal-content">
770
+ <div class = "addgroup">
771
+ <h3 class="translate">Add Group</h3>
772
+ </div>
773
+ <div class = "editgroup">
774
+ <h3 class="translate">Edit Group</h3>
775
+ </div>
776
+ <div class="row">
777
+ <div class="col s4 m4 l2">
778
+ <div class="input-field groupid">
779
+ <input id="g_index" type="number" min="1" class="value validate">
780
+ <label for="g_index" class="translate">№</label>
781
+ </div>
782
+ </div>
783
+ <div class="input-field col s8 m8 l10">
784
+ <input id="g_name" type="text" class="value validate">
785
+ <label for="g_name" class="translate">Name</label>
786
+ </div>
787
+ </div>
788
+ <div class="row hide">
789
+ <div class="col s12">
790
+ <div class="input-field members">
791
+ <label for="g_members" class="translate">Members</label>
792
+ <select id="g_members" class="materialSelect" multiple><option value="1">value</option></select>
793
+ </div>
794
+ </div>
795
+ </div>
796
+ </div>
797
+ <div class="modal-footer">
798
+ <a name="save" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Save</a>
799
+ <a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
800
+ </div>
801
+ </div>
802
+
803
+ <div id="modaldelete" class="modal">
804
+ <div class="modal-content">
805
+ <h3 class="translate">Delete confirmation</h3>
806
+ <p>A bunch of text</p>
807
+ </div>
808
+ <div class="modal-footer">
809
+ <div id="forcediv" class="hide forcedelete">
810
+ <label>
811
+ <input id="force" type="checkbox" class="value" />
812
+ <span class="translate" for="force">Force delete (for lost devices)</span>
813
+ </label>
814
+ </div>
815
+ <a name="yes" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Yes</a>
816
+ <a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
817
+ </div>
818
+ </div>
819
+
820
+ <div id="modalclean" class="modal">
821
+ <div class="modal-content">
822
+ <h3 class="translate">State cleanup confirmation</h3>
823
+ <p>A bunch of text</p>
824
+ </div>
825
+ <div class="modal-footer">
826
+ <div id="cforcediv" class="hide forcedelete">
827
+ <input id="cforce" type="checkbox" class="value" />
828
+ <label class="translate" for="cforce">Force removed states with custom configuration (history, upnp, etc.)</label>
829
+ </div>
830
+ <a name="yes" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Yes</a>
831
+ <a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
832
+ </div>
833
+ </div>
834
+
835
+ <div id="modalreconfigure" class="modal">
836
+ <div class="modal-content">
837
+ <h3 class="translate">Reconfigure device</h3>
838
+ <p>A bunch of text</p>
839
+ </div>
840
+ <div class="modal-footer">
841
+ <a name="yes" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Yes</a>
842
+ <a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
843
+ </div>
844
+ </div>
845
+
846
+ <div id="modalpairing" class="modal modal-fixed-footer">
847
+ <div class="modal-content">
848
+ <h3 class="translate">Pairing process</h3>
849
+ <div class="progress">
850
+ <div id="progress_line" class="determinate" style="width: 0%"></div>
851
+ </div>
852
+ <div class="row textarea">
853
+ <textarea id="stdout" disabled="disabled" cols="120" rows="30" style="height: calc(100% - 115px)"></textarea>
854
+ </div>
855
+ </div>
856
+ <div class="modal-footer">
857
+ <!-- <a name="stop" href="#!" class="modal-action modal-close waves-effect waves-red btn-flat left">Stop</a> -->
858
+ <a name="hide" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Hide</a>
859
+ </div>
860
+ </div>
861
+
862
+ <div id="modalreset" class="modal">
863
+ <div class="modal-content">
864
+ <h3 class="translate">Reset confirmation</h3>
865
+ <p class="translate">Reset Info</p>
866
+ <a id="soft" data-mode="soft" class="modal-action modal-close waves-effect waves-red btn translate">Soft-Reset</a>
867
+ <a id="hard" data-mode="hard" class="modal-action modal-close waves-effect waves-red btn translate">Hard-Reset</a>
868
+ </div>
869
+ <div class="modal-footer">
870
+ <a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat translate">Cancel</a>
871
+ </div>
872
+ </div>
873
+
874
+ <div id="modalviewconfig" class="modal modal-fixed-footer">
875
+ <div class="modal-content">
876
+ <h3 class="translate">Map view config</h3>
877
+ <div class="row">
878
+ <div class="input-field input-group col s12 m6 l6">
879
+ <div id="filterParentTgl" class="input-field col s12 admin-tooltip-icon translateT" title="Show parent">
880
+ <label for="filterParent" style="pointer-events: auto;">
881
+ <!-- workaround input not clickable https://codepen.io/alexisdiel/pen/gxwPWj -->
882
+ <input style="pointer-events: none;" id="filterParent" type="checkbox" class="filled-in" checked="checked"/>
883
+ <span style="pointer-events: none; color:#0000ff;" class="translate">Parent/Child/Unknown</span>
884
+ </label>
885
+ </div>
886
+ <div id="filterSiblTgl" class="input-field col s12 admin-tooltip-icon translateT" title="Show siblings">
887
+ <label for="filterSibl" style="pointer-events: auto;">
888
+ <input style="pointer-events: none;" id="filterSibl" type="checkbox" class="filled-in" checked="checked"/>
889
+ <span style="pointer-events: none; color:#00bb00;" class="translate">Siblings</span>
890
+ </label>
891
+ </div>
892
+ <div id="filterPrvChildTgl" class="input-field col s12 admin-tooltip-icon translateT" title="Show previous parents">
893
+ <label for="filterPrvChild" style="pointer-events: auto;">
894
+ <input style="pointer-events: none;" id="filterPrvChild" type="checkbox" class="filled-in"/>
895
+ <span style="pointer-events: none; color:#555555;" class="translate">Previous Parents</span>
896
+ </label>
897
+ </div>
898
+ <div id="filterMeshTgl" class="input-field col s12 admin-tooltip-icon translateT" title="Show full mesh">
899
+ <label for="filterMesh" style="pointer-events: auto;">
900
+ <input style="pointer-events: none;" id="filterMesh" type="checkbox" class="filled-in"/>
901
+ <span style="pointer-events: none;">Mesh</span>
902
+ </label>
903
+ </div>
904
+ </div>
905
+ <div class="input-field input-group col s12 m6 l6">
906
+ <p class="translate">Device map info</p>
907
+ </div>
908
+ </div>
909
+ </div>
910
+ <div class="modal-footer">
911
+ <!-- <a name="stop" href="#!" class="modal-action modal-close waves-effect waves-red btn-flat left">Stop</a> -->
912
+ <a name="hide" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Hide</a>
913
+ </div>
914
+ </div>
915
+
916
+ <div id="bindingmodaledit" class="modal">
917
+ <div class="modal-content">
918
+ <div class="row">
919
+ <h3 class="translate">Binding configuration</h3>
920
+ <div class="row">
921
+ <div class="col s9 input-field">
922
+ <select id="bind_source" class="icons">
923
+ </select>
924
+ <label for="bind_source" class="translate">Source device</label>
925
+ </div>
926
+ <div class="col s3 input-field">
927
+ <select id="bind_source_ep" class="materialSelect">
928
+ </select>
929
+ <label for="bind_source_ep" class="translate">Source endpoint</label>
930
+ </div>
931
+ </div>
932
+ <div class="row">
933
+ <div class="col s9 input-field">
934
+ <select id="bind_target" class="icons">
935
+ </select>
936
+ <label for="bind_target" class="translate">Target device</label>
937
+ </div>
938
+ <div class="col s3 input-field">
939
+ <select id="bind_target_ep" class="materialSelect">
940
+ </select>
941
+ <label for="bind_target_ep" class="translate">Target endpoint</label>
942
+ </div>
943
+ </div>
944
+ <div class="row">
945
+ <div class="col s9 input-field">
946
+ <label>
947
+ <input id="unbind_from_coordinator" type="checkbox" class="value" />
948
+ <span class="translate" for="unbind_from_coordinator">Unbind remote from Coordinator (necessary for some remotes like HUE Dimmer Switch)</span>
949
+ </label>
950
+ </div>
951
+ </div>
952
+ </div>
953
+ </div>
954
+ <div class="modal-footer">
955
+ <a name="save" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Save</a>
956
+ <a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
957
+ </div>
958
+ </div>
959
+ <div id="excludemodaledit" class="modal">
960
+ <div class="modal-content">
961
+ <div class="row">
962
+ <h3 class="translate">Exclude configuration</h3>
963
+ <div class="row">
964
+ <div class="col s9 input-field">
965
+ <select id="exclude_target" class="icons">
966
+ </select>
967
+ <label for="exclude_target" class="translate">exclude device</label>
968
+ </div>
969
+ </div>
970
+ </div>
971
+ </div>
972
+ <div class="modal-footer">
973
+ <a name="save" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Save</a>
974
+ <a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
975
+ </div>
976
+ </div>
977
+ <div id="modaldevinfo" class="modal modal-fixed-footer modal-fixed-header">
978
+ <div class="modal-header">
979
+ <h3 class="translate">Device information</h3>
980
+ </div>
981
+ <div class="modal-content">
982
+ <div id="devinfo" class="row">
983
+
984
+ </div>
985
+ </div>
986
+ <div class="modal-footer">
987
+ <a name="hide" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Hide</a>
988
+ </div>
989
+ </div>
990
+
991
+ <div id="modalWaiting" class="modal modal">
992
+ <div class="modal-content">
993
+ <h3 class="translate">Waiting</h3>
994
+ <div class="progress">
995
+ <div id="waiting_progress_line" class="determinate" style="width: 0%"></div>
996
+ </div>
997
+ <div class="row">
998
+ <h5 id="waiting_message" class="translate"></h5>
999
+ </div>
1000
+ </div>
1001
+ </div>
1002
+
1003
+ <div id="modalchannels" class="modal modal-fixed-footer modal-fixed-header">
1004
+ <div class="modal-header">
1005
+ <h3 class="translate">Channels</h3>
1006
+ </div>
1007
+ <div class="modal-content">
1008
+ <div class="row">
1009
+ <h6>Channels energy scan. Lower energy is better</h6>
1010
+ </div>
1011
+ <div id="channelsinfo" class="row">
1012
+ </div>
1013
+ </div>
1014
+ <div class="modal-footer">
1015
+ <a name="hide" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Hide</a>
1016
+ </div>
1017
+ </div>
1018
+ </div>
1019
+ </body>
1020
+
1021
+ </html>