iobroker.zigbee 1.6.3 → 1.6.14
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/README.md +68 -14
- package/admin/adapter-settings.js +39 -3
- package/admin/admin.js +273 -47
- package/admin/img/14153905L.png +0 -0
- package/admin/img/81855.png +0 -0
- package/admin/img/HG06338.png +0 -0
- package/admin/img/R7060.png +0 -0
- package/admin/img/TI0001-cover.png +0 -0
- package/admin/img/WHD02.png +0 -0
- package/admin/img/ikea_E1812.png +0 -0
- package/admin/img/tuya_rb280.png +0 -0
- package/admin/index_m.html +170 -24
- package/admin/tab_m.html +181 -216
- package/admin/words.js +30 -29
- package/docs/tutorial/zigbee.png +0 -0
- package/io-package.json +28 -1
- package/lib/commands.js +75 -9
- package/lib/developer.js +6 -2
- package/lib/devices.js +46 -1
- package/lib/exposes.js +3 -1
- package/lib/groups.js +54 -28
- package/lib/ota.js +26 -0
- package/lib/rgb.js +30 -0
- package/lib/states.js +40 -14
- package/lib/statescontroller.js +207 -92
- package/lib/utils.js +1 -1
- package/lib/zbBaseExtension.js +4 -3
- package/lib/zbDelayedAction.js +1 -0
- package/lib/zbDeviceAvailability.js +14 -2
- package/lib/zbDeviceConfigure.js +11 -7
- package/lib/zbDeviceEvent.js +6 -0
- package/lib/zigbeecontroller.js +119 -17
- package/main.js +12 -4
- package/package.json +3 -3
package/admin/tab_m.html
CHANGED
|
@@ -144,7 +144,7 @@
|
|
|
144
144
|
border: none;
|
|
145
145
|
bottom: 0;
|
|
146
146
|
height: 50px;
|
|
147
|
-
background: #fff
|
|
147
|
+
/*background: #fff;*/
|
|
148
148
|
right: 0;
|
|
149
149
|
/*text-align: right;*/
|
|
150
150
|
padding: 10px;
|
|
@@ -174,18 +174,53 @@
|
|
|
174
174
|
i.icon-green {
|
|
175
175
|
color: green;
|
|
176
176
|
}
|
|
177
|
+
.m.react-dark i.icon-green {
|
|
178
|
+
color: green!important;
|
|
179
|
+
}
|
|
180
|
+
.m.react-blue i.icon-green {
|
|
181
|
+
color: green!important;
|
|
182
|
+
}
|
|
177
183
|
i.icon-black {
|
|
178
184
|
color: black;
|
|
179
185
|
}
|
|
180
186
|
i.icon-blue {
|
|
181
187
|
color: blue;
|
|
182
188
|
}
|
|
189
|
+
.m.react-blue div.bg_red {
|
|
190
|
+
background-color: #400000;
|
|
191
|
+
color: DimGray;
|
|
192
|
+
}
|
|
193
|
+
.m div.bg_red {
|
|
194
|
+
background-color: LightGray;
|
|
195
|
+
color: DimGray;
|
|
196
|
+
}
|
|
197
|
+
.m.react-dark div.bg_red {
|
|
198
|
+
background-color: #400000;
|
|
199
|
+
}
|
|
200
|
+
.m.react-dark i.icon-blue {
|
|
201
|
+
color: rgb(100, 181, 246)!important;
|
|
202
|
+
}
|
|
203
|
+
.m.react-blue i.icon-blue {
|
|
204
|
+
color: rgb(100, 181, 246)!important;
|
|
205
|
+
}
|
|
183
206
|
i.icon-red {
|
|
184
207
|
color: red;
|
|
185
208
|
}
|
|
209
|
+
.m.react-dark i.icon-red {
|
|
210
|
+
color: red!important;
|
|
211
|
+
}
|
|
212
|
+
.m.react-blue i.icon-red {
|
|
213
|
+
color: red!important;
|
|
214
|
+
}
|
|
186
215
|
i.icon-orange {
|
|
187
216
|
color: orange;
|
|
188
217
|
}
|
|
218
|
+
.m.react-dark i.icon-orange {
|
|
219
|
+
color: orange!important;
|
|
220
|
+
}
|
|
221
|
+
.m.react-blue i.icon-orange {
|
|
222
|
+
color: orange!important;
|
|
223
|
+
}
|
|
189
224
|
.m .btn-small.btn-flat {
|
|
190
225
|
padding: 0 4px;
|
|
191
226
|
}
|
|
@@ -243,7 +278,7 @@
|
|
|
243
278
|
position:absolute;
|
|
244
279
|
height: 100%;
|
|
245
280
|
width: 100%;
|
|
246
|
-
background: #fff
|
|
281
|
+
/*background: #fff;*/
|
|
247
282
|
z-index: 2;
|
|
248
283
|
-webkit-transform: rotateY( 0deg );
|
|
249
284
|
-moz-transform: rotateY( 0deg );
|
|
@@ -257,7 +292,7 @@
|
|
|
257
292
|
box-sizing: border-box;
|
|
258
293
|
height: 100%;
|
|
259
294
|
width: 100%;
|
|
260
|
-
background: #fff
|
|
295
|
+
/*background: #fff;*/
|
|
261
296
|
-webkit-transform: rotateY( -180deg );
|
|
262
297
|
-moz-transform: rotateY( -180deg );
|
|
263
298
|
-o-transform: rotateY( -180deg );
|
|
@@ -269,6 +304,9 @@
|
|
|
269
304
|
-o-transform: rotateY( 180deg );
|
|
270
305
|
transform: rotateY( 180deg );
|
|
271
306
|
}
|
|
307
|
+
.m .card .card-action {
|
|
308
|
+
padding: 22px 24px;
|
|
309
|
+
}
|
|
272
310
|
.m .switch label .lever {
|
|
273
311
|
width: 30px;
|
|
274
312
|
height: 12px;
|
|
@@ -307,6 +345,25 @@
|
|
|
307
345
|
.m .idletime {
|
|
308
346
|
padding-left: 15px;
|
|
309
347
|
}
|
|
348
|
+
.m.react-blue .switch label input[type="checkbox"]:checked + .lever {
|
|
349
|
+
background-color: #436a93;
|
|
350
|
+
}
|
|
351
|
+
.m.react-blue .switch label .lever {
|
|
352
|
+
background-color: #4dabf5;
|
|
353
|
+
}
|
|
354
|
+
.m.react-blue .switch label .lever:after {
|
|
355
|
+
background-color: #436a93;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
.m.react-dark .switch label input[type="checkbox"]:checked + .lever {
|
|
359
|
+
background-color: #436a93;
|
|
360
|
+
}
|
|
361
|
+
.m.react-dark .switch label .lever {
|
|
362
|
+
background-color: #4dabf5;
|
|
363
|
+
}
|
|
364
|
+
.m.react-dark .switch label .lever:after {
|
|
365
|
+
background-color: #436a93;
|
|
366
|
+
}
|
|
310
367
|
</style>
|
|
311
368
|
</head>
|
|
312
369
|
<body>
|
|
@@ -323,7 +380,7 @@
|
|
|
323
380
|
</div>
|
|
324
381
|
<ul id="nav-mobile" class="right">
|
|
325
382
|
<li>
|
|
326
|
-
<a id="state_cleanup_btn" class="btn-floating waves-effect waves-light
|
|
383
|
+
<a id="state_cleanup_btn" class="btn-floating waves-effect waves-light red tooltipped center-align hoverable translateT" title="State Cleanup">
|
|
327
384
|
<i class="material-icons large icon-blue">sync</i></a>
|
|
328
385
|
</li>
|
|
329
386
|
<li>
|
|
@@ -331,7 +388,7 @@
|
|
|
331
388
|
<i class="material-icons large icon-blue">system_update</i></a>
|
|
332
389
|
</li>
|
|
333
390
|
<li>
|
|
334
|
-
<a id="add_grp_btn" class="btn-floating waves-effect waves-light
|
|
391
|
+
<a id="add_grp_btn" class="btn-floating waves-effect waves-light brown tooltipped center-align hoverable translateT" title="Add Group">
|
|
335
392
|
<i class="material-icons large">group_work</i></a>
|
|
336
393
|
</li>
|
|
337
394
|
<li>
|
|
@@ -347,12 +404,11 @@
|
|
|
347
404
|
<div class="nav-content">
|
|
348
405
|
<ul class="tabs tabs-transparent">
|
|
349
406
|
<li class="tab col s2"><a href="#tab-main" id="devs" class="translate">Devices</a></li>
|
|
350
|
-
<!-- <li class="tab col s2"><a href="#tab-groups" class="translate">Groups</a></li>-->
|
|
351
407
|
<li class="tab col s2"><a href="#tab-map" id="tabmap" class="translate">Network map</a></li>
|
|
352
408
|
<li class="tab col s2"><a href="#tab-binding" class="translate">Binding</a></li>
|
|
353
409
|
<li class="tab col s2"><a href="#tab-exclude" class="translate">Excludes</a></li>
|
|
354
410
|
<!--li class="tab col s2"><a href="#tab-sett" id="settings" class="translate">Settings</a></li-->
|
|
355
|
-
|
|
411
|
+
<!-- li class="tab col s2"><a href="#tab-dev" id="develop" class="translate">Developer</a></li-->
|
|
356
412
|
</ul>
|
|
357
413
|
</div>
|
|
358
414
|
</nav>
|
|
@@ -373,7 +429,7 @@
|
|
|
373
429
|
<input id="device-search" class="filter-input translateP" placeholder="Искать" autocomplete="new-password" readonly="readonly" onfocus="if (this.hasAttribute('readonly')) {this.removeAttribute('readonly'); this.blur(); this.focus();}" data-lang-placeholder="Filter">
|
|
374
430
|
<a class="filter-clear btn-floating btn-very-small translateT red lighten-3" title="Очистить" data-lang-title="clear" style="display: none;"><i class="material-icons">clear</i></a>
|
|
375
431
|
</div>
|
|
376
|
-
|
|
432
|
+
|
|
377
433
|
</li>
|
|
378
434
|
<li>
|
|
379
435
|
<div class="col input-field" style="line-height: 24px;">
|
|
@@ -507,6 +563,7 @@
|
|
|
507
563
|
<option value="-22">low</option>
|
|
508
564
|
<option value="0">norm</option>
|
|
509
565
|
<option value="19">high</option>
|
|
566
|
+
<option value="20">high+</option>
|
|
510
567
|
</select>
|
|
511
568
|
<label class="translate" for="transmitPower">transmitPower</label>
|
|
512
569
|
</div>
|
|
@@ -519,173 +576,7 @@
|
|
|
519
576
|
</div>
|
|
520
577
|
</div>
|
|
521
578
|
</div>
|
|
522
|
-
|
|
523
|
-
<div id="develop" class="row">
|
|
524
|
-
<div class="row">
|
|
525
|
-
<div class="col s12">
|
|
526
|
-
<h6 class="translate">This page is needed only for advanced users that like to extend adapter functionalities!</h6>
|
|
527
|
-
</div>
|
|
528
|
-
</div>
|
|
529
|
-
<div class="row">
|
|
530
|
-
<div class="col s4">
|
|
531
|
-
<p class="translate">notImplementedText</p>
|
|
532
|
-
<p><span class="translate">You find good explanations what the settings mean</span>
|
|
533
|
-
<a href="https://docs.smartthings.com/en/latest/device-type-developers-guide/zigbee-primer.html" target="_blank" class="translate">here</a>
|
|
534
|
-
<span class="translate">and in</span> <a href="https://www.nxp.com/docs/en/user-guide/JN-UG-3115.pdf" target="_blank">ZigBee Cluster Library</a>.
|
|
535
|
-
</p>
|
|
536
|
-
<p><span class="translate">Please contribute your discoveries</span> (<a href="https://github.com/Koenkk/zigbee-herdsman-converters" target="_blank">
|
|
537
|
-
zigbee-herdsman-converters</a>) <span class="translate">to make it available for other user too</span>.
|
|
538
|
-
</p>
|
|
539
|
-
</div>
|
|
540
|
-
<div class="col s8">
|
|
541
|
-
<div class="blue-grey-text">
|
|
542
|
-
<h6 class="translate">Examples:</h6>
|
|
543
|
-
<ul class="collapsible">
|
|
544
|
-
<li>
|
|
545
|
-
<div class="collapsible-header translate">Read Firmware</div>
|
|
546
|
-
<div class="collapsible-body">Hue Motion Detector: <b>Device:</b> SML001, <b>Endpoint:</b> 2, <b>ClusterId:</b> genBasic (0),
|
|
547
|
-
<b>Command Type: </b>Foundation, <b>Command:</b> read (0), <b>AttributeId:</b> swBuildId (16384)<br>
|
|
548
|
-
=> Result: "6.1.0.18912" (You read the device Firmware version)
|
|
549
|
-
</div>
|
|
550
|
-
</li>
|
|
551
|
-
<li>
|
|
552
|
-
<div class="collapsible-header translate">Write Attribute</div>
|
|
553
|
-
<div class="collapsible-body"><b>Device:</b> SML001, <b>Endpoint:</b> 2,
|
|
554
|
-
<b>ClusterId:</b> msOccupancySensing (1030), <b>Command Type: </b>Foundation,
|
|
555
|
-
<b>Command:</b> write (2), <b>AttributeId:</b>
|
|
556
|
-
pirOToUDelay (16, type 33), <b>Value:</b> 55<br>
|
|
557
|
-
=> (You set the timeout until motion detector changes from occupied not unoccupied,
|
|
558
|
-
test it be <b>reading</b> same attribute)
|
|
559
|
-
</div>
|
|
560
|
-
</li>
|
|
561
|
-
<li>
|
|
562
|
-
<div class="collapsible-header translate">Send Functional command</div>
|
|
563
|
-
<div class="collapsible-body"><b>Device:</b> TRADFRI bulb..., <b>Endpoint:</b> 1,
|
|
564
|
-
<b>ClusterId:</b> genOnOff (6), <b>Command Type: </b>Functional,
|
|
565
|
-
<b>Command:</b> on (1), <b>AttributeId:</b>
|
|
566
|
-
onOff (0, type 16)<br>
|
|
567
|
-
=> You switched on your bulb
|
|
568
|
-
<p>For details about needed arguments (expert mode) see
|
|
569
|
-
<a href="https://github.com/zigbeer/zcl-packet/wiki/6.-Appendix#621-general">
|
|
570
|
-
zcl-packet - Appendix</a></p></div>
|
|
571
|
-
</li>
|
|
572
|
-
<li>
|
|
573
|
-
<div class="collapsible-header translate">Expert Mode</div>
|
|
574
|
-
<div class="collapsible-body">Example:<br>
|
|
575
|
-
<b>JSON:</b> { "devId": "zigbee.0.yourDevId",
|
|
576
|
-
"ep": "2", "cid": "msOccupancySensing", "cmd": "write", "cmdType": "foundation", "zclData": { "pirOToUDelay": 30 },
|
|
577
|
-
"cfg": { "manufCode": 4107, "manufSpec": 1}}<br>
|
|
578
|
-
(You may use selectors together with expert mode to get prepared JSON)</div>
|
|
579
|
-
</li>
|
|
580
|
-
<li>
|
|
581
|
-
<div class="collapsible-header translate">Configure reporting</div>
|
|
582
|
-
<div class="collapsible-body">Example (Expert Mode):<br>
|
|
583
|
-
<b>JSON:</b> { "devId": "zigbee.0.yourDevId",
|
|
584
|
-
"ep": "2", "cid": "msTemperatureMeasurement", "cmd": "configReport", "cmdType": "foundation",<br>
|
|
585
|
-
"zclData": [{<br>
|
|
586
|
-
"attribute": "measuredValue", <br>"minimumReportInterval": 1, <br>"maximumReportInterval": 600,<br>
|
|
587
|
-
"reportableChange": 1 }],<br>
|
|
588
|
-
"cfg": null}
|
|
589
|
-
</div>
|
|
590
|
-
</li>
|
|
591
|
-
</ul>
|
|
592
|
-
</div>
|
|
593
|
-
</div>
|
|
594
|
-
</div>
|
|
595
|
-
<div class="col s9">
|
|
596
|
-
<div class="row">
|
|
597
|
-
<div class="input-field col s8">
|
|
598
|
-
<select id ="dev-selector">
|
|
599
|
-
<option value="" disabled selected class="translate">Select a device</option>
|
|
600
|
-
</select>
|
|
601
|
-
<label for="dev-selector" class="translate">Device</label>
|
|
602
|
-
</div>
|
|
603
|
-
<div class="input-field col s4 admin-tooltip-icon translateT" title="Some kind of 'device within device'. Every endpoint may have different functions. If one does not work, test another.">
|
|
604
|
-
<select id ="ep-selector">
|
|
605
|
-
<option value="" disabled selected class="translate">Select an Endpoint</option>
|
|
606
|
-
</select>
|
|
607
|
-
<label for="ep-selector" class="translate">Endpoint</label>
|
|
608
|
-
</div>
|
|
609
|
-
</div>
|
|
610
|
-
<div class="row">
|
|
611
|
-
<div class="row">
|
|
612
|
-
<div class="input-field col s4 admin-tooltip-icon" title="Group of functions. AttributeIds will change depending on your choice here.">
|
|
613
|
-
<select id ="cid-selector">
|
|
614
|
-
<option value="" disabled selected class="translate">Select cid</option>
|
|
615
|
-
</select>
|
|
616
|
-
<label for="cid-selector" class="translate">Cluster ID</label>
|
|
617
|
-
</div>
|
|
618
|
-
<div class="input-field col s4 admin-tooltip-icon" title="Command type. Available commands will change depending on your choice here. Some actions need Foundation, others Functional, you may test both.">
|
|
619
|
-
<select id ="cmd-type-selector">
|
|
620
|
-
<option value="foundation" selected>Foundation</option>
|
|
621
|
-
<option value="functional">Functional</option>
|
|
622
|
-
</select>
|
|
623
|
-
<label for="cid-selector" class="translate">Command Type</label>
|
|
624
|
-
</div>
|
|
625
|
-
<div class="input-field col s4 admin-tooltip-icon" title="The action you want to run.">
|
|
626
|
-
<select id ="cmd-selector">
|
|
627
|
-
<option value="" disabled selected class="translate">Select Command</option>
|
|
628
|
-
</select>
|
|
629
|
-
<label for="cmd-selector" class="translate">Command</label>
|
|
630
|
-
</div>
|
|
631
|
-
<div class="input-field col s4 admin-tooltip-icon" title="The setting you are interested in.">
|
|
632
|
-
<select id ="attrid-selector">
|
|
633
|
-
<option value="" disabled selected class="translate">Select Attribute</option>
|
|
634
|
-
</select>
|
|
635
|
-
<label for="attrid-selector" class="translate">Attribute ID</label>
|
|
636
|
-
</div>
|
|
637
|
-
<div class="col s8">
|
|
638
|
-
<div class="input-field col s5 offset-s1 admin-tooltip-icon translateT" title="Check if your Command needs to submit a value. For example, cmd 'write' needs the value you want to write to your device.">
|
|
639
|
-
<label for="value-needed" style="pointer-events: auto;">
|
|
640
|
-
<!-- workaround input not clickable https://codepen.io/alexisdiel/pen/gxwPWj -->
|
|
641
|
-
<input style="pointer-events: none;" id="value-needed" type="checkbox" class="filled-in"/>
|
|
642
|
-
<span style="pointer-events: none;" class="translate">Needs value</span>
|
|
643
|
-
</label>
|
|
644
|
-
</div>
|
|
645
|
-
<div class="input-field col s6 admin-tooltip-icon translateT" title="The value to send to your device (use douple-quotes if a number is a string).">
|
|
646
|
-
<input id ="value-input" disabled placeholder="0">
|
|
647
|
-
<label for="value-input">Value</label>
|
|
648
|
-
</div>
|
|
649
|
-
</div>
|
|
650
|
-
</div>
|
|
651
|
-
</div>
|
|
652
|
-
</div>
|
|
653
|
-
<div class="col s3">
|
|
654
|
-
<div class="row">
|
|
655
|
-
<div id="expert-toggle" class="input-field col s12 admin-tooltip-icon translateT" title="Switch expert mode to enter raw data, sent to zigbee device.">
|
|
656
|
-
<label for="expert-mode" style="pointer-events: auto;">
|
|
657
|
-
<!-- workaround input not clickable https://codepen.io/alexisdiel/pen/gxwPWj -->
|
|
658
|
-
<input style="pointer-events: none;" id="expert-mode" type="checkbox" class="filled-in"/>
|
|
659
|
-
<span style="pointer-events: none;" class="translate">Expert mode</span>
|
|
660
|
-
</label>
|
|
661
|
-
</div>
|
|
662
|
-
<div id="expert-json-box" class="input-field col s12" style="display:none;">
|
|
663
|
-
<p class="translate">zigbee-shepherd</p>
|
|
664
|
-
<div class="input-field col s12">
|
|
665
|
-
<textarea id="expert-json" class="materialize-textarea"></textarea>
|
|
666
|
-
<label for="expert-json">JSON</label>
|
|
667
|
-
</div>
|
|
668
|
-
</div>
|
|
669
|
-
</div>
|
|
670
|
-
<div id="dev-action-card" class=".center-align blue card-panel">
|
|
671
|
-
<div class="card-content white-text">
|
|
672
|
-
<h5 id="devActResult" class="card-title"></h5>
|
|
673
|
-
<p id="devInfoMsg" class="translate">Select your settings. Then click RUN to send command to your Zigbee device.</p>
|
|
674
|
-
</div>
|
|
675
|
-
<div class="card-action">
|
|
676
|
-
<a id="dev-send-btn" class="waves-effect waves-light white-text btn-large tooltipped translateT translate" data-position="bottom" title="Send data to Zigbee">Run</a>
|
|
677
|
-
</div>
|
|
678
|
-
</div>
|
|
679
|
-
</div>
|
|
680
|
-
</div>
|
|
681
|
-
<div id="sett" class="row">
|
|
682
|
-
<a class="col s1 offset-s11 btn-small" onClick="$('#dev_result_log').html('');">Clear Log</a>
|
|
683
|
-
<div class="col s12" class="card-panel ">
|
|
684
|
-
<div id="dev_result_log" class="card-content black white-text"></div>
|
|
685
|
-
<label for="dev_result_log" class="translate">Results</label>
|
|
686
|
-
</div>
|
|
687
|
-
</div>
|
|
688
|
-
</div>
|
|
579
|
+
|
|
689
580
|
<div id="tab-groups" class="col s12 page">
|
|
690
581
|
<div class="row">
|
|
691
582
|
<div class="col s12">
|
|
@@ -714,8 +605,8 @@
|
|
|
714
605
|
</div>
|
|
715
606
|
</div>
|
|
716
607
|
<div id="tab-exclude" class="col s12 page">
|
|
717
|
-
<div class="
|
|
718
|
-
<p class="translate">ExcludeTextTranslation</p
|
|
608
|
+
<div class="row">
|
|
609
|
+
<p class="translate">ExcludeTextTranslation</p>
|
|
719
610
|
</div>
|
|
720
611
|
<div class="fixed-action-btn" style="margin-bottom: 100px">
|
|
721
612
|
<a id="add_exclude" class="btn-floating waves-effect waves-light blue tooltipped center-align hoverable translateT" title="Add exlude"><i class="material-icons large">add</i></a>
|
|
@@ -727,47 +618,110 @@
|
|
|
727
618
|
</div>
|
|
728
619
|
|
|
729
620
|
<div class="materialize-dialogs m">
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
</
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
621
|
+
<div id="modaledit" class="modal">
|
|
622
|
+
<div class="modal-content">
|
|
623
|
+
<h3 class="translate">Config device</h3>
|
|
624
|
+
<div class="row">
|
|
625
|
+
<div class="col">
|
|
626
|
+
<div class="input-field">
|
|
627
|
+
<input id="d_name" type="text" class="value validate">
|
|
628
|
+
<label for="d_name" class="translate">Name</label>
|
|
629
|
+
</div>
|
|
630
|
+
</div>
|
|
631
|
+
</div>
|
|
632
|
+
<div class="row epid0">
|
|
633
|
+
<div class="col">
|
|
634
|
+
<div class=endpointid>
|
|
635
|
+
<p class="translate device_with_endpoint">Main Endpoint</p>
|
|
636
|
+
</div>
|
|
637
|
+
</div>
|
|
638
|
+
<div class="col">
|
|
639
|
+
<div class="input-field groups">
|
|
640
|
+
<select id="d_groups_ep0" class="materialSelect" multiple><option value="1">Значение</option></select>
|
|
641
|
+
<label for="d_groups_ep0" class="translate">Groups</label>
|
|
642
|
+
</div>
|
|
643
|
+
</div>
|
|
644
|
+
</div>
|
|
645
|
+
<div class="row epid1">
|
|
646
|
+
<div class="col epid">
|
|
647
|
+
<div class=endpointid>
|
|
648
|
+
<p class="translate device_with_endpoint">Sub Endpoint 1</p>
|
|
649
|
+
</div>
|
|
650
|
+
</div>
|
|
651
|
+
<div class="col">
|
|
652
|
+
<div class="input-field groups">
|
|
653
|
+
<select id="d_groups_ep1" class="materialSelect" multiple><option value="1">Значение</option></select>
|
|
654
|
+
<label for="d_groups_ep1" class="translate">Groups</label>
|
|
655
|
+
</div>
|
|
656
|
+
</div>
|
|
657
|
+
</div>
|
|
658
|
+
<div class="row epid2">
|
|
659
|
+
<div class="col epid">
|
|
660
|
+
<div class=endpointid>
|
|
661
|
+
<p class="translate device_with_endpoint">Sub Endpoint 2</p>
|
|
662
|
+
</div>
|
|
663
|
+
</div>
|
|
664
|
+
<div class="col">
|
|
665
|
+
<div class="input-field groups">
|
|
666
|
+
<select id="d_groups_ep2" class="materialSelect" multiple><option value="1">Значение</option></select>
|
|
667
|
+
<label for="d_groups_ep2" class="translate">Groups</label>
|
|
668
|
+
</div>
|
|
669
|
+
</div>
|
|
670
|
+
</div>
|
|
671
|
+
<div class="row epid3">
|
|
672
|
+
<div class="col epid">
|
|
673
|
+
<div class=endpointid>
|
|
674
|
+
<p class="translate device_with_endpoint">Sub Endpoint 3</p>
|
|
675
|
+
</div>
|
|
676
|
+
</div>
|
|
677
|
+
<div class="col">
|
|
678
|
+
<div class="input-field groups">
|
|
679
|
+
<select id="d_groups_ep3" class="materialSelect" multiple><option value="1">Значение</option></select>
|
|
680
|
+
<label for="d_groups_ep3" class="translate">Groups</label>
|
|
681
|
+
</div>
|
|
682
|
+
</div>
|
|
683
|
+
</div>
|
|
684
|
+
</div>
|
|
685
|
+
<div class="modal-footer">
|
|
686
|
+
<a name="save" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Save</a>
|
|
687
|
+
<a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
|
|
688
|
+
</div>
|
|
689
|
+
</div>
|
|
749
690
|
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
<div class="input-field
|
|
761
|
-
|
|
762
|
-
|
|
691
|
+
<div id="groupedit" class="modal">
|
|
692
|
+
<div class="modal-content">
|
|
693
|
+
<div class = "addgroup">
|
|
694
|
+
<h3 class="translate">Add Group</h3>
|
|
695
|
+
</div>
|
|
696
|
+
<div class = "editgroup">
|
|
697
|
+
<h3 class="translate">Edit Group</h3>
|
|
698
|
+
</div>
|
|
699
|
+
<div class="row">
|
|
700
|
+
<div class="col s4 m4 l2">
|
|
701
|
+
<div class="input-field groupid">
|
|
702
|
+
<input id="g_index" type="number" min="1" class="value validate">
|
|
703
|
+
<label for="g_index" class="translate">№</label>
|
|
763
704
|
</div>
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
705
|
+
</div>
|
|
706
|
+
<div class="input-field col s8 m8 l10">
|
|
707
|
+
<input id="g_name" type="text" class="value validate">
|
|
708
|
+
<label for="g_name" class="translate">Name</label>
|
|
709
|
+
</div>
|
|
710
|
+
</div>
|
|
711
|
+
<div class="row hide">
|
|
712
|
+
<div class="col s12">
|
|
713
|
+
<div class="input-field members">
|
|
714
|
+
<label for="g_members" class="translate">Members</label>
|
|
715
|
+
<select id="g_members" class="materialSelect" multiple><option value="1">Значение</option></select>
|
|
716
|
+
</div>
|
|
717
|
+
</div>
|
|
718
|
+
</div>
|
|
719
|
+
</div>
|
|
720
|
+
<div class="modal-footer">
|
|
721
|
+
<a name="save" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Save</a>
|
|
722
|
+
<a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
|
|
723
|
+
</div>
|
|
724
|
+
</div>
|
|
771
725
|
|
|
772
726
|
<div id="modaldelete" class="modal">
|
|
773
727
|
<div class="modal-content">
|
|
@@ -801,6 +755,17 @@
|
|
|
801
755
|
</div>
|
|
802
756
|
</div>
|
|
803
757
|
|
|
758
|
+
<div id="modalreconfigure" class="modal">
|
|
759
|
+
<div class="modal-content">
|
|
760
|
+
<h3 class="translate">Reconfigure device</h3>
|
|
761
|
+
<p>A bunch of text</p>
|
|
762
|
+
</div>
|
|
763
|
+
<div class="modal-footer">
|
|
764
|
+
<a name="yes" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Yes</a>
|
|
765
|
+
<a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
|
|
766
|
+
</div>
|
|
767
|
+
</div>
|
|
768
|
+
|
|
804
769
|
<div id="modalpairing" class="modal modal-fixed-footer">
|
|
805
770
|
<div class="modal-content">
|
|
806
771
|
<h3 class="translate">Pairing process</h3>
|