homebridge-midea-platform 0.2.1 → 0.3.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/.eslintignore +3 -0
- package/.husky/pre-commit +4 -0
- package/.prettierrc +18 -0
- package/README.md +5 -0
- package/config.schema.json +48 -0
- package/dist/accessory/AccessoryFactory.d.ts +2 -1
- package/dist/accessory/AccessoryFactory.d.ts.map +1 -1
- package/dist/accessory/AccessoryFactory.js +3 -0
- package/dist/accessory/AccessoryFactory.js.map +1 -1
- package/dist/accessory/AirConditionerAccessory.d.ts +23 -0
- package/dist/accessory/AirConditionerAccessory.d.ts.map +1 -1
- package/dist/accessory/AirConditionerAccessory.js +122 -36
- package/dist/accessory/AirConditionerAccessory.js.map +1 -1
- package/dist/accessory/BaseAccessory.d.ts.map +1 -1
- package/dist/accessory/BaseAccessory.js +2 -16
- package/dist/accessory/BaseAccessory.js.map +1 -1
- package/dist/accessory/DehumidifierAccessory.d.ts +41 -0
- package/dist/accessory/DehumidifierAccessory.d.ts.map +1 -0
- package/dist/accessory/DehumidifierAccessory.js +294 -0
- package/dist/accessory/DehumidifierAccessory.js.map +1 -0
- package/dist/core/MideaCloud.d.ts +11 -0
- package/dist/core/MideaCloud.d.ts.map +1 -1
- package/dist/core/MideaCloud.js +106 -65
- package/dist/core/MideaCloud.js.map +1 -1
- package/dist/core/MideaConstants.d.ts +2 -1
- package/dist/core/MideaConstants.d.ts.map +1 -1
- package/dist/core/MideaConstants.js +12 -16
- package/dist/core/MideaConstants.js.map +1 -1
- package/dist/core/MideaDevice.d.ts +26 -8
- package/dist/core/MideaDevice.d.ts.map +1 -1
- package/dist/core/MideaDevice.js +130 -28
- package/dist/core/MideaDevice.js.map +1 -1
- package/dist/core/MideaDiscover.d.ts +21 -1
- package/dist/core/MideaDiscover.d.ts.map +1 -1
- package/dist/core/MideaDiscover.js +98 -20
- package/dist/core/MideaDiscover.js.map +1 -1
- package/dist/core/MideaMessage.d.ts.map +1 -1
- package/dist/core/MideaMessage.js +28 -11
- package/dist/core/MideaMessage.js.map +1 -1
- package/dist/core/MideaPacketBuilder.d.ts.map +1 -1
- package/dist/core/MideaPacketBuilder.js +15 -5
- package/dist/core/MideaPacketBuilder.js.map +1 -1
- package/dist/core/MideaSecurity.d.ts +3 -1
- package/dist/core/MideaSecurity.d.ts.map +1 -1
- package/dist/core/MideaSecurity.js +41 -16
- package/dist/core/MideaSecurity.js.map +1 -1
- package/dist/core/MideaUtils.d.ts +21 -6
- package/dist/core/MideaUtils.d.ts.map +1 -1
- package/dist/core/MideaUtils.js +81 -83
- package/dist/core/MideaUtils.js.map +1 -1
- package/dist/devices/DeviceFactory.d.ts +3 -2
- package/dist/devices/DeviceFactory.d.ts.map +1 -1
- package/dist/devices/DeviceFactory.js +5 -2
- package/dist/devices/DeviceFactory.js.map +1 -1
- package/dist/devices/a1/MideaA1Device.d.ts +77 -0
- package/dist/devices/a1/MideaA1Device.d.ts.map +1 -0
- package/dist/devices/a1/MideaA1Device.js +144 -0
- package/dist/devices/a1/MideaA1Device.js.map +1 -0
- package/dist/devices/a1/MideaA1Message.d.ts +41 -0
- package/dist/devices/a1/MideaA1Message.d.ts.map +1 -0
- package/dist/devices/a1/MideaA1Message.js +206 -0
- package/dist/devices/a1/MideaA1Message.js.map +1 -0
- package/dist/devices/ac/MideaACDevice.d.ts +21 -7
- package/dist/devices/ac/MideaACDevice.d.ts.map +1 -1
- package/dist/devices/ac/MideaACDevice.js +82 -30
- package/dist/devices/ac/MideaACDevice.js.map +1 -1
- package/dist/devices/ac/MideaACMessage.d.ts.map +1 -1
- package/dist/devices/ac/MideaACMessage.js +158 -82
- package/dist/devices/ac/MideaACMessage.js.map +1 -1
- package/dist/platform.d.ts +29 -5
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +151 -52
- package/dist/platform.js.map +1 -1
- package/dist/platformUtils.d.ts +6 -1
- package/dist/platformUtils.d.ts.map +1 -1
- package/dist/platformUtils.js.map +1 -1
- package/package.json +12 -5
|
@@ -3,11 +3,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
/***********************************************************************
|
|
7
|
+
* Midea device discovery class where we broadcast to network to find
|
|
8
|
+
* connected devices.
|
|
9
|
+
*
|
|
10
|
+
* Copyright (c) 2023 Kovalovszky Patrik, https://github.com/kovapatrik
|
|
11
|
+
* Portions Copyright (c) 2023 David Kerr, https://github.com/dkerr64
|
|
12
|
+
*
|
|
13
|
+
* With thanks to https://github.com/georgezhao2010/midea_ac_lan
|
|
14
|
+
*
|
|
15
|
+
*/
|
|
6
16
|
const dgram_1 = __importDefault(require("dgram"));
|
|
7
17
|
const MideaConstants_1 = require("./MideaConstants");
|
|
8
18
|
const fast_xml_parser_1 = require("fast-xml-parser");
|
|
9
19
|
const events_1 = __importDefault(require("events"));
|
|
10
20
|
const MideaSecurity_1 = require("./MideaSecurity");
|
|
21
|
+
// To access network interface detail...
|
|
22
|
+
const os_1 = __importDefault(require("os"));
|
|
11
23
|
class Discover extends events_1.default {
|
|
12
24
|
constructor(logger) {
|
|
13
25
|
super();
|
|
@@ -23,14 +35,26 @@ class Discover extends events_1.default {
|
|
|
23
35
|
this.socket.on('error', (err) => {
|
|
24
36
|
this.logger.debug(`server error:\n${err.stack}`);
|
|
25
37
|
});
|
|
38
|
+
// Register callback function executed when message received on the socket as
|
|
39
|
+
// result of sending broadcast messages out to network / IP address.
|
|
26
40
|
this.socket.on('message', async (msg, rinfo) => {
|
|
27
|
-
this.ips.
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
41
|
+
if (!this.ips.includes(rinfo.address)) {
|
|
42
|
+
// Only add device if it has not already been added.
|
|
43
|
+
this.ips.push(rinfo.address);
|
|
44
|
+
const device_version = this.getDeviceVersion(msg);
|
|
45
|
+
const device_info = await this.getDeviceInfo(rinfo.address, device_version, msg);
|
|
46
|
+
this.logger.info(`Discovered device: ${JSON.stringify(device_info)}`);
|
|
47
|
+
// Send signal to Homebridge platform with details on the discovered device
|
|
48
|
+
this.emit('device', device_info);
|
|
49
|
+
}
|
|
32
50
|
});
|
|
33
51
|
}
|
|
52
|
+
/*********************************************************************
|
|
53
|
+
* discoverDeviceByIP
|
|
54
|
+
* Sends discover message to a single IP address. Will resend the message
|
|
55
|
+
* an additional "retries" times spaced by 3 seconds if the target IP
|
|
56
|
+
* address has not responded (recorded in the above callback).
|
|
57
|
+
*/
|
|
34
58
|
discoverDeviceByIP(ip, retries = 3) {
|
|
35
59
|
let tries = 0;
|
|
36
60
|
const interval = setInterval(() => {
|
|
@@ -48,14 +72,69 @@ class Discover extends events_1.default {
|
|
|
48
72
|
}
|
|
49
73
|
}, 3000);
|
|
50
74
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
75
|
+
/*********************************************************************
|
|
76
|
+
* ifBroadcastAddrs
|
|
77
|
+
* Broadcasts to 255.255.255.255 only gets sent out on the first network inteface.
|
|
78
|
+
* This function finds all network interfaces and returns the broadcast address
|
|
79
|
+
* for each in an array, e.g. ['192.168.1.255', '192.168.100.255']. If there are
|
|
80
|
+
* multiple interfaces this will cause broadcast to be sent out on each interface
|
|
81
|
+
* so all appliances are properly discovered.
|
|
82
|
+
*/
|
|
83
|
+
ifBroadcastAddrs() {
|
|
84
|
+
const list = [];
|
|
85
|
+
try {
|
|
86
|
+
const ifaces = os_1.default.networkInterfaces();
|
|
87
|
+
for (const iface of Object.values(ifaces)) {
|
|
88
|
+
if (iface) {
|
|
89
|
+
for (const f of iface) {
|
|
90
|
+
if (!f.internal && f.family === 'IPv4') {
|
|
91
|
+
// With thanks to https://github.com/aal89/broadcast-address/blob/master/broadcast-address.js
|
|
92
|
+
const addr_splitted = f.address.split('.');
|
|
93
|
+
const netmask_splitted = f.netmask.split('.');
|
|
94
|
+
// Bitwise OR over the splitted NAND netmask, then glue them back together with a dot character to form an ip
|
|
95
|
+
// we have to do a NAND operation because of the 2-complements; getting rid of all the 'prepended' 1's with & 0xFF
|
|
96
|
+
const broadcast = addr_splitted
|
|
97
|
+
.map((e, i) => (~netmask_splitted[i] & 0xff) | Number.parseInt(e))
|
|
98
|
+
.join('.');
|
|
99
|
+
list.push(broadcast);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
56
102
|
}
|
|
57
|
-
}
|
|
103
|
+
}
|
|
58
104
|
}
|
|
105
|
+
catch (e) {
|
|
106
|
+
const msg = e instanceof Error ? e.stack : e;
|
|
107
|
+
this.logger.error(`Fatal error during plugin initialization:\n${msg}`);
|
|
108
|
+
}
|
|
109
|
+
// this.logger.info(`Broadcast addresses: ${JSON.stringify(list)}`);
|
|
110
|
+
return list;
|
|
111
|
+
}
|
|
112
|
+
/*********************************************************************
|
|
113
|
+
* startDiscover
|
|
114
|
+
* Sends broadcast to network discover Midea devices. Will continue sending
|
|
115
|
+
* up to an additional "retries" times each spaced by 3 seconds.
|
|
116
|
+
*/
|
|
117
|
+
startDiscover(retries = 3) {
|
|
118
|
+
let tries = 0;
|
|
119
|
+
const broadcastAddrs = this.ifBroadcastAddrs();
|
|
120
|
+
const interval = setInterval(() => {
|
|
121
|
+
if (tries++ > retries) {
|
|
122
|
+
clearInterval(interval);
|
|
123
|
+
this.logger.info(`Device discovery complete after ${retries + 1} network broadcasts.`);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
for (const ip of broadcastAddrs) {
|
|
127
|
+
this.logger.debug(`Sending discovery message to ${ip}, try ${tries}...`);
|
|
128
|
+
for (const port of [6445, 20086]) {
|
|
129
|
+
this.socket.send(Buffer.from(MideaConstants_1.DISCOVERY_MESSAGE), port, ip, (err) => {
|
|
130
|
+
if (err) {
|
|
131
|
+
const msg = err instanceof Error ? err.stack : err;
|
|
132
|
+
this.logger.error(`Error while sending message to ${ip}:${port}:\n${msg}`);
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}, 3000);
|
|
59
138
|
}
|
|
60
139
|
getDeviceVersion(data) {
|
|
61
140
|
try {
|
|
@@ -98,7 +177,6 @@ class Discover extends events_1.default {
|
|
|
98
177
|
catch (err) {
|
|
99
178
|
throw new Error(`Error while decrypting data: ${err}`);
|
|
100
179
|
}
|
|
101
|
-
this.logger.debug(`Decrypted data: ${decrypted_buffer.toString('hex')}`);
|
|
102
180
|
// eslint-disable-next-line max-len
|
|
103
181
|
const ip_address = `${decrypted_buffer.readUint8(3)}.${decrypted_buffer.readUint8(2)}.${decrypted_buffer.readUint8(1)}.${decrypted_buffer.readUint8(0)}`;
|
|
104
182
|
const port = decrypted_buffer.readUIntLE(4, 2);
|
|
@@ -113,14 +191,14 @@ class Discover extends events_1.default {
|
|
|
113
191
|
const name = decrypted_buffer.subarray(41, 41 + name_length).toString();
|
|
114
192
|
const device_type = Number(`0x${name.split('_')[1]}`);
|
|
115
193
|
return {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
194
|
+
ip: ip_address,
|
|
195
|
+
port: port,
|
|
196
|
+
id: device_id,
|
|
197
|
+
model: model,
|
|
198
|
+
sn: sn,
|
|
199
|
+
name: name,
|
|
200
|
+
type: device_type,
|
|
201
|
+
version: version,
|
|
124
202
|
};
|
|
125
203
|
}
|
|
126
204
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MideaDiscover.js","sourceRoot":"","sources":["../../src/core/MideaDiscover.ts"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAE1B,
|
|
1
|
+
{"version":3,"file":"MideaDiscover.js","sourceRoot":"","sources":["../../src/core/MideaDiscover.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MideaMessage.d.ts","sourceRoot":"","sources":["../../src/core/MideaMessage.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,oBAAY,WAAW;IACrB,OAAO,IAAO;IACd,GAAG,IAAO;IACV,KAAK,IAAO;IACZ,OAAO,IAAO;IACd,OAAO,IAAO;IACd,SAAS,IAAO;IAChB,QAAQ,IAAO;IACf,UAAU,KAAO;IACjB,aAAa,MAAO;CACrB;AAED,uBAAe,WAAW;IACxB,SAAS,CAAC,QAAQ,CAAC,aAAa,MAAM;IAEtC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;IAC3C,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC;IAC7C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IAEnD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,IAAI,EAAE,MAAM;CAO7B;AAED,8BAAsB,cAAe,SAAQ,WAAW;
|
|
1
|
+
{"version":3,"file":"MideaMessage.d.ts","sourceRoot":"","sources":["../../src/core/MideaMessage.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,oBAAY,WAAW;IACrB,OAAO,IAAO;IACd,GAAG,IAAO;IACV,KAAK,IAAO;IACZ,OAAO,IAAO;IACd,OAAO,IAAO;IACd,SAAS,IAAO;IAChB,QAAQ,IAAO;IACf,UAAU,KAAO;IACjB,aAAa,MAAO;CACrB;AAED,uBAAe,WAAW;IACxB,SAAS,CAAC,QAAQ,CAAC,aAAa,MAAM;IAEtC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;IAC3C,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC;IAC7C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IAEnD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,IAAI,EAAE,MAAM;CAO7B;AAED,8BAAsB,cAAe,SAAQ,WAAW;IACtD,WAAW,EAAE,UAAU,CAAC;IACxB,YAAY,EAAE,WAAW,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB,EAAE,MAAM,CAAC;IAEhC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAG/B,WAAW,EAAE,UAAU,EACvB,YAAY,EAAE,WAAW,EACzB,SAAS,EAAE,MAAM,EACjB,uBAAuB,EAAE,MAAM;IASjC,IAAI,IAAI,WAUP;IAED,IAAI,MAAM,WAuBT;IAEM,SAAS;CAQjB;AAED,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,SAAS,CAAC,KAAK,SAAoB;gBAEvB,WAAW,EAAE,UAAU;CAGpC;AAED,qBAAa,kBAAmB,SAAQ,cAAc;IACpD,SAAS,CAAC,KAAK,SAAmB;IAClC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEzB,WAAW,EAAE,UAAU,EACvB,YAAY,EAAE,WAAW,EACzB,QAAQ,EAAE,MAAM;IAMlB,IAAI,IAAI,WAEP;CACF;AAED,qBAAa,WAAW;aACM,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;IAExC,IAAI,SAAS,WAEZ;IAED,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;CAGrE;AAED,qBAAa,sBAAuB,SAAQ,WAAW;IACrD,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;gBAEpB,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAU3C,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,SAAI;IAetD,KAAK;;;CAuBb;AAED,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,WAAW,EAAE,UAAU,CAAC;IAClC,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;IACpC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IACrB,uBAAuB,EAAE,MAAM,CAAC;IAEvC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC;gBAEjB,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAkB9C,IAAI,IAAI,WAEP;IAED,QAAQ,CAAC,IAAI,EAAE,WAAW;IAI1B,aAAa;IAIb,kBAAkB,CAAC,IAAI,EAAE,MAAM;CAGhC;AAED,qBAAa,sBAAuB,SAAQ,eAAe;IAClD,QAAQ,EAAE,MAAM,CAAC;gBAEZ,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;CAU/C"}
|
|
@@ -22,7 +22,7 @@ class MessageBase {
|
|
|
22
22
|
for (let i = 0; i < data.length; i++) {
|
|
23
23
|
sum += data[i];
|
|
24
24
|
}
|
|
25
|
-
return (~sum + 1) &
|
|
25
|
+
return (~sum + 1) & 0xff;
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
class MessageRequest extends MessageBase {
|
|
@@ -34,15 +34,19 @@ class MessageRequest extends MessageBase {
|
|
|
34
34
|
this.device_protocol_version = device_protocol_version;
|
|
35
35
|
}
|
|
36
36
|
get body() {
|
|
37
|
-
return Buffer.from(this.body_type && this._body
|
|
38
|
-
this.body_type
|
|
39
|
-
|
|
37
|
+
return Buffer.from(this.body_type && this._body
|
|
38
|
+
? [this.body_type, ...this._body]
|
|
39
|
+
: this.body_type
|
|
40
|
+
? [this.body_type]
|
|
41
|
+
: this._body
|
|
42
|
+
? this._body
|
|
43
|
+
: []);
|
|
40
44
|
}
|
|
41
45
|
get header() {
|
|
42
46
|
const length = this.HEADER_LENGTH + this.body.length;
|
|
43
47
|
return Buffer.from([
|
|
44
48
|
// flag
|
|
45
|
-
|
|
49
|
+
0xaa,
|
|
46
50
|
// length
|
|
47
51
|
length,
|
|
48
52
|
// device type
|
|
@@ -50,7 +54,8 @@ class MessageRequest extends MessageBase {
|
|
|
50
54
|
// frame checksum
|
|
51
55
|
0x00,
|
|
52
56
|
// unused
|
|
53
|
-
0x00,
|
|
57
|
+
0x00,
|
|
58
|
+
0x00,
|
|
54
59
|
// frame ID
|
|
55
60
|
0x00,
|
|
56
61
|
// frame protocol version
|
|
@@ -63,7 +68,10 @@ class MessageRequest extends MessageBase {
|
|
|
63
68
|
}
|
|
64
69
|
serialize() {
|
|
65
70
|
let stream = Buffer.concat([this.header, this.body]);
|
|
66
|
-
stream = Buffer.concat([
|
|
71
|
+
stream = Buffer.concat([
|
|
72
|
+
stream,
|
|
73
|
+
Buffer.from([this.checksum(stream.subarray(1, stream.length))]),
|
|
74
|
+
]);
|
|
67
75
|
return stream;
|
|
68
76
|
}
|
|
69
77
|
}
|
|
@@ -111,10 +119,16 @@ class NewProtocolMessageBody extends MessageBody {
|
|
|
111
119
|
static packet(param, value, packet_length = 4) {
|
|
112
120
|
const length = value.length;
|
|
113
121
|
if (packet_length === 4) {
|
|
114
|
-
return Buffer.concat([
|
|
122
|
+
return Buffer.concat([
|
|
123
|
+
Buffer.from([param & 0xff, param >> 8, length]),
|
|
124
|
+
value,
|
|
125
|
+
]);
|
|
115
126
|
}
|
|
116
127
|
else {
|
|
117
|
-
return Buffer.concat([
|
|
128
|
+
return Buffer.concat([
|
|
129
|
+
Buffer.from([param & 0xff, param >> 8, 0x00, length]),
|
|
130
|
+
value,
|
|
131
|
+
]);
|
|
118
132
|
}
|
|
119
133
|
}
|
|
120
134
|
parse() {
|
|
@@ -146,7 +160,9 @@ exports.NewProtocolMessageBody = NewProtocolMessageBody;
|
|
|
146
160
|
class MessageResponse extends MessageBase {
|
|
147
161
|
constructor(message) {
|
|
148
162
|
super();
|
|
149
|
-
if (message === null ||
|
|
163
|
+
if (message === null ||
|
|
164
|
+
message === undefined ||
|
|
165
|
+
message.length < this.HEADER_LENGTH + 1) {
|
|
150
166
|
throw new Error('Invalid message length');
|
|
151
167
|
}
|
|
152
168
|
this.header = message.subarray(0, this.HEADER_LENGTH);
|
|
@@ -175,7 +191,8 @@ class MessageSubtypeResponse extends MessageResponse {
|
|
|
175
191
|
super(message);
|
|
176
192
|
if (this.message_type === MessageType.QUERY_SUBTYPE) {
|
|
177
193
|
const body = message.subarray(this.HEADER_LENGTH, -1);
|
|
178
|
-
this.sub_type =
|
|
194
|
+
this.sub_type =
|
|
195
|
+
(body.length > 2 ? body[2] : 0) + (body.length > 3 ? body[3] << 8 : 0);
|
|
179
196
|
}
|
|
180
197
|
else {
|
|
181
198
|
throw new Error('Invalid message type');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MideaMessage.js","sourceRoot":"","sources":["../../src/core/MideaMessage.ts"],"names":[],"mappings":";;;AAEA,IAAY,WAUX;AAVD,WAAY,WAAW;IACrB,mDAAc,CAAA;IACd,2CAAU,CAAA;IACV,+CAAY,CAAA;IACZ,mDAAc,CAAA;IACd,mDAAc,CAAA;IACd,uDAAgB,CAAA;IAChB,qDAAe,CAAA;IACf,0DAAiB,CAAA;IACjB,iEAAoB,CAAA;AACtB,CAAC,EAVW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAUtB;AAED,MAAe,WAAW;IAA1B;QACqB,kBAAa,GAAG,EAAE,CAAC;IAgBxC,CAAC;IAPQ,QAAQ,CAAC,IAAY;QAC1B,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;SAChB;QACD,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"MideaMessage.js","sourceRoot":"","sources":["../../src/core/MideaMessage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MideaPacketBuilder.d.ts","sourceRoot":"","sources":["../../src/core/MideaPacketBuilder.ts"],"names":[],"mappings":";AAIA,MAAM,CAAC,OAAO,OAAO,aAAa;
|
|
1
|
+
{"version":3,"file":"MideaPacketBuilder.d.ts","sourceRoot":"","sources":["../../src/core/MideaPacketBuilder.ts"],"names":[],"mappings":";AAIA,MAAM,CAAC,OAAO,OAAO,aAAa;IAM9B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,MAAM,CAAS;gBAGrB,SAAS,EAAE,MAAM,EACA,OAAO,EAAE,MAAM;IA2B3B,QAAQ,CAAC,YAAY,SAAI;WAqBlB,WAAW;WASX,QAAQ,CAAC,IAAI,EAAE,MAAM;CAOpC"}
|
|
@@ -26,7 +26,9 @@ class PacketBuilder {
|
|
|
26
26
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
27
27
|
]);
|
|
28
28
|
this.packet.subarray(12, 20).set(PacketBuilder.packet_time());
|
|
29
|
-
this.packet
|
|
29
|
+
this.packet
|
|
30
|
+
.subarray(20, 28)
|
|
31
|
+
.set((0, MideaUtils_1.numberToUint8Array)(device_id, 8, 'little'));
|
|
30
32
|
}
|
|
31
33
|
finalize(message_type = 1) {
|
|
32
34
|
if (message_type !== 1) {
|
|
@@ -34,10 +36,18 @@ class PacketBuilder {
|
|
|
34
36
|
this.packet[6] = 0x7b;
|
|
35
37
|
}
|
|
36
38
|
else {
|
|
37
|
-
this.packet = Buffer.concat([
|
|
39
|
+
this.packet = Buffer.concat([
|
|
40
|
+
this.packet,
|
|
41
|
+
this.security.aes_encrypt(this.command),
|
|
42
|
+
]);
|
|
38
43
|
}
|
|
39
|
-
this.packet
|
|
40
|
-
|
|
44
|
+
this.packet
|
|
45
|
+
.subarray(4, 6)
|
|
46
|
+
.set((0, MideaUtils_1.numberToUint8Array)(this.packet.length + 16, 2, 'little'));
|
|
47
|
+
this.packet = Buffer.concat([
|
|
48
|
+
this.packet,
|
|
49
|
+
this.security.encode32_data(this.packet),
|
|
50
|
+
]);
|
|
41
51
|
return this.packet;
|
|
42
52
|
}
|
|
43
53
|
static packet_time() {
|
|
@@ -53,7 +63,7 @@ class PacketBuilder {
|
|
|
53
63
|
for (let i = 0; i < data.length; i++) {
|
|
54
64
|
sum += data[i];
|
|
55
65
|
}
|
|
56
|
-
return (~sum + 1) &
|
|
66
|
+
return (~sum + 1) & 0xff;
|
|
57
67
|
}
|
|
58
68
|
}
|
|
59
69
|
exports.default = PacketBuilder;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MideaPacketBuilder.js","sourceRoot":"","sources":["../../src/core/MideaPacketBuilder.ts"],"names":[],"mappings":";;AAAA,mDAAgD;AAChD,iCAAiC;AACjC,6CAAkD;AAElD,MAAqB,aAAa;
|
|
1
|
+
{"version":3,"file":"MideaPacketBuilder.js","sourceRoot":"","sources":["../../src/core/MideaPacketBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,10 +15,12 @@ export declare class MeijuCloudSecurity extends CloudSecurity {
|
|
|
15
15
|
constructor(login_key: string, iot_key: string);
|
|
16
16
|
encrpytIAMPassword(loginId: string, password: string): string;
|
|
17
17
|
}
|
|
18
|
-
export declare class
|
|
18
|
+
export declare class NetHomePlusSecurity extends CloudSecurity {
|
|
19
19
|
constructor(login_key: string, iot_key?: string);
|
|
20
20
|
sign(url: string, query: string): string;
|
|
21
21
|
}
|
|
22
|
+
export declare class MideaAirSecurity extends NetHomePlusSecurity {
|
|
23
|
+
}
|
|
22
24
|
export declare class LocalSecurity {
|
|
23
25
|
private readonly aes_key;
|
|
24
26
|
private readonly salt;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MideaSecurity.d.ts","sourceRoot":"","sources":["../../src/core/MideaSecurity.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"MideaSecurity.d.ts","sourceRoot":"","sources":["../../src/core/MideaSecurity.ts"],"names":[],"mappings":";AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAQlD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE1C,qBAAa,aAAa;IAItB,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM;IACpC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;IAJ7B,SAAS,CAAC,QAAQ,CAAC,QAAQ,2BAA2B;gBAGjC,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,oBAAQ;IAI9B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMjC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAUjD,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;WAW7C,QAAQ,CAAC,aAAa,EAAE,UAAU;CAQjD;AAED,qBAAa,kBAAmB,SAAQ,aAAa;gBACvC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAIvC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CAK5D;AAED,qBAAa,mBAAoB,SAAQ,aAAa;gBACxC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IAIxC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;CAOhD;AAED,qBAAa,gBAAiB,SAAQ,mBAAmB;CAAG;AAE5D,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAGtB;IAEF,OAAO,CAAC,QAAQ,CAAC,IAAI,CAGnB;IAEF,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IAEvC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAAK;IAE3B,OAAO,CAAC,OAAO,CAAC,CAAS;IAEzB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,eAAe;IAMhB,WAAW,CAAC,IAAI,EAAE,MAAM;IAKxB,WAAW,CAAC,IAAI,EAAE,MAAM;IAKxB,aAAa,CAAC,GAAG,EAAE,MAAM;IAMzB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAuB/C,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc;IAyCtD,WAAW,CAAC,IAAI,EAAE,MAAM;CAmDhC"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LocalSecurity = exports.MideaAirSecurity = exports.MeijuCloudSecurity = exports.CloudSecurity = void 0;
|
|
3
|
+
exports.LocalSecurity = exports.MideaAirSecurity = exports.NetHomePlusSecurity = exports.MeijuCloudSecurity = exports.CloudSecurity = void 0;
|
|
4
4
|
const crypto_1 = require("crypto");
|
|
5
5
|
const MideaConstants_1 = require("./MideaConstants");
|
|
6
6
|
const MideaUtils_1 = require("./MideaUtils");
|
|
7
|
+
const querystring_1 = require("querystring");
|
|
8
|
+
function unescape_plus(str) {
|
|
9
|
+
return (0, querystring_1.unescape)(str.replace(/\+/g, ' '));
|
|
10
|
+
}
|
|
7
11
|
class CloudSecurity {
|
|
8
12
|
constructor(login_key, iot_key) {
|
|
9
13
|
this.login_key = login_key;
|
|
@@ -51,21 +55,24 @@ class MeijuCloudSecurity extends CloudSecurity {
|
|
|
51
55
|
}
|
|
52
56
|
}
|
|
53
57
|
exports.MeijuCloudSecurity = MeijuCloudSecurity;
|
|
54
|
-
class
|
|
58
|
+
class NetHomePlusSecurity extends CloudSecurity {
|
|
55
59
|
constructor(login_key, iot_key) {
|
|
56
60
|
super(login_key, iot_key);
|
|
57
61
|
}
|
|
58
62
|
sign(url, query) {
|
|
59
63
|
const parsedUrl = new URL(url);
|
|
60
64
|
const path = parsedUrl.pathname;
|
|
61
|
-
return (0, crypto_1.
|
|
65
|
+
return (0, crypto_1.createHash)('sha256')
|
|
66
|
+
.update(`${path}${unescape_plus(query)}${this.login_key}`)
|
|
67
|
+
.digest('hex');
|
|
62
68
|
}
|
|
63
69
|
}
|
|
70
|
+
exports.NetHomePlusSecurity = NetHomePlusSecurity;
|
|
71
|
+
class MideaAirSecurity extends NetHomePlusSecurity {
|
|
72
|
+
}
|
|
64
73
|
exports.MideaAirSecurity = MideaAirSecurity;
|
|
65
74
|
class LocalSecurity {
|
|
66
75
|
constructor() {
|
|
67
|
-
// private static readonly SIGN_KEY = Buffer.from('xhdiwjnchekd4d512chdjx5d8e4c394D2D7S', 'utf-8');
|
|
68
|
-
// public static readonly ENC_KEY = createHash('md5').update(this.SIGN_KEY).digest();
|
|
69
76
|
this.aes_key = Buffer.from('6a92ef406bad2f0359baad994171ea6d', 'hex');
|
|
70
77
|
this.salt = Buffer.from('78686469776a6e6368656b6434643531326368646a783564386534633339344432443753', 'hex');
|
|
71
78
|
this.iv = Buffer.alloc(16);
|
|
@@ -91,7 +98,9 @@ class LocalSecurity {
|
|
|
91
98
|
return Buffer.concat([decipher.update(data), decipher.final()]);
|
|
92
99
|
}
|
|
93
100
|
encode32_data(raw) {
|
|
94
|
-
return (0, crypto_1.createHash)('md5')
|
|
101
|
+
return (0, crypto_1.createHash)('md5')
|
|
102
|
+
.update(Buffer.concat([raw, this.salt]))
|
|
103
|
+
.digest();
|
|
95
104
|
}
|
|
96
105
|
tcp_key_from_resp(response, key) {
|
|
97
106
|
if (response.toString() === 'ERROR') {
|
|
@@ -115,22 +124,32 @@ class LocalSecurity {
|
|
|
115
124
|
let header = Buffer.from([0x83, 0x70]);
|
|
116
125
|
let size = data.length;
|
|
117
126
|
let padding = 0;
|
|
118
|
-
if (message_type === MideaConstants_1.TCPMessageType.ENCRYPTED_REQUEST ||
|
|
127
|
+
if (message_type === MideaConstants_1.TCPMessageType.ENCRYPTED_REQUEST ||
|
|
128
|
+
message_type === MideaConstants_1.TCPMessageType.ENCRYPTED_RESPONSE) {
|
|
119
129
|
if ((size + 2) % 16 !== 0) {
|
|
120
|
-
padding = 16 - (size + 2 & 0xf);
|
|
130
|
+
padding = 16 - ((size + 2) & 0xf);
|
|
121
131
|
size += padding + 32;
|
|
122
132
|
data = Buffer.concat([data, (0, crypto_1.randomBytes)(padding)]);
|
|
123
133
|
}
|
|
124
134
|
}
|
|
125
135
|
header = Buffer.concat([header, (0, MideaUtils_1.numberToUint8Array)(size, 2, 'big')]);
|
|
126
|
-
header = Buffer.concat([
|
|
127
|
-
|
|
136
|
+
header = Buffer.concat([
|
|
137
|
+
header,
|
|
138
|
+
Buffer.from([0x20, (padding << 4) | message_type]),
|
|
139
|
+
]);
|
|
140
|
+
data = Buffer.concat([
|
|
141
|
+
(0, MideaUtils_1.numberToUint8Array)(this.request_count, 2, 'big'),
|
|
142
|
+
data,
|
|
143
|
+
]);
|
|
128
144
|
this.request_count += 1;
|
|
129
|
-
if (this.request_count >=
|
|
145
|
+
if (this.request_count >= 0xffff) {
|
|
130
146
|
this.request_count = 0;
|
|
131
147
|
}
|
|
132
|
-
if (message_type === MideaConstants_1.TCPMessageType.ENCRYPTED_REQUEST ||
|
|
133
|
-
|
|
148
|
+
if (message_type === MideaConstants_1.TCPMessageType.ENCRYPTED_REQUEST ||
|
|
149
|
+
message_type === MideaConstants_1.TCPMessageType.ENCRYPTED_RESPONSE) {
|
|
150
|
+
const sign = (0, crypto_1.createHash)('sha256')
|
|
151
|
+
.update(Buffer.concat([header, data]))
|
|
152
|
+
.digest();
|
|
134
153
|
data = Buffer.concat([this.aes_cbc_encrpyt(data, this.tcp_key), sign]);
|
|
135
154
|
}
|
|
136
155
|
return Buffer.concat([header, data]);
|
|
@@ -156,13 +175,19 @@ class LocalSecurity {
|
|
|
156
175
|
throw new Error('Missing byte 4');
|
|
157
176
|
}
|
|
158
177
|
const padding = header[5] >> 4;
|
|
159
|
-
const message_type_received = header[5] &
|
|
178
|
+
const message_type_received = header[5] & 0xf;
|
|
160
179
|
data = data.subarray(6, data.length);
|
|
161
|
-
if ([
|
|
180
|
+
if ([
|
|
181
|
+
MideaConstants_1.TCPMessageType.ENCRYPTED_RESPONSE,
|
|
182
|
+
MideaConstants_1.TCPMessageType.ENCRYPTED_REQUEST,
|
|
183
|
+
].includes(message_type_received)) {
|
|
162
184
|
const sign = data.subarray(data.length - 32, data.length);
|
|
163
185
|
data = data.subarray(0, data.length - 32);
|
|
164
186
|
data = this.aes_cbc_decrypt(data, this.tcp_key);
|
|
165
|
-
if ((0, crypto_1.createHash)('sha256')
|
|
187
|
+
if ((0, crypto_1.createHash)('sha256')
|
|
188
|
+
.update(Buffer.concat([header, data]))
|
|
189
|
+
.digest()
|
|
190
|
+
.compare(sign) !== 0) {
|
|
166
191
|
throw new Error('Sign does not match');
|
|
167
192
|
}
|
|
168
193
|
if (padding) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MideaSecurity.js","sourceRoot":"","sources":["../../src/core/MideaSecurity.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"MideaSecurity.js","sourceRoot":"","sources":["../../src/core/MideaSecurity.ts"],"names":[],"mappings":";;;AAAA,mCAMgB;AAChB,qDAAkD;AAClD,6CAA0D;AAC1D,6CAAuC;AAEvC,SAAS,aAAa,CAAC,GAAW;IAChC,OAAO,IAAA,sBAAQ,EAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3C,CAAC;AAID,MAAa,aAAa;IAGxB,YACqB,SAAiB,EACjB,OAAgB;QADhB,cAAS,GAAT,SAAS,CAAQ;QACjB,YAAO,GAAP,OAAO,CAAS;QAJlB,aAAQ,GAAG,uBAAuB,CAAC;IAKnD,CAAC;IAEJ,mEAAmE;IAC5D,IAAI,CAAC,IAAY,EAAE,MAAc;QACtC,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,MAAM,EAAE,CAAC;QAClD,OAAO,IAAA,mBAAU,EAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC;IAED,+CAA+C;IACxC,eAAe,CAAC,OAAe,EAAE,QAAgB;QACtD,MAAM,EAAE,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEjD,MAAM,UAAU,GAAG,GAAG,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACpE,MAAM,EAAE,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEnD,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,gDAAgD;IACzC,kBAAkB,CAAC,OAAe,EAAE,QAAgB;QACzD,MAAM,EAAE,GAAG,IAAA,mBAAU,EAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAE9C,MAAM,EAAE,GAAG,IAAA,mBAAU,EAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAEtD,MAAM,UAAU,GAAG,GAAG,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACpE,MAAM,GAAG,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEpD,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,aAAyB;QAC9C,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC;QACjE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YAC3B,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;SACpC;QACD,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CACF;AA5CD,sCA4CC;AAED,MAAa,kBAAmB,SAAQ,aAAa;IACnD,YAAY,SAAiB,EAAE,OAAe;QAC5C,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC5B,CAAC;IAEM,kBAAkB,CAAC,OAAe,EAAE,QAAgB;QACzD,MAAM,EAAE,GAAG,IAAA,mBAAU,EAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,EAAE,GAAG,IAAA,mBAAU,EAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtD,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;CACF;AAVD,gDAUC;AAED,MAAa,mBAAoB,SAAQ,aAAa;IACpD,YAAY,SAAiB,EAAE,OAAgB;QAC7C,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC5B,CAAC;IAEM,IAAI,CAAC,GAAW,EAAE,KAAa;QACpC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC;QAChC,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC;aACxB,MAAM,CAAC,GAAG,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;aACzD,MAAM,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;CACF;AAZD,kDAYC;AAED,MAAa,gBAAiB,SAAQ,mBAAmB;CAAG;AAA5D,4CAA4D;AAE5D,MAAa,aAAa;IAA1B;QACmB,YAAO,GAAG,MAAM,CAAC,IAAI,CACpC,kCAAkC,EAClC,KAAK,CACN,CAAC;QAEe,SAAI,GAAG,MAAM,CAAC,IAAI,CACjC,0EAA0E,EAC1E,KAAK,CACN,CAAC;QAEe,OAAE,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAE/B,kBAAa,GAAG,CAAC,CAAC;QAClB,mBAAc,GAAG,CAAC,CAAC;IAmJ7B,CAAC;IA/IS,eAAe,CAAC,GAAW,EAAE,GAAW;QAC9C,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC7B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IAEO,eAAe,CAAC,GAAW,EAAE,GAAW;QAC9C,MAAM,QAAQ,GAAG,IAAA,yBAAgB,EAAC,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/D,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;IAEM,WAAW,CAAC,IAAY;QAC7B,MAAM,MAAM,GAAG,IAAA,uBAAc,EAAC,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACjE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEM,WAAW,CAAC,IAAY;QAC7B,MAAM,QAAQ,GAAG,IAAA,yBAAgB,EAAC,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAEM,aAAa,CAAC,GAAW;QAC9B,OAAO,IAAA,mBAAU,EAAC,KAAK,CAAC;aACrB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACvC,MAAM,EAAE,CAAC;IACd,CAAC;IAEM,iBAAiB,CAAC,QAAgB,EAAE,GAAW;QACpD,IAAI,QAAQ,CAAC,QAAQ,EAAE,KAAK,OAAO,EAAE;YACnC,MAAM,KAAK,CAAC,uDAAuD,CAAC,CAAC;SACtE;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,EAAE,EAAE;YAC1B,MAAM,KAAK,CACT,0EAA0E,CAC3E,CAAC;SACH;QACD,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACnE,MAAM,KAAK,CAAC,yDAAyD,CAAC,CAAC;SACxE;QAED,IAAI,CAAC,OAAO,GAAG,IAAA,mBAAM,EAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QAExB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,WAAW,CAAC,IAAY,EAAE,YAA4B;QAC3D,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACvC,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACvB,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,IACE,YAAY,KAAK,+BAAc,CAAC,iBAAiB;YACjD,YAAY,KAAK,+BAAc,CAAC,kBAAkB,EAClD;YACA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE;gBACzB,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;gBAClC,IAAI,IAAI,OAAO,GAAG,EAAE,CAAC;gBACrB,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAA,oBAAW,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aACpD;SACF;QAED,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAA,+BAAkB,EAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YACrB,MAAM;YACN,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC;SACnD,CAAC,CAAC;QACH,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;YACnB,IAAA,+BAAkB,EAAC,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,KAAK,CAAC;YAChD,IAAI;SACL,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,aAAa,IAAI,MAAM,EAAE;YAChC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;SACxB;QACD,IACE,YAAY,KAAK,+BAAc,CAAC,iBAAiB;YACjD,YAAY,KAAK,+BAAc,CAAC,kBAAkB,EAClD;YACA,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC;iBAC9B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;iBACrC,MAAM,EAAE,CAAC;YACZ,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,OAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;SACzE;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IACvC,CAAC;IAEM,WAAW,CAAC,IAAY;QAC7B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACnB,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;SACnB;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;YAC5C,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;SACzC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QACtD,IAAI,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE;YACtB,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;SACnB;aAAM,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE;YAC7B,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;SAC/B;QACD,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;SACnC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,qBAAqB,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9C,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,IACE;YACE,+BAAc,CAAC,kBAAkB;YACjC,+BAAc,CAAC,iBAAiB;SACjC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EACjC;YACA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1D,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;YAC1C,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,OAAQ,CAAC,CAAC;YACjD,IACE,IAAA,mBAAU,EAAC,QAAQ,CAAC;iBACjB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;iBACrC,MAAM,EAAE;iBACR,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EACtB;gBACA,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;aACxC;YACD,IAAI,OAAO,EAAE;gBACX,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;aAChD;SACF;QACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;QACzD,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACzD,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;SACzC;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC5B,CAAC;CACF;AAjKD,sCAiKC"}
|
|
@@ -1,18 +1,33 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
|
|
2
|
+
/***********************************************************************
|
|
3
|
+
* Homebridge-midea-platform miscellaneous support functions.
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) 2023 Kovalovszky Patrik, https://github.com/kovapatrik
|
|
6
|
+
* Portions Copyright (c) 2023 David Kerr, https://github.com/dkerr64
|
|
7
|
+
*
|
|
8
|
+
* Includes very basic implementation of a promise-wrapped Socket class.
|
|
9
|
+
*
|
|
10
|
+
*/
|
|
3
11
|
import { Logger } from 'homebridge';
|
|
4
12
|
import { Endianness } from './MideaConstants';
|
|
5
|
-
import { Socket } from 'net';
|
|
6
13
|
export declare function numberToUint8Array(num: number, byte_length: number, endianness: Endianness): Uint8Array;
|
|
7
14
|
export declare function strxor(a: Buffer, b: Buffer): Buffer;
|
|
8
15
|
export declare function calculate(data: Buffer): number;
|
|
16
|
+
/*********************************************************************
|
|
17
|
+
* PromiseSocket
|
|
18
|
+
* A very basic implementation of promise-wrapped Socket
|
|
19
|
+
*
|
|
20
|
+
*/
|
|
9
21
|
export declare class PromiseSocket {
|
|
10
|
-
private innerSok;
|
|
11
22
|
private readonly logger;
|
|
12
|
-
|
|
23
|
+
private readonly verbose;
|
|
24
|
+
private innerSok;
|
|
25
|
+
destroyed: boolean;
|
|
26
|
+
constructor(logger: Logger, verbose: boolean);
|
|
13
27
|
connect(port: number, host: string): Promise<void>;
|
|
28
|
+
setTimeout(t: number): void;
|
|
29
|
+
destroy(): void;
|
|
14
30
|
write(data: string | Buffer, encoding?: BufferEncoding): Promise<void>;
|
|
15
|
-
read(
|
|
16
|
-
readAll(): Promise<Buffer>;
|
|
31
|
+
read(): Promise<Buffer>;
|
|
17
32
|
}
|
|
18
33
|
//# sourceMappingURL=MideaUtils.d.ts.map
|