homebridge-midea-platform 1.1.0-beta.5 → 1.1.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.
Files changed (69) hide show
  1. package/.husky/pre-commit +0 -0
  2. package/CHANGELOG.md +3 -0
  3. package/config.schema.json +4 -3
  4. package/dist/accessory/AccessoryFactory.d.ts +11 -11
  5. package/dist/accessory/AccessoryFactory.js +28 -28
  6. package/dist/accessory/AirConditionerAccessory.d.ts +86 -86
  7. package/dist/accessory/AirConditionerAccessory.d.ts.map +1 -1
  8. package/dist/accessory/AirConditionerAccessory.js +560 -561
  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 +343 -343
  14. package/dist/accessory/ElectricWaterHeaterAccessory.d.ts +44 -44
  15. package/dist/accessory/ElectricWaterHeaterAccessory.js +176 -176
  16. package/dist/accessory/FanAccessory.d.ts +39 -39
  17. package/dist/accessory/FanAccessory.js +123 -123
  18. package/dist/accessory/GasWaterHeaterAccessory.d.ts +51 -51
  19. package/dist/accessory/GasWaterHeaterAccessory.js +216 -216
  20. package/dist/core/MideaCloud.d.ts +35 -35
  21. package/dist/core/MideaCloud.js +350 -350
  22. package/dist/core/MideaConstants.d.ts +48 -48
  23. package/dist/core/MideaConstants.js +56 -56
  24. package/dist/core/MideaDevice.d.ts +76 -76
  25. package/dist/core/MideaDevice.js +409 -409
  26. package/dist/core/MideaDiscover.d.ts +35 -35
  27. package/dist/core/MideaDiscover.js +212 -212
  28. package/dist/core/MideaMessage.d.ts +75 -75
  29. package/dist/core/MideaMessage.js +184 -184
  30. package/dist/core/MideaPacketBuilder.d.ts +10 -10
  31. package/dist/core/MideaPacketBuilder.js +60 -60
  32. package/dist/core/MideaSecurity.d.ts +63 -63
  33. package/dist/core/MideaSecurity.js +242 -242
  34. package/dist/core/MideaUtils.d.ts +32 -32
  35. package/dist/core/MideaUtils.js +181 -181
  36. package/dist/devices/DeviceFactory.d.ts +11 -11
  37. package/dist/devices/DeviceFactory.js +30 -30
  38. package/dist/devices/a1/MideaA1Device.d.ts +76 -76
  39. package/dist/devices/a1/MideaA1Device.js +136 -136
  40. package/dist/devices/a1/MideaA1Message.d.ts +40 -40
  41. package/dist/devices/a1/MideaA1Message.js +198 -198
  42. package/dist/devices/ac/MideaACDevice.d.ts +100 -100
  43. package/dist/devices/ac/MideaACDevice.js +370 -370
  44. package/dist/devices/ac/MideaACMessage.d.ts +92 -92
  45. package/dist/devices/ac/MideaACMessage.js +589 -589
  46. package/dist/devices/e2/MideaE2Device.d.ts +44 -44
  47. package/dist/devices/e2/MideaE2Device.js +119 -119
  48. package/dist/devices/e2/MideaE2Message.d.ts +33 -33
  49. package/dist/devices/e2/MideaE2Message.js +132 -132
  50. package/dist/devices/e3/MideaE3Device.d.ts +43 -43
  51. package/dist/devices/e3/MideaE3Device.js +125 -125
  52. package/dist/devices/e3/MideaE3Message.d.ts +51 -51
  53. package/dist/devices/e3/MideaE3Message.js +136 -136
  54. package/dist/devices/fa/MideaFADevice.d.ts +36 -36
  55. package/dist/devices/fa/MideaFADevice.js +92 -92
  56. package/dist/devices/fa/MideaFAMessage.d.ts +38 -38
  57. package/dist/devices/fa/MideaFAMessage.js +98 -98
  58. package/dist/index.d.ts +6 -6
  59. package/dist/index.js +6 -6
  60. package/dist/platform.d.ts +60 -60
  61. package/dist/platform.js +213 -213
  62. package/dist/platformUtils.d.ts +97 -97
  63. package/dist/platformUtils.js +95 -95
  64. package/dist/platformUtils.js.map +1 -1
  65. package/dist/settings.d.ts +8 -8
  66. package/dist/settings.js +11 -11
  67. package/docs/ac.md +2 -0
  68. package/docs/fa.md +3 -0
  69. 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