iobroker.zigbee 1.8.17 → 1.8.19
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.
- package/LICENSE +21 -21
- package/README.md +419 -412
- package/admin/adapter-settings.js +244 -244
- package/admin/admin.js +2981 -2981
- package/admin/i18n/de/translations.json +108 -108
- package/admin/i18n/en/translations.json +108 -108
- package/admin/i18n/es/translations.json +102 -102
- package/admin/i18n/fr/translations.json +108 -108
- package/admin/i18n/it/translations.json +102 -102
- package/admin/i18n/nl/translations.json +108 -108
- package/admin/i18n/pl/translations.json +108 -108
- package/admin/i18n/pt/translations.json +102 -102
- package/admin/i18n/ru/translations.json +108 -108
- package/admin/i18n/uk/translations.json +108 -108
- package/admin/i18n/zh-cn/translations.json +102 -102
- package/admin/img/philips_hue_lom001.png +0 -0
- package/admin/index.html +159 -159
- package/admin/index_m.html +1356 -1356
- package/admin/moment.min.js +1 -1
- package/admin/shuffle.min.js +2 -2
- package/admin/tab_m.html +1009 -1009
- package/admin/vis-network.min.css +1 -1
- package/admin/vis-network.min.js +27 -27
- package/admin/words.js +110 -110
- package/docs/de/basedocu.md +19 -19
- package/docs/de/readme.md +126 -126
- package/docs/en/readme.md +128 -128
- package/docs/flashing_via_arduino_(en).md +110 -110
- package/docs/ru/readme.md +28 -28
- package/docs/tutorial/groups-1.png +0 -0
- package/docs/tutorial/groups-2.png +0 -0
- package/docs/tutorial/tab-dev-1.png +0 -0
- package/io-package.json +27 -18
- package/lib/backup.js +171 -171
- package/lib/binding.js +319 -319
- package/lib/colors.js +465 -465
- package/lib/commands.js +534 -534
- package/lib/developer.js +145 -145
- package/lib/devices.js +3135 -3135
- package/lib/exclude.js +162 -162
- package/lib/exposes.js +913 -913
- package/lib/groups.js +345 -345
- package/lib/json.js +59 -59
- package/lib/networkmap.js +55 -55
- package/lib/ota.js +198 -198
- package/lib/rgb.js +297 -297
- package/lib/seriallist.js +48 -48
- package/lib/states.js +6420 -6420
- package/lib/statescontroller.js +672 -672
- package/lib/tools.js +54 -54
- package/lib/utils.js +163 -163
- package/lib/zbBaseExtension.js +36 -36
- package/lib/zbDelayedAction.js +144 -144
- package/lib/zbDeviceAvailability.js +319 -319
- package/lib/zbDeviceConfigure.js +147 -147
- package/lib/zbDeviceEvent.js +48 -48
- package/lib/zigbeecontroller.js +989 -989
- package/main.js +62 -37
- package/package.json +6 -4
- package/support/docgen.js +93 -93
package/admin/index_m.html
CHANGED
|
@@ -1,1356 +1,1356 @@
|
|
|
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" src="../../js/adapter-settings.js"></script>
|
|
18
|
-
<script type="text/javascript" src="words.js"></script>
|
|
19
|
-
|
|
20
|
-
<script type="text/javascript" src="admin.js"></script>
|
|
21
|
-
<script type="text/javascript" src="shuffle.min.js"></script>
|
|
22
|
-
<script type="text/javascript" src="moment.min.js"></script>
|
|
23
|
-
<style>
|
|
24
|
-
.m .tabs {
|
|
25
|
-
height: auto !important;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
.m .col .select-wrapper + label, .m .col input + label:not(.active) {
|
|
29
|
-
top: -26px;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
.select-wrapper li span {
|
|
33
|
-
pointer-events: none; /* workarround for checkbox in select, else checkbox and label not clickable */
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
.m .col input + label {
|
|
37
|
-
font-size: 0.8rem;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
.m span {
|
|
41
|
-
font-size: 0.9em;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
.m .zlogo {
|
|
45
|
-
padding: 0.5rem;
|
|
46
|
-
width: 64px;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
.input-group {
|
|
50
|
-
display: table;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
.input-group input, .suffix {
|
|
54
|
-
display: table-cell;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
.suffix {
|
|
58
|
-
width: 1%;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
.input-field.suffix a {
|
|
62
|
-
position: absolute;
|
|
63
|
-
font-size: 2rem;
|
|
64
|
-
top: 0px;
|
|
65
|
-
right: 0px;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
.input-field.suffix a.active {
|
|
69
|
-
color: #26a69a;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
.input-field.suffix .select-wrapper {
|
|
73
|
-
margin-right: 3rem;
|
|
74
|
-
width: 92%;
|
|
75
|
-
width: calc(100% - 3rem);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
.input-field.suffix label {
|
|
79
|
-
margin-right: 3rem;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
#tabs {
|
|
83
|
-
margin-top: 115px;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
#main {
|
|
87
|
-
margin-bottom: -50px;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
.page:not(.active) {
|
|
91
|
-
/* prevents 'all pages visible for a moment at first load' (because pages are loaded before materialize is loaded)*/
|
|
92
|
-
display: none;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
#dev-selectors > div {
|
|
96
|
-
margin-top: 30px;
|
|
97
|
-
border-bottom: 1px solid lightblue;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
#dev_result_log {
|
|
101
|
-
overflow: scroll;
|
|
102
|
-
height: 10em;
|
|
103
|
-
padding: 0.5em;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
#expert-toggle {
|
|
107
|
-
margin-bottom: 3em;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
#expert-json {
|
|
111
|
-
min-height: 18rem;
|
|
112
|
-
overflow-y: scroll;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
#viewconfigbtn {
|
|
116
|
-
left: 23px;
|
|
117
|
-
width: 45px;
|
|
118
|
-
top: 120px;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
.m .card {
|
|
122
|
-
margin: 0px;
|
|
123
|
-
width: 100%;
|
|
124
|
-
height: 100%;
|
|
125
|
-
position: relative;
|
|
126
|
-
-webkit-transition: -webkit-transform 0.5s;
|
|
127
|
-
-moz-transition: -moz-transform 0.5s;
|
|
128
|
-
-o-transition: -o-transform 0.5s;
|
|
129
|
-
transition: transform 0.5s;
|
|
130
|
-
-webkit-transform-style: preserve-3d;
|
|
131
|
-
-moz-transform-style: preserve-3d;
|
|
132
|
-
-o-transform-style: preserve-3d;
|
|
133
|
-
transform-style: preserve-3d;
|
|
134
|
-
-webkit-transform-origin: 50% 50%;
|
|
135
|
-
transform-origin: 50% 50%;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
.m .card .zcard {
|
|
139
|
-
padding: 10px;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
.m .card div {
|
|
143
|
-
-webkit-backface-visibility: hidden;
|
|
144
|
-
-moz-backface-visibility: hidden;
|
|
145
|
-
-o-backface-visibility: hidden;
|
|
146
|
-
backface-visibility: hidden;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
.device {
|
|
150
|
-
padding: 5px;
|
|
151
|
-
width: 330px;
|
|
152
|
-
height: 200px;
|
|
153
|
-
-webkit-perspective: 800px;
|
|
154
|
-
-moz-perspective: 800px;
|
|
155
|
-
-o-perspective: 800px;
|
|
156
|
-
perspective: 800px;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
.m .zcard .card-title {
|
|
160
|
-
font-size: 16px;
|
|
161
|
-
font-weight: 300;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
.card-action .card-reveal-buttons {
|
|
165
|
-
left: 0;
|
|
166
|
-
position: absolute;
|
|
167
|
-
border: none;
|
|
168
|
-
bottom: 0;
|
|
169
|
-
height: 50px;
|
|
170
|
-
/*background: #fff;*/
|
|
171
|
-
right: 0;
|
|
172
|
-
/*text-align: right;*/
|
|
173
|
-
padding: 10px;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
.card-action i {
|
|
177
|
-
font-size: 1.7em;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
.card-action button {
|
|
181
|
-
margin-right: 5px;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
.small-button {
|
|
185
|
-
background: #fff;
|
|
186
|
-
color: #0e2e4a;
|
|
187
|
-
padding: 1px 0 0 0;
|
|
188
|
-
cursor: pointer;
|
|
189
|
-
transition: .2s linear;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
.small-button, .small-button-empty {
|
|
193
|
-
width: 24px;
|
|
194
|
-
margin: 0 1px 0 0;
|
|
195
|
-
display: inline-block;
|
|
196
|
-
position: relative;
|
|
197
|
-
z-index: 1;
|
|
198
|
-
border: 0;
|
|
199
|
-
border-radius: 2px;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
i.icon-green {
|
|
203
|
-
color: green;
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
.m.react-dark i.icon-green {
|
|
207
|
-
color: green !important;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
.m.react-blue i.icon-green {
|
|
211
|
-
color: green !important;
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
i.icon-black {
|
|
215
|
-
color: black;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
i.icon-blue {
|
|
219
|
-
color: blue;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
.m.react-dark i.icon-blue {
|
|
223
|
-
color: rgb(100, 181, 246) !important;
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
.m.react-blue i.icon-blue {
|
|
227
|
-
color: rgb(100, 181, 246) !important;
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
i.icon-red {
|
|
231
|
-
color: red;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
.m.react-dark i.icon-red {
|
|
235
|
-
color: red !important;
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
.m.react-blue i.icon-red {
|
|
239
|
-
color: red !important;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
i.icon-orange {
|
|
243
|
-
color: orange;
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
.m.react-blue div.bg_red {
|
|
247
|
-
background-color: #400000;
|
|
248
|
-
color: DimGray;
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
.m div.bg_red {
|
|
252
|
-
background-color: LightGray;
|
|
253
|
-
color: DimGray;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
.m.react-dark div.bg_red {
|
|
257
|
-
background-color: #400000;
|
|
258
|
-
color: DimGray;
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
.m.react-dark i.icon-orange {
|
|
262
|
-
color: orange !important;
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
.m.react-blue i.icon-orange {
|
|
266
|
-
color: orange !important;
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
.m .btn-small.btn-flat {
|
|
270
|
-
padding: 0 4px;
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
.m .row .col.tool {
|
|
274
|
-
padding: 0 .1rem;
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
.m span.label {
|
|
278
|
-
display: inline-block;
|
|
279
|
-
width: 100px;
|
|
280
|
-
font-weight: bold;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
.m span.label.dash {
|
|
284
|
-
display: inline-block;
|
|
285
|
-
width: 140px;
|
|
286
|
-
font-weight: bold;
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
.m span.labelinfo {
|
|
290
|
-
display: inline-block;
|
|
291
|
-
width: 60px;
|
|
292
|
-
font-weight: bold;
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
.forcedelete {
|
|
296
|
-
float: left;
|
|
297
|
-
padding-left: 1rem;
|
|
298
|
-
padding-top: 1rem;
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
.modal-header {
|
|
302
|
-
position: relative;
|
|
303
|
-
height: 50px;
|
|
304
|
-
padding: 20px 20px 5px 20px;
|
|
305
|
-
border-bottom: 1px solid rgba(0, 0, 0, .1);
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
.m .modal.modal-fixed-footer.modal-fixed-header .modal-content {
|
|
309
|
-
height: calc(100% - 140px) !important;
|
|
310
|
-
padding-top: 5px;
|
|
311
|
-
padding-bottom: 5px;
|
|
312
|
-
overflow: auto;
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
.m .page {
|
|
316
|
-
height: calc(100% - 120px);
|
|
317
|
-
overflow: auto;
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
#tab-sett {
|
|
321
|
-
padding-right: 30px;
|
|
322
|
-
padding-left: 30px;
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
#map {
|
|
326
|
-
margin: 0px;
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
#tab-main .main-toolbar-table .filter-input {
|
|
330
|
-
display: inline-table;
|
|
331
|
-
padding-left: 6px;
|
|
332
|
-
height: 24px;
|
|
333
|
-
width: 10rem;
|
|
334
|
-
margin-top: 5px;
|
|
335
|
-
margin-bottom: 0;
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
.face {
|
|
339
|
-
overflow: hidden;
|
|
340
|
-
position: absolute;
|
|
341
|
-
height: 100%;
|
|
342
|
-
width: 100%;
|
|
343
|
-
/*background: #fff;*/
|
|
344
|
-
z-index: 2;
|
|
345
|
-
-webkit-transform: rotateY(0deg);
|
|
346
|
-
-moz-transform: rotateY(0deg);
|
|
347
|
-
-o-transform: rotateY(0deg);
|
|
348
|
-
transform: rotateY(0deg);
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
.back {
|
|
352
|
-
overflow: hidden;
|
|
353
|
-
position: absolute;
|
|
354
|
-
display: block;
|
|
355
|
-
box-sizing: border-box;
|
|
356
|
-
height: 100%;
|
|
357
|
-
width: 100%;
|
|
358
|
-
/*background: #fff;*/
|
|
359
|
-
-webkit-transform: rotateY(-180deg);
|
|
360
|
-
-moz-transform: rotateY(-180deg);
|
|
361
|
-
-o-transform: rotateY(-180deg);
|
|
362
|
-
transform: rotateY(-180deg);
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
.card.flipped {
|
|
366
|
-
-webkit-transform: rotateY(180deg);
|
|
367
|
-
-moz-transform: rotateY(180deg);
|
|
368
|
-
-o-transform: rotateY(180deg);
|
|
369
|
-
transform: rotateY(180deg);
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
.m .switch label .lever {
|
|
373
|
-
width: 30px;
|
|
374
|
-
height: 12px;
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
.m .switch label .lever:after, .m .switch label .lever:before {
|
|
378
|
-
width: 14px;
|
|
379
|
-
height: 14px;
|
|
380
|
-
border-radius: 50%;
|
|
381
|
-
left: 0;
|
|
382
|
-
top: -1px;
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
.m .dash input[type=range] {
|
|
386
|
-
width: 70px;
|
|
387
|
-
margin: 0px;
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
.m .dash input[type=checkbox]:checked + span:not(.lever):before {
|
|
391
|
-
width: 10px;
|
|
392
|
-
height: 16px;
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
.m .dash input[type=checkbox] + span:not(.lever):before {
|
|
396
|
-
width: 10px;
|
|
397
|
-
height: 12px;
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
.m .dash input[type="checkbox"] + span:not(.lever) {
|
|
401
|
-
width: 10px;
|
|
402
|
-
height: 12px;
|
|
403
|
-
margin-left: 25px;
|
|
404
|
-
margin-top: -1px;
|
|
405
|
-
}
|
|
406
|
-
|
|
407
|
-
.m .dash input[type=checkbox]:not(:checked):disabled + span:not(.lever):before {
|
|
408
|
-
background-color: rgba(0, 0, 0, .1);
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
.m span .dash.value {
|
|
412
|
-
margin-left: 25px;
|
|
413
|
-
}
|
|
414
|
-
|
|
415
|
-
.m .idletime {
|
|
416
|
-
padding-left: 15px;
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
.m.react-blue .switch label input[type="checkbox"]:checked + .lever {
|
|
420
|
-
background-color: #436a93;
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
.m.react-blue .switch label .lever {
|
|
424
|
-
background-color: #4dabf5;
|
|
425
|
-
}
|
|
426
|
-
|
|
427
|
-
.m.react-blue .switch label .lever:after {
|
|
428
|
-
background-color: #436a93;
|
|
429
|
-
}
|
|
430
|
-
|
|
431
|
-
.m.react-dark .switch label input[type="checkbox"]:checked + .lever {
|
|
432
|
-
background-color: #436a93;
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
.m.react-dark .switch label .lever {
|
|
436
|
-
background-color: #4dabf5;
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
.m.react-dark .switch label .lever:after {
|
|
440
|
-
background-color: #436a93;
|
|
441
|
-
}
|
|
442
|
-
</style>
|
|
443
|
-
</head>
|
|
444
|
-
<body>
|
|
445
|
-
<!-- you have to put your config page in a div with id adapter-container -->
|
|
446
|
-
<div id="main" class="m adapter-container">
|
|
447
|
-
<div class="row navbar-fixed">
|
|
448
|
-
<nav class="nav-extended">
|
|
449
|
-
<div class="nav-wrapper">
|
|
450
|
-
<div class="col">
|
|
451
|
-
<img src="zigbee.png" class="zlogo left" height="64px"/>
|
|
452
|
-
</div>
|
|
453
|
-
<div class="col">
|
|
454
|
-
<h5 class="translate center-align">Zigbee adapter</h5>
|
|
455
|
-
</div>
|
|
456
|
-
<ul id="nav-mobile" class="right">
|
|
457
|
-
<li>
|
|
458
|
-
<a id="state_cleanup_btn"
|
|
459
|
-
class="btn-floating waves-effect waves-light red tooltipped center-align hoverable translateT"
|
|
460
|
-
title="State Cleanup">
|
|
461
|
-
<i class="material-icons large icon-blue">sync</i></a>
|
|
462
|
-
</li>
|
|
463
|
-
<li>
|
|
464
|
-
<a id="fw_check_btn"
|
|
465
|
-
class="btn-floating waves-effect waves-light blue tooltipped center-align hoverable translateT"
|
|
466
|
-
title="Check firmware updates">
|
|
467
|
-
<i class="material-icons large icon-blue">system_update</i></a>
|
|
468
|
-
</li>
|
|
469
|
-
<li>
|
|
470
|
-
<a id="add_grp_btn"
|
|
471
|
-
class="btn-floating waves-effect waves-light brown tooltipped center-align hoverable translateT"
|
|
472
|
-
title="Add Group">
|
|
473
|
-
<i class="material-icons large">group_work</i></a>
|
|
474
|
-
</li>
|
|
475
|
-
<li>
|
|
476
|
-
<a id="touchlink_btn"
|
|
477
|
-
class="btn-floating waves-effect waves-light green tooltipped center-align hoverable translateT"
|
|
478
|
-
title="Touchlink reset and pairing">
|
|
479
|
-
<i class="material-icons large">wifi_tethering</i></a>
|
|
480
|
-
</li>
|
|
481
|
-
<li>
|
|
482
|
-
<a id="code_pairing"
|
|
483
|
-
class="btn-floating waves-effect waves-light green tooltipped center-align hoverable translateT"
|
|
484
|
-
title="Pairing with QR Code">
|
|
485
|
-
<i class="material-icons large">select_all</i></a>
|
|
486
|
-
</li>
|
|
487
|
-
<li>
|
|
488
|
-
<a id="pairing"
|
|
489
|
-
class="btn-floating waves-effect waves-light green tooltipped center-align hoverable translateT"
|
|
490
|
-
title="Let's pairing!">
|
|
491
|
-
<i class="material-icons large">leak_add</i></a>
|
|
492
|
-
</li>
|
|
493
|
-
</ul>
|
|
494
|
-
</div>
|
|
495
|
-
<div class="nav-content">
|
|
496
|
-
<ul class="tabs tabs-transparent">
|
|
497
|
-
<li class="tab col s2"><a href="#tab-main" id="devs" class="translate tooltipped">Devices</a></li>
|
|
498
|
-
<!-- <li class="tab col s2"><a href="#tab-groups" class="translate tooltipped">Groups</a></li>-->
|
|
499
|
-
<li class="tab col s2"><a href="#tab-map" id="tabmap" class="translate tooltipped">Network map</a>
|
|
500
|
-
</li>
|
|
501
|
-
<li class="tab col s2"><a href="#tab-binding" class="translate tooltipped">Binding</a></li>
|
|
502
|
-
<li class="tab col s1"><a href="#tab-exclude" class="translate tooltipped">Excludes</a></li>
|
|
503
|
-
<li class="tab col s2"><a href="#tab-sett" id="settings" class="translate tooltipped">Settings</a>
|
|
504
|
-
</li>
|
|
505
|
-
<li class="tab col s1"><a href="#tab-dev" id="develop" class="translate tooltipped">Developer</a>
|
|
506
|
-
</li>
|
|
507
|
-
</ul>
|
|
508
|
-
</div>
|
|
509
|
-
</nav>
|
|
510
|
-
</div>
|
|
511
|
-
<div id="tabs" class="tabs-content row">
|
|
512
|
-
<div id="tab-main" class="col s12 page active">
|
|
513
|
-
<div class="navbar-fixed" style="height: 36px;">
|
|
514
|
-
<nav style="height: 36px; margin-left: -12px; line-height: 24px;">
|
|
515
|
-
<ul id="nav-mobile" class="left">
|
|
516
|
-
<li>
|
|
517
|
-
<a id="rotate_btn"
|
|
518
|
-
class="btn-floating waves-effect waves-light blue tooltipped center-align hoverable translateT"
|
|
519
|
-
title="Rotate cards">
|
|
520
|
-
<i class="material-icons large icon-blue">3d_rotation</i>
|
|
521
|
-
</a>
|
|
522
|
-
</li>
|
|
523
|
-
<li>
|
|
524
|
-
<div class="col main-toolbar-table-types-tools main-toolbar-table-filter input-field"
|
|
525
|
-
style="line-height: 24px;">
|
|
526
|
-
<i class="material-icons prefix" style="line-height: 24px;">search</i>
|
|
527
|
-
<input id="device-search" class="filter-input translateP" placeholder="Искать"
|
|
528
|
-
autocomplete="new-password" readonly="readonly"
|
|
529
|
-
onfocus="if (this.hasAttribute('readonly')) {this.removeAttribute('readonly'); this.blur(); this.focus();}"
|
|
530
|
-
data-lang-placeholder="Filter">
|
|
531
|
-
<a class="filter-clear btn-floating btn-very-small translateT red lighten-3"
|
|
532
|
-
title="Очистить" data-lang-title="clear" style="display: none;"><i
|
|
533
|
-
class="material-icons">clear</i></a>
|
|
534
|
-
</div>
|
|
535
|
-
|
|
536
|
-
</li>
|
|
537
|
-
<li>
|
|
538
|
-
<div class="col input-field" style="line-height: 24px;">
|
|
539
|
-
<i class="material-icons left" style="line-height: 24px; margin-top: 5px;">sort</i>
|
|
540
|
-
<a id="device-order-btn" class="dropdown-trigger btn" href="#"
|
|
541
|
-
data-target="device-order">Default</a>
|
|
542
|
-
<ul id="device-order" class="dropdown-content" tabindex="0">
|
|
543
|
-
<li class="device-order-item" data-type="a-z" tabindex="0"><a class="translate"
|
|
544
|
-
data-lang="A-Z">A-Z</a>
|
|
545
|
-
</li>
|
|
546
|
-
<li class="device-order-item" data-type="default" tabindex="0"><a class="translate"
|
|
547
|
-
data-lang="Default">Default</a>
|
|
548
|
-
</li>
|
|
549
|
-
</ul>
|
|
550
|
-
</div>
|
|
551
|
-
</li>
|
|
552
|
-
<li>
|
|
553
|
-
<div class="col input-field" style="line-height: 24px;">
|
|
554
|
-
<i class="material-icons left" style="line-height: 24px; margin-top: 5px;">art_track</i>
|
|
555
|
-
<a id="room-filter-btn" class="dropdown-trigger btn" href="#" data-target="room-filter">All</a>
|
|
556
|
-
<ul id="room-filter" class="dropdown-content" tabindex="0">
|
|
557
|
-
</ul>
|
|
558
|
-
</div>
|
|
559
|
-
</li>
|
|
560
|
-
</ul>
|
|
561
|
-
</nav>
|
|
562
|
-
</div>
|
|
563
|
-
<div id="devices" class="row">
|
|
564
|
-
</div>
|
|
565
|
-
</div>
|
|
566
|
-
<div id="tab-map" class="col s12 page">
|
|
567
|
-
<div class="fixed-action-btn" style="margin-bottom: 100px">
|
|
568
|
-
<a id="refresh"
|
|
569
|
-
class="btn-floating waves-effect waves-light blue tooltipped center-align hoverable translateT"
|
|
570
|
-
title="Refresh"><i class="material-icons large">autorenew</i></a>
|
|
571
|
-
</div>
|
|
572
|
-
<div id="viewconfigbtn" class="fixed-action-btn top left">
|
|
573
|
-
<a id="viewconfig"
|
|
574
|
-
class="btn-floating waves-effect waves-light orange tooltipped center-align hoverable translateT"
|
|
575
|
-
title="View config"><i class="material-icons large">menu</i></a>
|
|
576
|
-
</div>
|
|
577
|
-
<div id="map" class="row">
|
|
578
|
-
</div>
|
|
579
|
-
</div>
|
|
580
|
-
<div id="tab-sett" class="col s12 page">
|
|
581
|
-
<div id="sett" class="row">
|
|
582
|
-
<div class="input-field input-group col s12 m6 l4">
|
|
583
|
-
<input id="port" type="text" class="value validate"/>
|
|
584
|
-
<label for="port" class="translate">COM port name</label>
|
|
585
|
-
<span class="suffix">
|
|
586
|
-
<a id="selector" class='dropdown-trigger btn' href='#' data-target='ports'><i
|
|
587
|
-
class="material-icons">arrow_drop_down</i></a>
|
|
588
|
-
<!-- Dropdown Structure -->
|
|
589
|
-
<ul id='ports' class='dropdown-content'>
|
|
590
|
-
</ul>
|
|
591
|
-
</span>
|
|
592
|
-
</div>
|
|
593
|
-
<div class="input-field col s12 m6 l4">
|
|
594
|
-
<select id="adapterType" class="value">
|
|
595
|
-
<option value="" disabled selected class="translate">Choose type</option>
|
|
596
|
-
<option value="zstack">TI Z-Stack/CCxxxx</option>
|
|
597
|
-
<option value="deconz">Deconz/Conbee</option>
|
|
598
|
-
<option value="zigate">NXP/Zigate</option>
|
|
599
|
-
<option value="ezsp">Silicon Labs EZSP/EFR32</option>
|
|
600
|
-
</select>
|
|
601
|
-
<label class="translate">Type</label>
|
|
602
|
-
</div>
|
|
603
|
-
<div class="input-field col s6 m3 l3">
|
|
604
|
-
<input id="countDown" type="number" min="0" max="180" class="value"/>
|
|
605
|
-
<label class="translate" for="countDown">Countdown</label>
|
|
606
|
-
</div>
|
|
607
|
-
</div>
|
|
608
|
-
<div class="row">
|
|
609
|
-
<h6>Network</h6>
|
|
610
|
-
<div class="row">
|
|
611
|
-
<div class="input-field col s12 m6 l4">
|
|
612
|
-
<input id="extPanID" type="text" pattern="[a-fA-F\d]+" minlength="16" maxlength="16"
|
|
613
|
-
class="validate value"/>
|
|
614
|
-
<label class="translate" for="extPanID">ExtPanID</label>
|
|
615
|
-
</div>
|
|
616
|
-
<div class="input-field col s12 m6 l8">
|
|
617
|
-
<p class="translate">ExtPanIDText</p>
|
|
618
|
-
</div>
|
|
619
|
-
</div>
|
|
620
|
-
<div class="row">
|
|
621
|
-
<div class="input-field col s12 m6 l4">
|
|
622
|
-
<input id="panID" type="number" min="1" max="65565" class="value"/>
|
|
623
|
-
<label class="translate" for="panID">PanID</label>
|
|
624
|
-
</div>
|
|
625
|
-
<div class="input-field col s12 m6 l8">
|
|
626
|
-
<p class="translate">PanIDText</p>
|
|
627
|
-
</div>
|
|
628
|
-
|
|
629
|
-
</div>
|
|
630
|
-
<div class="row">
|
|
631
|
-
<div class="input-field suffix col s12 m6 l4">
|
|
632
|
-
<select id="channel" class="value">
|
|
633
|
-
<option value="" disabled selected class="translate">Choose channel</option>
|
|
634
|
-
<option value="11">11</option>
|
|
635
|
-
<option value="12">12</option>
|
|
636
|
-
<option value="13">13</option>
|
|
637
|
-
<option value="14">14</option>
|
|
638
|
-
<option value="15">15</option>
|
|
639
|
-
<option value="16">16</option>
|
|
640
|
-
<option value="17">17</option>
|
|
641
|
-
<option value="18">18</option>
|
|
642
|
-
<option value="19">19</option>
|
|
643
|
-
<option value="20">20</option>
|
|
644
|
-
<option value="21">21</option>
|
|
645
|
-
<option value="22">22</option>
|
|
646
|
-
<option value="23">23</option>
|
|
647
|
-
<option value="24">24</option>
|
|
648
|
-
<option value="25">25</option>
|
|
649
|
-
<option value="26">26</option>
|
|
650
|
-
</select>
|
|
651
|
-
<label class="translate">Channel</label>
|
|
652
|
-
<a id="scan" class='btn' data-target='channel'><i class="material-icons">graphic_eq</i></a>
|
|
653
|
-
</div>
|
|
654
|
-
<div class="input-field col s12 m6 l8">
|
|
655
|
-
<p class="translate">ChannelChangeText</p>
|
|
656
|
-
</div>
|
|
657
|
-
</div>
|
|
658
|
-
<div class="input-field col s12 m6 l4">
|
|
659
|
-
<input id="precfgkey" type="text" pattern="[a-fA-F\d]+" class="validate value"/>
|
|
660
|
-
<label class="translate" for="precfgkey">Transport Key</label>
|
|
661
|
-
</div>
|
|
662
|
-
<div class="input-field col s12 m6 l8">
|
|
663
|
-
<p class="translate">Tranport Key Text</p>
|
|
664
|
-
</div>
|
|
665
|
-
</div>
|
|
666
|
-
<div class="row">
|
|
667
|
-
<div class="input-field col s12 m6 l4 col-transmitPower">
|
|
668
|
-
<select id="transmitPower" class="value">
|
|
669
|
-
<option value="" disabled selected class="translate">transmitPower</option>
|
|
670
|
-
<option value="-22">low</option>
|
|
671
|
-
<option value="0">norm</option>
|
|
672
|
-
<option value="19">high</option>
|
|
673
|
-
<option value="20">high+</option>
|
|
674
|
-
</select>
|
|
675
|
-
<label class="translate" for="transmitPower">transmitPower</label>
|
|
676
|
-
</div>
|
|
677
|
-
</div>
|
|
678
|
-
<div class="row">
|
|
679
|
-
<h6 class="translate">Others</h6>
|
|
680
|
-
<div class="input-field col s12 m6 l4 col-disableLed">
|
|
681
|
-
<input id="disableLed" type="checkbox" class="value"/>
|
|
682
|
-
<label class="translate" for="disableLed">Disable LED for cc2531</label>
|
|
683
|
-
</div>
|
|
684
|
-
<div class="input-field col s12 m6 l4 col-disablePing">
|
|
685
|
-
<input id="disablePing" type="checkbox" class="value"/>
|
|
686
|
-
<label class="translate" for="disablePing">Disable active availability check</label>
|
|
687
|
-
</div>
|
|
688
|
-
<div class="input-field col s12 m6 l4 col-debugHerdsman">
|
|
689
|
-
<input id="debugHerdsman" type="checkbox" class="value"/>
|
|
690
|
-
<label class="translate" for="debugHerdsman">Zigbee-herdsman debug info</label>
|
|
691
|
-
</div>
|
|
692
|
-
<div class="input-field col s12 m6 l4">
|
|
693
|
-
<a id="reset-btn" class="waves-effect waves-light white-text btn-large translate">Reset...</a>
|
|
694
|
-
</div>
|
|
695
|
-
<div class="input-field col s12 m6 l4 col-disableBackup">
|
|
696
|
-
<input id="disableBackup" type="checkbox" class="value"/>
|
|
697
|
-
<label class="translate" for="disableBackup">disable internal Backup</label>
|
|
698
|
-
</div>
|
|
699
|
-
|
|
700
|
-
</div>
|
|
701
|
-
<div class="row">
|
|
702
|
-
<h6 class="translate">External converters</h6>
|
|
703
|
-
<div class="input-field col s12 m6 l4">
|
|
704
|
-
<input id="external" type="text" class="value"/>
|
|
705
|
-
<label class="translate" for="external">Paths to files, semicolon (;) splitted</label>
|
|
706
|
-
</div>
|
|
707
|
-
</div>
|
|
708
|
-
<div class="input-field col s12 m12 l12 col-startWithInconsistent">
|
|
709
|
-
<input id="startWithInconsistent" type="checkbox" class="value"/>
|
|
710
|
-
<label class="translate" for="startWithInconsistent">SettingsExclude</label>
|
|
711
|
-
</div>
|
|
712
|
-
</div>
|
|
713
|
-
|
|
714
|
-
<div id="tab-expos" class="col s12 page">
|
|
715
|
-
<div id="exposes" class="row">
|
|
716
|
-
<a class="btn-floating waves-effect waves-light blue table-button-add"><i class="material-icons">add</i></a>
|
|
717
|
-
<div class="table-values-div">
|
|
718
|
-
<table class="table-values">
|
|
719
|
-
<thead>
|
|
720
|
-
<tr>
|
|
721
|
-
<th data-name="addr" style="width: 70%" class="translate">addr</th>
|
|
722
|
-
<th data-name="active" style="width: 30px" data-style="width: 70px" data-type="checkbox"
|
|
723
|
-
class="translate">enabled
|
|
724
|
-
</th>
|
|
725
|
-
<th data-buttons="delete up down" style="width: 120px"></th>
|
|
726
|
-
</tr>
|
|
727
|
-
</thead>
|
|
728
|
-
</table>
|
|
729
|
-
</div>
|
|
730
|
-
</div>
|
|
731
|
-
</div>
|
|
732
|
-
|
|
733
|
-
<div id="tab-dev" class="col s12 page">
|
|
734
|
-
<div id="develop" class="row">
|
|
735
|
-
<div class="row">
|
|
736
|
-
<div class="col s12">
|
|
737
|
-
<h6 class="translate">This page is needed only for advanced users that like to extend adapter
|
|
738
|
-
functionalities!</h6>
|
|
739
|
-
</div>
|
|
740
|
-
</div>
|
|
741
|
-
<div class="row">
|
|
742
|
-
<div class="col s4">
|
|
743
|
-
<p class="translate">notImplementedText</p>
|
|
744
|
-
<p><span class="translate">You find good explanations what the settings mean</span>
|
|
745
|
-
<a href="https://docs.smartthings.com/en/latest/device-type-developers-guide/zigbee-primer.html"
|
|
746
|
-
target="_blank" class="translate">here</a>
|
|
747
|
-
<span class="translate">and in</span> <a
|
|
748
|
-
href="https://www.nxp.com/docs/en/user-guide/JN-UG-3115.pdf" target="_blank">ZigBee
|
|
749
|
-
Cluster Library</a>.
|
|
750
|
-
</p>
|
|
751
|
-
<p><span class="translate">Please contribute your discoveries</span> (<a
|
|
752
|
-
href="https://github.com/Koenkk/zigbee-herdsman-converters" target="_blank">
|
|
753
|
-
zigbee-herdsman-converters</a>) <span class="translate">to make it available for other user too</span>.
|
|
754
|
-
</p>
|
|
755
|
-
</div>
|
|
756
|
-
<div class="col s8">
|
|
757
|
-
<div class="blue-grey-text">
|
|
758
|
-
<h6 class="translate">Examples:</h6>
|
|
759
|
-
<ul class="collapsible">
|
|
760
|
-
<li>
|
|
761
|
-
<div class="collapsible-header translate">Read Firmware</div>
|
|
762
|
-
<div class="collapsible-body">Hue Motion Detector: <b>Device:</b> SML001, <b>Endpoint:</b>
|
|
763
|
-
2, <b>ClusterId:</b> genBasic (0),
|
|
764
|
-
<b>Command Type: </b>Foundation, <b>Command:</b> read (0), <b>AttributeId:</b>
|
|
765
|
-
swBuildId (16384)<br>
|
|
766
|
-
=> Result: "6.1.0.18912" (You read the device Firmware version)
|
|
767
|
-
</div>
|
|
768
|
-
</li>
|
|
769
|
-
<li>
|
|
770
|
-
<div class="collapsible-header translate">Write Attribute</div>
|
|
771
|
-
<div class="collapsible-body"><b>Device:</b> SML001, <b>Endpoint:</b> 2,
|
|
772
|
-
<b>ClusterId:</b> msOccupancySensing (1030), <b>Command Type: </b>Foundation,
|
|
773
|
-
<b>Command:</b> write (2), <b>AttributeId:</b>
|
|
774
|
-
pirOToUDelay (16, type 33), <b>Value:</b> 55<br>
|
|
775
|
-
=> (You set the timeout until motion detector changes from occupied not
|
|
776
|
-
unoccupied,
|
|
777
|
-
test it be <b>reading</b> same attribute)
|
|
778
|
-
</div>
|
|
779
|
-
</li>
|
|
780
|
-
<li>
|
|
781
|
-
<div class="collapsible-header translate">Send Functional command</div>
|
|
782
|
-
<div class="collapsible-body"><b>Device:</b> TRADFRI bulb..., <b>Endpoint:</b> 1,
|
|
783
|
-
<b>ClusterId:</b> genOnOff (6), <b>Command Type: </b>Functional,
|
|
784
|
-
<b>Command:</b> on (1), <b>AttributeId:</b>
|
|
785
|
-
onOff (0, type 16)<br>
|
|
786
|
-
=> You switched on your bulb
|
|
787
|
-
<p>For details about needed arguments (expert mode) see
|
|
788
|
-
<a href="https://github.com/zigbeer/zcl-packet/wiki/6.-Appendix#621-general">
|
|
789
|
-
zcl-packet - Appendix</a></p></div>
|
|
790
|
-
</li>
|
|
791
|
-
<li>
|
|
792
|
-
<div class="collapsible-header translate">Expert Mode</div>
|
|
793
|
-
<div class="collapsible-body">Example:<br>
|
|
794
|
-
<b>JSON:</b> { "devId": "zigbee.0.yourDevId",
|
|
795
|
-
"ep": "2", "cid": "msOccupancySensing", "cmd": "write", "cmdType": "foundation",
|
|
796
|
-
"zclData": { "pirOToUDelay": 30 },
|
|
797
|
-
"cfg": { "manufCode": 4107, "manufSpec": 1}}<br>
|
|
798
|
-
(You may use selectors together with expert mode to get prepared JSON)
|
|
799
|
-
</div>
|
|
800
|
-
</li>
|
|
801
|
-
<li>
|
|
802
|
-
<div class="collapsible-header translate">Configure reporting</div>
|
|
803
|
-
<div class="collapsible-body">Example (Expert Mode):<br>
|
|
804
|
-
<b>JSON:</b> { "devId": "zigbee.0.yourDevId",
|
|
805
|
-
"ep": "2", "cid": "msTemperatureMeasurement", "cmd": "configReport", "cmdType":
|
|
806
|
-
"foundation",<br>
|
|
807
|
-
"zclData": [{<br>
|
|
808
|
-
"attribute": "measuredValue", <br>"minimumReportInterval": 1, <br>"maximumReportInterval":
|
|
809
|
-
600,<br>
|
|
810
|
-
"reportableChange": 1 }],<br>
|
|
811
|
-
"cfg": null}
|
|
812
|
-
</div>
|
|
813
|
-
</li>
|
|
814
|
-
</ul>
|
|
815
|
-
</div>
|
|
816
|
-
</div>
|
|
817
|
-
</div>
|
|
818
|
-
<div class="col s9">
|
|
819
|
-
<div class="row">
|
|
820
|
-
<div class="input-field col s8">
|
|
821
|
-
<select id="dev-selector">
|
|
822
|
-
<option value="" disabled selected class="translate">Select a device</option>
|
|
823
|
-
</select>
|
|
824
|
-
<label for="dev-selector" class="translate">Device</label>
|
|
825
|
-
</div>
|
|
826
|
-
<div class="input-field col s4 admin-tooltip-icon translateT"
|
|
827
|
-
title="Some kind of 'device within device'. Every endpoint may have different functions. If one does not work, test another.">
|
|
828
|
-
<select id="ep-selector">
|
|
829
|
-
<option value="" disabled selected class="translate">Select an Endpoint</option>
|
|
830
|
-
</select>
|
|
831
|
-
<label for="ep-selector" class="translate">Endpoint</label>
|
|
832
|
-
</div>
|
|
833
|
-
</div>
|
|
834
|
-
<div class="row">
|
|
835
|
-
<div class="row">
|
|
836
|
-
<div class="input-field col s4 admin-tooltip-icon"
|
|
837
|
-
title="Group of functions. AttributeIds will change depending on your choice here.">
|
|
838
|
-
<select id="cid-selector">
|
|
839
|
-
<option value="" disabled selected class="translate">Select cid</option>
|
|
840
|
-
</select>
|
|
841
|
-
<label for="cid-selector" class="translate">Cluster ID</label>
|
|
842
|
-
</div>
|
|
843
|
-
<div class="input-field col s4 admin-tooltip-icon"
|
|
844
|
-
title="Command type. Available commands will change depending on your choice here. Some actions need Foundation, others Functional, you may test both.">
|
|
845
|
-
<select id="cmd-type-selector">
|
|
846
|
-
<option value="foundation" selected>Foundation</option>
|
|
847
|
-
<option value="functional">Functional</option>
|
|
848
|
-
</select>
|
|
849
|
-
<label for="cid-selector" class="translate">Command Type</label>
|
|
850
|
-
</div>
|
|
851
|
-
<div class="input-field col s4 admin-tooltip-icon" title="The action you want to run.">
|
|
852
|
-
<select id="cmd-selector">
|
|
853
|
-
<option value="" disabled selected class="translate">Select Command</option>
|
|
854
|
-
</select>
|
|
855
|
-
<label for="cmd-selector" class="translate">Command</label>
|
|
856
|
-
</div>
|
|
857
|
-
<div class="input-field col s4 admin-tooltip-icon"
|
|
858
|
-
title="The setting you are interested in.">
|
|
859
|
-
<select id="attrid-selector">
|
|
860
|
-
<option value="" disabled selected class="translate">Select Attribute</option>
|
|
861
|
-
</select>
|
|
862
|
-
<label for="attrid-selector" class="translate">Attribute ID</label>
|
|
863
|
-
</div>
|
|
864
|
-
<div class="col s8">
|
|
865
|
-
<div class="input-field col s5 offset-s1 admin-tooltip-icon translateT"
|
|
866
|
-
title="Check if your Command needs to submit a value. For example, cmd 'write' needs the value you want to write to your device.">
|
|
867
|
-
<label for="value-needed" style="pointer-events: auto;">
|
|
868
|
-
<!-- workaround input not clickable https://codepen.io/alexisdiel/pen/gxwPWj -->
|
|
869
|
-
<input style="pointer-events: none;" id="value-needed" type="checkbox"
|
|
870
|
-
class="filled-in"/>
|
|
871
|
-
<span style="pointer-events: none;" class="translate">Needs value</span>
|
|
872
|
-
</label>
|
|
873
|
-
</div>
|
|
874
|
-
<div class="input-field col s6 admin-tooltip-icon translateT"
|
|
875
|
-
title="The value to send to your device (use douple-quotes if a number is a string).">
|
|
876
|
-
<input id="value-input" disabled placeholder="0">
|
|
877
|
-
<label for="value-input">Value</label>
|
|
878
|
-
</div>
|
|
879
|
-
</div>
|
|
880
|
-
</div>
|
|
881
|
-
</div>
|
|
882
|
-
</div>
|
|
883
|
-
<div class="col s3">
|
|
884
|
-
<div class="row">
|
|
885
|
-
<div id="expert-toggle" class="input-field col s12 admin-tooltip-icon translateT"
|
|
886
|
-
title="Switch expert mode to enter raw data, sent to zigbee device.">
|
|
887
|
-
<label for="expert-mode" style="pointer-events: auto;">
|
|
888
|
-
<!-- workaround input not clickable https://codepen.io/alexisdiel/pen/gxwPWj -->
|
|
889
|
-
<input style="pointer-events: none;" id="expert-mode" type="checkbox"
|
|
890
|
-
class="filled-in"/>
|
|
891
|
-
<span style="pointer-events: none;" class="translate">Expert mode</span>
|
|
892
|
-
</label>
|
|
893
|
-
</div>
|
|
894
|
-
<div id="expert-json-box" class="input-field col s12" style="display:none;">
|
|
895
|
-
<p class="translate">zigbee-shepherd</p>
|
|
896
|
-
<div class="input-field col s12">
|
|
897
|
-
<textarea id="expert-json" class="materialize-textarea"></textarea>
|
|
898
|
-
<label for="expert-json">JSON</label>
|
|
899
|
-
</div>
|
|
900
|
-
</div>
|
|
901
|
-
</div>
|
|
902
|
-
<div id="dev-action-card" class=".center-align blue card-panel">
|
|
903
|
-
<div class="card-content white-text">
|
|
904
|
-
<h5 id="devActResult" class="card-title"></h5>
|
|
905
|
-
<p id="devInfoMsg" class="translate">Select your settings. Then click RUN to send command to
|
|
906
|
-
your Zigbee device.</p>
|
|
907
|
-
</div>
|
|
908
|
-
<div class="card-action">
|
|
909
|
-
<a id="dev-send-btn"
|
|
910
|
-
class="waves-effect waves-light white-text btn-large tooltipped translateT translate"
|
|
911
|
-
data-position="bottom" title="Send data to Zigbee">Run</a>
|
|
912
|
-
</div>
|
|
913
|
-
</div>
|
|
914
|
-
</div>
|
|
915
|
-
</div>
|
|
916
|
-
<div id="sett" class="row">
|
|
917
|
-
<a class="col s1 offset-s11 btn-small" onClick="$('#dev_result_log').html('');">Clear Log</a>
|
|
918
|
-
<div class="col s12" class="card-panel ">
|
|
919
|
-
<div id="dev_result_log" class="card-content black white-text"></div>
|
|
920
|
-
<label for="dev_result_log" class="translate">Results</label>
|
|
921
|
-
</div>
|
|
922
|
-
</div>
|
|
923
|
-
</div>
|
|
924
|
-
<div id="tab-groups" class="col s12 page">
|
|
925
|
-
<div class="row">
|
|
926
|
-
<div class="col s12">
|
|
927
|
-
<div class="col s12">
|
|
928
|
-
<table class="">
|
|
929
|
-
<thead>
|
|
930
|
-
<tr>
|
|
931
|
-
<th data-name="num" class="translate">№</th>
|
|
932
|
-
<th data-name="name" class="translate">Name</th>
|
|
933
|
-
</tr>
|
|
934
|
-
</thead>
|
|
935
|
-
<tbody id="groups_table"></tbody>
|
|
936
|
-
</table>
|
|
937
|
-
</div>
|
|
938
|
-
<a id="add_group"
|
|
939
|
-
class="btn-floating waves-effect waves-light blue table-button-add tooltipped hoverable translateT"
|
|
940
|
-
title="Add group">
|
|
941
|
-
<i class="material-icons">add</i>
|
|
942
|
-
</a>
|
|
943
|
-
</div>
|
|
944
|
-
</div>
|
|
945
|
-
</div>
|
|
946
|
-
<div id="tab-binding" class="col s12 page">
|
|
947
|
-
<div class="fixed-action-btn" style="margin-bottom: 100px">
|
|
948
|
-
<a id="add_binding"
|
|
949
|
-
class="btn-floating waves-effect waves-light blue tooltipped center-align hoverable translateT"
|
|
950
|
-
title="Add binding"><i class="material-icons large">add</i></a>
|
|
951
|
-
</div>
|
|
952
|
-
<div id="binding" class="row">
|
|
953
|
-
</div>
|
|
954
|
-
</div>
|
|
955
|
-
<div id="tab-exclude" class="col s12 page">
|
|
956
|
-
<div class="row">
|
|
957
|
-
<p class="translate">ExcludeTextTranslation</p>
|
|
958
|
-
</div>
|
|
959
|
-
<div class="fixed-action-btn" style="margin-bottom: 100px">
|
|
960
|
-
<a id="add_exclude"
|
|
961
|
-
class="btn-floating waves-effect waves-light blue tooltipped center-align hoverable translateT"
|
|
962
|
-
title="Add exlude"><i class="material-icons large">add</i></a>
|
|
963
|
-
</div>
|
|
964
|
-
<div id="exclude" class="row">
|
|
965
|
-
</div>
|
|
966
|
-
</div>
|
|
967
|
-
</div>
|
|
968
|
-
</div>
|
|
969
|
-
|
|
970
|
-
<div class="materialize-dialogs m">
|
|
971
|
-
<div id="modaledit" class="modal">
|
|
972
|
-
<div class="modal-content">
|
|
973
|
-
<h3 class="translate">Config device</h3>
|
|
974
|
-
<div class="row">
|
|
975
|
-
<div class="co1l">
|
|
976
|
-
<div class="input-field">
|
|
977
|
-
<input id="d_name" type="text" class="value validate">
|
|
978
|
-
<label for="d_name" class="translate">Name</label>
|
|
979
|
-
</div>
|
|
980
|
-
</div>
|
|
981
|
-
</div>
|
|
982
|
-
<div class="row epid0">
|
|
983
|
-
<div class="col">
|
|
984
|
-
<div class=endpointid>
|
|
985
|
-
<p class="translate device_with_endpoint">Main Endpoint</p>
|
|
986
|
-
</div>
|
|
987
|
-
</div>
|
|
988
|
-
<div class="col1">
|
|
989
|
-
<div class="input-field groups">
|
|
990
|
-
<select id="d_groups_ep0" class="materialSelect" multiple>
|
|
991
|
-
<option value="1">value</option>
|
|
992
|
-
</select>
|
|
993
|
-
<label for="d_groups_ep0" class="translate">Groups</label>
|
|
994
|
-
</div>
|
|
995
|
-
</div>
|
|
996
|
-
</div>
|
|
997
|
-
<div class="row epid1">
|
|
998
|
-
<div class="col epid">
|
|
999
|
-
<div class=endpointid>
|
|
1000
|
-
<p class="translate device_with_endpoint">Sub Endpoint 1</p>
|
|
1001
|
-
</div>
|
|
1002
|
-
</div>
|
|
1003
|
-
<div class="col">
|
|
1004
|
-
<div class="input-field groups">
|
|
1005
|
-
<select id="d_groups_ep1" class="materialSelect" multiple>
|
|
1006
|
-
<option value="1">value</option>
|
|
1007
|
-
</select>
|
|
1008
|
-
<label for="d_groups_ep1" class="translate">Groups</label>
|
|
1009
|
-
</div>
|
|
1010
|
-
</div>
|
|
1011
|
-
</div>
|
|
1012
|
-
<div class="row epid2">
|
|
1013
|
-
<div class="col epid">
|
|
1014
|
-
<div class=endpointid>
|
|
1015
|
-
<p class="translate device_with_endpoint">Sub Endpoint 2</p>
|
|
1016
|
-
</div>
|
|
1017
|
-
</div>
|
|
1018
|
-
<div class="col">
|
|
1019
|
-
<div class="input-field groups">
|
|
1020
|
-
<select id="d_groups_ep2" class="materialSelect" multiple>
|
|
1021
|
-
<option value="1">value</option>
|
|
1022
|
-
</select>
|
|
1023
|
-
<label for="d_groups_ep2" class="translate">Groups</label>
|
|
1024
|
-
</div>
|
|
1025
|
-
</div>
|
|
1026
|
-
</div>
|
|
1027
|
-
<div class="row epid3">
|
|
1028
|
-
<div class="col epid">
|
|
1029
|
-
<div class=endpointid>
|
|
1030
|
-
<p class="translate device_with_endpoint">Sub Endpoint 3</p>
|
|
1031
|
-
</div>
|
|
1032
|
-
</div>
|
|
1033
|
-
<div class="col">
|
|
1034
|
-
<div class="input-field groups">
|
|
1035
|
-
<select id="d_groups_ep3" class="materialSelect" multiple>
|
|
1036
|
-
<option value="1">value</option>
|
|
1037
|
-
</select>
|
|
1038
|
-
<label for="d_groups_ep3" class="translate">Groups</label>
|
|
1039
|
-
</div>
|
|
1040
|
-
</div>
|
|
1041
|
-
</div>
|
|
1042
|
-
</div>
|
|
1043
|
-
<div class="modal-footer">
|
|
1044
|
-
<a name="save" href="#!"
|
|
1045
|
-
class="modal-action modal-close waves-effect waves-green btn green translate">Save</a>
|
|
1046
|
-
<a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
|
|
1047
|
-
</div>
|
|
1048
|
-
</div>
|
|
1049
|
-
|
|
1050
|
-
<div id="groupedit" class="modal">
|
|
1051
|
-
<div class="modal-content">
|
|
1052
|
-
<div class="addgroup">
|
|
1053
|
-
<h3 class="translate">Add Group</h3>
|
|
1054
|
-
</div>
|
|
1055
|
-
<div class="editgroup">
|
|
1056
|
-
<h3 class="translate">Edit Group</h3>
|
|
1057
|
-
</div>
|
|
1058
|
-
<div class="row">
|
|
1059
|
-
<div class="col s4 m4 l2">
|
|
1060
|
-
<div class="input-field groupid">
|
|
1061
|
-
<input id="g_index" type="number" min="1" class="value validate">
|
|
1062
|
-
<label for="g_index" class="translate">№</label>
|
|
1063
|
-
</div>
|
|
1064
|
-
</div>
|
|
1065
|
-
<div class="input-field col s8 m8 l10">
|
|
1066
|
-
<input id="g_name" type="text" class="value validate">
|
|
1067
|
-
<label for="g_name" class="translate">Name</label>
|
|
1068
|
-
</div>
|
|
1069
|
-
</div>
|
|
1070
|
-
<div class="row hide">
|
|
1071
|
-
<div class="col s12">
|
|
1072
|
-
<div class="input-field members">
|
|
1073
|
-
<label for="g_members" class="translate">Members</label>
|
|
1074
|
-
<select id="g_members" class="materialSelect" multiple>
|
|
1075
|
-
<option value="1">Значение</option>
|
|
1076
|
-
</select>
|
|
1077
|
-
</div>
|
|
1078
|
-
</div>
|
|
1079
|
-
</div>
|
|
1080
|
-
</div>
|
|
1081
|
-
<div class="modal-footer">
|
|
1082
|
-
<a name="save" href="#!"
|
|
1083
|
-
class="modal-action modal-close waves-effect waves-green btn green translate">Save</a>
|
|
1084
|
-
<a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
|
|
1085
|
-
</div>
|
|
1086
|
-
</div>
|
|
1087
|
-
|
|
1088
|
-
<div id="codeentry" class="modal">
|
|
1089
|
-
<div class="modal-content">
|
|
1090
|
-
<div class="addgroup">
|
|
1091
|
-
<h3 class="translate">Enter Pairing Code</h3>
|
|
1092
|
-
</div>
|
|
1093
|
-
<div class="row">
|
|
1094
|
-
<div class="input-field">
|
|
1095
|
-
<input id="qr_code" type="text" class="value validate">
|
|
1096
|
-
<label for="qr_code" class="translate">QR Code</label>
|
|
1097
|
-
</div>
|
|
1098
|
-
</div>
|
|
1099
|
-
</div>
|
|
1100
|
-
<div class="modal-footer">
|
|
1101
|
-
<a name="pair" href="#!"
|
|
1102
|
-
class="modal-action modal-close waves-effect waves-green btn green translate">Start Pairing</a>
|
|
1103
|
-
<a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
|
|
1104
|
-
</div>
|
|
1105
|
-
</div>
|
|
1106
|
-
|
|
1107
|
-
<div id="modaldelete" class="modal">
|
|
1108
|
-
<div class="modal-content">
|
|
1109
|
-
<h3 class="translate">Delete confirmation</h3>
|
|
1110
|
-
<p>A bunch of text</p>
|
|
1111
|
-
</div>
|
|
1112
|
-
<div class="modal-footer">
|
|
1113
|
-
<div id="forcediv" class="hide forcedelete">
|
|
1114
|
-
<input id="force" type="checkbox" class="value"/>
|
|
1115
|
-
<label class="translate" for="force">Force delete (for lost devices)</label>
|
|
1116
|
-
</div>
|
|
1117
|
-
<a name="yes" href="#!"
|
|
1118
|
-
class="modal-action modal-close waves-effect waves-green btn green translate">Yes</a>
|
|
1119
|
-
<a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
|
|
1120
|
-
</div>
|
|
1121
|
-
</div>
|
|
1122
|
-
<div id="modalclean" class="modal">
|
|
1123
|
-
<div class="modal-content">
|
|
1124
|
-
<h3 class="translate">State cleanup confirmation</h3>
|
|
1125
|
-
<p>A bunch of text</p>
|
|
1126
|
-
</div>
|
|
1127
|
-
<div class="modal-footer">
|
|
1128
|
-
<div id="cforcediv" class="hide forcedelete">
|
|
1129
|
-
<input id="cforce" type="checkbox" class="value"/>
|
|
1130
|
-
<label class="translate" for="cforce">Force removed states with custom configuration (history, upnp,
|
|
1131
|
-
etc.)</label>
|
|
1132
|
-
</div>
|
|
1133
|
-
<a name="yes" href="#!"
|
|
1134
|
-
class="modal-action modal-close waves-effect waves-green btn green translate">Yes</a>
|
|
1135
|
-
<a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
|
|
1136
|
-
</div>
|
|
1137
|
-
</div>
|
|
1138
|
-
<div id="modalreconfigure" class="modal">
|
|
1139
|
-
<div class="modal-content">
|
|
1140
|
-
<h3 class="translate">Reconfigure device</h3>
|
|
1141
|
-
<p>A bunch of text</p>
|
|
1142
|
-
</div>
|
|
1143
|
-
<div class="modal-footer">
|
|
1144
|
-
<a name="yes" href="#!"
|
|
1145
|
-
class="modal-action modal-close waves-effect waves-green btn green translate">Yes</a>
|
|
1146
|
-
<a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
|
|
1147
|
-
</div>
|
|
1148
|
-
</div>
|
|
1149
|
-
|
|
1150
|
-
<div id="modalpairing" class="modal modal-fixed-footer">
|
|
1151
|
-
<div class="modal-content">
|
|
1152
|
-
<h3 class="translate">Pairing process</h3>
|
|
1153
|
-
<div class="progress">
|
|
1154
|
-
<div id="progress_line" class="determinate" style="width: 0%"></div>
|
|
1155
|
-
</div>
|
|
1156
|
-
<div class="row textarea">
|
|
1157
|
-
<textarea id="stdout" disabled="disabled" cols="120" rows="30"
|
|
1158
|
-
style="height: calc(100% - 115px)"></textarea>
|
|
1159
|
-
</div>
|
|
1160
|
-
</div>
|
|
1161
|
-
<div class="modal-footer">
|
|
1162
|
-
<!-- <a name="stop" href="#!" class="modal-action modal-close waves-effect waves-red btn-flat left">Stop</a> -->
|
|
1163
|
-
<a name="hide" href="#!"
|
|
1164
|
-
class="modal-action modal-close waves-effect waves-green btn green translate">Hide</a>
|
|
1165
|
-
</div>
|
|
1166
|
-
</div>
|
|
1167
|
-
|
|
1168
|
-
<div id="modalreset" class="modal">
|
|
1169
|
-
<div class="modal-content">
|
|
1170
|
-
<h3 class="translate">Reset confirmation</h3>
|
|
1171
|
-
<p class="translate">Reset Info</p>
|
|
1172
|
-
<a id="soft" data-mode="soft" class="modal-action modal-close waves-effect waves-red btn translate">Soft-Reset</a>
|
|
1173
|
-
<a id="hard" data-mode="hard" class="modal-action modal-close waves-effect waves-red btn translate">Hard-Reset</a>
|
|
1174
|
-
</div>
|
|
1175
|
-
<div class="modal-footer">
|
|
1176
|
-
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat translate">Cancel</a>
|
|
1177
|
-
</div>
|
|
1178
|
-
</div>
|
|
1179
|
-
|
|
1180
|
-
<div id="modalviewconfig" class="modal modal-fixed-footer">
|
|
1181
|
-
<div class="modal-content">
|
|
1182
|
-
<h3 class="translate">Map view config</h3>
|
|
1183
|
-
<div class="row">
|
|
1184
|
-
<div class="input-field input-group col s12 m6 l6">
|
|
1185
|
-
<div id="filterParentTgl" class="input-field col s12 admin-tooltip-icon translateT"
|
|
1186
|
-
title="Show parent">
|
|
1187
|
-
<label for="filterParent" style="pointer-events: auto;">
|
|
1188
|
-
<!-- workaround input not clickable https://codepen.io/alexisdiel/pen/gxwPWj -->
|
|
1189
|
-
<input style="pointer-events: none;" id="filterParent" type="checkbox" class="filled-in"
|
|
1190
|
-
checked="checked"/>
|
|
1191
|
-
<span style="pointer-events: none; color:#0000ff;"
|
|
1192
|
-
class="translate">Parent/Child/Unknown</span>
|
|
1193
|
-
</label>
|
|
1194
|
-
</div>
|
|
1195
|
-
<div id="filterSiblTgl" class="input-field col s12 admin-tooltip-icon translateT"
|
|
1196
|
-
title="Show siblings">
|
|
1197
|
-
<label for="filterSibl" style="pointer-events: auto;">
|
|
1198
|
-
<input style="pointer-events: none;" id="filterSibl" type="checkbox" class="filled-in"
|
|
1199
|
-
checked="checked"/>
|
|
1200
|
-
<span style="pointer-events: none; color:#00bb00;" class="translate">Siblings</span>
|
|
1201
|
-
</label>
|
|
1202
|
-
</div>
|
|
1203
|
-
<div id="filterPrvChildTgl" class="input-field col s12 admin-tooltip-icon translateT"
|
|
1204
|
-
title="Show previous parents">
|
|
1205
|
-
<label for="filterPrvChild" style="pointer-events: auto;">
|
|
1206
|
-
<input style="pointer-events: none;" id="filterPrvChild" type="checkbox" class="filled-in"/>
|
|
1207
|
-
<span style="pointer-events: none; color:#555555;" class="translate">Previous Parents</span>
|
|
1208
|
-
</label>
|
|
1209
|
-
</div>
|
|
1210
|
-
<div id="filterMeshTgl" class="input-field col s12 admin-tooltip-icon translateT"
|
|
1211
|
-
title="Show full mesh">
|
|
1212
|
-
<label for="filterMesh" style="pointer-events: auto;">
|
|
1213
|
-
<input style="pointer-events: none;" id="filterMesh" type="checkbox" class="filled-in"/>
|
|
1214
|
-
<span style="pointer-events: none;">Mesh</span>
|
|
1215
|
-
</label>
|
|
1216
|
-
</div>
|
|
1217
|
-
</div>
|
|
1218
|
-
<div class="input-field input-group col s12 m6 l6">
|
|
1219
|
-
<p class="translate">Device map info</p>
|
|
1220
|
-
</div>
|
|
1221
|
-
</div>
|
|
1222
|
-
</div>
|
|
1223
|
-
<div class="modal-footer">
|
|
1224
|
-
<!-- <a name="stop" href="#!" class="modal-action modal-close waves-effect waves-red btn-flat left">Stop</a> -->
|
|
1225
|
-
<a name="hide" href="#!"
|
|
1226
|
-
class="modal-action modal-close waves-effect waves-green btn green translate">Hide</a>
|
|
1227
|
-
</div>
|
|
1228
|
-
</div>
|
|
1229
|
-
|
|
1230
|
-
<div id="bindingmodaledit" class="modal">
|
|
1231
|
-
<div class="modal-content">
|
|
1232
|
-
<div class="row">
|
|
1233
|
-
<h3 class="translate">Binding configuration</h3>
|
|
1234
|
-
<div class="row">
|
|
1235
|
-
<div class="col s9 input-field">
|
|
1236
|
-
<select id="bind_source" class="icons">
|
|
1237
|
-
</select>
|
|
1238
|
-
<label for="bind_source" class="translate">Source device</label>
|
|
1239
|
-
</div>
|
|
1240
|
-
<div class="col s3 input-field">
|
|
1241
|
-
<select id="bind_source_ep" class="materialSelect">
|
|
1242
|
-
</select>
|
|
1243
|
-
<label for="bind_source_ep" class="translate">Source endpoint</label>
|
|
1244
|
-
</div>
|
|
1245
|
-
</div>
|
|
1246
|
-
<div class="row">
|
|
1247
|
-
<div class="col s9 input-field">
|
|
1248
|
-
<select id="bind_target" class="icons">
|
|
1249
|
-
</select>
|
|
1250
|
-
<label for="bind_target" class="translate">Target device</label>
|
|
1251
|
-
</div>
|
|
1252
|
-
<div class="col s3 input-field">
|
|
1253
|
-
<select id="bind_target_ep" class="materialSelect">
|
|
1254
|
-
</select>
|
|
1255
|
-
<label for="bind_target_ep" class="translate">Target endpoint</label>
|
|
1256
|
-
</div>
|
|
1257
|
-
</div>
|
|
1258
|
-
<div class="row">
|
|
1259
|
-
<div class="col s9 input-field">
|
|
1260
|
-
<input id="unbind_from_coordinator" type="checkbox" class="value"/>
|
|
1261
|
-
<label class="translate" for="unbind_from_coordinator">Unbind remote from Coordinator (necessary
|
|
1262
|
-
for some remotes like HUE Dimmer Switch)</label>
|
|
1263
|
-
</div>
|
|
1264
|
-
</div>
|
|
1265
|
-
</div>
|
|
1266
|
-
</div>
|
|
1267
|
-
<div class="modal-footer">
|
|
1268
|
-
<a name="save" href="#!"
|
|
1269
|
-
class="modal-action modal-close waves-effect waves-green btn green translate">Save</a>
|
|
1270
|
-
<a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
|
|
1271
|
-
</div>
|
|
1272
|
-
</div>
|
|
1273
|
-
<div id="excludemodaledit" class="modal">
|
|
1274
|
-
<div class="modal-content">
|
|
1275
|
-
<div class="row">
|
|
1276
|
-
<h3 class="translate">Exclude configuration</h3>
|
|
1277
|
-
<div class="row">
|
|
1278
|
-
<div class="col s9 input-field">
|
|
1279
|
-
<select id="exclude_target" class="icons">
|
|
1280
|
-
</select>
|
|
1281
|
-
<label for="exclude_target" class="translate">exclude device</label>
|
|
1282
|
-
</div>
|
|
1283
|
-
</div>
|
|
1284
|
-
</div>
|
|
1285
|
-
</div>
|
|
1286
|
-
<div class="modal-footer">
|
|
1287
|
-
<a name="save" href="#!"
|
|
1288
|
-
class="modal-action modal-close waves-effect waves-green btn green translate">Save</a>
|
|
1289
|
-
<a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
|
|
1290
|
-
</div>
|
|
1291
|
-
</div>
|
|
1292
|
-
<div id="modaldevinfo" class="modal modal-fixed-footer modal-fixed-header">
|
|
1293
|
-
<div class="modal-header">
|
|
1294
|
-
<h5 class="translate">Device information</h5>
|
|
1295
|
-
</div>
|
|
1296
|
-
<div class="modal-content">
|
|
1297
|
-
<div id="devinfo" class="row">
|
|
1298
|
-
|
|
1299
|
-
</div>
|
|
1300
|
-
</div>
|
|
1301
|
-
<div class="modal-footer">
|
|
1302
|
-
<a name="hide" href="#!"
|
|
1303
|
-
class="modal-action modal-close waves-effect waves-green btn green translate">Hide</a>
|
|
1304
|
-
</div>
|
|
1305
|
-
</div>
|
|
1306
|
-
<div id="modalgrouplist" class="modal modal-fixed-footer modal-fixed-header">
|
|
1307
|
-
<div class="modal-header">
|
|
1308
|
-
<h5 class="translate">Groups
|
|
1309
|
-
<a name="add" class="modal-action modal-close waves-effect waves-green btn green translate">Add
|
|
1310
|
-
Group</a>
|
|
1311
|
-
</h5>
|
|
1312
|
-
</div>
|
|
1313
|
-
<div class="modal-content">
|
|
1314
|
-
<div id="grouplist" class="row">
|
|
1315
|
-
|
|
1316
|
-
</div>
|
|
1317
|
-
</div>
|
|
1318
|
-
<div class="modal-footer">
|
|
1319
|
-
<a name="save" href="#!"
|
|
1320
|
-
class="modal-action modal-close waves-effect waves-green btn green translate">Save</a>
|
|
1321
|
-
<a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
|
|
1322
|
-
</div>
|
|
1323
|
-
</div>
|
|
1324
|
-
|
|
1325
|
-
<div id="modalWaiting" class="modal modal">
|
|
1326
|
-
<div class="modal-content">
|
|
1327
|
-
<h3 class="translate">Waiting</h3>
|
|
1328
|
-
<div class="progress">
|
|
1329
|
-
<div id="waiting_progress_line" class="determinate" style="width: 0%"></div>
|
|
1330
|
-
</div>
|
|
1331
|
-
<div class="row">
|
|
1332
|
-
<h5 id="waiting_message" class="translate"></h5>
|
|
1333
|
-
</div>
|
|
1334
|
-
</div>
|
|
1335
|
-
</div>
|
|
1336
|
-
|
|
1337
|
-
<div id="modalchannels" class="modal modal-fixed-footer modal-fixed-header">
|
|
1338
|
-
<div class="modal-header">
|
|
1339
|
-
<h3 class="translate">Channels</h3>
|
|
1340
|
-
</div>
|
|
1341
|
-
<div class="modal-content">
|
|
1342
|
-
<div class="row">
|
|
1343
|
-
<h6>Channels energy scan. Lower energy is better</h6>
|
|
1344
|
-
</div>
|
|
1345
|
-
<div id="channelsinfo" class="row">
|
|
1346
|
-
</div>
|
|
1347
|
-
</div>
|
|
1348
|
-
<div class="modal-footer">
|
|
1349
|
-
<a name="hide" href="#!"
|
|
1350
|
-
class="modal-action modal-close waves-effect waves-green btn green translate">Hide</a>
|
|
1351
|
-
</div>
|
|
1352
|
-
</div>
|
|
1353
|
-
</div>
|
|
1354
|
-
</body>
|
|
1355
|
-
|
|
1356
|
-
</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" src="../../js/adapter-settings.js"></script>
|
|
18
|
+
<script type="text/javascript" src="words.js"></script>
|
|
19
|
+
|
|
20
|
+
<script type="text/javascript" src="admin.js"></script>
|
|
21
|
+
<script type="text/javascript" src="shuffle.min.js"></script>
|
|
22
|
+
<script type="text/javascript" src="moment.min.js"></script>
|
|
23
|
+
<style>
|
|
24
|
+
.m .tabs {
|
|
25
|
+
height: auto !important;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.m .col .select-wrapper + label, .m .col input + label:not(.active) {
|
|
29
|
+
top: -26px;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.select-wrapper li span {
|
|
33
|
+
pointer-events: none; /* workarround for checkbox in select, else checkbox and label not clickable */
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.m .col input + label {
|
|
37
|
+
font-size: 0.8rem;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.m span {
|
|
41
|
+
font-size: 0.9em;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.m .zlogo {
|
|
45
|
+
padding: 0.5rem;
|
|
46
|
+
width: 64px;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.input-group {
|
|
50
|
+
display: table;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.input-group input, .suffix {
|
|
54
|
+
display: table-cell;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.suffix {
|
|
58
|
+
width: 1%;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.input-field.suffix a {
|
|
62
|
+
position: absolute;
|
|
63
|
+
font-size: 2rem;
|
|
64
|
+
top: 0px;
|
|
65
|
+
right: 0px;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.input-field.suffix a.active {
|
|
69
|
+
color: #26a69a;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.input-field.suffix .select-wrapper {
|
|
73
|
+
margin-right: 3rem;
|
|
74
|
+
width: 92%;
|
|
75
|
+
width: calc(100% - 3rem);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.input-field.suffix label {
|
|
79
|
+
margin-right: 3rem;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
#tabs {
|
|
83
|
+
margin-top: 115px;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
#main {
|
|
87
|
+
margin-bottom: -50px;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.page:not(.active) {
|
|
91
|
+
/* prevents 'all pages visible for a moment at first load' (because pages are loaded before materialize is loaded)*/
|
|
92
|
+
display: none;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
#dev-selectors > div {
|
|
96
|
+
margin-top: 30px;
|
|
97
|
+
border-bottom: 1px solid lightblue;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
#dev_result_log {
|
|
101
|
+
overflow: scroll;
|
|
102
|
+
height: 10em;
|
|
103
|
+
padding: 0.5em;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
#expert-toggle {
|
|
107
|
+
margin-bottom: 3em;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
#expert-json {
|
|
111
|
+
min-height: 18rem;
|
|
112
|
+
overflow-y: scroll;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
#viewconfigbtn {
|
|
116
|
+
left: 23px;
|
|
117
|
+
width: 45px;
|
|
118
|
+
top: 120px;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.m .card {
|
|
122
|
+
margin: 0px;
|
|
123
|
+
width: 100%;
|
|
124
|
+
height: 100%;
|
|
125
|
+
position: relative;
|
|
126
|
+
-webkit-transition: -webkit-transform 0.5s;
|
|
127
|
+
-moz-transition: -moz-transform 0.5s;
|
|
128
|
+
-o-transition: -o-transform 0.5s;
|
|
129
|
+
transition: transform 0.5s;
|
|
130
|
+
-webkit-transform-style: preserve-3d;
|
|
131
|
+
-moz-transform-style: preserve-3d;
|
|
132
|
+
-o-transform-style: preserve-3d;
|
|
133
|
+
transform-style: preserve-3d;
|
|
134
|
+
-webkit-transform-origin: 50% 50%;
|
|
135
|
+
transform-origin: 50% 50%;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.m .card .zcard {
|
|
139
|
+
padding: 10px;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.m .card div {
|
|
143
|
+
-webkit-backface-visibility: hidden;
|
|
144
|
+
-moz-backface-visibility: hidden;
|
|
145
|
+
-o-backface-visibility: hidden;
|
|
146
|
+
backface-visibility: hidden;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.device {
|
|
150
|
+
padding: 5px;
|
|
151
|
+
width: 330px;
|
|
152
|
+
height: 200px;
|
|
153
|
+
-webkit-perspective: 800px;
|
|
154
|
+
-moz-perspective: 800px;
|
|
155
|
+
-o-perspective: 800px;
|
|
156
|
+
perspective: 800px;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.m .zcard .card-title {
|
|
160
|
+
font-size: 16px;
|
|
161
|
+
font-weight: 300;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
.card-action .card-reveal-buttons {
|
|
165
|
+
left: 0;
|
|
166
|
+
position: absolute;
|
|
167
|
+
border: none;
|
|
168
|
+
bottom: 0;
|
|
169
|
+
height: 50px;
|
|
170
|
+
/*background: #fff;*/
|
|
171
|
+
right: 0;
|
|
172
|
+
/*text-align: right;*/
|
|
173
|
+
padding: 10px;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.card-action i {
|
|
177
|
+
font-size: 1.7em;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.card-action button {
|
|
181
|
+
margin-right: 5px;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.small-button {
|
|
185
|
+
background: #fff;
|
|
186
|
+
color: #0e2e4a;
|
|
187
|
+
padding: 1px 0 0 0;
|
|
188
|
+
cursor: pointer;
|
|
189
|
+
transition: .2s linear;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
.small-button, .small-button-empty {
|
|
193
|
+
width: 24px;
|
|
194
|
+
margin: 0 1px 0 0;
|
|
195
|
+
display: inline-block;
|
|
196
|
+
position: relative;
|
|
197
|
+
z-index: 1;
|
|
198
|
+
border: 0;
|
|
199
|
+
border-radius: 2px;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
i.icon-green {
|
|
203
|
+
color: green;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
.m.react-dark i.icon-green {
|
|
207
|
+
color: green !important;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.m.react-blue i.icon-green {
|
|
211
|
+
color: green !important;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
i.icon-black {
|
|
215
|
+
color: black;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
i.icon-blue {
|
|
219
|
+
color: blue;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
.m.react-dark i.icon-blue {
|
|
223
|
+
color: rgb(100, 181, 246) !important;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
.m.react-blue i.icon-blue {
|
|
227
|
+
color: rgb(100, 181, 246) !important;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
i.icon-red {
|
|
231
|
+
color: red;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
.m.react-dark i.icon-red {
|
|
235
|
+
color: red !important;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.m.react-blue i.icon-red {
|
|
239
|
+
color: red !important;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
i.icon-orange {
|
|
243
|
+
color: orange;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
.m.react-blue div.bg_red {
|
|
247
|
+
background-color: #400000;
|
|
248
|
+
color: DimGray;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
.m div.bg_red {
|
|
252
|
+
background-color: LightGray;
|
|
253
|
+
color: DimGray;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
.m.react-dark div.bg_red {
|
|
257
|
+
background-color: #400000;
|
|
258
|
+
color: DimGray;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
.m.react-dark i.icon-orange {
|
|
262
|
+
color: orange !important;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
.m.react-blue i.icon-orange {
|
|
266
|
+
color: orange !important;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
.m .btn-small.btn-flat {
|
|
270
|
+
padding: 0 4px;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
.m .row .col.tool {
|
|
274
|
+
padding: 0 .1rem;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
.m span.label {
|
|
278
|
+
display: inline-block;
|
|
279
|
+
width: 100px;
|
|
280
|
+
font-weight: bold;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
.m span.label.dash {
|
|
284
|
+
display: inline-block;
|
|
285
|
+
width: 140px;
|
|
286
|
+
font-weight: bold;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
.m span.labelinfo {
|
|
290
|
+
display: inline-block;
|
|
291
|
+
width: 60px;
|
|
292
|
+
font-weight: bold;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
.forcedelete {
|
|
296
|
+
float: left;
|
|
297
|
+
padding-left: 1rem;
|
|
298
|
+
padding-top: 1rem;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
.modal-header {
|
|
302
|
+
position: relative;
|
|
303
|
+
height: 50px;
|
|
304
|
+
padding: 20px 20px 5px 20px;
|
|
305
|
+
border-bottom: 1px solid rgba(0, 0, 0, .1);
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
.m .modal.modal-fixed-footer.modal-fixed-header .modal-content {
|
|
309
|
+
height: calc(100% - 140px) !important;
|
|
310
|
+
padding-top: 5px;
|
|
311
|
+
padding-bottom: 5px;
|
|
312
|
+
overflow: auto;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
.m .page {
|
|
316
|
+
height: calc(100% - 120px);
|
|
317
|
+
overflow: auto;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
#tab-sett {
|
|
321
|
+
padding-right: 30px;
|
|
322
|
+
padding-left: 30px;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
#map {
|
|
326
|
+
margin: 0px;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
#tab-main .main-toolbar-table .filter-input {
|
|
330
|
+
display: inline-table;
|
|
331
|
+
padding-left: 6px;
|
|
332
|
+
height: 24px;
|
|
333
|
+
width: 10rem;
|
|
334
|
+
margin-top: 5px;
|
|
335
|
+
margin-bottom: 0;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
.face {
|
|
339
|
+
overflow: hidden;
|
|
340
|
+
position: absolute;
|
|
341
|
+
height: 100%;
|
|
342
|
+
width: 100%;
|
|
343
|
+
/*background: #fff;*/
|
|
344
|
+
z-index: 2;
|
|
345
|
+
-webkit-transform: rotateY(0deg);
|
|
346
|
+
-moz-transform: rotateY(0deg);
|
|
347
|
+
-o-transform: rotateY(0deg);
|
|
348
|
+
transform: rotateY(0deg);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
.back {
|
|
352
|
+
overflow: hidden;
|
|
353
|
+
position: absolute;
|
|
354
|
+
display: block;
|
|
355
|
+
box-sizing: border-box;
|
|
356
|
+
height: 100%;
|
|
357
|
+
width: 100%;
|
|
358
|
+
/*background: #fff;*/
|
|
359
|
+
-webkit-transform: rotateY(-180deg);
|
|
360
|
+
-moz-transform: rotateY(-180deg);
|
|
361
|
+
-o-transform: rotateY(-180deg);
|
|
362
|
+
transform: rotateY(-180deg);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
.card.flipped {
|
|
366
|
+
-webkit-transform: rotateY(180deg);
|
|
367
|
+
-moz-transform: rotateY(180deg);
|
|
368
|
+
-o-transform: rotateY(180deg);
|
|
369
|
+
transform: rotateY(180deg);
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
.m .switch label .lever {
|
|
373
|
+
width: 30px;
|
|
374
|
+
height: 12px;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
.m .switch label .lever:after, .m .switch label .lever:before {
|
|
378
|
+
width: 14px;
|
|
379
|
+
height: 14px;
|
|
380
|
+
border-radius: 50%;
|
|
381
|
+
left: 0;
|
|
382
|
+
top: -1px;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
.m .dash input[type=range] {
|
|
386
|
+
width: 70px;
|
|
387
|
+
margin: 0px;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
.m .dash input[type=checkbox]:checked + span:not(.lever):before {
|
|
391
|
+
width: 10px;
|
|
392
|
+
height: 16px;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
.m .dash input[type=checkbox] + span:not(.lever):before {
|
|
396
|
+
width: 10px;
|
|
397
|
+
height: 12px;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
.m .dash input[type="checkbox"] + span:not(.lever) {
|
|
401
|
+
width: 10px;
|
|
402
|
+
height: 12px;
|
|
403
|
+
margin-left: 25px;
|
|
404
|
+
margin-top: -1px;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
.m .dash input[type=checkbox]:not(:checked):disabled + span:not(.lever):before {
|
|
408
|
+
background-color: rgba(0, 0, 0, .1);
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
.m span .dash.value {
|
|
412
|
+
margin-left: 25px;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
.m .idletime {
|
|
416
|
+
padding-left: 15px;
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
.m.react-blue .switch label input[type="checkbox"]:checked + .lever {
|
|
420
|
+
background-color: #436a93;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
.m.react-blue .switch label .lever {
|
|
424
|
+
background-color: #4dabf5;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
.m.react-blue .switch label .lever:after {
|
|
428
|
+
background-color: #436a93;
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
.m.react-dark .switch label input[type="checkbox"]:checked + .lever {
|
|
432
|
+
background-color: #436a93;
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
.m.react-dark .switch label .lever {
|
|
436
|
+
background-color: #4dabf5;
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
.m.react-dark .switch label .lever:after {
|
|
440
|
+
background-color: #436a93;
|
|
441
|
+
}
|
|
442
|
+
</style>
|
|
443
|
+
</head>
|
|
444
|
+
<body>
|
|
445
|
+
<!-- you have to put your config page in a div with id adapter-container -->
|
|
446
|
+
<div id="main" class="m adapter-container">
|
|
447
|
+
<div class="row navbar-fixed">
|
|
448
|
+
<nav class="nav-extended">
|
|
449
|
+
<div class="nav-wrapper">
|
|
450
|
+
<div class="col">
|
|
451
|
+
<img src="zigbee.png" class="zlogo left" height="64px"/>
|
|
452
|
+
</div>
|
|
453
|
+
<div class="col">
|
|
454
|
+
<h5 class="translate center-align">Zigbee adapter</h5>
|
|
455
|
+
</div>
|
|
456
|
+
<ul id="nav-mobile" class="right">
|
|
457
|
+
<li>
|
|
458
|
+
<a id="state_cleanup_btn"
|
|
459
|
+
class="btn-floating waves-effect waves-light red tooltipped center-align hoverable translateT"
|
|
460
|
+
title="State Cleanup">
|
|
461
|
+
<i class="material-icons large icon-blue">sync</i></a>
|
|
462
|
+
</li>
|
|
463
|
+
<li>
|
|
464
|
+
<a id="fw_check_btn"
|
|
465
|
+
class="btn-floating waves-effect waves-light blue tooltipped center-align hoverable translateT"
|
|
466
|
+
title="Check firmware updates">
|
|
467
|
+
<i class="material-icons large icon-blue">system_update</i></a>
|
|
468
|
+
</li>
|
|
469
|
+
<li>
|
|
470
|
+
<a id="add_grp_btn"
|
|
471
|
+
class="btn-floating waves-effect waves-light brown tooltipped center-align hoverable translateT"
|
|
472
|
+
title="Add Group">
|
|
473
|
+
<i class="material-icons large">group_work</i></a>
|
|
474
|
+
</li>
|
|
475
|
+
<li>
|
|
476
|
+
<a id="touchlink_btn"
|
|
477
|
+
class="btn-floating waves-effect waves-light green tooltipped center-align hoverable translateT"
|
|
478
|
+
title="Touchlink reset and pairing">
|
|
479
|
+
<i class="material-icons large">wifi_tethering</i></a>
|
|
480
|
+
</li>
|
|
481
|
+
<li>
|
|
482
|
+
<a id="code_pairing"
|
|
483
|
+
class="btn-floating waves-effect waves-light green tooltipped center-align hoverable translateT"
|
|
484
|
+
title="Pairing with QR Code">
|
|
485
|
+
<i class="material-icons large">select_all</i></a>
|
|
486
|
+
</li>
|
|
487
|
+
<li>
|
|
488
|
+
<a id="pairing"
|
|
489
|
+
class="btn-floating waves-effect waves-light green tooltipped center-align hoverable translateT"
|
|
490
|
+
title="Let's pairing!">
|
|
491
|
+
<i class="material-icons large">leak_add</i></a>
|
|
492
|
+
</li>
|
|
493
|
+
</ul>
|
|
494
|
+
</div>
|
|
495
|
+
<div class="nav-content">
|
|
496
|
+
<ul class="tabs tabs-transparent">
|
|
497
|
+
<li class="tab col s2"><a href="#tab-main" id="devs" class="translate tooltipped">Devices</a></li>
|
|
498
|
+
<!-- <li class="tab col s2"><a href="#tab-groups" class="translate tooltipped">Groups</a></li>-->
|
|
499
|
+
<li class="tab col s2"><a href="#tab-map" id="tabmap" class="translate tooltipped">Network map</a>
|
|
500
|
+
</li>
|
|
501
|
+
<li class="tab col s2"><a href="#tab-binding" class="translate tooltipped">Binding</a></li>
|
|
502
|
+
<li class="tab col s1"><a href="#tab-exclude" class="translate tooltipped">Excludes</a></li>
|
|
503
|
+
<li class="tab col s2"><a href="#tab-sett" id="settings" class="translate tooltipped">Settings</a>
|
|
504
|
+
</li>
|
|
505
|
+
<li class="tab col s1"><a href="#tab-dev" id="develop" class="translate tooltipped">Developer</a>
|
|
506
|
+
</li>
|
|
507
|
+
</ul>
|
|
508
|
+
</div>
|
|
509
|
+
</nav>
|
|
510
|
+
</div>
|
|
511
|
+
<div id="tabs" class="tabs-content row">
|
|
512
|
+
<div id="tab-main" class="col s12 page active">
|
|
513
|
+
<div class="navbar-fixed" style="height: 36px;">
|
|
514
|
+
<nav style="height: 36px; margin-left: -12px; line-height: 24px;">
|
|
515
|
+
<ul id="nav-mobile" class="left">
|
|
516
|
+
<li>
|
|
517
|
+
<a id="rotate_btn"
|
|
518
|
+
class="btn-floating waves-effect waves-light blue tooltipped center-align hoverable translateT"
|
|
519
|
+
title="Rotate cards">
|
|
520
|
+
<i class="material-icons large icon-blue">3d_rotation</i>
|
|
521
|
+
</a>
|
|
522
|
+
</li>
|
|
523
|
+
<li>
|
|
524
|
+
<div class="col main-toolbar-table-types-tools main-toolbar-table-filter input-field"
|
|
525
|
+
style="line-height: 24px;">
|
|
526
|
+
<i class="material-icons prefix" style="line-height: 24px;">search</i>
|
|
527
|
+
<input id="device-search" class="filter-input translateP" placeholder="Искать"
|
|
528
|
+
autocomplete="new-password" readonly="readonly"
|
|
529
|
+
onfocus="if (this.hasAttribute('readonly')) {this.removeAttribute('readonly'); this.blur(); this.focus();}"
|
|
530
|
+
data-lang-placeholder="Filter">
|
|
531
|
+
<a class="filter-clear btn-floating btn-very-small translateT red lighten-3"
|
|
532
|
+
title="Очистить" data-lang-title="clear" style="display: none;"><i
|
|
533
|
+
class="material-icons">clear</i></a>
|
|
534
|
+
</div>
|
|
535
|
+
|
|
536
|
+
</li>
|
|
537
|
+
<li>
|
|
538
|
+
<div class="col input-field" style="line-height: 24px;">
|
|
539
|
+
<i class="material-icons left" style="line-height: 24px; margin-top: 5px;">sort</i>
|
|
540
|
+
<a id="device-order-btn" class="dropdown-trigger btn" href="#"
|
|
541
|
+
data-target="device-order">Default</a>
|
|
542
|
+
<ul id="device-order" class="dropdown-content" tabindex="0">
|
|
543
|
+
<li class="device-order-item" data-type="a-z" tabindex="0"><a class="translate"
|
|
544
|
+
data-lang="A-Z">A-Z</a>
|
|
545
|
+
</li>
|
|
546
|
+
<li class="device-order-item" data-type="default" tabindex="0"><a class="translate"
|
|
547
|
+
data-lang="Default">Default</a>
|
|
548
|
+
</li>
|
|
549
|
+
</ul>
|
|
550
|
+
</div>
|
|
551
|
+
</li>
|
|
552
|
+
<li>
|
|
553
|
+
<div class="col input-field" style="line-height: 24px;">
|
|
554
|
+
<i class="material-icons left" style="line-height: 24px; margin-top: 5px;">art_track</i>
|
|
555
|
+
<a id="room-filter-btn" class="dropdown-trigger btn" href="#" data-target="room-filter">All</a>
|
|
556
|
+
<ul id="room-filter" class="dropdown-content" tabindex="0">
|
|
557
|
+
</ul>
|
|
558
|
+
</div>
|
|
559
|
+
</li>
|
|
560
|
+
</ul>
|
|
561
|
+
</nav>
|
|
562
|
+
</div>
|
|
563
|
+
<div id="devices" class="row">
|
|
564
|
+
</div>
|
|
565
|
+
</div>
|
|
566
|
+
<div id="tab-map" class="col s12 page">
|
|
567
|
+
<div class="fixed-action-btn" style="margin-bottom: 100px">
|
|
568
|
+
<a id="refresh"
|
|
569
|
+
class="btn-floating waves-effect waves-light blue tooltipped center-align hoverable translateT"
|
|
570
|
+
title="Refresh"><i class="material-icons large">autorenew</i></a>
|
|
571
|
+
</div>
|
|
572
|
+
<div id="viewconfigbtn" class="fixed-action-btn top left">
|
|
573
|
+
<a id="viewconfig"
|
|
574
|
+
class="btn-floating waves-effect waves-light orange tooltipped center-align hoverable translateT"
|
|
575
|
+
title="View config"><i class="material-icons large">menu</i></a>
|
|
576
|
+
</div>
|
|
577
|
+
<div id="map" class="row">
|
|
578
|
+
</div>
|
|
579
|
+
</div>
|
|
580
|
+
<div id="tab-sett" class="col s12 page">
|
|
581
|
+
<div id="sett" class="row">
|
|
582
|
+
<div class="input-field input-group col s12 m6 l4">
|
|
583
|
+
<input id="port" type="text" class="value validate"/>
|
|
584
|
+
<label for="port" class="translate">COM port name</label>
|
|
585
|
+
<span class="suffix">
|
|
586
|
+
<a id="selector" class='dropdown-trigger btn' href='#' data-target='ports'><i
|
|
587
|
+
class="material-icons">arrow_drop_down</i></a>
|
|
588
|
+
<!-- Dropdown Structure -->
|
|
589
|
+
<ul id='ports' class='dropdown-content'>
|
|
590
|
+
</ul>
|
|
591
|
+
</span>
|
|
592
|
+
</div>
|
|
593
|
+
<div class="input-field col s12 m6 l4">
|
|
594
|
+
<select id="adapterType" class="value">
|
|
595
|
+
<option value="" disabled selected class="translate">Choose type</option>
|
|
596
|
+
<option value="zstack">TI Z-Stack/CCxxxx</option>
|
|
597
|
+
<option value="deconz">Deconz/Conbee</option>
|
|
598
|
+
<option value="zigate">NXP/Zigate</option>
|
|
599
|
+
<option value="ezsp">Silicon Labs EZSP/EFR32</option>
|
|
600
|
+
</select>
|
|
601
|
+
<label class="translate">Type</label>
|
|
602
|
+
</div>
|
|
603
|
+
<div class="input-field col s6 m3 l3">
|
|
604
|
+
<input id="countDown" type="number" min="0" max="180" class="value"/>
|
|
605
|
+
<label class="translate" for="countDown">Countdown</label>
|
|
606
|
+
</div>
|
|
607
|
+
</div>
|
|
608
|
+
<div class="row">
|
|
609
|
+
<h6>Network</h6>
|
|
610
|
+
<div class="row">
|
|
611
|
+
<div class="input-field col s12 m6 l4">
|
|
612
|
+
<input id="extPanID" type="text" pattern="[a-fA-F\d]+" minlength="16" maxlength="16"
|
|
613
|
+
class="validate value"/>
|
|
614
|
+
<label class="translate" for="extPanID">ExtPanID</label>
|
|
615
|
+
</div>
|
|
616
|
+
<div class="input-field col s12 m6 l8">
|
|
617
|
+
<p class="translate">ExtPanIDText</p>
|
|
618
|
+
</div>
|
|
619
|
+
</div>
|
|
620
|
+
<div class="row">
|
|
621
|
+
<div class="input-field col s12 m6 l4">
|
|
622
|
+
<input id="panID" type="number" min="1" max="65565" class="value"/>
|
|
623
|
+
<label class="translate" for="panID">PanID</label>
|
|
624
|
+
</div>
|
|
625
|
+
<div class="input-field col s12 m6 l8">
|
|
626
|
+
<p class="translate">PanIDText</p>
|
|
627
|
+
</div>
|
|
628
|
+
|
|
629
|
+
</div>
|
|
630
|
+
<div class="row">
|
|
631
|
+
<div class="input-field suffix col s12 m6 l4">
|
|
632
|
+
<select id="channel" class="value">
|
|
633
|
+
<option value="" disabled selected class="translate">Choose channel</option>
|
|
634
|
+
<option value="11">11</option>
|
|
635
|
+
<option value="12">12</option>
|
|
636
|
+
<option value="13">13</option>
|
|
637
|
+
<option value="14">14</option>
|
|
638
|
+
<option value="15">15</option>
|
|
639
|
+
<option value="16">16</option>
|
|
640
|
+
<option value="17">17</option>
|
|
641
|
+
<option value="18">18</option>
|
|
642
|
+
<option value="19">19</option>
|
|
643
|
+
<option value="20">20</option>
|
|
644
|
+
<option value="21">21</option>
|
|
645
|
+
<option value="22">22</option>
|
|
646
|
+
<option value="23">23</option>
|
|
647
|
+
<option value="24">24</option>
|
|
648
|
+
<option value="25">25</option>
|
|
649
|
+
<option value="26">26</option>
|
|
650
|
+
</select>
|
|
651
|
+
<label class="translate">Channel</label>
|
|
652
|
+
<a id="scan" class='btn' data-target='channel'><i class="material-icons">graphic_eq</i></a>
|
|
653
|
+
</div>
|
|
654
|
+
<div class="input-field col s12 m6 l8">
|
|
655
|
+
<p class="translate">ChannelChangeText</p>
|
|
656
|
+
</div>
|
|
657
|
+
</div>
|
|
658
|
+
<div class="input-field col s12 m6 l4">
|
|
659
|
+
<input id="precfgkey" type="text" pattern="[a-fA-F\d]+" class="validate value"/>
|
|
660
|
+
<label class="translate" for="precfgkey">Transport Key</label>
|
|
661
|
+
</div>
|
|
662
|
+
<div class="input-field col s12 m6 l8">
|
|
663
|
+
<p class="translate">Tranport Key Text</p>
|
|
664
|
+
</div>
|
|
665
|
+
</div>
|
|
666
|
+
<div class="row">
|
|
667
|
+
<div class="input-field col s12 m6 l4 col-transmitPower">
|
|
668
|
+
<select id="transmitPower" class="value">
|
|
669
|
+
<option value="" disabled selected class="translate">transmitPower</option>
|
|
670
|
+
<option value="-22">low</option>
|
|
671
|
+
<option value="0">norm</option>
|
|
672
|
+
<option value="19">high</option>
|
|
673
|
+
<option value="20">high+</option>
|
|
674
|
+
</select>
|
|
675
|
+
<label class="translate" for="transmitPower">transmitPower</label>
|
|
676
|
+
</div>
|
|
677
|
+
</div>
|
|
678
|
+
<div class="row">
|
|
679
|
+
<h6 class="translate">Others</h6>
|
|
680
|
+
<div class="input-field col s12 m6 l4 col-disableLed">
|
|
681
|
+
<input id="disableLed" type="checkbox" class="value"/>
|
|
682
|
+
<label class="translate" for="disableLed">Disable LED for cc2531</label>
|
|
683
|
+
</div>
|
|
684
|
+
<div class="input-field col s12 m6 l4 col-disablePing">
|
|
685
|
+
<input id="disablePing" type="checkbox" class="value"/>
|
|
686
|
+
<label class="translate" for="disablePing">Disable active availability check</label>
|
|
687
|
+
</div>
|
|
688
|
+
<div class="input-field col s12 m6 l4 col-debugHerdsman">
|
|
689
|
+
<input id="debugHerdsman" type="checkbox" class="value"/>
|
|
690
|
+
<label class="translate" for="debugHerdsman">Zigbee-herdsman debug info</label>
|
|
691
|
+
</div>
|
|
692
|
+
<div class="input-field col s12 m6 l4">
|
|
693
|
+
<a id="reset-btn" class="waves-effect waves-light white-text btn-large translate">Reset...</a>
|
|
694
|
+
</div>
|
|
695
|
+
<div class="input-field col s12 m6 l4 col-disableBackup">
|
|
696
|
+
<input id="disableBackup" type="checkbox" class="value"/>
|
|
697
|
+
<label class="translate" for="disableBackup">disable internal Backup</label>
|
|
698
|
+
</div>
|
|
699
|
+
|
|
700
|
+
</div>
|
|
701
|
+
<div class="row">
|
|
702
|
+
<h6 class="translate">External converters</h6>
|
|
703
|
+
<div class="input-field col s12 m6 l4">
|
|
704
|
+
<input id="external" type="text" class="value"/>
|
|
705
|
+
<label class="translate" for="external">Paths to files, semicolon (;) splitted</label>
|
|
706
|
+
</div>
|
|
707
|
+
</div>
|
|
708
|
+
<div class="input-field col s12 m12 l12 col-startWithInconsistent">
|
|
709
|
+
<input id="startWithInconsistent" type="checkbox" class="value"/>
|
|
710
|
+
<label class="translate" for="startWithInconsistent">SettingsExclude</label>
|
|
711
|
+
</div>
|
|
712
|
+
</div>
|
|
713
|
+
|
|
714
|
+
<div id="tab-expos" class="col s12 page">
|
|
715
|
+
<div id="exposes" class="row">
|
|
716
|
+
<a class="btn-floating waves-effect waves-light blue table-button-add"><i class="material-icons">add</i></a>
|
|
717
|
+
<div class="table-values-div">
|
|
718
|
+
<table class="table-values">
|
|
719
|
+
<thead>
|
|
720
|
+
<tr>
|
|
721
|
+
<th data-name="addr" style="width: 70%" class="translate">addr</th>
|
|
722
|
+
<th data-name="active" style="width: 30px" data-style="width: 70px" data-type="checkbox"
|
|
723
|
+
class="translate">enabled
|
|
724
|
+
</th>
|
|
725
|
+
<th data-buttons="delete up down" style="width: 120px"></th>
|
|
726
|
+
</tr>
|
|
727
|
+
</thead>
|
|
728
|
+
</table>
|
|
729
|
+
</div>
|
|
730
|
+
</div>
|
|
731
|
+
</div>
|
|
732
|
+
|
|
733
|
+
<div id="tab-dev" class="col s12 page">
|
|
734
|
+
<div id="develop" class="row">
|
|
735
|
+
<div class="row">
|
|
736
|
+
<div class="col s12">
|
|
737
|
+
<h6 class="translate">This page is needed only for advanced users that like to extend adapter
|
|
738
|
+
functionalities!</h6>
|
|
739
|
+
</div>
|
|
740
|
+
</div>
|
|
741
|
+
<div class="row">
|
|
742
|
+
<div class="col s4">
|
|
743
|
+
<p class="translate">notImplementedText</p>
|
|
744
|
+
<p><span class="translate">You find good explanations what the settings mean</span>
|
|
745
|
+
<a href="https://docs.smartthings.com/en/latest/device-type-developers-guide/zigbee-primer.html"
|
|
746
|
+
target="_blank" class="translate">here</a>
|
|
747
|
+
<span class="translate">and in</span> <a
|
|
748
|
+
href="https://www.nxp.com/docs/en/user-guide/JN-UG-3115.pdf" target="_blank">ZigBee
|
|
749
|
+
Cluster Library</a>.
|
|
750
|
+
</p>
|
|
751
|
+
<p><span class="translate">Please contribute your discoveries</span> (<a
|
|
752
|
+
href="https://github.com/Koenkk/zigbee-herdsman-converters" target="_blank">
|
|
753
|
+
zigbee-herdsman-converters</a>) <span class="translate">to make it available for other user too</span>.
|
|
754
|
+
</p>
|
|
755
|
+
</div>
|
|
756
|
+
<div class="col s8">
|
|
757
|
+
<div class="blue-grey-text">
|
|
758
|
+
<h6 class="translate">Examples:</h6>
|
|
759
|
+
<ul class="collapsible">
|
|
760
|
+
<li>
|
|
761
|
+
<div class="collapsible-header translate">Read Firmware</div>
|
|
762
|
+
<div class="collapsible-body">Hue Motion Detector: <b>Device:</b> SML001, <b>Endpoint:</b>
|
|
763
|
+
2, <b>ClusterId:</b> genBasic (0),
|
|
764
|
+
<b>Command Type: </b>Foundation, <b>Command:</b> read (0), <b>AttributeId:</b>
|
|
765
|
+
swBuildId (16384)<br>
|
|
766
|
+
=> Result: "6.1.0.18912" (You read the device Firmware version)
|
|
767
|
+
</div>
|
|
768
|
+
</li>
|
|
769
|
+
<li>
|
|
770
|
+
<div class="collapsible-header translate">Write Attribute</div>
|
|
771
|
+
<div class="collapsible-body"><b>Device:</b> SML001, <b>Endpoint:</b> 2,
|
|
772
|
+
<b>ClusterId:</b> msOccupancySensing (1030), <b>Command Type: </b>Foundation,
|
|
773
|
+
<b>Command:</b> write (2), <b>AttributeId:</b>
|
|
774
|
+
pirOToUDelay (16, type 33), <b>Value:</b> 55<br>
|
|
775
|
+
=> (You set the timeout until motion detector changes from occupied not
|
|
776
|
+
unoccupied,
|
|
777
|
+
test it be <b>reading</b> same attribute)
|
|
778
|
+
</div>
|
|
779
|
+
</li>
|
|
780
|
+
<li>
|
|
781
|
+
<div class="collapsible-header translate">Send Functional command</div>
|
|
782
|
+
<div class="collapsible-body"><b>Device:</b> TRADFRI bulb..., <b>Endpoint:</b> 1,
|
|
783
|
+
<b>ClusterId:</b> genOnOff (6), <b>Command Type: </b>Functional,
|
|
784
|
+
<b>Command:</b> on (1), <b>AttributeId:</b>
|
|
785
|
+
onOff (0, type 16)<br>
|
|
786
|
+
=> You switched on your bulb
|
|
787
|
+
<p>For details about needed arguments (expert mode) see
|
|
788
|
+
<a href="https://github.com/zigbeer/zcl-packet/wiki/6.-Appendix#621-general">
|
|
789
|
+
zcl-packet - Appendix</a></p></div>
|
|
790
|
+
</li>
|
|
791
|
+
<li>
|
|
792
|
+
<div class="collapsible-header translate">Expert Mode</div>
|
|
793
|
+
<div class="collapsible-body">Example:<br>
|
|
794
|
+
<b>JSON:</b> { "devId": "zigbee.0.yourDevId",
|
|
795
|
+
"ep": "2", "cid": "msOccupancySensing", "cmd": "write", "cmdType": "foundation",
|
|
796
|
+
"zclData": { "pirOToUDelay": 30 },
|
|
797
|
+
"cfg": { "manufCode": 4107, "manufSpec": 1}}<br>
|
|
798
|
+
(You may use selectors together with expert mode to get prepared JSON)
|
|
799
|
+
</div>
|
|
800
|
+
</li>
|
|
801
|
+
<li>
|
|
802
|
+
<div class="collapsible-header translate">Configure reporting</div>
|
|
803
|
+
<div class="collapsible-body">Example (Expert Mode):<br>
|
|
804
|
+
<b>JSON:</b> { "devId": "zigbee.0.yourDevId",
|
|
805
|
+
"ep": "2", "cid": "msTemperatureMeasurement", "cmd": "configReport", "cmdType":
|
|
806
|
+
"foundation",<br>
|
|
807
|
+
"zclData": [{<br>
|
|
808
|
+
"attribute": "measuredValue", <br>"minimumReportInterval": 1, <br>"maximumReportInterval":
|
|
809
|
+
600,<br>
|
|
810
|
+
"reportableChange": 1 }],<br>
|
|
811
|
+
"cfg": null}
|
|
812
|
+
</div>
|
|
813
|
+
</li>
|
|
814
|
+
</ul>
|
|
815
|
+
</div>
|
|
816
|
+
</div>
|
|
817
|
+
</div>
|
|
818
|
+
<div class="col s9">
|
|
819
|
+
<div class="row">
|
|
820
|
+
<div class="input-field col s8">
|
|
821
|
+
<select id="dev-selector">
|
|
822
|
+
<option value="" disabled selected class="translate">Select a device</option>
|
|
823
|
+
</select>
|
|
824
|
+
<label for="dev-selector" class="translate">Device</label>
|
|
825
|
+
</div>
|
|
826
|
+
<div class="input-field col s4 admin-tooltip-icon translateT"
|
|
827
|
+
title="Some kind of 'device within device'. Every endpoint may have different functions. If one does not work, test another.">
|
|
828
|
+
<select id="ep-selector">
|
|
829
|
+
<option value="" disabled selected class="translate">Select an Endpoint</option>
|
|
830
|
+
</select>
|
|
831
|
+
<label for="ep-selector" class="translate">Endpoint</label>
|
|
832
|
+
</div>
|
|
833
|
+
</div>
|
|
834
|
+
<div class="row">
|
|
835
|
+
<div class="row">
|
|
836
|
+
<div class="input-field col s4 admin-tooltip-icon"
|
|
837
|
+
title="Group of functions. AttributeIds will change depending on your choice here.">
|
|
838
|
+
<select id="cid-selector">
|
|
839
|
+
<option value="" disabled selected class="translate">Select cid</option>
|
|
840
|
+
</select>
|
|
841
|
+
<label for="cid-selector" class="translate">Cluster ID</label>
|
|
842
|
+
</div>
|
|
843
|
+
<div class="input-field col s4 admin-tooltip-icon"
|
|
844
|
+
title="Command type. Available commands will change depending on your choice here. Some actions need Foundation, others Functional, you may test both.">
|
|
845
|
+
<select id="cmd-type-selector">
|
|
846
|
+
<option value="foundation" selected>Foundation</option>
|
|
847
|
+
<option value="functional">Functional</option>
|
|
848
|
+
</select>
|
|
849
|
+
<label for="cid-selector" class="translate">Command Type</label>
|
|
850
|
+
</div>
|
|
851
|
+
<div class="input-field col s4 admin-tooltip-icon" title="The action you want to run.">
|
|
852
|
+
<select id="cmd-selector">
|
|
853
|
+
<option value="" disabled selected class="translate">Select Command</option>
|
|
854
|
+
</select>
|
|
855
|
+
<label for="cmd-selector" class="translate">Command</label>
|
|
856
|
+
</div>
|
|
857
|
+
<div class="input-field col s4 admin-tooltip-icon"
|
|
858
|
+
title="The setting you are interested in.">
|
|
859
|
+
<select id="attrid-selector">
|
|
860
|
+
<option value="" disabled selected class="translate">Select Attribute</option>
|
|
861
|
+
</select>
|
|
862
|
+
<label for="attrid-selector" class="translate">Attribute ID</label>
|
|
863
|
+
</div>
|
|
864
|
+
<div class="col s8">
|
|
865
|
+
<div class="input-field col s5 offset-s1 admin-tooltip-icon translateT"
|
|
866
|
+
title="Check if your Command needs to submit a value. For example, cmd 'write' needs the value you want to write to your device.">
|
|
867
|
+
<label for="value-needed" style="pointer-events: auto;">
|
|
868
|
+
<!-- workaround input not clickable https://codepen.io/alexisdiel/pen/gxwPWj -->
|
|
869
|
+
<input style="pointer-events: none;" id="value-needed" type="checkbox"
|
|
870
|
+
class="filled-in"/>
|
|
871
|
+
<span style="pointer-events: none;" class="translate">Needs value</span>
|
|
872
|
+
</label>
|
|
873
|
+
</div>
|
|
874
|
+
<div class="input-field col s6 admin-tooltip-icon translateT"
|
|
875
|
+
title="The value to send to your device (use douple-quotes if a number is a string).">
|
|
876
|
+
<input id="value-input" disabled placeholder="0">
|
|
877
|
+
<label for="value-input">Value</label>
|
|
878
|
+
</div>
|
|
879
|
+
</div>
|
|
880
|
+
</div>
|
|
881
|
+
</div>
|
|
882
|
+
</div>
|
|
883
|
+
<div class="col s3">
|
|
884
|
+
<div class="row">
|
|
885
|
+
<div id="expert-toggle" class="input-field col s12 admin-tooltip-icon translateT"
|
|
886
|
+
title="Switch expert mode to enter raw data, sent to zigbee device.">
|
|
887
|
+
<label for="expert-mode" style="pointer-events: auto;">
|
|
888
|
+
<!-- workaround input not clickable https://codepen.io/alexisdiel/pen/gxwPWj -->
|
|
889
|
+
<input style="pointer-events: none;" id="expert-mode" type="checkbox"
|
|
890
|
+
class="filled-in"/>
|
|
891
|
+
<span style="pointer-events: none;" class="translate">Expert mode</span>
|
|
892
|
+
</label>
|
|
893
|
+
</div>
|
|
894
|
+
<div id="expert-json-box" class="input-field col s12" style="display:none;">
|
|
895
|
+
<p class="translate">zigbee-shepherd</p>
|
|
896
|
+
<div class="input-field col s12">
|
|
897
|
+
<textarea id="expert-json" class="materialize-textarea"></textarea>
|
|
898
|
+
<label for="expert-json">JSON</label>
|
|
899
|
+
</div>
|
|
900
|
+
</div>
|
|
901
|
+
</div>
|
|
902
|
+
<div id="dev-action-card" class=".center-align blue card-panel">
|
|
903
|
+
<div class="card-content white-text">
|
|
904
|
+
<h5 id="devActResult" class="card-title"></h5>
|
|
905
|
+
<p id="devInfoMsg" class="translate">Select your settings. Then click RUN to send command to
|
|
906
|
+
your Zigbee device.</p>
|
|
907
|
+
</div>
|
|
908
|
+
<div class="card-action">
|
|
909
|
+
<a id="dev-send-btn"
|
|
910
|
+
class="waves-effect waves-light white-text btn-large tooltipped translateT translate"
|
|
911
|
+
data-position="bottom" title="Send data to Zigbee">Run</a>
|
|
912
|
+
</div>
|
|
913
|
+
</div>
|
|
914
|
+
</div>
|
|
915
|
+
</div>
|
|
916
|
+
<div id="sett" class="row">
|
|
917
|
+
<a class="col s1 offset-s11 btn-small" onClick="$('#dev_result_log').html('');">Clear Log</a>
|
|
918
|
+
<div class="col s12" class="card-panel ">
|
|
919
|
+
<div id="dev_result_log" class="card-content black white-text"></div>
|
|
920
|
+
<label for="dev_result_log" class="translate">Results</label>
|
|
921
|
+
</div>
|
|
922
|
+
</div>
|
|
923
|
+
</div>
|
|
924
|
+
<div id="tab-groups" class="col s12 page">
|
|
925
|
+
<div class="row">
|
|
926
|
+
<div class="col s12">
|
|
927
|
+
<div class="col s12">
|
|
928
|
+
<table class="">
|
|
929
|
+
<thead>
|
|
930
|
+
<tr>
|
|
931
|
+
<th data-name="num" class="translate">№</th>
|
|
932
|
+
<th data-name="name" class="translate">Name</th>
|
|
933
|
+
</tr>
|
|
934
|
+
</thead>
|
|
935
|
+
<tbody id="groups_table"></tbody>
|
|
936
|
+
</table>
|
|
937
|
+
</div>
|
|
938
|
+
<a id="add_group"
|
|
939
|
+
class="btn-floating waves-effect waves-light blue table-button-add tooltipped hoverable translateT"
|
|
940
|
+
title="Add group">
|
|
941
|
+
<i class="material-icons">add</i>
|
|
942
|
+
</a>
|
|
943
|
+
</div>
|
|
944
|
+
</div>
|
|
945
|
+
</div>
|
|
946
|
+
<div id="tab-binding" class="col s12 page">
|
|
947
|
+
<div class="fixed-action-btn" style="margin-bottom: 100px">
|
|
948
|
+
<a id="add_binding"
|
|
949
|
+
class="btn-floating waves-effect waves-light blue tooltipped center-align hoverable translateT"
|
|
950
|
+
title="Add binding"><i class="material-icons large">add</i></a>
|
|
951
|
+
</div>
|
|
952
|
+
<div id="binding" class="row">
|
|
953
|
+
</div>
|
|
954
|
+
</div>
|
|
955
|
+
<div id="tab-exclude" class="col s12 page">
|
|
956
|
+
<div class="row">
|
|
957
|
+
<p class="translate">ExcludeTextTranslation</p>
|
|
958
|
+
</div>
|
|
959
|
+
<div class="fixed-action-btn" style="margin-bottom: 100px">
|
|
960
|
+
<a id="add_exclude"
|
|
961
|
+
class="btn-floating waves-effect waves-light blue tooltipped center-align hoverable translateT"
|
|
962
|
+
title="Add exlude"><i class="material-icons large">add</i></a>
|
|
963
|
+
</div>
|
|
964
|
+
<div id="exclude" class="row">
|
|
965
|
+
</div>
|
|
966
|
+
</div>
|
|
967
|
+
</div>
|
|
968
|
+
</div>
|
|
969
|
+
|
|
970
|
+
<div class="materialize-dialogs m">
|
|
971
|
+
<div id="modaledit" class="modal">
|
|
972
|
+
<div class="modal-content">
|
|
973
|
+
<h3 class="translate">Config device</h3>
|
|
974
|
+
<div class="row">
|
|
975
|
+
<div class="co1l">
|
|
976
|
+
<div class="input-field">
|
|
977
|
+
<input id="d_name" type="text" class="value validate">
|
|
978
|
+
<label for="d_name" class="translate">Name</label>
|
|
979
|
+
</div>
|
|
980
|
+
</div>
|
|
981
|
+
</div>
|
|
982
|
+
<div class="row epid0">
|
|
983
|
+
<div class="col">
|
|
984
|
+
<div class=endpointid>
|
|
985
|
+
<p class="translate device_with_endpoint">Main Endpoint</p>
|
|
986
|
+
</div>
|
|
987
|
+
</div>
|
|
988
|
+
<div class="col1">
|
|
989
|
+
<div class="input-field groups">
|
|
990
|
+
<select id="d_groups_ep0" class="materialSelect" multiple>
|
|
991
|
+
<option value="1">value</option>
|
|
992
|
+
</select>
|
|
993
|
+
<label for="d_groups_ep0" class="translate">Groups</label>
|
|
994
|
+
</div>
|
|
995
|
+
</div>
|
|
996
|
+
</div>
|
|
997
|
+
<div class="row epid1">
|
|
998
|
+
<div class="col epid">
|
|
999
|
+
<div class=endpointid>
|
|
1000
|
+
<p class="translate device_with_endpoint">Sub Endpoint 1</p>
|
|
1001
|
+
</div>
|
|
1002
|
+
</div>
|
|
1003
|
+
<div class="col">
|
|
1004
|
+
<div class="input-field groups">
|
|
1005
|
+
<select id="d_groups_ep1" class="materialSelect" multiple>
|
|
1006
|
+
<option value="1">value</option>
|
|
1007
|
+
</select>
|
|
1008
|
+
<label for="d_groups_ep1" class="translate">Groups</label>
|
|
1009
|
+
</div>
|
|
1010
|
+
</div>
|
|
1011
|
+
</div>
|
|
1012
|
+
<div class="row epid2">
|
|
1013
|
+
<div class="col epid">
|
|
1014
|
+
<div class=endpointid>
|
|
1015
|
+
<p class="translate device_with_endpoint">Sub Endpoint 2</p>
|
|
1016
|
+
</div>
|
|
1017
|
+
</div>
|
|
1018
|
+
<div class="col">
|
|
1019
|
+
<div class="input-field groups">
|
|
1020
|
+
<select id="d_groups_ep2" class="materialSelect" multiple>
|
|
1021
|
+
<option value="1">value</option>
|
|
1022
|
+
</select>
|
|
1023
|
+
<label for="d_groups_ep2" class="translate">Groups</label>
|
|
1024
|
+
</div>
|
|
1025
|
+
</div>
|
|
1026
|
+
</div>
|
|
1027
|
+
<div class="row epid3">
|
|
1028
|
+
<div class="col epid">
|
|
1029
|
+
<div class=endpointid>
|
|
1030
|
+
<p class="translate device_with_endpoint">Sub Endpoint 3</p>
|
|
1031
|
+
</div>
|
|
1032
|
+
</div>
|
|
1033
|
+
<div class="col">
|
|
1034
|
+
<div class="input-field groups">
|
|
1035
|
+
<select id="d_groups_ep3" class="materialSelect" multiple>
|
|
1036
|
+
<option value="1">value</option>
|
|
1037
|
+
</select>
|
|
1038
|
+
<label for="d_groups_ep3" class="translate">Groups</label>
|
|
1039
|
+
</div>
|
|
1040
|
+
</div>
|
|
1041
|
+
</div>
|
|
1042
|
+
</div>
|
|
1043
|
+
<div class="modal-footer">
|
|
1044
|
+
<a name="save" href="#!"
|
|
1045
|
+
class="modal-action modal-close waves-effect waves-green btn green translate">Save</a>
|
|
1046
|
+
<a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
|
|
1047
|
+
</div>
|
|
1048
|
+
</div>
|
|
1049
|
+
|
|
1050
|
+
<div id="groupedit" class="modal">
|
|
1051
|
+
<div class="modal-content">
|
|
1052
|
+
<div class="addgroup">
|
|
1053
|
+
<h3 class="translate">Add Group</h3>
|
|
1054
|
+
</div>
|
|
1055
|
+
<div class="editgroup">
|
|
1056
|
+
<h3 class="translate">Edit Group</h3>
|
|
1057
|
+
</div>
|
|
1058
|
+
<div class="row">
|
|
1059
|
+
<div class="col s4 m4 l2">
|
|
1060
|
+
<div class="input-field groupid">
|
|
1061
|
+
<input id="g_index" type="number" min="1" class="value validate">
|
|
1062
|
+
<label for="g_index" class="translate">№</label>
|
|
1063
|
+
</div>
|
|
1064
|
+
</div>
|
|
1065
|
+
<div class="input-field col s8 m8 l10">
|
|
1066
|
+
<input id="g_name" type="text" class="value validate">
|
|
1067
|
+
<label for="g_name" class="translate">Name</label>
|
|
1068
|
+
</div>
|
|
1069
|
+
</div>
|
|
1070
|
+
<div class="row hide">
|
|
1071
|
+
<div class="col s12">
|
|
1072
|
+
<div class="input-field members">
|
|
1073
|
+
<label for="g_members" class="translate">Members</label>
|
|
1074
|
+
<select id="g_members" class="materialSelect" multiple>
|
|
1075
|
+
<option value="1">Значение</option>
|
|
1076
|
+
</select>
|
|
1077
|
+
</div>
|
|
1078
|
+
</div>
|
|
1079
|
+
</div>
|
|
1080
|
+
</div>
|
|
1081
|
+
<div class="modal-footer">
|
|
1082
|
+
<a name="save" href="#!"
|
|
1083
|
+
class="modal-action modal-close waves-effect waves-green btn green translate">Save</a>
|
|
1084
|
+
<a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
|
|
1085
|
+
</div>
|
|
1086
|
+
</div>
|
|
1087
|
+
|
|
1088
|
+
<div id="codeentry" class="modal">
|
|
1089
|
+
<div class="modal-content">
|
|
1090
|
+
<div class="addgroup">
|
|
1091
|
+
<h3 class="translate">Enter Pairing Code</h3>
|
|
1092
|
+
</div>
|
|
1093
|
+
<div class="row">
|
|
1094
|
+
<div class="input-field">
|
|
1095
|
+
<input id="qr_code" type="text" class="value validate">
|
|
1096
|
+
<label for="qr_code" class="translate">QR Code</label>
|
|
1097
|
+
</div>
|
|
1098
|
+
</div>
|
|
1099
|
+
</div>
|
|
1100
|
+
<div class="modal-footer">
|
|
1101
|
+
<a name="pair" href="#!"
|
|
1102
|
+
class="modal-action modal-close waves-effect waves-green btn green translate">Start Pairing</a>
|
|
1103
|
+
<a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
|
|
1104
|
+
</div>
|
|
1105
|
+
</div>
|
|
1106
|
+
|
|
1107
|
+
<div id="modaldelete" class="modal">
|
|
1108
|
+
<div class="modal-content">
|
|
1109
|
+
<h3 class="translate">Delete confirmation</h3>
|
|
1110
|
+
<p>A bunch of text</p>
|
|
1111
|
+
</div>
|
|
1112
|
+
<div class="modal-footer">
|
|
1113
|
+
<div id="forcediv" class="hide forcedelete">
|
|
1114
|
+
<input id="force" type="checkbox" class="value"/>
|
|
1115
|
+
<label class="translate" for="force">Force delete (for lost devices)</label>
|
|
1116
|
+
</div>
|
|
1117
|
+
<a name="yes" href="#!"
|
|
1118
|
+
class="modal-action modal-close waves-effect waves-green btn green translate">Yes</a>
|
|
1119
|
+
<a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
|
|
1120
|
+
</div>
|
|
1121
|
+
</div>
|
|
1122
|
+
<div id="modalclean" class="modal">
|
|
1123
|
+
<div class="modal-content">
|
|
1124
|
+
<h3 class="translate">State cleanup confirmation</h3>
|
|
1125
|
+
<p>A bunch of text</p>
|
|
1126
|
+
</div>
|
|
1127
|
+
<div class="modal-footer">
|
|
1128
|
+
<div id="cforcediv" class="hide forcedelete">
|
|
1129
|
+
<input id="cforce" type="checkbox" class="value"/>
|
|
1130
|
+
<label class="translate" for="cforce">Force removed states with custom configuration (history, upnp,
|
|
1131
|
+
etc.)</label>
|
|
1132
|
+
</div>
|
|
1133
|
+
<a name="yes" href="#!"
|
|
1134
|
+
class="modal-action modal-close waves-effect waves-green btn green translate">Yes</a>
|
|
1135
|
+
<a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
|
|
1136
|
+
</div>
|
|
1137
|
+
</div>
|
|
1138
|
+
<div id="modalreconfigure" class="modal">
|
|
1139
|
+
<div class="modal-content">
|
|
1140
|
+
<h3 class="translate">Reconfigure device</h3>
|
|
1141
|
+
<p>A bunch of text</p>
|
|
1142
|
+
</div>
|
|
1143
|
+
<div class="modal-footer">
|
|
1144
|
+
<a name="yes" href="#!"
|
|
1145
|
+
class="modal-action modal-close waves-effect waves-green btn green translate">Yes</a>
|
|
1146
|
+
<a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
|
|
1147
|
+
</div>
|
|
1148
|
+
</div>
|
|
1149
|
+
|
|
1150
|
+
<div id="modalpairing" class="modal modal-fixed-footer">
|
|
1151
|
+
<div class="modal-content">
|
|
1152
|
+
<h3 class="translate">Pairing process</h3>
|
|
1153
|
+
<div class="progress">
|
|
1154
|
+
<div id="progress_line" class="determinate" style="width: 0%"></div>
|
|
1155
|
+
</div>
|
|
1156
|
+
<div class="row textarea">
|
|
1157
|
+
<textarea id="stdout" disabled="disabled" cols="120" rows="30"
|
|
1158
|
+
style="height: calc(100% - 115px)"></textarea>
|
|
1159
|
+
</div>
|
|
1160
|
+
</div>
|
|
1161
|
+
<div class="modal-footer">
|
|
1162
|
+
<!-- <a name="stop" href="#!" class="modal-action modal-close waves-effect waves-red btn-flat left">Stop</a> -->
|
|
1163
|
+
<a name="hide" href="#!"
|
|
1164
|
+
class="modal-action modal-close waves-effect waves-green btn green translate">Hide</a>
|
|
1165
|
+
</div>
|
|
1166
|
+
</div>
|
|
1167
|
+
|
|
1168
|
+
<div id="modalreset" class="modal">
|
|
1169
|
+
<div class="modal-content">
|
|
1170
|
+
<h3 class="translate">Reset confirmation</h3>
|
|
1171
|
+
<p class="translate">Reset Info</p>
|
|
1172
|
+
<a id="soft" data-mode="soft" class="modal-action modal-close waves-effect waves-red btn translate">Soft-Reset</a>
|
|
1173
|
+
<a id="hard" data-mode="hard" class="modal-action modal-close waves-effect waves-red btn translate">Hard-Reset</a>
|
|
1174
|
+
</div>
|
|
1175
|
+
<div class="modal-footer">
|
|
1176
|
+
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat translate">Cancel</a>
|
|
1177
|
+
</div>
|
|
1178
|
+
</div>
|
|
1179
|
+
|
|
1180
|
+
<div id="modalviewconfig" class="modal modal-fixed-footer">
|
|
1181
|
+
<div class="modal-content">
|
|
1182
|
+
<h3 class="translate">Map view config</h3>
|
|
1183
|
+
<div class="row">
|
|
1184
|
+
<div class="input-field input-group col s12 m6 l6">
|
|
1185
|
+
<div id="filterParentTgl" class="input-field col s12 admin-tooltip-icon translateT"
|
|
1186
|
+
title="Show parent">
|
|
1187
|
+
<label for="filterParent" style="pointer-events: auto;">
|
|
1188
|
+
<!-- workaround input not clickable https://codepen.io/alexisdiel/pen/gxwPWj -->
|
|
1189
|
+
<input style="pointer-events: none;" id="filterParent" type="checkbox" class="filled-in"
|
|
1190
|
+
checked="checked"/>
|
|
1191
|
+
<span style="pointer-events: none; color:#0000ff;"
|
|
1192
|
+
class="translate">Parent/Child/Unknown</span>
|
|
1193
|
+
</label>
|
|
1194
|
+
</div>
|
|
1195
|
+
<div id="filterSiblTgl" class="input-field col s12 admin-tooltip-icon translateT"
|
|
1196
|
+
title="Show siblings">
|
|
1197
|
+
<label for="filterSibl" style="pointer-events: auto;">
|
|
1198
|
+
<input style="pointer-events: none;" id="filterSibl" type="checkbox" class="filled-in"
|
|
1199
|
+
checked="checked"/>
|
|
1200
|
+
<span style="pointer-events: none; color:#00bb00;" class="translate">Siblings</span>
|
|
1201
|
+
</label>
|
|
1202
|
+
</div>
|
|
1203
|
+
<div id="filterPrvChildTgl" class="input-field col s12 admin-tooltip-icon translateT"
|
|
1204
|
+
title="Show previous parents">
|
|
1205
|
+
<label for="filterPrvChild" style="pointer-events: auto;">
|
|
1206
|
+
<input style="pointer-events: none;" id="filterPrvChild" type="checkbox" class="filled-in"/>
|
|
1207
|
+
<span style="pointer-events: none; color:#555555;" class="translate">Previous Parents</span>
|
|
1208
|
+
</label>
|
|
1209
|
+
</div>
|
|
1210
|
+
<div id="filterMeshTgl" class="input-field col s12 admin-tooltip-icon translateT"
|
|
1211
|
+
title="Show full mesh">
|
|
1212
|
+
<label for="filterMesh" style="pointer-events: auto;">
|
|
1213
|
+
<input style="pointer-events: none;" id="filterMesh" type="checkbox" class="filled-in"/>
|
|
1214
|
+
<span style="pointer-events: none;">Mesh</span>
|
|
1215
|
+
</label>
|
|
1216
|
+
</div>
|
|
1217
|
+
</div>
|
|
1218
|
+
<div class="input-field input-group col s12 m6 l6">
|
|
1219
|
+
<p class="translate">Device map info</p>
|
|
1220
|
+
</div>
|
|
1221
|
+
</div>
|
|
1222
|
+
</div>
|
|
1223
|
+
<div class="modal-footer">
|
|
1224
|
+
<!-- <a name="stop" href="#!" class="modal-action modal-close waves-effect waves-red btn-flat left">Stop</a> -->
|
|
1225
|
+
<a name="hide" href="#!"
|
|
1226
|
+
class="modal-action modal-close waves-effect waves-green btn green translate">Hide</a>
|
|
1227
|
+
</div>
|
|
1228
|
+
</div>
|
|
1229
|
+
|
|
1230
|
+
<div id="bindingmodaledit" class="modal">
|
|
1231
|
+
<div class="modal-content">
|
|
1232
|
+
<div class="row">
|
|
1233
|
+
<h3 class="translate">Binding configuration</h3>
|
|
1234
|
+
<div class="row">
|
|
1235
|
+
<div class="col s9 input-field">
|
|
1236
|
+
<select id="bind_source" class="icons">
|
|
1237
|
+
</select>
|
|
1238
|
+
<label for="bind_source" class="translate">Source device</label>
|
|
1239
|
+
</div>
|
|
1240
|
+
<div class="col s3 input-field">
|
|
1241
|
+
<select id="bind_source_ep" class="materialSelect">
|
|
1242
|
+
</select>
|
|
1243
|
+
<label for="bind_source_ep" class="translate">Source endpoint</label>
|
|
1244
|
+
</div>
|
|
1245
|
+
</div>
|
|
1246
|
+
<div class="row">
|
|
1247
|
+
<div class="col s9 input-field">
|
|
1248
|
+
<select id="bind_target" class="icons">
|
|
1249
|
+
</select>
|
|
1250
|
+
<label for="bind_target" class="translate">Target device</label>
|
|
1251
|
+
</div>
|
|
1252
|
+
<div class="col s3 input-field">
|
|
1253
|
+
<select id="bind_target_ep" class="materialSelect">
|
|
1254
|
+
</select>
|
|
1255
|
+
<label for="bind_target_ep" class="translate">Target endpoint</label>
|
|
1256
|
+
</div>
|
|
1257
|
+
</div>
|
|
1258
|
+
<div class="row">
|
|
1259
|
+
<div class="col s9 input-field">
|
|
1260
|
+
<input id="unbind_from_coordinator" type="checkbox" class="value"/>
|
|
1261
|
+
<label class="translate" for="unbind_from_coordinator">Unbind remote from Coordinator (necessary
|
|
1262
|
+
for some remotes like HUE Dimmer Switch)</label>
|
|
1263
|
+
</div>
|
|
1264
|
+
</div>
|
|
1265
|
+
</div>
|
|
1266
|
+
</div>
|
|
1267
|
+
<div class="modal-footer">
|
|
1268
|
+
<a name="save" href="#!"
|
|
1269
|
+
class="modal-action modal-close waves-effect waves-green btn green translate">Save</a>
|
|
1270
|
+
<a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
|
|
1271
|
+
</div>
|
|
1272
|
+
</div>
|
|
1273
|
+
<div id="excludemodaledit" class="modal">
|
|
1274
|
+
<div class="modal-content">
|
|
1275
|
+
<div class="row">
|
|
1276
|
+
<h3 class="translate">Exclude configuration</h3>
|
|
1277
|
+
<div class="row">
|
|
1278
|
+
<div class="col s9 input-field">
|
|
1279
|
+
<select id="exclude_target" class="icons">
|
|
1280
|
+
</select>
|
|
1281
|
+
<label for="exclude_target" class="translate">exclude device</label>
|
|
1282
|
+
</div>
|
|
1283
|
+
</div>
|
|
1284
|
+
</div>
|
|
1285
|
+
</div>
|
|
1286
|
+
<div class="modal-footer">
|
|
1287
|
+
<a name="save" href="#!"
|
|
1288
|
+
class="modal-action modal-close waves-effect waves-green btn green translate">Save</a>
|
|
1289
|
+
<a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
|
|
1290
|
+
</div>
|
|
1291
|
+
</div>
|
|
1292
|
+
<div id="modaldevinfo" class="modal modal-fixed-footer modal-fixed-header">
|
|
1293
|
+
<div class="modal-header">
|
|
1294
|
+
<h5 class="translate">Device information</h5>
|
|
1295
|
+
</div>
|
|
1296
|
+
<div class="modal-content">
|
|
1297
|
+
<div id="devinfo" class="row">
|
|
1298
|
+
|
|
1299
|
+
</div>
|
|
1300
|
+
</div>
|
|
1301
|
+
<div class="modal-footer">
|
|
1302
|
+
<a name="hide" href="#!"
|
|
1303
|
+
class="modal-action modal-close waves-effect waves-green btn green translate">Hide</a>
|
|
1304
|
+
</div>
|
|
1305
|
+
</div>
|
|
1306
|
+
<div id="modalgrouplist" class="modal modal-fixed-footer modal-fixed-header">
|
|
1307
|
+
<div class="modal-header">
|
|
1308
|
+
<h5 class="translate">Groups
|
|
1309
|
+
<a name="add" class="modal-action modal-close waves-effect waves-green btn green translate">Add
|
|
1310
|
+
Group</a>
|
|
1311
|
+
</h5>
|
|
1312
|
+
</div>
|
|
1313
|
+
<div class="modal-content">
|
|
1314
|
+
<div id="grouplist" class="row">
|
|
1315
|
+
|
|
1316
|
+
</div>
|
|
1317
|
+
</div>
|
|
1318
|
+
<div class="modal-footer">
|
|
1319
|
+
<a name="save" href="#!"
|
|
1320
|
+
class="modal-action modal-close waves-effect waves-green btn green translate">Save</a>
|
|
1321
|
+
<a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
|
|
1322
|
+
</div>
|
|
1323
|
+
</div>
|
|
1324
|
+
|
|
1325
|
+
<div id="modalWaiting" class="modal modal">
|
|
1326
|
+
<div class="modal-content">
|
|
1327
|
+
<h3 class="translate">Waiting</h3>
|
|
1328
|
+
<div class="progress">
|
|
1329
|
+
<div id="waiting_progress_line" class="determinate" style="width: 0%"></div>
|
|
1330
|
+
</div>
|
|
1331
|
+
<div class="row">
|
|
1332
|
+
<h5 id="waiting_message" class="translate"></h5>
|
|
1333
|
+
</div>
|
|
1334
|
+
</div>
|
|
1335
|
+
</div>
|
|
1336
|
+
|
|
1337
|
+
<div id="modalchannels" class="modal modal-fixed-footer modal-fixed-header">
|
|
1338
|
+
<div class="modal-header">
|
|
1339
|
+
<h3 class="translate">Channels</h3>
|
|
1340
|
+
</div>
|
|
1341
|
+
<div class="modal-content">
|
|
1342
|
+
<div class="row">
|
|
1343
|
+
<h6>Channels energy scan. Lower energy is better</h6>
|
|
1344
|
+
</div>
|
|
1345
|
+
<div id="channelsinfo" class="row">
|
|
1346
|
+
</div>
|
|
1347
|
+
</div>
|
|
1348
|
+
<div class="modal-footer">
|
|
1349
|
+
<a name="hide" href="#!"
|
|
1350
|
+
class="modal-action modal-close waves-effect waves-green btn green translate">Hide</a>
|
|
1351
|
+
</div>
|
|
1352
|
+
</div>
|
|
1353
|
+
</div>
|
|
1354
|
+
</body>
|
|
1355
|
+
|
|
1356
|
+
</html>
|