smart-bus 0.7.0 → 0.9.0
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/CHANGELOG.md +21 -0
- package/README.md +1 -1
- package/lib/bus.js +5 -5
- package/lib/command.js +1 -1
- package/lib/commands.js +198 -70
- package/package.json +7 -8
- package/test/bus.js +24 -24
- package/test/command.js +5 -5
- package/test/device.js +1 -1
- package/test/fixtures/commands.js +199 -106
package/lib/commands.js
CHANGED
|
@@ -89,7 +89,7 @@ var AC = {
|
|
|
89
89
|
},
|
|
90
90
|
|
|
91
91
|
encode: function(data) {
|
|
92
|
-
var buffer =
|
|
92
|
+
var buffer = Buffer.allocUnsafe(13);
|
|
93
93
|
|
|
94
94
|
var temperature = data.temperature || {};
|
|
95
95
|
var current = data.current || {};
|
|
@@ -144,7 +144,7 @@ module.exports = {
|
|
|
144
144
|
},
|
|
145
145
|
|
|
146
146
|
encode: function(data) {
|
|
147
|
-
return
|
|
147
|
+
return Buffer.from([data.area, data.scene]);
|
|
148
148
|
},
|
|
149
149
|
|
|
150
150
|
response: 0x0003
|
|
@@ -180,7 +180,7 @@ module.exports = {
|
|
|
180
180
|
var channels = data.channels || [];
|
|
181
181
|
var length = channels.length;
|
|
182
182
|
var bytes = Math.ceil(length / 8);
|
|
183
|
-
var buffer =
|
|
183
|
+
var buffer = Buffer.allocUnsafe(3 + bytes);
|
|
184
184
|
|
|
185
185
|
buffer.writeUInt8(data.area, 0);
|
|
186
186
|
buffer.writeUInt8(data.scene, 1);
|
|
@@ -210,7 +210,7 @@ module.exports = {
|
|
|
210
210
|
},
|
|
211
211
|
|
|
212
212
|
encode: function(data) {
|
|
213
|
-
return
|
|
213
|
+
return Buffer.from([data.area]);
|
|
214
214
|
},
|
|
215
215
|
|
|
216
216
|
response: 0x000D
|
|
@@ -226,7 +226,7 @@ module.exports = {
|
|
|
226
226
|
},
|
|
227
227
|
|
|
228
228
|
encode: function(data) {
|
|
229
|
-
return
|
|
229
|
+
return Buffer.from([data.area, data.scene]);
|
|
230
230
|
}
|
|
231
231
|
},
|
|
232
232
|
|
|
@@ -266,7 +266,7 @@ module.exports = {
|
|
|
266
266
|
var channels = data.channels || [];
|
|
267
267
|
var length = channels.length;
|
|
268
268
|
var bytes = Math.ceil(length / 8);
|
|
269
|
-
var buffer =
|
|
269
|
+
var buffer = Buffer.allocUnsafe(2 + areas.length + bytes);
|
|
270
270
|
|
|
271
271
|
buffer.writeUInt8(areas.length, 0);
|
|
272
272
|
|
|
@@ -329,7 +329,7 @@ module.exports = {
|
|
|
329
329
|
var device = data.device;
|
|
330
330
|
var channels = data.channels;
|
|
331
331
|
var length = channels.length;
|
|
332
|
-
var buffer =
|
|
332
|
+
var buffer = Buffer.allocUnsafe(5 + length);
|
|
333
333
|
|
|
334
334
|
word.encode(buffer, device.type, 0);
|
|
335
335
|
buffer.writeUInt8(device.subnet, 2);
|
|
@@ -360,7 +360,7 @@ module.exports = {
|
|
|
360
360
|
},
|
|
361
361
|
|
|
362
362
|
encode: function(data) {
|
|
363
|
-
return
|
|
363
|
+
return Buffer.from([data.area, data.scene]);
|
|
364
364
|
},
|
|
365
365
|
|
|
366
366
|
response: 0x0001
|
|
@@ -391,7 +391,7 @@ module.exports = {
|
|
|
391
391
|
encode: function(data) {
|
|
392
392
|
var channels = data.channels || [];
|
|
393
393
|
var length = channels.length;
|
|
394
|
-
var buffer =
|
|
394
|
+
var buffer = Buffer.allocUnsafe(4 + length);
|
|
395
395
|
|
|
396
396
|
buffer.writeUInt8(data.area, 0);
|
|
397
397
|
buffer.writeUInt8(data.scene, 1);
|
|
@@ -420,7 +420,7 @@ module.exports = {
|
|
|
420
420
|
},
|
|
421
421
|
|
|
422
422
|
encode: function(data) {
|
|
423
|
-
var buffer =
|
|
423
|
+
var buffer = Buffer.allocUnsafe(1);
|
|
424
424
|
|
|
425
425
|
status.encode(buffer, data.success, 0);
|
|
426
426
|
|
|
@@ -440,7 +440,7 @@ module.exports = {
|
|
|
440
440
|
},
|
|
441
441
|
|
|
442
442
|
encode: function(data) {
|
|
443
|
-
return
|
|
443
|
+
return Buffer.from([data.area, data.sequence]);
|
|
444
444
|
},
|
|
445
445
|
|
|
446
446
|
response: 0x001B
|
|
@@ -456,7 +456,7 @@ module.exports = {
|
|
|
456
456
|
},
|
|
457
457
|
|
|
458
458
|
encode: function(data) {
|
|
459
|
-
return
|
|
459
|
+
return Buffer.from([data.area, data.sequence]);
|
|
460
460
|
}
|
|
461
461
|
},
|
|
462
462
|
|
|
@@ -467,7 +467,7 @@ module.exports = {
|
|
|
467
467
|
},
|
|
468
468
|
|
|
469
469
|
encode: function(data) {
|
|
470
|
-
return
|
|
470
|
+
return Buffer.from([data.area]);
|
|
471
471
|
},
|
|
472
472
|
|
|
473
473
|
response: 0xE015
|
|
@@ -483,7 +483,7 @@ module.exports = {
|
|
|
483
483
|
},
|
|
484
484
|
|
|
485
485
|
encode: function(data) {
|
|
486
|
-
return
|
|
486
|
+
return Buffer.from([data.area, data.sequence]);
|
|
487
487
|
}
|
|
488
488
|
},
|
|
489
489
|
|
|
@@ -502,7 +502,7 @@ module.exports = {
|
|
|
502
502
|
encode: function(data) {
|
|
503
503
|
var areas = data.areas || [];
|
|
504
504
|
var length = areas.length;
|
|
505
|
-
var buffer =
|
|
505
|
+
var buffer = Buffer.allocUnsafe(length);
|
|
506
506
|
|
|
507
507
|
for (var i = 0; i < length; i++)
|
|
508
508
|
buffer.writeUInt8(areas[i].sequence, i);
|
|
@@ -524,7 +524,7 @@ module.exports = {
|
|
|
524
524
|
},
|
|
525
525
|
|
|
526
526
|
encode: function(data) {
|
|
527
|
-
var buffer =
|
|
527
|
+
var buffer = Buffer.allocUnsafe(4);
|
|
528
528
|
|
|
529
529
|
buffer.writeUInt8(data.channel, 0);
|
|
530
530
|
buffer.writeUInt8(data.level, 1);
|
|
@@ -546,7 +546,7 @@ module.exports = {
|
|
|
546
546
|
},
|
|
547
547
|
|
|
548
548
|
encode: function(data) {
|
|
549
|
-
var buffer =
|
|
549
|
+
var buffer = Buffer.allocUnsafe(3);
|
|
550
550
|
|
|
551
551
|
buffer.writeUInt8(data.channel, 0);
|
|
552
552
|
status.encode(buffer, data.success, 1);
|
|
@@ -576,7 +576,7 @@ module.exports = {
|
|
|
576
576
|
encode: function(data) {
|
|
577
577
|
var channels = data.channels || [];
|
|
578
578
|
var length = channels.length;
|
|
579
|
-
var buffer =
|
|
579
|
+
var buffer = Buffer.allocUnsafe(length + 1);
|
|
580
580
|
|
|
581
581
|
buffer.writeUInt8(length, 0);
|
|
582
582
|
|
|
@@ -608,7 +608,7 @@ module.exports = {
|
|
|
608
608
|
encode: function(data) {
|
|
609
609
|
var channels = data.channels || [];
|
|
610
610
|
var length = channels.length;
|
|
611
|
-
var buffer =
|
|
611
|
+
var buffer = Buffer.allocUnsafe(length + 1);
|
|
612
612
|
|
|
613
613
|
buffer.writeUInt8(length, 0);
|
|
614
614
|
|
|
@@ -631,7 +631,7 @@ module.exports = {
|
|
|
631
631
|
},
|
|
632
632
|
|
|
633
633
|
encode: function(data) {
|
|
634
|
-
return
|
|
634
|
+
return Buffer.from([data.block, data.status ? 1 : 0]);
|
|
635
635
|
}
|
|
636
636
|
},
|
|
637
637
|
|
|
@@ -646,7 +646,7 @@ module.exports = {
|
|
|
646
646
|
},
|
|
647
647
|
|
|
648
648
|
encode: function(data) {
|
|
649
|
-
return
|
|
649
|
+
return Buffer.from([data.block, data.status ? 1 : 0]);
|
|
650
650
|
}
|
|
651
651
|
},
|
|
652
652
|
|
|
@@ -657,7 +657,7 @@ module.exports = {
|
|
|
657
657
|
},
|
|
658
658
|
|
|
659
659
|
encode: function(data) {
|
|
660
|
-
return
|
|
660
|
+
return Buffer.from([data.block]);
|
|
661
661
|
}
|
|
662
662
|
},
|
|
663
663
|
|
|
@@ -673,7 +673,7 @@ module.exports = {
|
|
|
673
673
|
},
|
|
674
674
|
|
|
675
675
|
encode: function(data) {
|
|
676
|
-
return
|
|
676
|
+
return Buffer.from([data.block, data.status ? 1 : 0]);
|
|
677
677
|
}
|
|
678
678
|
},
|
|
679
679
|
|
|
@@ -688,7 +688,7 @@ module.exports = {
|
|
|
688
688
|
},
|
|
689
689
|
|
|
690
690
|
encode: function(data) {
|
|
691
|
-
return
|
|
691
|
+
return Buffer.from([data.block, data.status ? 1 : 0]);
|
|
692
692
|
}
|
|
693
693
|
},
|
|
694
694
|
|
|
@@ -707,7 +707,7 @@ module.exports = {
|
|
|
707
707
|
},
|
|
708
708
|
|
|
709
709
|
encode: function(data) {
|
|
710
|
-
var buffer =
|
|
710
|
+
var buffer = Buffer.allocUnsafe(8);
|
|
711
711
|
|
|
712
712
|
status.encode(buffer, data.success, 0);
|
|
713
713
|
date.encode(buffer, data.date, 1);
|
|
@@ -727,7 +727,7 @@ module.exports = {
|
|
|
727
727
|
},
|
|
728
728
|
|
|
729
729
|
encode: function(data) {
|
|
730
|
-
var buffer =
|
|
730
|
+
var buffer = Buffer.allocUnsafe(7);
|
|
731
731
|
|
|
732
732
|
date.encode(buffer, data.date, 0);
|
|
733
733
|
|
|
@@ -744,7 +744,7 @@ module.exports = {
|
|
|
744
744
|
},
|
|
745
745
|
|
|
746
746
|
encode: function(data) {
|
|
747
|
-
var buffer =
|
|
747
|
+
var buffer = Buffer.allocUnsafe(1);
|
|
748
748
|
|
|
749
749
|
status.encode(buffer, data.success, 0);
|
|
750
750
|
|
|
@@ -759,7 +759,7 @@ module.exports = {
|
|
|
759
759
|
},
|
|
760
760
|
|
|
761
761
|
encode: function(data) {
|
|
762
|
-
var buffer =
|
|
762
|
+
var buffer = Buffer.allocUnsafe(6);
|
|
763
763
|
|
|
764
764
|
date.encode(buffer, data.date, 0);
|
|
765
765
|
|
|
@@ -779,7 +779,7 @@ module.exports = {
|
|
|
779
779
|
},
|
|
780
780
|
|
|
781
781
|
encode: function(data) {
|
|
782
|
-
var buffer =
|
|
782
|
+
var buffer = Buffer.allocUnsafe(2);
|
|
783
783
|
|
|
784
784
|
buffer.writeUInt8(data.switch, 0);
|
|
785
785
|
buffer.writeUInt8(data.status ? 255 : 0, 1);
|
|
@@ -800,7 +800,7 @@ module.exports = {
|
|
|
800
800
|
},
|
|
801
801
|
|
|
802
802
|
encode: function(data) {
|
|
803
|
-
var buffer =
|
|
803
|
+
var buffer = Buffer.allocUnsafe(2);
|
|
804
804
|
|
|
805
805
|
buffer.writeUInt8(data.switch, 0);
|
|
806
806
|
buffer.writeUInt8(data.status ? 1 : 0, 1);
|
|
@@ -816,7 +816,7 @@ module.exports = {
|
|
|
816
816
|
},
|
|
817
817
|
|
|
818
818
|
encode: function(data) {
|
|
819
|
-
return
|
|
819
|
+
return Buffer.from([data.switch]);
|
|
820
820
|
},
|
|
821
821
|
|
|
822
822
|
response: 0xE019
|
|
@@ -833,7 +833,7 @@ module.exports = {
|
|
|
833
833
|
},
|
|
834
834
|
|
|
835
835
|
encode: function(data) {
|
|
836
|
-
var buffer =
|
|
836
|
+
var buffer = Buffer.allocUnsafe(2);
|
|
837
837
|
|
|
838
838
|
buffer.writeUInt8(data.switch, 0);
|
|
839
839
|
buffer.writeUInt8(data.status ? 1 : 0, 1);
|
|
@@ -860,7 +860,7 @@ module.exports = {
|
|
|
860
860
|
encode: function(data) {
|
|
861
861
|
var switches = data.switches || [];
|
|
862
862
|
var length = switches.length;
|
|
863
|
-
var buffer =
|
|
863
|
+
var buffer = Buffer.allocUnsafe(length + 1);
|
|
864
864
|
|
|
865
865
|
buffer.writeUInt8(length, 0);
|
|
866
866
|
|
|
@@ -883,7 +883,7 @@ module.exports = {
|
|
|
883
883
|
},
|
|
884
884
|
|
|
885
885
|
encode: function(data) {
|
|
886
|
-
return
|
|
886
|
+
return Buffer.from([data.curtain, data.status]);
|
|
887
887
|
},
|
|
888
888
|
|
|
889
889
|
response: 0xE3E1
|
|
@@ -900,7 +900,7 @@ module.exports = {
|
|
|
900
900
|
},
|
|
901
901
|
|
|
902
902
|
encode: function(data) {
|
|
903
|
-
return
|
|
903
|
+
return Buffer.from([data.curtain, data.status]);
|
|
904
904
|
}
|
|
905
905
|
},
|
|
906
906
|
|
|
@@ -911,7 +911,7 @@ module.exports = {
|
|
|
911
911
|
},
|
|
912
912
|
|
|
913
913
|
encode: function(data) {
|
|
914
|
-
return
|
|
914
|
+
return Buffer.from([data.curtain]);
|
|
915
915
|
},
|
|
916
916
|
|
|
917
917
|
response: 0xE3E3
|
|
@@ -921,14 +921,29 @@ module.exports = {
|
|
|
921
921
|
// FIXME: same as 0xE3E1
|
|
922
922
|
0xE3E3: {
|
|
923
923
|
parse: function(buffer) {
|
|
924
|
-
|
|
924
|
+
var data = {
|
|
925
925
|
curtain: buffer.readUInt8(0),
|
|
926
926
|
status: buffer.readUInt8(1)
|
|
927
927
|
};
|
|
928
|
+
// Duration field (4 bytes total) - in deciseconds (0.1 second units)
|
|
929
|
+
if (buffer.length >= 4) {
|
|
930
|
+
data.duration = buffer.readUInt16BE(2) / 10;
|
|
931
|
+
}
|
|
932
|
+
return data;
|
|
928
933
|
},
|
|
929
934
|
|
|
930
935
|
encode: function(data) {
|
|
931
|
-
|
|
936
|
+
// Support both 2-byte (legacy) and 4-byte (with duration) formats
|
|
937
|
+
if (data.duration !== undefined) {
|
|
938
|
+
var buffer = Buffer.allocUnsafe(4);
|
|
939
|
+
buffer.writeUInt8(data.curtain, 0);
|
|
940
|
+
buffer.writeUInt8(data.status, 1);
|
|
941
|
+
var duration = data.duration * 10;
|
|
942
|
+
buffer.writeUInt16BE(duration, 2);
|
|
943
|
+
return buffer;
|
|
944
|
+
} else {
|
|
945
|
+
return Buffer.from([data.curtain, data.status]);
|
|
946
|
+
}
|
|
932
947
|
}
|
|
933
948
|
},
|
|
934
949
|
|
|
@@ -953,7 +968,7 @@ module.exports = {
|
|
|
953
968
|
encode: function(data) {
|
|
954
969
|
var curtains = data.curtains || [];
|
|
955
970
|
var length = curtains.length;
|
|
956
|
-
var buffer =
|
|
971
|
+
var buffer = Buffer.allocUnsafe(length * 2);
|
|
957
972
|
|
|
958
973
|
for (var i = 0; i < length; i++) {
|
|
959
974
|
var curtain = curtains[i];
|
|
@@ -966,6 +981,39 @@ module.exports = {
|
|
|
966
981
|
}
|
|
967
982
|
},
|
|
968
983
|
|
|
984
|
+
// 7.1.6 Get Curtain Duration Request
|
|
985
|
+
0xE800: {
|
|
986
|
+
parse: function(buffer) {
|
|
987
|
+
return {
|
|
988
|
+
channel: buffer.readUInt8(0)
|
|
989
|
+
};
|
|
990
|
+
},
|
|
991
|
+
|
|
992
|
+
encode: function(data) {
|
|
993
|
+
return Buffer.from([data.channel]);
|
|
994
|
+
},
|
|
995
|
+
|
|
996
|
+
response: 0xE801
|
|
997
|
+
},
|
|
998
|
+
|
|
999
|
+
// 7.1.7 Get Curtain Duration Response
|
|
1000
|
+
0xE801: {
|
|
1001
|
+
parse: function(buffer) {
|
|
1002
|
+
return {
|
|
1003
|
+
channel: buffer.readUInt8(0),
|
|
1004
|
+
duration: buffer.readUInt16BE(2)
|
|
1005
|
+
};
|
|
1006
|
+
},
|
|
1007
|
+
|
|
1008
|
+
encode: function(data) {
|
|
1009
|
+
var buffer = Buffer.allocUnsafe(4);
|
|
1010
|
+
buffer.writeUInt8(data.channel, 0);
|
|
1011
|
+
buffer.writeUInt8(0, 1); // Reserved
|
|
1012
|
+
buffer.writeUInt16BE(data.duration || 0, 2);
|
|
1013
|
+
return buffer;
|
|
1014
|
+
}
|
|
1015
|
+
},
|
|
1016
|
+
|
|
969
1017
|
/* 8. GPRS Control */
|
|
970
1018
|
|
|
971
1019
|
// 8.1.1 GPRS Control
|
|
@@ -986,7 +1034,7 @@ module.exports = {
|
|
|
986
1034
|
},
|
|
987
1035
|
|
|
988
1036
|
encode: function(data) {
|
|
989
|
-
return
|
|
1037
|
+
return Buffer.from([data.key, data.value]);
|
|
990
1038
|
},
|
|
991
1039
|
|
|
992
1040
|
response: 0xE3D9
|
|
@@ -1003,7 +1051,7 @@ module.exports = {
|
|
|
1003
1051
|
},
|
|
1004
1052
|
|
|
1005
1053
|
encode: function(data) {
|
|
1006
|
-
return
|
|
1054
|
+
return Buffer.from([data.key, data.value]);
|
|
1007
1055
|
}
|
|
1008
1056
|
},
|
|
1009
1057
|
|
|
@@ -1014,7 +1062,7 @@ module.exports = {
|
|
|
1014
1062
|
},
|
|
1015
1063
|
|
|
1016
1064
|
encode: function(data) {
|
|
1017
|
-
return
|
|
1065
|
+
return Buffer.from([data.key]);
|
|
1018
1066
|
},
|
|
1019
1067
|
|
|
1020
1068
|
response: 0xE3DB
|
|
@@ -1031,7 +1079,7 @@ module.exports = {
|
|
|
1031
1079
|
},
|
|
1032
1080
|
|
|
1033
1081
|
encode: function(data) {
|
|
1034
|
-
return
|
|
1082
|
+
return Buffer.from([data.key, data.value]);
|
|
1035
1083
|
}
|
|
1036
1084
|
},
|
|
1037
1085
|
|
|
@@ -1091,7 +1139,7 @@ module.exports = {
|
|
|
1091
1139
|
|
|
1092
1140
|
encode: function(data) {
|
|
1093
1141
|
var timerPresent = (data.timer === undefined) ? 0 : 1;
|
|
1094
|
-
var buffer =
|
|
1142
|
+
var buffer = Buffer.allocUnsafe(8 + timerPresent);
|
|
1095
1143
|
var temperature = data.temperature;
|
|
1096
1144
|
|
|
1097
1145
|
buffer.writeUInt8(temperature.type, 0);
|
|
@@ -1128,7 +1176,7 @@ module.exports = {
|
|
|
1128
1176
|
},
|
|
1129
1177
|
|
|
1130
1178
|
encode: function(data) {
|
|
1131
|
-
var buffer =
|
|
1179
|
+
var buffer = Buffer.allocUnsafe(7);
|
|
1132
1180
|
var temperature = data.temperature;
|
|
1133
1181
|
|
|
1134
1182
|
buffer.writeInt8(temperature.type, 0);
|
|
@@ -1164,7 +1212,7 @@ module.exports = {
|
|
|
1164
1212
|
},
|
|
1165
1213
|
|
|
1166
1214
|
encode: function(data) {
|
|
1167
|
-
var buffer =
|
|
1215
|
+
var buffer = Buffer.allocUnsafe(8);
|
|
1168
1216
|
var temperature = data.temperature;
|
|
1169
1217
|
|
|
1170
1218
|
status.encode(buffer, data.success, 0);
|
|
@@ -1189,7 +1237,7 @@ module.exports = {
|
|
|
1189
1237
|
},
|
|
1190
1238
|
|
|
1191
1239
|
encode: function(data) {
|
|
1192
|
-
return
|
|
1240
|
+
return Buffer.from([data.channel]);
|
|
1193
1241
|
},
|
|
1194
1242
|
|
|
1195
1243
|
response: 0x1C5F
|
|
@@ -1227,7 +1275,7 @@ module.exports = {
|
|
|
1227
1275
|
},
|
|
1228
1276
|
|
|
1229
1277
|
encode: function(data) {
|
|
1230
|
-
var buffer =
|
|
1278
|
+
var buffer = Buffer.allocUnsafe(13);
|
|
1231
1279
|
|
|
1232
1280
|
var work = data.work;
|
|
1233
1281
|
var watering = data.watering;
|
|
@@ -1276,7 +1324,7 @@ module.exports = {
|
|
|
1276
1324
|
},
|
|
1277
1325
|
|
|
1278
1326
|
encode: function(data) {
|
|
1279
|
-
var buffer =
|
|
1327
|
+
var buffer = Buffer.allocUnsafe(10);
|
|
1280
1328
|
|
|
1281
1329
|
var work = data.work;
|
|
1282
1330
|
var temperature = data.temperature;
|
|
@@ -1324,7 +1372,7 @@ module.exports = {
|
|
|
1324
1372
|
},
|
|
1325
1373
|
|
|
1326
1374
|
encode: function(data) {
|
|
1327
|
-
var buffer =
|
|
1375
|
+
var buffer = Buffer.allocUnsafe(10);
|
|
1328
1376
|
|
|
1329
1377
|
var work = data.work;
|
|
1330
1378
|
var temperature = data.temperature;
|
|
@@ -1381,7 +1429,7 @@ module.exports = {
|
|
|
1381
1429
|
},
|
|
1382
1430
|
|
|
1383
1431
|
encode: function(data) {
|
|
1384
|
-
return
|
|
1432
|
+
return Buffer.from([data.logic]);
|
|
1385
1433
|
},
|
|
1386
1434
|
|
|
1387
1435
|
response: 0xDB01
|
|
@@ -1407,7 +1455,7 @@ module.exports = {
|
|
|
1407
1455
|
},
|
|
1408
1456
|
|
|
1409
1457
|
encode: function(data) {
|
|
1410
|
-
var buffer =
|
|
1458
|
+
var buffer = Buffer.allocUnsafe(8);
|
|
1411
1459
|
var contacts = data.dryContacts || [];
|
|
1412
1460
|
|
|
1413
1461
|
for (var i = 0; i < 2; i++)
|
|
@@ -1459,7 +1507,7 @@ module.exports = {
|
|
|
1459
1507
|
var contacts = data.dryContacts || [];
|
|
1460
1508
|
var hasSonic = data.hasOwnProperty('sonic');
|
|
1461
1509
|
|
|
1462
|
-
var buffer =
|
|
1510
|
+
var buffer = Buffer.allocUnsafe(hasSonic ? 8 : 7);
|
|
1463
1511
|
|
|
1464
1512
|
status.encode(buffer, data.success, 0);
|
|
1465
1513
|
buffer.writeUInt8(data.temperature + 20, 1);
|
|
@@ -1505,7 +1553,7 @@ module.exports = {
|
|
|
1505
1553
|
},
|
|
1506
1554
|
|
|
1507
1555
|
encode: function(data) {
|
|
1508
|
-
var buffer =
|
|
1556
|
+
var buffer = Buffer.allocUnsafe(7);
|
|
1509
1557
|
var contacts = data.dryContacts || [];
|
|
1510
1558
|
|
|
1511
1559
|
buffer.writeUInt8(data.temperature + 20, 0);
|
|
@@ -1554,7 +1602,7 @@ module.exports = {
|
|
|
1554
1602
|
},
|
|
1555
1603
|
|
|
1556
1604
|
encode: function(data) {
|
|
1557
|
-
var buffer =
|
|
1605
|
+
var buffer = Buffer.allocUnsafe(10);
|
|
1558
1606
|
var contacts = data.dryContacts || [];
|
|
1559
1607
|
|
|
1560
1608
|
status.encode(buffer, data.success, 0);
|
|
@@ -1599,7 +1647,7 @@ module.exports = {
|
|
|
1599
1647
|
},
|
|
1600
1648
|
|
|
1601
1649
|
encode: function(data) {
|
|
1602
|
-
var buffer =
|
|
1650
|
+
var buffer = Buffer.allocUnsafe(9);
|
|
1603
1651
|
var contacts = data.dryContacts || [];
|
|
1604
1652
|
|
|
1605
1653
|
status.encode(buffer, data.success, 0);
|
|
@@ -1625,7 +1673,7 @@ module.exports = {
|
|
|
1625
1673
|
},
|
|
1626
1674
|
|
|
1627
1675
|
encode: function(data) {
|
|
1628
|
-
return
|
|
1676
|
+
return Buffer.from([data.channel]);
|
|
1629
1677
|
},
|
|
1630
1678
|
|
|
1631
1679
|
response: 0xE3E8
|
|
@@ -1649,7 +1697,7 @@ module.exports = {
|
|
|
1649
1697
|
|
|
1650
1698
|
if (temperature < 0) temperature = -temperature;
|
|
1651
1699
|
|
|
1652
|
-
return
|
|
1700
|
+
return Buffer.from([data.channel, temperature | sign]);
|
|
1653
1701
|
}
|
|
1654
1702
|
},
|
|
1655
1703
|
|
|
@@ -1676,7 +1724,7 @@ module.exports = {
|
|
|
1676
1724
|
|
|
1677
1725
|
if (temperature < 0) temperature = -temperature;
|
|
1678
1726
|
|
|
1679
|
-
return
|
|
1727
|
+
return Buffer.from([data.channel, temperature | sign]);
|
|
1680
1728
|
}
|
|
1681
1729
|
},
|
|
1682
1730
|
|
|
@@ -1689,7 +1737,7 @@ module.exports = {
|
|
|
1689
1737
|
},
|
|
1690
1738
|
|
|
1691
1739
|
encode: function(data) {
|
|
1692
|
-
return
|
|
1740
|
+
return Buffer.from([data.channel]);
|
|
1693
1741
|
},
|
|
1694
1742
|
|
|
1695
1743
|
response: 0x1949
|
|
@@ -1705,7 +1753,7 @@ module.exports = {
|
|
|
1705
1753
|
},
|
|
1706
1754
|
|
|
1707
1755
|
encode: function(data) {
|
|
1708
|
-
var buffer =
|
|
1756
|
+
var buffer = Buffer.allocUnsafe(5);
|
|
1709
1757
|
|
|
1710
1758
|
buffer.writeUInt8(data.channel, 0);
|
|
1711
1759
|
buffer.writeFloatLE(data.temperature, 1);
|
|
@@ -1749,12 +1797,44 @@ module.exports = {
|
|
|
1749
1797
|
// 0x021B
|
|
1750
1798
|
|
|
1751
1799
|
/* 16. Dry Contact */
|
|
1752
|
-
|
|
1800
|
+
|
|
1753
1801
|
// 16.1.1 Auto broadcast Dry Contact Status
|
|
1754
|
-
|
|
1802
|
+
0x15D0: {
|
|
1803
|
+
parse: function(buffer) {
|
|
1804
|
+
return {
|
|
1805
|
+
area: buffer.readUInt8(0),
|
|
1806
|
+
channel: buffer.readUInt8(1),
|
|
1807
|
+
status: buffer.readUInt8(2) === 0
|
|
1808
|
+
};
|
|
1809
|
+
},
|
|
1810
|
+
|
|
1811
|
+
encode: function(data) {
|
|
1812
|
+
var buffer = Buffer.allocUnsafe(3);
|
|
1813
|
+
buffer.writeUInt8(data.area, 0);
|
|
1814
|
+
buffer.writeUInt8(data.channel, 1);
|
|
1815
|
+
buffer.writeUInt8(data.status ? 0 : 1, 2);
|
|
1816
|
+
return buffer;
|
|
1817
|
+
}
|
|
1818
|
+
},
|
|
1755
1819
|
|
|
1756
1820
|
// 16.1.2 Response Auto broadcast Dry Contact Status
|
|
1757
|
-
|
|
1821
|
+
0x15D1: {
|
|
1822
|
+
parse: function(buffer) {
|
|
1823
|
+
return {
|
|
1824
|
+
area: buffer.readUInt8(0),
|
|
1825
|
+
channel: buffer.readUInt8(1),
|
|
1826
|
+
status: buffer.readUInt8(2) === 0
|
|
1827
|
+
};
|
|
1828
|
+
},
|
|
1829
|
+
|
|
1830
|
+
encode: function(data) {
|
|
1831
|
+
var buffer = Buffer.allocUnsafe(3);
|
|
1832
|
+
buffer.writeUInt8(data.area, 0);
|
|
1833
|
+
buffer.writeUInt8(data.channel, 1);
|
|
1834
|
+
buffer.writeUInt8(data.status ? 0 : 1, 2);
|
|
1835
|
+
return buffer;
|
|
1836
|
+
}
|
|
1837
|
+
},
|
|
1758
1838
|
|
|
1759
1839
|
// 16.1.3 Read Dry Contact Status
|
|
1760
1840
|
0x15CE: {
|
|
@@ -1766,7 +1846,7 @@ module.exports = {
|
|
|
1766
1846
|
},
|
|
1767
1847
|
|
|
1768
1848
|
encode: function(data) {
|
|
1769
|
-
var buffer =
|
|
1849
|
+
var buffer = Buffer.allocUnsafe(2);
|
|
1770
1850
|
|
|
1771
1851
|
buffer.writeUInt8(data.area, 0);
|
|
1772
1852
|
buffer.writeUInt8(data.switch, 1);
|
|
@@ -1789,7 +1869,7 @@ module.exports = {
|
|
|
1789
1869
|
},
|
|
1790
1870
|
|
|
1791
1871
|
encode: function(data) {
|
|
1792
|
-
var buffer =
|
|
1872
|
+
var buffer = Buffer.allocUnsafe(3);
|
|
1793
1873
|
buffer.writeUInt8(data.area, 0);
|
|
1794
1874
|
buffer.writeUInt8(data.switch, 1);
|
|
1795
1875
|
buffer.writeUInt8(data.contact ? 1 : 0, 2);
|
|
@@ -1798,6 +1878,54 @@ module.exports = {
|
|
|
1798
1878
|
}
|
|
1799
1879
|
},
|
|
1800
1880
|
|
|
1881
|
+
// 16.1.5 Dry Contact Multi-Channel Status
|
|
1882
|
+
0x6F00: {
|
|
1883
|
+
parse: function(buffer) {
|
|
1884
|
+
var data = {
|
|
1885
|
+
declaredChannels: buffer.readUInt8(1),
|
|
1886
|
+
statusMask: buffer.readUInt16BE(2),
|
|
1887
|
+
channels: []
|
|
1888
|
+
};
|
|
1889
|
+
|
|
1890
|
+
// Include subnet if present
|
|
1891
|
+
if (buffer.length >= 4) {
|
|
1892
|
+
data.subnet = buffer.readUInt8(0);
|
|
1893
|
+
}
|
|
1894
|
+
|
|
1895
|
+
// Parse 16-bit mask for up to 16 channels
|
|
1896
|
+
var mask = data.statusMask;
|
|
1897
|
+
var channels = data.channels;
|
|
1898
|
+
|
|
1899
|
+
for (var i = 0; i < 16; i++) {
|
|
1900
|
+
channels.push({
|
|
1901
|
+
number: i + 1,
|
|
1902
|
+
status: !!(mask & (1 << i))
|
|
1903
|
+
});
|
|
1904
|
+
}
|
|
1905
|
+
|
|
1906
|
+
return data;
|
|
1907
|
+
},
|
|
1908
|
+
|
|
1909
|
+
encode: function(data) {
|
|
1910
|
+
var buffer = Buffer.allocUnsafe(4);
|
|
1911
|
+
buffer.writeUInt8(data.subnet || 0, 0);
|
|
1912
|
+
buffer.writeUInt8(data.declaredChannels || 16, 1);
|
|
1913
|
+
|
|
1914
|
+
var mask = 0;
|
|
1915
|
+
var channels = data.channels || [];
|
|
1916
|
+
|
|
1917
|
+
for (var i = 0; i < channels.length; i++) {
|
|
1918
|
+
if (channels[i].status) {
|
|
1919
|
+
mask |= 1 << (i);
|
|
1920
|
+
}
|
|
1921
|
+
}
|
|
1922
|
+
|
|
1923
|
+
buffer.writeUInt16BE(mask, 2);
|
|
1924
|
+
|
|
1925
|
+
return buffer;
|
|
1926
|
+
}
|
|
1927
|
+
},
|
|
1928
|
+
|
|
1801
1929
|
/* 17. DLP Music Play Control Command */
|
|
1802
1930
|
|
|
1803
1931
|
// 17.1.1 Read Z-audio Current Status
|
|
@@ -1884,7 +2012,7 @@ module.exports = {
|
|
|
1884
2012
|
},
|
|
1885
2013
|
|
|
1886
2014
|
encode: function(data) {
|
|
1887
|
-
var buffer =
|
|
2015
|
+
var buffer = Buffer.allocUnsafe(3);
|
|
1888
2016
|
|
|
1889
2017
|
buffer.writeUInt8(data.backlight, 0);
|
|
1890
2018
|
buffer.writeUInt8(data.statusLights, 1);
|
|
@@ -1903,7 +2031,7 @@ module.exports = {
|
|
|
1903
2031
|
},
|
|
1904
2032
|
|
|
1905
2033
|
encode: function(data) {
|
|
1906
|
-
var buffer =
|
|
2034
|
+
var buffer = Buffer.allocUnsafe(1);
|
|
1907
2035
|
|
|
1908
2036
|
status.encode(buffer, data.success, 0);
|
|
1909
2037
|
|
|
@@ -1924,7 +2052,7 @@ module.exports = {
|
|
|
1924
2052
|
},
|
|
1925
2053
|
|
|
1926
2054
|
encode: function(data) {
|
|
1927
|
-
var buffer =
|
|
2055
|
+
var buffer = Buffer.allocUnsafe(7);
|
|
1928
2056
|
|
|
1929
2057
|
buffer.writeUInt8(data.button, 0);
|
|
1930
2058
|
buffer.writeUInt8(data.color.on[0], 1);
|
|
@@ -1947,7 +2075,7 @@ module.exports = {
|
|
|
1947
2075
|
},
|
|
1948
2076
|
|
|
1949
2077
|
encode: function(data) {
|
|
1950
|
-
return
|
|
2078
|
+
return Buffer.from([data.button]);
|
|
1951
2079
|
}
|
|
1952
2080
|
}
|
|
1953
2081
|
};
|