homebridge-midea-platform 1.1.2-beta.2 → 1.1.2-beta.4

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 (76) hide show
  1. package/.husky/pre-commit +0 -0
  2. package/CHANGELOG.md +6 -1
  3. package/config.schema.json +20 -56
  4. package/dist/accessory/AccessoryFactory.d.ts +12 -12
  5. package/dist/accessory/AccessoryFactory.js +31 -31
  6. package/dist/accessory/AirConditionerAccessory.d.ts +86 -86
  7. package/dist/accessory/AirConditionerAccessory.js +560 -560
  8. package/dist/accessory/AirConditionerAccessory.js.map +1 -1
  9. package/dist/accessory/BaseAccessory.d.ts +11 -11
  10. package/dist/accessory/BaseAccessory.js +21 -21
  11. package/dist/accessory/DehumidifierAccessory.d.ts +45 -45
  12. package/dist/accessory/DehumidifierAccessory.d.ts.map +1 -1
  13. package/dist/accessory/DehumidifierAccessory.js +345 -343
  14. package/dist/accessory/DehumidifierAccessory.js.map +1 -1
  15. package/dist/accessory/ElectricWaterHeaterAccessory.d.ts +44 -44
  16. package/dist/accessory/ElectricWaterHeaterAccessory.js +176 -176
  17. package/dist/accessory/FanAccessory.d.ts +39 -39
  18. package/dist/accessory/FanAccessory.js +123 -123
  19. package/dist/accessory/FrontLoadWasherAccessory.d.ts +30 -30
  20. package/dist/accessory/FrontLoadWasherAccessory.js +60 -60
  21. package/dist/accessory/GasWaterHeaterAccessory.d.ts +51 -51
  22. package/dist/accessory/GasWaterHeaterAccessory.js +216 -216
  23. package/dist/core/MideaCloud.d.ts +35 -35
  24. package/dist/core/MideaCloud.js +350 -350
  25. package/dist/core/MideaConstants.d.ts +49 -49
  26. package/dist/core/MideaConstants.js +57 -57
  27. package/dist/core/MideaDevice.d.ts +76 -76
  28. package/dist/core/MideaDevice.js +409 -409
  29. package/dist/core/MideaDiscover.d.ts +35 -35
  30. package/dist/core/MideaDiscover.js +212 -212
  31. package/dist/core/MideaMessage.d.ts +75 -75
  32. package/dist/core/MideaMessage.js +184 -184
  33. package/dist/core/MideaPacketBuilder.d.ts +10 -10
  34. package/dist/core/MideaPacketBuilder.js +60 -60
  35. package/dist/core/MideaSecurity.d.ts +63 -63
  36. package/dist/core/MideaSecurity.js +242 -242
  37. package/dist/core/MideaUtils.d.ts +32 -32
  38. package/dist/core/MideaUtils.js +181 -181
  39. package/dist/devices/DeviceFactory.d.ts +12 -12
  40. package/dist/devices/DeviceFactory.js +33 -33
  41. package/dist/devices/a1/MideaA1Device.d.ts +76 -76
  42. package/dist/devices/a1/MideaA1Device.js +136 -136
  43. package/dist/devices/a1/MideaA1Message.d.ts +40 -40
  44. package/dist/devices/a1/MideaA1Message.js +198 -198
  45. package/dist/devices/ac/MideaACDevice.d.ts +100 -100
  46. package/dist/devices/ac/MideaACDevice.js +370 -370
  47. package/dist/devices/ac/MideaACMessage.d.ts +92 -92
  48. package/dist/devices/ac/MideaACMessage.js +589 -589
  49. package/dist/devices/db/MideaDBDevice.d.ts +29 -29
  50. package/dist/devices/db/MideaDBDevice.js +88 -88
  51. package/dist/devices/db/MideaDBMessage.d.ts +32 -32
  52. package/dist/devices/db/MideaDBMessage.js +101 -101
  53. package/dist/devices/e2/MideaE2Device.d.ts +44 -44
  54. package/dist/devices/e2/MideaE2Device.js +119 -119
  55. package/dist/devices/e2/MideaE2Message.d.ts +33 -33
  56. package/dist/devices/e2/MideaE2Message.js +132 -132
  57. package/dist/devices/e3/MideaE3Device.d.ts +43 -43
  58. package/dist/devices/e3/MideaE3Device.js +125 -125
  59. package/dist/devices/e3/MideaE3Message.d.ts +51 -51
  60. package/dist/devices/e3/MideaE3Message.js +136 -136
  61. package/dist/devices/fa/MideaFADevice.d.ts +36 -36
  62. package/dist/devices/fa/MideaFADevice.js +92 -92
  63. package/dist/devices/fa/MideaFAMessage.d.ts +38 -38
  64. package/dist/devices/fa/MideaFAMessage.js +98 -98
  65. package/dist/index.d.ts +6 -6
  66. package/dist/index.js +6 -6
  67. package/dist/platform.d.ts +60 -60
  68. package/dist/platform.js +213 -213
  69. package/dist/platformUtils.d.ts +98 -97
  70. package/dist/platformUtils.d.ts.map +1 -1
  71. package/dist/platformUtils.js +96 -95
  72. package/dist/platformUtils.js.map +1 -1
  73. package/dist/settings.d.ts +8 -8
  74. package/dist/settings.js +11 -11
  75. package/docs/db.md +3 -0
  76. package/package.json +1 -1
@@ -1,30 +1,30 @@
1
- /***********************************************************************
2
- * Midea Front Load Washer class
3
- *
4
- * Copyright (c) 2024 Kovalovszky Patrik, https://github.com/kovapatrik
5
- *
6
- * With thanks to https://github.com/georgezhao2010/midea_ac_lan
7
- *
8
- */
9
- /// <reference types="node" />
10
- import { Logger } from 'homebridge';
11
- import MideaDevice, { DeviceAttributeBase } from '../../core/MideaDevice';
12
- import { DeviceInfo } from '../../core/MideaConstants';
13
- import { Config, DeviceConfig } from '../../platformUtils';
14
- import { MessageRequest } from '../../core/MideaMessage';
15
- export interface DBAttributes extends DeviceAttributeBase {
16
- POWER: boolean;
17
- START: boolean;
18
- WASHING_DATA: Buffer;
19
- PROGRESS: number;
20
- TIME_REMAINING: number;
21
- }
22
- export default class MideaDBDevice extends MideaDevice {
23
- attributes: DBAttributes;
24
- constructor(logger: Logger, device_info: DeviceInfo, config: Config, deviceConfig: DeviceConfig);
25
- build_query(): MessageRequest[];
26
- process_message(msg: Buffer): void;
27
- set_subtype(): void;
28
- set_attribute(attributes: Partial<DBAttributes>): Promise<void>;
29
- }
1
+ /***********************************************************************
2
+ * Midea Front Load Washer class
3
+ *
4
+ * Copyright (c) 2024 Kovalovszky Patrik, https://github.com/kovapatrik
5
+ *
6
+ * With thanks to https://github.com/georgezhao2010/midea_ac_lan
7
+ *
8
+ */
9
+ /// <reference types="node" />
10
+ import { Logger } from 'homebridge';
11
+ import MideaDevice, { DeviceAttributeBase } from '../../core/MideaDevice';
12
+ import { DeviceInfo } from '../../core/MideaConstants';
13
+ import { Config, DeviceConfig } from '../../platformUtils';
14
+ import { MessageRequest } from '../../core/MideaMessage';
15
+ export interface DBAttributes extends DeviceAttributeBase {
16
+ POWER: boolean;
17
+ START: boolean;
18
+ WASHING_DATA: Buffer;
19
+ PROGRESS: number;
20
+ TIME_REMAINING: number;
21
+ }
22
+ export default class MideaDBDevice extends MideaDevice {
23
+ attributes: DBAttributes;
24
+ constructor(logger: Logger, device_info: DeviceInfo, config: Config, deviceConfig: DeviceConfig);
25
+ build_query(): MessageRequest[];
26
+ process_message(msg: Buffer): void;
27
+ set_subtype(): void;
28
+ set_attribute(attributes: Partial<DBAttributes>): Promise<void>;
29
+ }
30
30
  //# sourceMappingURL=MideaDBDevice.d.ts.map
@@ -1,89 +1,89 @@
1
- "use strict";
2
- /***********************************************************************
3
- * Midea Front Load Washer class
4
- *
5
- * Copyright (c) 2024 Kovalovszky Patrik, https://github.com/kovapatrik
6
- *
7
- * With thanks to https://github.com/georgezhao2010/midea_ac_lan
8
- *
9
- */
10
- var __importDefault = (this && this.__importDefault) || function (mod) {
11
- return (mod && mod.__esModule) ? mod : { "default": mod };
12
- };
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- const MideaDevice_1 = __importDefault(require("../../core/MideaDevice"));
15
- const MideaDBMessage_1 = require("./MideaDBMessage");
16
- class MideaDBDevice extends MideaDevice_1.default {
17
- constructor(logger, device_info, config, deviceConfig) {
18
- super(logger, device_info, config, deviceConfig);
19
- this.attributes = {
20
- POWER: false,
21
- START: false,
22
- WASHING_DATA: Buffer.alloc(0),
23
- PROGRESS: 0,
24
- TIME_REMAINING: 0,
25
- };
26
- }
27
- build_query() {
28
- return [new MideaDBMessage_1.MessageQuery(this.device_protocol_version)];
29
- }
30
- process_message(msg) {
31
- const message = new MideaDBMessage_1.MessageDBResponse(msg);
32
- if (this.verbose) {
33
- this.logger.debug(`[${this.name}] Body:\n${JSON.stringify(message.body)}`);
34
- }
35
- const changed = {};
36
- for (const status of Object.keys(this.attributes)) {
37
- const value = message.get_body_attribute(status.toLowerCase());
38
- if (value !== undefined) {
39
- if (this.attributes[status] !== value) {
40
- // Track only those attributes that change value. So when we send to the Homebridge /
41
- // HomeKit accessory we only update values that change. First time through this
42
- // should be most/all attributes having initialized them to invalid values.
43
- this.logger.debug(`[${this.name}] Value for ${status} changed from '${this.attributes[status]}' to '${value}'`);
44
- changed[status] = value;
45
- }
46
- this.attributes[status] = value;
47
- }
48
- }
49
- // Now we update Homebridge / Homekit accessory
50
- if (Object.keys(changed).length > 0) {
51
- this.update(changed);
52
- }
53
- else {
54
- this.logger.debug(`[${this.name}] Status unchanged`);
55
- }
56
- }
57
- set_subtype() {
58
- this.logger.debug('No subtype for FA device');
59
- }
60
- async set_attribute(attributes) {
61
- try {
62
- for (const [k, v] of Object.entries(attributes)) {
63
- if (k === 'POWER') {
64
- const message = new MideaDBMessage_1.MessagePower(this.device_protocol_version);
65
- message.power = v;
66
- this.logger.debug(`[${this.name}] Set message:\n${JSON.stringify(message)}`);
67
- await this.build_send(message);
68
- continue;
69
- }
70
- else if (k === 'START') {
71
- const message = new MideaDBMessage_1.MessageStart(this.device_protocol_version);
72
- message.start = v;
73
- this.logger.debug(`[${this.name}] Set message:\n${JSON.stringify(message)}`);
74
- await this.build_send(message);
75
- continue;
76
- }
77
- else {
78
- this.logger.debug(`[${this.name}] Attribute '${k}' not supported`);
79
- }
80
- }
81
- }
82
- catch (err) {
83
- const msg = err instanceof Error ? err.stack : err;
84
- this.logger.debug(`[${this.name}] Error in set_attribute (${this.ip}:${this.port}):\n${msg}`);
85
- }
86
- }
87
- }
88
- exports.default = MideaDBDevice;
1
+ "use strict";
2
+ /***********************************************************************
3
+ * Midea Front Load Washer class
4
+ *
5
+ * Copyright (c) 2024 Kovalovszky Patrik, https://github.com/kovapatrik
6
+ *
7
+ * With thanks to https://github.com/georgezhao2010/midea_ac_lan
8
+ *
9
+ */
10
+ var __importDefault = (this && this.__importDefault) || function (mod) {
11
+ return (mod && mod.__esModule) ? mod : { "default": mod };
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ const MideaDevice_1 = __importDefault(require("../../core/MideaDevice"));
15
+ const MideaDBMessage_1 = require("./MideaDBMessage");
16
+ class MideaDBDevice extends MideaDevice_1.default {
17
+ constructor(logger, device_info, config, deviceConfig) {
18
+ super(logger, device_info, config, deviceConfig);
19
+ this.attributes = {
20
+ POWER: false,
21
+ START: false,
22
+ WASHING_DATA: Buffer.alloc(0),
23
+ PROGRESS: 0,
24
+ TIME_REMAINING: 0,
25
+ };
26
+ }
27
+ build_query() {
28
+ return [new MideaDBMessage_1.MessageQuery(this.device_protocol_version)];
29
+ }
30
+ process_message(msg) {
31
+ const message = new MideaDBMessage_1.MessageDBResponse(msg);
32
+ if (this.verbose) {
33
+ this.logger.debug(`[${this.name}] Body:\n${JSON.stringify(message.body)}`);
34
+ }
35
+ const changed = {};
36
+ for (const status of Object.keys(this.attributes)) {
37
+ const value = message.get_body_attribute(status.toLowerCase());
38
+ if (value !== undefined) {
39
+ if (this.attributes[status] !== value) {
40
+ // Track only those attributes that change value. So when we send to the Homebridge /
41
+ // HomeKit accessory we only update values that change. First time through this
42
+ // should be most/all attributes having initialized them to invalid values.
43
+ this.logger.debug(`[${this.name}] Value for ${status} changed from '${this.attributes[status]}' to '${value}'`);
44
+ changed[status] = value;
45
+ }
46
+ this.attributes[status] = value;
47
+ }
48
+ }
49
+ // Now we update Homebridge / Homekit accessory
50
+ if (Object.keys(changed).length > 0) {
51
+ this.update(changed);
52
+ }
53
+ else {
54
+ this.logger.debug(`[${this.name}] Status unchanged`);
55
+ }
56
+ }
57
+ set_subtype() {
58
+ this.logger.debug('No subtype for FA device');
59
+ }
60
+ async set_attribute(attributes) {
61
+ try {
62
+ for (const [k, v] of Object.entries(attributes)) {
63
+ if (k === 'POWER') {
64
+ const message = new MideaDBMessage_1.MessagePower(this.device_protocol_version);
65
+ message.power = v;
66
+ this.logger.debug(`[${this.name}] Set message:\n${JSON.stringify(message)}`);
67
+ await this.build_send(message);
68
+ continue;
69
+ }
70
+ else if (k === 'START') {
71
+ const message = new MideaDBMessage_1.MessageStart(this.device_protocol_version);
72
+ message.start = v;
73
+ this.logger.debug(`[${this.name}] Set message:\n${JSON.stringify(message)}`);
74
+ await this.build_send(message);
75
+ continue;
76
+ }
77
+ else {
78
+ this.logger.debug(`[${this.name}] Attribute '${k}' not supported`);
79
+ }
80
+ }
81
+ }
82
+ catch (err) {
83
+ const msg = err instanceof Error ? err.stack : err;
84
+ this.logger.debug(`[${this.name}] Error in set_attribute (${this.ip}:${this.port}):\n${msg}`);
85
+ }
86
+ }
87
+ }
88
+ exports.default = MideaDBDevice;
89
89
  //# sourceMappingURL=MideaDBDevice.js.map
@@ -1,33 +1,33 @@
1
- /// <reference types="node" />
2
- import { MessageBody, MessageRequest, MessageResponse, MessageType } from '../../core/MideaMessage';
3
- declare abstract class MessageDBBase extends MessageRequest {
4
- constructor(device_protocol_version: number, message_type: MessageType, body_type: number);
5
- }
6
- export declare class MessageQuery extends MessageDBBase {
7
- constructor(device_protocol_version: number);
8
- get _body(): Buffer;
9
- }
10
- export declare class MessagePower extends MessageDBBase {
11
- power: boolean;
12
- constructor(device_protocol_version: number);
13
- get _body(): Buffer;
14
- }
15
- export declare class MessageStart extends MessageDBBase {
16
- start: boolean;
17
- washingData: Buffer;
18
- constructor(device_protocol_version: number);
19
- get _body(): Buffer;
20
- }
21
- export declare class DBGeneralMessageBody extends MessageBody {
22
- power: boolean;
23
- start: boolean;
24
- washingData: Buffer;
25
- progress: number;
26
- timeRemaining?: number;
27
- constructor(body: Buffer);
28
- }
29
- export declare class MessageDBResponse extends MessageResponse {
30
- constructor(message: Buffer);
31
- }
32
- export {};
1
+ /// <reference types="node" />
2
+ import { MessageBody, MessageRequest, MessageResponse, MessageType } from '../../core/MideaMessage';
3
+ declare abstract class MessageDBBase extends MessageRequest {
4
+ constructor(device_protocol_version: number, message_type: MessageType, body_type: number);
5
+ }
6
+ export declare class MessageQuery extends MessageDBBase {
7
+ constructor(device_protocol_version: number);
8
+ get _body(): Buffer;
9
+ }
10
+ export declare class MessagePower extends MessageDBBase {
11
+ power: boolean;
12
+ constructor(device_protocol_version: number);
13
+ get _body(): Buffer;
14
+ }
15
+ export declare class MessageStart extends MessageDBBase {
16
+ start: boolean;
17
+ washingData: Buffer;
18
+ constructor(device_protocol_version: number);
19
+ get _body(): Buffer;
20
+ }
21
+ export declare class DBGeneralMessageBody extends MessageBody {
22
+ power: boolean;
23
+ start: boolean;
24
+ washingData: Buffer;
25
+ progress: number;
26
+ timeRemaining?: number;
27
+ constructor(body: Buffer);
28
+ }
29
+ export declare class MessageDBResponse extends MessageResponse {
30
+ constructor(message: Buffer);
31
+ }
32
+ export {};
33
33
  //# sourceMappingURL=MideaDBMessage.d.ts.map
@@ -1,102 +1,102 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MessageDBResponse = exports.DBGeneralMessageBody = exports.MessageStart = exports.MessagePower = exports.MessageQuery = void 0;
4
- const MideaConstants_1 = require("../../core/MideaConstants");
5
- const MideaMessage_1 = require("../../core/MideaMessage");
6
- class MessageDBBase extends MideaMessage_1.MessageRequest {
7
- constructor(device_protocol_version, message_type, body_type) {
8
- super(MideaConstants_1.DeviceType.FRONT_LOAD_WASHER, message_type, body_type, device_protocol_version);
9
- }
10
- }
11
- class MessageQuery extends MessageDBBase {
12
- constructor(device_protocol_version) {
13
- super(device_protocol_version, MideaMessage_1.MessageType.QUERY, 0x03);
14
- }
15
- get _body() {
16
- return Buffer.alloc(0);
17
- }
18
- }
19
- exports.MessageQuery = MessageQuery;
20
- class MessagePower extends MessageDBBase {
21
- constructor(device_protocol_version) {
22
- super(device_protocol_version, MideaMessage_1.MessageType.SET, 0x02);
23
- this.power = false;
24
- }
25
- get _body() {
26
- const power = this.power ? 0x01 : 0x00;
27
- return Buffer.from([
28
- power,
29
- 0xff,
30
- 0xff,
31
- 0xff,
32
- 0xff,
33
- 0xff,
34
- 0xff,
35
- 0xff,
36
- 0xff,
37
- 0xff,
38
- 0xff,
39
- 0xff,
40
- 0xff,
41
- 0xff,
42
- 0xff,
43
- 0xff,
44
- 0xff,
45
- 0xff,
46
- 0xff,
47
- 0xff,
48
- 0xff,
49
- ]);
50
- }
51
- }
52
- exports.MessagePower = MessagePower;
53
- class MessageStart extends MessageDBBase {
54
- constructor(device_protocol_version) {
55
- super(device_protocol_version, MideaMessage_1.MessageType.SET, 0x02);
56
- this.start = false;
57
- this.washingData = Buffer.alloc(0);
58
- }
59
- get _body() {
60
- if (this.start) {
61
- return Buffer.concat([Buffer.from([0xff, 0x01]), this.washingData]);
62
- }
63
- else {
64
- return Buffer.from([0xff, 0x00]);
65
- }
66
- }
67
- }
68
- exports.MessageStart = MessageStart;
69
- class DBGeneralMessageBody extends MideaMessage_1.MessageBody {
70
- constructor(body) {
71
- super(body);
72
- this.power = body[1] > 0;
73
- this.start = [0x2, 0x6].includes(body[2]);
74
- this.washingData = body.subarray(3, 16);
75
- this.progress = 0;
76
- this.timeRemaining = 0;
77
- for (let i = 0; i < 7; i++) {
78
- if ((body[16] & (1 << i)) > 0) {
79
- this.progress = i + 1;
80
- break;
81
- }
82
- }
83
- if (this.power) {
84
- this.timeRemaining = body[17] + (body[18] << 8);
85
- }
86
- else {
87
- this.timeRemaining = undefined;
88
- }
89
- }
90
- }
91
- exports.DBGeneralMessageBody = DBGeneralMessageBody;
92
- class MessageDBResponse extends MideaMessage_1.MessageResponse {
93
- constructor(message) {
94
- super(message);
95
- if ([MideaMessage_1.MessageType.QUERY, MideaMessage_1.MessageType.SET].includes(this.message_type) ||
96
- (this.message_type === MideaMessage_1.MessageType.NOTIFY1 && this.body_type === 0x04)) {
97
- this.set_body(new DBGeneralMessageBody(this.body));
98
- }
99
- }
100
- }
101
- exports.MessageDBResponse = MessageDBResponse;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MessageDBResponse = exports.DBGeneralMessageBody = exports.MessageStart = exports.MessagePower = exports.MessageQuery = void 0;
4
+ const MideaConstants_1 = require("../../core/MideaConstants");
5
+ const MideaMessage_1 = require("../../core/MideaMessage");
6
+ class MessageDBBase extends MideaMessage_1.MessageRequest {
7
+ constructor(device_protocol_version, message_type, body_type) {
8
+ super(MideaConstants_1.DeviceType.FRONT_LOAD_WASHER, message_type, body_type, device_protocol_version);
9
+ }
10
+ }
11
+ class MessageQuery extends MessageDBBase {
12
+ constructor(device_protocol_version) {
13
+ super(device_protocol_version, MideaMessage_1.MessageType.QUERY, 0x03);
14
+ }
15
+ get _body() {
16
+ return Buffer.alloc(0);
17
+ }
18
+ }
19
+ exports.MessageQuery = MessageQuery;
20
+ class MessagePower extends MessageDBBase {
21
+ constructor(device_protocol_version) {
22
+ super(device_protocol_version, MideaMessage_1.MessageType.SET, 0x02);
23
+ this.power = false;
24
+ }
25
+ get _body() {
26
+ const power = this.power ? 0x01 : 0x00;
27
+ return Buffer.from([
28
+ power,
29
+ 0xff,
30
+ 0xff,
31
+ 0xff,
32
+ 0xff,
33
+ 0xff,
34
+ 0xff,
35
+ 0xff,
36
+ 0xff,
37
+ 0xff,
38
+ 0xff,
39
+ 0xff,
40
+ 0xff,
41
+ 0xff,
42
+ 0xff,
43
+ 0xff,
44
+ 0xff,
45
+ 0xff,
46
+ 0xff,
47
+ 0xff,
48
+ 0xff,
49
+ ]);
50
+ }
51
+ }
52
+ exports.MessagePower = MessagePower;
53
+ class MessageStart extends MessageDBBase {
54
+ constructor(device_protocol_version) {
55
+ super(device_protocol_version, MideaMessage_1.MessageType.SET, 0x02);
56
+ this.start = false;
57
+ this.washingData = Buffer.alloc(0);
58
+ }
59
+ get _body() {
60
+ if (this.start) {
61
+ return Buffer.concat([Buffer.from([0xff, 0x01]), this.washingData]);
62
+ }
63
+ else {
64
+ return Buffer.from([0xff, 0x00]);
65
+ }
66
+ }
67
+ }
68
+ exports.MessageStart = MessageStart;
69
+ class DBGeneralMessageBody extends MideaMessage_1.MessageBody {
70
+ constructor(body) {
71
+ super(body);
72
+ this.power = body[1] > 0;
73
+ this.start = [0x2, 0x6].includes(body[2]);
74
+ this.washingData = body.subarray(3, 16);
75
+ this.progress = 0;
76
+ this.timeRemaining = 0;
77
+ for (let i = 0; i < 7; i++) {
78
+ if ((body[16] & (1 << i)) > 0) {
79
+ this.progress = i + 1;
80
+ break;
81
+ }
82
+ }
83
+ if (this.power) {
84
+ this.timeRemaining = body[17] + (body[18] << 8);
85
+ }
86
+ else {
87
+ this.timeRemaining = undefined;
88
+ }
89
+ }
90
+ }
91
+ exports.DBGeneralMessageBody = DBGeneralMessageBody;
92
+ class MessageDBResponse extends MideaMessage_1.MessageResponse {
93
+ constructor(message) {
94
+ super(message);
95
+ if ([MideaMessage_1.MessageType.QUERY, MideaMessage_1.MessageType.SET].includes(this.message_type) ||
96
+ (this.message_type === MideaMessage_1.MessageType.NOTIFY1 && this.body_type === 0x04)) {
97
+ this.set_body(new DBGeneralMessageBody(this.body));
98
+ }
99
+ }
100
+ }
101
+ exports.MessageDBResponse = MessageDBResponse;
102
102
  //# sourceMappingURL=MideaDBMessage.js.map
@@ -1,45 +1,45 @@
1
- /***********************************************************************
2
- * Midea Electric Water Heater Device class
3
- *
4
- * Copyright (c) 2024 Kovalovszky Patrik, https://github.com/kovapatrik
5
- *
6
- * With thanks to https://github.com/georgezhao2010/midea_ac_lan
7
- *
8
- */
9
- /// <reference types="node" />
10
- import { Logger } from 'homebridge';
11
- import MideaDevice, { DeviceAttributeBase } from '../../core/MideaDevice';
12
- import { DeviceInfo } from '../../core/MideaConstants';
13
- import { Config, DeviceConfig } from '../../platformUtils';
14
- import { MessageQuery, MessageSet } from './MideaE2Message';
15
- export interface E2Attributes extends DeviceAttributeBase {
16
- POWER: boolean;
17
- HEATING: boolean;
18
- KEEP_WARM: boolean;
19
- PROTECTION: boolean;
20
- CURRENT_TEMPERATURE?: number;
21
- TARGET_TEMPERATURE: number;
22
- WHOLE_TANK_HEATING: boolean;
23
- VARIABLE_HEATING: boolean;
24
- HEATING_TIME_REMAINING: number;
25
- WATER_CONSUMPTION?: number;
26
- HEATING_POWER?: number;
27
- }
28
- export default class MideaE2Device extends MideaDevice {
29
- attributes: E2Attributes;
30
- private _old_protocol;
31
- /*********************************************************************
32
- * Constructor initializes all the attributes. We set some to invalid
33
- * values so that they are detected as "changed" on the first status
34
- * refresh... and passed back to the Homebridge/HomeKit accessory callback
35
- * function to set their initial values.
36
- */
37
- constructor(logger: Logger, device_info: DeviceInfo, config: Config, deviceConfig: DeviceConfig);
38
- get old_protocol(): boolean;
39
- build_query(): MessageQuery[];
40
- process_message(msg: Buffer): void;
41
- make_message_set(): MessageSet;
42
- set_attribute(attributes: Partial<E2Attributes>): Promise<void>;
43
- protected set_subtype(): void;
44
- }
1
+ /***********************************************************************
2
+ * Midea Electric Water Heater Device class
3
+ *
4
+ * Copyright (c) 2024 Kovalovszky Patrik, https://github.com/kovapatrik
5
+ *
6
+ * With thanks to https://github.com/georgezhao2010/midea_ac_lan
7
+ *
8
+ */
9
+ /// <reference types="node" />
10
+ import { Logger } from 'homebridge';
11
+ import MideaDevice, { DeviceAttributeBase } from '../../core/MideaDevice';
12
+ import { DeviceInfo } from '../../core/MideaConstants';
13
+ import { Config, DeviceConfig } from '../../platformUtils';
14
+ import { MessageQuery, MessageSet } from './MideaE2Message';
15
+ export interface E2Attributes extends DeviceAttributeBase {
16
+ POWER: boolean;
17
+ HEATING: boolean;
18
+ KEEP_WARM: boolean;
19
+ PROTECTION: boolean;
20
+ CURRENT_TEMPERATURE?: number;
21
+ TARGET_TEMPERATURE: number;
22
+ WHOLE_TANK_HEATING: boolean;
23
+ VARIABLE_HEATING: boolean;
24
+ HEATING_TIME_REMAINING: number;
25
+ WATER_CONSUMPTION?: number;
26
+ HEATING_POWER?: number;
27
+ }
28
+ export default class MideaE2Device extends MideaDevice {
29
+ attributes: E2Attributes;
30
+ private _old_protocol;
31
+ /*********************************************************************
32
+ * Constructor initializes all the attributes. We set some to invalid
33
+ * values so that they are detected as "changed" on the first status
34
+ * refresh... and passed back to the Homebridge/HomeKit accessory callback
35
+ * function to set their initial values.
36
+ */
37
+ constructor(logger: Logger, device_info: DeviceInfo, config: Config, deviceConfig: DeviceConfig);
38
+ get old_protocol(): boolean;
39
+ build_query(): MessageQuery[];
40
+ process_message(msg: Buffer): void;
41
+ make_message_set(): MessageSet;
42
+ set_attribute(attributes: Partial<E2Attributes>): Promise<void>;
43
+ protected set_subtype(): void;
44
+ }
45
45
  //# sourceMappingURL=MideaE2Device.d.ts.map