homebridge-midea-platform 1.1.2-beta.9 → 1.2.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/.husky/pre-commit +0 -0
  2. package/CHANGELOG.md +4 -2
  3. package/config.schema.json +46 -1
  4. package/dist/accessory/AccessoryFactory.d.ts +12 -12
  5. package/dist/accessory/AccessoryFactory.js +31 -31
  6. package/dist/accessory/AirConditionerAccessory.d.ts +92 -89
  7. package/dist/accessory/AirConditionerAccessory.d.ts.map +1 -1
  8. package/dist/accessory/AirConditionerAccessory.js +607 -584
  9. package/dist/accessory/AirConditionerAccessory.js.map +1 -1
  10. package/dist/accessory/BaseAccessory.d.ts +11 -11
  11. package/dist/accessory/BaseAccessory.js +21 -21
  12. package/dist/accessory/DehumidifierAccessory.d.ts +45 -45
  13. package/dist/accessory/DehumidifierAccessory.js +344 -344
  14. package/dist/accessory/DishwasherAccessory.d.ts +31 -0
  15. package/dist/accessory/DishwasherAccessory.d.ts.map +1 -0
  16. package/dist/accessory/DishwasherAccessory.js +64 -0
  17. package/dist/accessory/DishwasherAccessory.js.map +1 -0
  18. package/dist/accessory/ElectricWaterHeaterAccessory.d.ts +44 -44
  19. package/dist/accessory/ElectricWaterHeaterAccessory.js +176 -176
  20. package/dist/accessory/FanAccessory.d.ts +39 -39
  21. package/dist/accessory/FanAccessory.js +123 -123
  22. package/dist/accessory/FrontLoadWasherAccessory.d.ts +30 -30
  23. package/dist/accessory/FrontLoadWasherAccessory.d.ts.map +1 -1
  24. package/dist/accessory/FrontLoadWasherAccessory.js +66 -60
  25. package/dist/accessory/FrontLoadWasherAccessory.js.map +1 -1
  26. package/dist/accessory/GasWaterHeaterAccessory.d.ts +51 -51
  27. package/dist/accessory/GasWaterHeaterAccessory.js +216 -216
  28. package/dist/core/MideaCloud.d.ts +35 -35
  29. package/dist/core/MideaCloud.js +350 -350
  30. package/dist/core/MideaConstants.d.ts +50 -49
  31. package/dist/core/MideaConstants.d.ts.map +1 -1
  32. package/dist/core/MideaConstants.js +58 -57
  33. package/dist/core/MideaConstants.js.map +1 -1
  34. package/dist/core/MideaDevice.d.ts +76 -76
  35. package/dist/core/MideaDevice.js +409 -409
  36. package/dist/core/MideaDiscover.d.ts +35 -35
  37. package/dist/core/MideaDiscover.js +212 -212
  38. package/dist/core/MideaMessage.d.ts +75 -75
  39. package/dist/core/MideaMessage.js +184 -184
  40. package/dist/core/MideaPacketBuilder.d.ts +10 -10
  41. package/dist/core/MideaPacketBuilder.js +60 -60
  42. package/dist/core/MideaSecurity.d.ts +63 -63
  43. package/dist/core/MideaSecurity.js +251 -251
  44. package/dist/core/MideaUtils.d.ts +32 -32
  45. package/dist/core/MideaUtils.js +181 -181
  46. package/dist/devices/DeviceFactory.d.ts +13 -12
  47. package/dist/devices/DeviceFactory.d.ts.map +1 -1
  48. package/dist/devices/DeviceFactory.js +36 -33
  49. package/dist/devices/DeviceFactory.js.map +1 -1
  50. package/dist/devices/a1/MideaA1Device.d.ts +76 -76
  51. package/dist/devices/a1/MideaA1Device.d.ts.map +1 -1
  52. package/dist/devices/a1/MideaA1Device.js +145 -136
  53. package/dist/devices/a1/MideaA1Device.js.map +1 -1
  54. package/dist/devices/a1/MideaA1Message.d.ts +40 -40
  55. package/dist/devices/a1/MideaA1Message.js +198 -198
  56. package/dist/devices/ac/MideaACDevice.d.ts +104 -100
  57. package/dist/devices/ac/MideaACDevice.d.ts.map +1 -1
  58. package/dist/devices/ac/MideaACDevice.js +384 -381
  59. package/dist/devices/ac/MideaACDevice.js.map +1 -1
  60. package/dist/devices/ac/MideaACMessage.d.ts +94 -92
  61. package/dist/devices/ac/MideaACMessage.d.ts.map +1 -1
  62. package/dist/devices/ac/MideaACMessage.js +611 -589
  63. package/dist/devices/ac/MideaACMessage.js.map +1 -1
  64. package/dist/devices/db/MideaDBDevice.d.ts +29 -29
  65. package/dist/devices/db/MideaDBDevice.d.ts.map +1 -1
  66. package/dist/devices/db/MideaDBDevice.js +100 -88
  67. package/dist/devices/db/MideaDBDevice.js.map +1 -1
  68. package/dist/devices/db/MideaDBMessage.d.ts +32 -32
  69. package/dist/devices/db/MideaDBMessage.d.ts.map +1 -1
  70. package/dist/devices/db/MideaDBMessage.js +101 -101
  71. package/dist/devices/db/MideaDBMessage.js.map +1 -1
  72. package/dist/devices/e1/MideaE1Device.d.ts +57 -0
  73. package/dist/devices/e1/MideaE1Device.d.ts.map +1 -0
  74. package/dist/devices/e1/MideaE1Device.js +129 -0
  75. package/dist/devices/e1/MideaE1Device.js.map +1 -0
  76. package/dist/devices/e1/MideaE1Message.d.ts +29 -0
  77. package/dist/devices/e1/MideaE1Message.d.ts.map +1 -0
  78. package/dist/devices/e1/MideaE1Message.js +108 -0
  79. package/dist/devices/e1/MideaE1Message.js.map +1 -0
  80. package/dist/devices/e2/MideaE2Device.d.ts +44 -44
  81. package/dist/devices/e2/MideaE2Device.d.ts.map +1 -1
  82. package/dist/devices/e2/MideaE2Device.js +129 -119
  83. package/dist/devices/e2/MideaE2Device.js.map +1 -1
  84. package/dist/devices/e2/MideaE2Message.d.ts +33 -33
  85. package/dist/devices/e2/MideaE2Message.js +132 -132
  86. package/dist/devices/e3/MideaE3Device.d.ts +43 -43
  87. package/dist/devices/e3/MideaE3Device.d.ts.map +1 -1
  88. package/dist/devices/e3/MideaE3Device.js +137 -125
  89. package/dist/devices/e3/MideaE3Device.js.map +1 -1
  90. package/dist/devices/e3/MideaE3Message.d.ts +51 -51
  91. package/dist/devices/e3/MideaE3Message.js +136 -136
  92. package/dist/devices/fa/MideaFADevice.d.ts +36 -36
  93. package/dist/devices/fa/MideaFADevice.d.ts.map +1 -1
  94. package/dist/devices/fa/MideaFADevice.js +106 -92
  95. package/dist/devices/fa/MideaFADevice.js.map +1 -1
  96. package/dist/devices/fa/MideaFAMessage.d.ts +38 -38
  97. package/dist/devices/fa/MideaFAMessage.js +98 -98
  98. package/dist/index.d.ts +6 -6
  99. package/dist/index.js +6 -6
  100. package/dist/platform.d.ts +60 -60
  101. package/dist/platform.js +212 -212
  102. package/dist/platformUtils.d.ts +106 -99
  103. package/dist/platformUtils.d.ts.map +1 -1
  104. package/dist/platformUtils.js +101 -97
  105. package/dist/platformUtils.js.map +1 -1
  106. package/dist/settings.d.ts +8 -8
  107. package/dist/settings.js +11 -11
  108. package/docs/e1.md +3 -0
  109. package/homebridge-ui/server.js +3 -0
  110. package/package.json +1 -1
@@ -1,185 +1,185 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MessageSubtypeResponse = exports.MessageResponse = exports.NewProtocolMessageBody = exports.MessageBody = exports.MessageQuestCustom = exports.MessageQuerySubtype = exports.MessageRequest = exports.MessageType = void 0;
4
- var MessageType;
5
- (function (MessageType) {
6
- MessageType[MessageType["UNKNOWN"] = 0] = "UNKNOWN";
7
- MessageType[MessageType["SET"] = 2] = "SET";
8
- MessageType[MessageType["QUERY"] = 3] = "QUERY";
9
- MessageType[MessageType["NOTIFY1"] = 4] = "NOTIFY1";
10
- MessageType[MessageType["NOTIFY2"] = 5] = "NOTIFY2";
11
- MessageType[MessageType["EXCEPTION"] = 6] = "EXCEPTION";
12
- MessageType[MessageType["QUERY_SN"] = 7] = "QUERY_SN";
13
- MessageType[MessageType["EXCEPTION2"] = 10] = "EXCEPTION2";
14
- MessageType[MessageType["QUERY_SUBTYPE"] = 160] = "QUERY_SUBTYPE";
15
- })(MessageType = exports.MessageType || (exports.MessageType = {}));
16
- class MessageBase {
17
- constructor() {
18
- this.HEADER_LENGTH = 10;
19
- }
20
- checksum(data) {
21
- let sum = 0;
22
- for (let i = 0; i < data.length; i++) {
23
- sum += data[i];
24
- }
25
- return (~sum + 1) & 0xff;
26
- }
27
- }
28
- class MessageRequest extends MessageBase {
29
- constructor(device_type, message_type, body_type, device_protocol_version) {
30
- super();
31
- this.device_type = device_type;
32
- this.message_type = message_type;
33
- this.body_type = body_type;
34
- this.device_protocol_version = device_protocol_version;
35
- }
36
- get body() {
37
- return Buffer.from(this.body_type && this._body ? [this.body_type, ...this._body] : this.body_type ? [this.body_type] : this._body ? this._body : []);
38
- }
39
- get header() {
40
- const length = this.HEADER_LENGTH + this.body.length;
41
- return Buffer.from([
42
- // flag
43
- 0xaa,
44
- // length
45
- length,
46
- // device type
47
- this.device_type,
48
- // frame checksum
49
- 0x00,
50
- // unused
51
- 0x00,
52
- 0x00,
53
- // frame ID
54
- 0x00,
55
- // frame protocol version
56
- 0x00,
57
- // device protocol version
58
- this.device_protocol_version,
59
- // frame type
60
- this.message_type,
61
- ]);
62
- }
63
- serialize() {
64
- let stream = Buffer.concat([this.header, this.body]);
65
- stream = Buffer.concat([stream, Buffer.from([this.checksum(stream.subarray(1, stream.length))])]);
66
- return stream;
67
- }
68
- }
69
- exports.MessageRequest = MessageRequest;
70
- class MessageQuerySubtype extends MessageRequest {
71
- constructor(device_type) {
72
- super(device_type, MessageType.QUERY_SUBTYPE, 0x00, 0);
73
- this._body = Buffer.alloc(18);
74
- }
75
- }
76
- exports.MessageQuerySubtype = MessageQuerySubtype;
77
- class MessageQuestCustom extends MessageRequest {
78
- constructor(device_type, message_type, cmd_body) {
79
- super(device_type, message_type, 0x00, 0);
80
- this._body = Buffer.alloc(0);
81
- this.cmd_body = cmd_body;
82
- }
83
- get body() {
84
- return this.cmd_body;
85
- }
86
- }
87
- exports.MessageQuestCustom = MessageQuestCustom;
88
- class MessageBody {
89
- constructor(data) {
90
- this.data = data;
91
- }
92
- get body_type() {
93
- return this.data[0];
94
- }
95
- static read_byte(data, offset, default_value) {
96
- return data.length > offset ? data[offset] : default_value;
97
- }
98
- }
99
- exports.MessageBody = MessageBody;
100
- class NewProtocolMessageBody extends MessageBody {
101
- constructor(body, body_type) {
102
- super(body);
103
- if (body_type === 0xb5) {
104
- this.packet_length = 4;
105
- }
106
- else {
107
- this.packet_length = 5;
108
- }
109
- }
110
- static packet(param, value, packet_length = 4) {
111
- const length = value.length;
112
- if (packet_length === 4) {
113
- return Buffer.concat([Buffer.from([param & 0xff, param >> 8, length]), value]);
114
- }
115
- else {
116
- return Buffer.concat([Buffer.from([param & 0xff, param >> 8, 0x00, length]), value]);
117
- }
118
- }
119
- parse() {
120
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
121
- const result = {};
122
- let offset = 2;
123
- try {
124
- while (offset < this.data.length) {
125
- const param = this.data[offset] + (this.data[offset + 1] << 8);
126
- if (this.packet_length === 5) {
127
- offset++;
128
- }
129
- const length = this.data[offset + 2];
130
- if (length > 0) {
131
- const value = this.data.subarray(offset + 3, offset + 3 + length);
132
- result[param] = value;
133
- }
134
- offset += 3 + length;
135
- }
136
- }
137
- catch (e) {
138
- // eslint-disable-next-line no-console
139
- console.error(e);
140
- }
141
- return result;
142
- }
143
- }
144
- exports.NewProtocolMessageBody = NewProtocolMessageBody;
145
- class MessageResponse extends MessageBase {
146
- constructor(message) {
147
- super();
148
- if (message === null || message === undefined || message.length < this.HEADER_LENGTH + 1) {
149
- throw new Error('Invalid message length');
150
- }
151
- this.header = message.subarray(0, this.HEADER_LENGTH);
152
- this.device_protocol_version = this.header[8];
153
- this.message_type = this.header[this.header.length - 1];
154
- this.device_type = this.header[2];
155
- this._body = new MessageBody(message.subarray(this.HEADER_LENGTH, -1));
156
- this.body_type = this._body.body_type;
157
- }
158
- get body() {
159
- return this._body.data;
160
- }
161
- set_body(body) {
162
- this._body = body;
163
- }
164
- get_body_type() {
165
- return this._body.constructor.name;
166
- }
167
- get_body_attribute(name) {
168
- return this._body[name];
169
- }
170
- }
171
- exports.MessageResponse = MessageResponse;
172
- class MessageSubtypeResponse extends MessageResponse {
173
- constructor(message) {
174
- super(message);
175
- if (this.message_type === MessageType.QUERY_SUBTYPE) {
176
- const body = message.subarray(this.HEADER_LENGTH, -1);
177
- this.sub_type = (body.length > 2 ? body[2] : 0) + (body.length > 3 ? body[3] << 8 : 0);
178
- }
179
- else {
180
- throw new Error('Invalid message type');
181
- }
182
- }
183
- }
184
- exports.MessageSubtypeResponse = MessageSubtypeResponse;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MessageSubtypeResponse = exports.MessageResponse = exports.NewProtocolMessageBody = exports.MessageBody = exports.MessageQuestCustom = exports.MessageQuerySubtype = exports.MessageRequest = exports.MessageType = void 0;
4
+ var MessageType;
5
+ (function (MessageType) {
6
+ MessageType[MessageType["UNKNOWN"] = 0] = "UNKNOWN";
7
+ MessageType[MessageType["SET"] = 2] = "SET";
8
+ MessageType[MessageType["QUERY"] = 3] = "QUERY";
9
+ MessageType[MessageType["NOTIFY1"] = 4] = "NOTIFY1";
10
+ MessageType[MessageType["NOTIFY2"] = 5] = "NOTIFY2";
11
+ MessageType[MessageType["EXCEPTION"] = 6] = "EXCEPTION";
12
+ MessageType[MessageType["QUERY_SN"] = 7] = "QUERY_SN";
13
+ MessageType[MessageType["EXCEPTION2"] = 10] = "EXCEPTION2";
14
+ MessageType[MessageType["QUERY_SUBTYPE"] = 160] = "QUERY_SUBTYPE";
15
+ })(MessageType = exports.MessageType || (exports.MessageType = {}));
16
+ class MessageBase {
17
+ constructor() {
18
+ this.HEADER_LENGTH = 10;
19
+ }
20
+ checksum(data) {
21
+ let sum = 0;
22
+ for (let i = 0; i < data.length; i++) {
23
+ sum += data[i];
24
+ }
25
+ return (~sum + 1) & 0xff;
26
+ }
27
+ }
28
+ class MessageRequest extends MessageBase {
29
+ constructor(device_type, message_type, body_type, device_protocol_version) {
30
+ super();
31
+ this.device_type = device_type;
32
+ this.message_type = message_type;
33
+ this.body_type = body_type;
34
+ this.device_protocol_version = device_protocol_version;
35
+ }
36
+ get body() {
37
+ return Buffer.from(this.body_type && this._body ? [this.body_type, ...this._body] : this.body_type ? [this.body_type] : this._body ? this._body : []);
38
+ }
39
+ get header() {
40
+ const length = this.HEADER_LENGTH + this.body.length;
41
+ return Buffer.from([
42
+ // flag
43
+ 0xaa,
44
+ // length
45
+ length,
46
+ // device type
47
+ this.device_type,
48
+ // frame checksum
49
+ 0x00,
50
+ // unused
51
+ 0x00,
52
+ 0x00,
53
+ // frame ID
54
+ 0x00,
55
+ // frame protocol version
56
+ 0x00,
57
+ // device protocol version
58
+ this.device_protocol_version,
59
+ // frame type
60
+ this.message_type,
61
+ ]);
62
+ }
63
+ serialize() {
64
+ let stream = Buffer.concat([this.header, this.body]);
65
+ stream = Buffer.concat([stream, Buffer.from([this.checksum(stream.subarray(1, stream.length))])]);
66
+ return stream;
67
+ }
68
+ }
69
+ exports.MessageRequest = MessageRequest;
70
+ class MessageQuerySubtype extends MessageRequest {
71
+ constructor(device_type) {
72
+ super(device_type, MessageType.QUERY_SUBTYPE, 0x00, 0);
73
+ this._body = Buffer.alloc(18);
74
+ }
75
+ }
76
+ exports.MessageQuerySubtype = MessageQuerySubtype;
77
+ class MessageQuestCustom extends MessageRequest {
78
+ constructor(device_type, message_type, cmd_body) {
79
+ super(device_type, message_type, 0x00, 0);
80
+ this._body = Buffer.alloc(0);
81
+ this.cmd_body = cmd_body;
82
+ }
83
+ get body() {
84
+ return this.cmd_body;
85
+ }
86
+ }
87
+ exports.MessageQuestCustom = MessageQuestCustom;
88
+ class MessageBody {
89
+ constructor(data) {
90
+ this.data = data;
91
+ }
92
+ get body_type() {
93
+ return this.data[0];
94
+ }
95
+ static read_byte(data, offset, default_value) {
96
+ return data.length > offset ? data[offset] : default_value;
97
+ }
98
+ }
99
+ exports.MessageBody = MessageBody;
100
+ class NewProtocolMessageBody extends MessageBody {
101
+ constructor(body, body_type) {
102
+ super(body);
103
+ if (body_type === 0xb5) {
104
+ this.packet_length = 4;
105
+ }
106
+ else {
107
+ this.packet_length = 5;
108
+ }
109
+ }
110
+ static packet(param, value, packet_length = 4) {
111
+ const length = value.length;
112
+ if (packet_length === 4) {
113
+ return Buffer.concat([Buffer.from([param & 0xff, param >> 8, length]), value]);
114
+ }
115
+ else {
116
+ return Buffer.concat([Buffer.from([param & 0xff, param >> 8, 0x00, length]), value]);
117
+ }
118
+ }
119
+ parse() {
120
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
121
+ const result = {};
122
+ let offset = 2;
123
+ try {
124
+ while (offset < this.data.length) {
125
+ const param = this.data[offset] + (this.data[offset + 1] << 8);
126
+ if (this.packet_length === 5) {
127
+ offset++;
128
+ }
129
+ const length = this.data[offset + 2];
130
+ if (length > 0) {
131
+ const value = this.data.subarray(offset + 3, offset + 3 + length);
132
+ result[param] = value;
133
+ }
134
+ offset += 3 + length;
135
+ }
136
+ }
137
+ catch (e) {
138
+ // eslint-disable-next-line no-console
139
+ console.error(e);
140
+ }
141
+ return result;
142
+ }
143
+ }
144
+ exports.NewProtocolMessageBody = NewProtocolMessageBody;
145
+ class MessageResponse extends MessageBase {
146
+ constructor(message) {
147
+ super();
148
+ if (message === null || message === undefined || message.length < this.HEADER_LENGTH + 1) {
149
+ throw new Error('Invalid message length');
150
+ }
151
+ this.header = message.subarray(0, this.HEADER_LENGTH);
152
+ this.device_protocol_version = this.header[8];
153
+ this.message_type = this.header[this.header.length - 1];
154
+ this.device_type = this.header[2];
155
+ this._body = new MessageBody(message.subarray(this.HEADER_LENGTH, -1));
156
+ this.body_type = this._body.body_type;
157
+ }
158
+ get body() {
159
+ return this._body.data;
160
+ }
161
+ set_body(body) {
162
+ this._body = body;
163
+ }
164
+ get_body_type() {
165
+ return this._body.constructor.name;
166
+ }
167
+ get_body_attribute(name) {
168
+ return this._body[name];
169
+ }
170
+ }
171
+ exports.MessageResponse = MessageResponse;
172
+ class MessageSubtypeResponse extends MessageResponse {
173
+ constructor(message) {
174
+ super(message);
175
+ if (this.message_type === MessageType.QUERY_SUBTYPE) {
176
+ const body = message.subarray(this.HEADER_LENGTH, -1);
177
+ this.sub_type = (body.length > 2 ? body[2] : 0) + (body.length > 3 ? body[3] << 8 : 0);
178
+ }
179
+ else {
180
+ throw new Error('Invalid message type');
181
+ }
182
+ }
183
+ }
184
+ exports.MessageSubtypeResponse = MessageSubtypeResponse;
185
185
  //# sourceMappingURL=MideaMessage.js.map
@@ -1,11 +1,11 @@
1
- /// <reference types="node" />
2
- export default class PacketBuilder {
3
- private readonly command;
4
- private readonly security;
5
- private packet;
6
- constructor(device_id: number, command: Buffer);
7
- finalize(message_type?: number): Buffer;
8
- static packet_time(): Buffer;
9
- static checksum(data: Buffer): number;
10
- }
1
+ /// <reference types="node" />
2
+ export default class PacketBuilder {
3
+ private readonly command;
4
+ private readonly security;
5
+ private packet;
6
+ constructor(device_id: number, command: Buffer);
7
+ finalize(message_type?: number): Buffer;
8
+ static packet_time(): Buffer;
9
+ static checksum(data: Buffer): number;
10
+ }
11
11
  //# sourceMappingURL=MideaPacketBuilder.d.ts.map
@@ -1,61 +1,61 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const MideaSecurity_1 = require("./MideaSecurity");
4
- const luxon_1 = require("luxon");
5
- const MideaUtils_1 = require("./MideaUtils");
6
- const MideaConstants_1 = require("./MideaConstants");
7
- class PacketBuilder {
8
- constructor(device_id, command) {
9
- this.command = command;
10
- this.security = new MideaSecurity_1.LocalSecurity();
11
- this.packet = Buffer.from([
12
- // 2 bytes - StaicHeader
13
- 0x5a, 0x5a,
14
- // 2 bytes - mMessageType
15
- 0x01, 0x11,
16
- // 2 bytes - PacketLenght
17
- 0x00, 0x00,
18
- // 2 bytes
19
- 0x20, 0x00,
20
- // 4 bytes - MessageId
21
- 0x00, 0x00, 0x00, 0x00,
22
- // 8 bytes - Date&Time
23
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
24
- // 6 bytes - mDeviceID
25
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
26
- // 12 bytes
27
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
28
- ]);
29
- this.packet.subarray(12, 20).set(PacketBuilder.packet_time());
30
- this.packet.subarray(20, 28).set((0, MideaUtils_1.numberToUint8Array)(device_id, 8, MideaConstants_1.Endianness.Little));
31
- }
32
- finalize(message_type = 1) {
33
- if (message_type !== 1) {
34
- this.packet[3] = 0x10;
35
- this.packet[6] = 0x7b;
36
- }
37
- else {
38
- this.packet = Buffer.concat([this.packet, this.security.aes_encrypt(this.command)]);
39
- }
40
- this.packet.subarray(4, 6).set((0, MideaUtils_1.numberToUint8Array)(this.packet.length + 16, 2, MideaConstants_1.Endianness.Little));
41
- this.packet = Buffer.concat([this.packet, this.security.encode32_data(this.packet)]);
42
- return this.packet;
43
- }
44
- static packet_time() {
45
- const t = luxon_1.DateTime.utc().toFormat('yyyyMMddHHmmssuu');
46
- const b = Buffer.alloc(8);
47
- for (let i = 0; i < t.length; i += 2) {
48
- b[8 - i - 1] = parseInt(t.substring(i, i + 2));
49
- }
50
- return b;
51
- }
52
- static checksum(data) {
53
- let sum = 0;
54
- for (let i = 0; i < data.length; i++) {
55
- sum += data[i];
56
- }
57
- return (~sum + 1) & 0xff;
58
- }
59
- }
60
- exports.default = PacketBuilder;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const MideaSecurity_1 = require("./MideaSecurity");
4
+ const luxon_1 = require("luxon");
5
+ const MideaUtils_1 = require("./MideaUtils");
6
+ const MideaConstants_1 = require("./MideaConstants");
7
+ class PacketBuilder {
8
+ constructor(device_id, command) {
9
+ this.command = command;
10
+ this.security = new MideaSecurity_1.LocalSecurity();
11
+ this.packet = Buffer.from([
12
+ // 2 bytes - StaicHeader
13
+ 0x5a, 0x5a,
14
+ // 2 bytes - mMessageType
15
+ 0x01, 0x11,
16
+ // 2 bytes - PacketLenght
17
+ 0x00, 0x00,
18
+ // 2 bytes
19
+ 0x20, 0x00,
20
+ // 4 bytes - MessageId
21
+ 0x00, 0x00, 0x00, 0x00,
22
+ // 8 bytes - Date&Time
23
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
24
+ // 6 bytes - mDeviceID
25
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
26
+ // 12 bytes
27
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
28
+ ]);
29
+ this.packet.subarray(12, 20).set(PacketBuilder.packet_time());
30
+ this.packet.subarray(20, 28).set((0, MideaUtils_1.numberToUint8Array)(device_id, 8, MideaConstants_1.Endianness.Little));
31
+ }
32
+ finalize(message_type = 1) {
33
+ if (message_type !== 1) {
34
+ this.packet[3] = 0x10;
35
+ this.packet[6] = 0x7b;
36
+ }
37
+ else {
38
+ this.packet = Buffer.concat([this.packet, this.security.aes_encrypt(this.command)]);
39
+ }
40
+ this.packet.subarray(4, 6).set((0, MideaUtils_1.numberToUint8Array)(this.packet.length + 16, 2, MideaConstants_1.Endianness.Little));
41
+ this.packet = Buffer.concat([this.packet, this.security.encode32_data(this.packet)]);
42
+ return this.packet;
43
+ }
44
+ static packet_time() {
45
+ const t = luxon_1.DateTime.utc().toFormat('yyyyMMddHHmmssuu');
46
+ const b = Buffer.alloc(8);
47
+ for (let i = 0; i < t.length; i += 2) {
48
+ b[8 - i - 1] = parseInt(t.substring(i, i + 2));
49
+ }
50
+ return b;
51
+ }
52
+ static checksum(data) {
53
+ let sum = 0;
54
+ for (let i = 0; i < data.length; i++) {
55
+ sum += data[i];
56
+ }
57
+ return (~sum + 1) & 0xff;
58
+ }
59
+ }
60
+ exports.default = PacketBuilder;
61
61
  //# sourceMappingURL=MideaPacketBuilder.js.map
@@ -1,64 +1,64 @@
1
- /// <reference types="node" />
2
- import { TCPMessageType } from './MideaConstants';
3
- export type KeyToken = Buffer | undefined;
4
- export declare abstract class CloudSecurity {
5
- protected readonly LOGIN_KEY: string;
6
- readonly IOT_KEY?: string;
7
- readonly HMAC_KEY?: string;
8
- constructor(login_key: string, iot_key?: bigint, hmac_key?: bigint);
9
- sign(data: string, random: string): string;
10
- encrpytPassword(loginId: string, password: string): string;
11
- static getUDPID(device_id_buf: Uint8Array): string;
12
- }
13
- export declare abstract class ProxiedSecurity extends CloudSecurity {
14
- abstract readonly APP_KEY: string;
15
- abstract encrpytIAMPassword(loginId: string, password: string): string;
16
- getAppKeyAndIv(): {
17
- appKey: Buffer;
18
- iv: Buffer;
19
- };
20
- encryptAESAppKey(data: Buffer): Buffer;
21
- decryptAESAppKey(data: Buffer): Buffer;
22
- }
23
- export declare class MSmartHomeCloudSecurity extends ProxiedSecurity {
24
- static readonly _LOGIN_KEY = "ac21b9f9cbfe4ca5a88562ef25e2b768";
25
- readonly APP_KEY = "ac21b9f9cbfe4ca5a88562ef25e2b768";
26
- constructor();
27
- encrpytIAMPassword(loginId: string, password: string): string;
28
- }
29
- export declare class MeijuCloudSecurity extends ProxiedSecurity {
30
- static readonly _LOGIN_KEY = "ad0ee21d48a64bf49f4fb583ab76e799";
31
- readonly APP_KEY = "ac21b9f9cbfe4ca5a88562ef25e2b768";
32
- constructor();
33
- encrpytIAMPassword(_loginId: string, password: string): string;
34
- }
35
- export declare class SimpleSecurity extends CloudSecurity {
36
- constructor(login_key: string);
37
- encrpytIAMPassword(): string;
38
- sign(url: string, query: string): string;
39
- }
40
- export declare class NetHomePlusSecurity extends SimpleSecurity {
41
- static readonly _LOGIN_KEY = "3742e9e5842d4ad59c2db887e12449f9";
42
- constructor();
43
- }
44
- export declare class ArtisonClimaSecurity extends SimpleSecurity {
45
- static readonly _LOGIN_KEY = "434a209a5ce141c3b726de067835d7f0";
46
- constructor();
47
- }
48
- export declare class LocalSecurity {
49
- private readonly aes_key;
50
- private readonly salt;
51
- private readonly iv;
52
- private request_count;
53
- private response_count;
54
- private tcp_key;
55
- private aes_cbc_encrpyt;
56
- private aes_cbc_decrypt;
57
- aes_encrypt(data: Buffer): Buffer;
58
- aes_decrypt(data: Buffer): Buffer;
59
- encode32_data(raw: Buffer): Buffer;
60
- tcp_key_from_resp(response: Buffer, key: Buffer): Buffer;
61
- encode_8370(data: Buffer, message_type: TCPMessageType): Buffer;
62
- decode_8370(data: Buffer): any;
63
- }
1
+ /// <reference types="node" />
2
+ import { TCPMessageType } from './MideaConstants';
3
+ export type KeyToken = Buffer | undefined;
4
+ export declare abstract class CloudSecurity {
5
+ protected readonly LOGIN_KEY: string;
6
+ readonly IOT_KEY?: string;
7
+ readonly HMAC_KEY?: string;
8
+ constructor(login_key: string, iot_key?: bigint, hmac_key?: bigint);
9
+ sign(data: string, random: string): string;
10
+ encrpytPassword(loginId: string, password: string): string;
11
+ static getUDPID(device_id_buf: Uint8Array): string;
12
+ }
13
+ export declare abstract class ProxiedSecurity extends CloudSecurity {
14
+ abstract readonly APP_KEY: string;
15
+ abstract encrpytIAMPassword(loginId: string, password: string): string;
16
+ getAppKeyAndIv(): {
17
+ appKey: Buffer;
18
+ iv: Buffer;
19
+ };
20
+ encryptAESAppKey(data: Buffer): Buffer;
21
+ decryptAESAppKey(data: Buffer): Buffer;
22
+ }
23
+ export declare class MSmartHomeCloudSecurity extends ProxiedSecurity {
24
+ static readonly _LOGIN_KEY = "ac21b9f9cbfe4ca5a88562ef25e2b768";
25
+ readonly APP_KEY = "ac21b9f9cbfe4ca5a88562ef25e2b768";
26
+ constructor();
27
+ encrpytIAMPassword(loginId: string, password: string): string;
28
+ }
29
+ export declare class MeijuCloudSecurity extends ProxiedSecurity {
30
+ static readonly _LOGIN_KEY = "ad0ee21d48a64bf49f4fb583ab76e799";
31
+ readonly APP_KEY = "ac21b9f9cbfe4ca5a88562ef25e2b768";
32
+ constructor();
33
+ encrpytIAMPassword(_loginId: string, password: string): string;
34
+ }
35
+ export declare class SimpleSecurity extends CloudSecurity {
36
+ constructor(login_key: string);
37
+ encrpytIAMPassword(): string;
38
+ sign(url: string, query: string): string;
39
+ }
40
+ export declare class NetHomePlusSecurity extends SimpleSecurity {
41
+ static readonly _LOGIN_KEY = "3742e9e5842d4ad59c2db887e12449f9";
42
+ constructor();
43
+ }
44
+ export declare class ArtisonClimaSecurity extends SimpleSecurity {
45
+ static readonly _LOGIN_KEY = "434a209a5ce141c3b726de067835d7f0";
46
+ constructor();
47
+ }
48
+ export declare class LocalSecurity {
49
+ private readonly aes_key;
50
+ private readonly salt;
51
+ private readonly iv;
52
+ private request_count;
53
+ private response_count;
54
+ private tcp_key;
55
+ private aes_cbc_encrpyt;
56
+ private aes_cbc_decrypt;
57
+ aes_encrypt(data: Buffer): Buffer;
58
+ aes_decrypt(data: Buffer): Buffer;
59
+ encode32_data(raw: Buffer): Buffer;
60
+ tcp_key_from_resp(response: Buffer, key: Buffer): Buffer;
61
+ encode_8370(data: Buffer, message_type: TCPMessageType): Buffer;
62
+ decode_8370(data: Buffer): any;
63
+ }
64
64
  //# sourceMappingURL=MideaSecurity.d.ts.map