homebridge-midea-platform 1.2.0-beta.8 → 1.2.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 (167) hide show
  1. package/CHANGELOG.md +5 -2
  2. package/README.md +2 -2
  3. package/dist/accessory/AccessoryFactory.d.ts +14 -15
  4. package/dist/accessory/AccessoryFactory.js +34 -40
  5. package/dist/accessory/AccessoryFactory.js.map +1 -1
  6. package/dist/accessory/AirConditionerAccessory.d.ts +98 -99
  7. package/dist/accessory/AirConditionerAccessory.js +666 -662
  8. package/dist/accessory/AirConditionerAccessory.js.map +1 -1
  9. package/dist/accessory/BaseAccessory.d.ts +11 -12
  10. package/dist/accessory/BaseAccessory.js +21 -21
  11. package/dist/accessory/BaseAccessory.js.map +1 -1
  12. package/dist/accessory/DehumidifierAccessory.d.ts +45 -46
  13. package/dist/accessory/DehumidifierAccessory.js +343 -344
  14. package/dist/accessory/DehumidifierAccessory.js.map +1 -1
  15. package/dist/accessory/DishwasherAccessory.d.ts +30 -31
  16. package/dist/accessory/DishwasherAccessory.js +59 -63
  17. package/dist/accessory/DishwasherAccessory.js.map +1 -1
  18. package/dist/accessory/ElectricWaterHeaterAccessory.d.ts +44 -45
  19. package/dist/accessory/ElectricWaterHeaterAccessory.js +172 -176
  20. package/dist/accessory/ElectricWaterHeaterAccessory.js.map +1 -1
  21. package/dist/accessory/FanAccessory.d.ts +39 -40
  22. package/dist/accessory/FanAccessory.js +120 -123
  23. package/dist/accessory/FanAccessory.js.map +1 -1
  24. package/dist/accessory/FrontLoadWasherAccessory.d.ts +30 -31
  25. package/dist/accessory/FrontLoadWasherAccessory.js +63 -66
  26. package/dist/accessory/FrontLoadWasherAccessory.js.map +1 -1
  27. package/dist/accessory/GasWaterHeaterAccessory.d.ts +51 -52
  28. package/dist/accessory/GasWaterHeaterAccessory.js +217 -216
  29. package/dist/accessory/GasWaterHeaterAccessory.js.map +1 -1
  30. package/dist/accessory/{HeatPumpWifiControllerAccessory.d.ts → HeatPumpWiFiControllerAccessory.d.ts} +34 -35
  31. package/dist/accessory/{HeatPumpWifiControllerAccessory.js → HeatPumpWiFiControllerAccessory.js} +55 -36
  32. package/dist/accessory/HeatPumpWiFiControllerAccessory.js.map +1 -0
  33. package/dist/core/MideaCloud.d.ts +34 -36
  34. package/dist/core/MideaCloud.js +349 -350
  35. package/dist/core/MideaCloud.js.map +1 -1
  36. package/dist/core/MideaConstants.d.ts +51 -52
  37. package/dist/core/MideaConstants.js +56 -59
  38. package/dist/core/MideaConstants.js.map +1 -1
  39. package/dist/core/MideaDevice.d.ts +75 -78
  40. package/dist/core/MideaDevice.js +430 -420
  41. package/dist/core/MideaDevice.js.map +1 -1
  42. package/dist/core/MideaDiscover.d.ts +34 -36
  43. package/dist/core/MideaDiscover.js +208 -212
  44. package/dist/core/MideaDiscover.js.map +1 -1
  45. package/dist/core/MideaMessage.d.ts +75 -76
  46. package/dist/core/MideaMessage.js +185 -184
  47. package/dist/core/MideaMessage.js.map +1 -1
  48. package/dist/core/MideaPacketBuilder.d.ts +9 -11
  49. package/dist/core/MideaPacketBuilder.js +60 -60
  50. package/dist/core/MideaPacketBuilder.js.map +1 -1
  51. package/dist/core/MideaSecurity.d.ts +62 -64
  52. package/dist/core/MideaSecurity.js +241 -251
  53. package/dist/core/MideaSecurity.js.map +1 -1
  54. package/dist/core/MideaUtils.d.ts +31 -33
  55. package/dist/core/MideaUtils.js +178 -181
  56. package/dist/core/MideaUtils.js.map +1 -1
  57. package/dist/devices/DeviceFactory.d.ts +14 -15
  58. package/dist/devices/DeviceFactory.js +34 -40
  59. package/dist/devices/DeviceFactory.js.map +1 -1
  60. package/dist/devices/a1/MideaA1Device.d.ts +75 -77
  61. package/dist/devices/a1/MideaA1Device.js +142 -145
  62. package/dist/devices/a1/MideaA1Device.js.map +1 -1
  63. package/dist/devices/a1/MideaA1Message.d.ts +39 -41
  64. package/dist/devices/a1/MideaA1Message.js +219 -198
  65. package/dist/devices/a1/MideaA1Message.js.map +1 -1
  66. package/dist/devices/ac/MideaACDevice.d.ts +105 -107
  67. package/dist/devices/ac/MideaACDevice.js +417 -400
  68. package/dist/devices/ac/MideaACDevice.js.map +1 -1
  69. package/dist/devices/ac/MideaACMessage.d.ts +97 -96
  70. package/dist/devices/ac/MideaACMessage.js +724 -621
  71. package/dist/devices/ac/MideaACMessage.js.map +1 -1
  72. package/dist/devices/c3/MideaC3Device.d.ts +73 -75
  73. package/dist/devices/c3/MideaC3Device.js +249 -255
  74. package/dist/devices/c3/MideaC3Device.js.map +1 -1
  75. package/dist/devices/c3/MideaC3Message.d.ts +81 -80
  76. package/dist/devices/c3/MideaC3Message.js +190 -152
  77. package/dist/devices/c3/MideaC3Message.js.map +1 -1
  78. package/dist/devices/db/MideaDBDevice.d.ts +28 -30
  79. package/dist/devices/db/MideaDBDevice.js +94 -100
  80. package/dist/devices/db/MideaDBDevice.js.map +1 -1
  81. package/dist/devices/db/MideaDBMessage.d.ts +31 -33
  82. package/dist/devices/db/MideaDBMessage.js +101 -101
  83. package/dist/devices/db/MideaDBMessage.js.map +1 -1
  84. package/dist/devices/e1/MideaE1Device.d.ts +55 -57
  85. package/dist/devices/e1/MideaE1Device.js +122 -128
  86. package/dist/devices/e1/MideaE1Device.js.map +1 -1
  87. package/dist/devices/e1/MideaE1Message.d.ts +27 -29
  88. package/dist/devices/e1/MideaE1Message.js +128 -107
  89. package/dist/devices/e1/MideaE1Message.js.map +1 -1
  90. package/dist/devices/e2/MideaE2Device.d.ts +43 -45
  91. package/dist/devices/e2/MideaE2Device.js +124 -129
  92. package/dist/devices/e2/MideaE2Device.js.map +1 -1
  93. package/dist/devices/e2/MideaE2Message.d.ts +34 -34
  94. package/dist/devices/e2/MideaE2Message.js +143 -132
  95. package/dist/devices/e2/MideaE2Message.js.map +1 -1
  96. package/dist/devices/e3/MideaE3Device.d.ts +42 -44
  97. package/dist/devices/e3/MideaE3Device.js +132 -137
  98. package/dist/devices/e3/MideaE3Device.js.map +1 -1
  99. package/dist/devices/e3/MideaE3Message.d.ts +51 -52
  100. package/dist/devices/e3/MideaE3Message.js +144 -136
  101. package/dist/devices/e3/MideaE3Message.js.map +1 -1
  102. package/dist/devices/fa/MideaFADevice.d.ts +35 -37
  103. package/dist/devices/fa/MideaFADevice.js +102 -106
  104. package/dist/devices/fa/MideaFADevice.js.map +1 -1
  105. package/dist/devices/fa/MideaFAMessage.d.ts +38 -39
  106. package/dist/devices/fa/MideaFAMessage.js +108 -98
  107. package/dist/devices/fa/MideaFAMessage.js.map +1 -1
  108. package/dist/index.d.ts +6 -7
  109. package/dist/index.js +8 -6
  110. package/dist/index.js.map +1 -1
  111. package/dist/platform.d.ts +61 -61
  112. package/dist/platform.js +232 -212
  113. package/dist/platform.js.map +1 -1
  114. package/dist/platformUtils.d.ts +116 -117
  115. package/dist/platformUtils.js +107 -110
  116. package/dist/platformUtils.js.map +1 -1
  117. package/dist/settings.d.ts +8 -9
  118. package/dist/settings.js +8 -11
  119. package/dist/settings.js.map +1 -1
  120. package/docs/download_lua.md +9 -0
  121. package/eslint.config.js +43 -0
  122. package/homebridge-ui/public/js/bootstrap.min.js +1179 -1
  123. package/homebridge-ui/server.js +157 -84
  124. package/package.json +21 -31
  125. package/.eslintignore +0 -3
  126. package/.husky/pre-commit +0 -5
  127. package/.prettierrc +0 -19
  128. package/dist/accessory/AccessoryFactory.d.ts.map +0 -1
  129. package/dist/accessory/AirConditionerAccessory.d.ts.map +0 -1
  130. package/dist/accessory/BaseAccessory.d.ts.map +0 -1
  131. package/dist/accessory/DehumidifierAccessory.d.ts.map +0 -1
  132. package/dist/accessory/DishwasherAccessory.d.ts.map +0 -1
  133. package/dist/accessory/ElectricWaterHeaterAccessory.d.ts.map +0 -1
  134. package/dist/accessory/FanAccessory.d.ts.map +0 -1
  135. package/dist/accessory/FrontLoadWasherAccessory.d.ts.map +0 -1
  136. package/dist/accessory/GasWaterHeaterAccessory.d.ts.map +0 -1
  137. package/dist/accessory/HeatPumpWifiControllerAccessory.d.ts.map +0 -1
  138. package/dist/accessory/HeatPumpWifiControllerAccessory.js.map +0 -1
  139. package/dist/core/MideaCloud.d.ts.map +0 -1
  140. package/dist/core/MideaConstants.d.ts.map +0 -1
  141. package/dist/core/MideaDevice.d.ts.map +0 -1
  142. package/dist/core/MideaDiscover.d.ts.map +0 -1
  143. package/dist/core/MideaMessage.d.ts.map +0 -1
  144. package/dist/core/MideaPacketBuilder.d.ts.map +0 -1
  145. package/dist/core/MideaSecurity.d.ts.map +0 -1
  146. package/dist/core/MideaUtils.d.ts.map +0 -1
  147. package/dist/devices/DeviceFactory.d.ts.map +0 -1
  148. package/dist/devices/a1/MideaA1Device.d.ts.map +0 -1
  149. package/dist/devices/a1/MideaA1Message.d.ts.map +0 -1
  150. package/dist/devices/ac/MideaACDevice.d.ts.map +0 -1
  151. package/dist/devices/ac/MideaACMessage.d.ts.map +0 -1
  152. package/dist/devices/c3/MideaC3Device.d.ts.map +0 -1
  153. package/dist/devices/c3/MideaC3Message.d.ts.map +0 -1
  154. package/dist/devices/db/MideaDBDevice.d.ts.map +0 -1
  155. package/dist/devices/db/MideaDBMessage.d.ts.map +0 -1
  156. package/dist/devices/e1/MideaE1Device.d.ts.map +0 -1
  157. package/dist/devices/e1/MideaE1Message.d.ts.map +0 -1
  158. package/dist/devices/e2/MideaE2Device.d.ts.map +0 -1
  159. package/dist/devices/e2/MideaE2Message.d.ts.map +0 -1
  160. package/dist/devices/e3/MideaE3Device.d.ts.map +0 -1
  161. package/dist/devices/e3/MideaE3Message.d.ts.map +0 -1
  162. package/dist/devices/fa/MideaFADevice.d.ts.map +0 -1
  163. package/dist/devices/fa/MideaFAMessage.d.ts.map +0 -1
  164. package/dist/index.d.ts.map +0 -1
  165. package/dist/platform.d.ts.map +0 -1
  166. package/dist/platformUtils.d.ts.map +0 -1
  167. package/dist/settings.d.ts.map +0 -1
@@ -1,129 +1,123 @@
1
- "use strict";
2
- /***********************************************************************
3
- * Midea Dishwasher Device 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 MideaE1Message_1 = require("./MideaE1Message");
16
- class MideaE1Device extends MideaDevice_1.default {
17
- /*********************************************************************
18
- * Constructor initializes all the attributes. We set some to invalid
19
- * values so that they are detected as "changed" on the first status
20
- * refresh... and passed back to the Homebridge/HomeKit accessory callback
21
- * function to set their initial values.
22
- */
23
- constructor(logger, device_info, config, deviceConfig) {
24
- super(logger, device_info, config, deviceConfig);
25
- this.attributes = {
26
- POWER: false,
27
- STATUS: undefined,
28
- MODE: 0,
29
- ADDITIONAL: 0,
30
- DOOR: false,
31
- RINSE_AID: false,
32
- SALT: false,
33
- START_PAUSE: false,
34
- START: false,
35
- CHILD_LOCK: false,
36
- UV: false,
37
- DRY: false,
38
- DRY_STATUS: false,
39
- STORAGE: false,
40
- STORAGE_STATUS: false,
41
- TIME_REMAINING: undefined,
42
- PROGRESS: undefined,
43
- STORAGE_REMAINING: undefined,
44
- TEMPERATURE: undefined,
45
- HUMIDITY: undefined,
46
- WATERSWITCH: false,
47
- WATER_LACK: false,
48
- ERROR_CODE: undefined,
49
- SOFTWATER: 0,
50
- WRONG_OPERATION: undefined,
51
- BRIGHT: undefined,
52
- };
53
- }
54
- build_query() {
55
- return [new MideaE1Message_1.MessageQuery(this.device_protocol_version)];
56
- }
57
- process_message(msg) {
58
- const message = new MideaE1Message_1.MessageE1Response(msg);
59
- if (this.verbose) {
60
- this.logger.debug(`[${this.name}] Body:\n${JSON.stringify(message.body)}`);
61
- }
62
- const changed = {};
63
- for (const status of Object.keys(this.attributes)) {
64
- const value = message.get_body_attribute(status.toLowerCase());
65
- if (value !== undefined) {
66
- if (this.attributes[status] !== value) {
67
- // Track only those attributes that change value. So when we send to the Homebridge /
68
- // HomeKit accessory we only update values that change. First time through this
69
- // should be most/all attributes having initialized them to invalid values.
70
- this.logger.debug(`[${this.name}] Value for ${status} changed from '${this.attributes[status]}' to '${value}'`);
71
- changed[status] = value;
72
- }
73
- this.attributes[status] = value;
74
- }
75
- }
76
- // Now we update Homebridge / Homekit accessory
77
- if (Object.keys(changed).length > 0) {
78
- this.update(changed);
79
- }
80
- else {
81
- this.logger.debug(`[${this.name}] Status unchanged`);
82
- }
83
- }
84
- async set_attribute(attributes) {
85
- var _a, _b, _c;
86
- const messageToSend = {
87
- POWER: undefined,
88
- CHILD_LOCK: undefined,
89
- STORAGE: undefined,
90
- };
91
- try {
92
- for (const [k, v] of Object.entries(attributes)) {
93
- if (v === this.attributes[k]) {
94
- this.logger.info(`[${this.name}] Attribute ${k} already set to ${v}`);
95
- continue;
96
- }
97
- this.logger.info(`[${this.name}] Set device attribute ${k} to: ${v}`);
98
- this.attributes[k] = v;
99
- if (k === 'POWER') {
100
- (_a = messageToSend.POWER) !== null && _a !== void 0 ? _a : (messageToSend.POWER = new MideaE1Message_1.MessagePower(this.device_protocol_version));
101
- messageToSend.POWER.power = v;
102
- }
103
- else if (k === 'CHILD_LOCK') {
104
- (_b = messageToSend.CHILD_LOCK) !== null && _b !== void 0 ? _b : (messageToSend.CHILD_LOCK = new MideaE1Message_1.MessageLock(this.device_protocol_version));
105
- messageToSend.CHILD_LOCK.lock = v;
106
- }
107
- else if (k === 'STORAGE') {
108
- (_c = messageToSend.STORAGE) !== null && _c !== void 0 ? _c : (messageToSend.STORAGE = new MideaE1Message_1.MessageStorage(this.device_protocol_version));
109
- messageToSend.STORAGE.storage = v;
110
- }
111
- }
112
- for (const [k, v] of Object.entries(messageToSend)) {
113
- if (v !== undefined) {
114
- this.logger.debug(`[${this.name}] Set message ${k}:\n${JSON.stringify(v)}`);
115
- await this.build_send(v);
116
- }
117
- }
118
- }
119
- catch (err) {
120
- const msg = err instanceof Error ? err.stack : err;
121
- this.logger.debug(`[${this.name}] Error in set_attribute (${this.ip}:${this.port}):\n${msg}`);
122
- }
123
- }
124
- set_subtype() {
125
- this.logger.debug('No subtype for E1 device');
126
- }
127
- }
128
- exports.default = MideaE1Device;
1
+ /***********************************************************************
2
+ * Midea Dishwasher 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
+ import MideaDevice from '../../core/MideaDevice.js';
10
+ import { MessageE1Response, MessageLock, MessagePower, MessageQuery, MessageStorage } from './MideaE1Message.js';
11
+ export default class MideaE1Device extends MideaDevice {
12
+ attributes;
13
+ /*********************************************************************
14
+ * Constructor initializes all the attributes. We set some to invalid
15
+ * values so that they are detected as "changed" on the first status
16
+ * refresh... and passed back to the Homebridge/HomeKit accessory callback
17
+ * function to set their initial values.
18
+ */
19
+ constructor(logger, device_info, config, deviceConfig) {
20
+ super(logger, device_info, config, deviceConfig);
21
+ this.attributes = {
22
+ POWER: false,
23
+ STATUS: undefined,
24
+ MODE: 0,
25
+ ADDITIONAL: 0,
26
+ DOOR: false,
27
+ RINSE_AID: false,
28
+ SALT: false,
29
+ START_PAUSE: false,
30
+ START: false,
31
+ CHILD_LOCK: false,
32
+ UV: false,
33
+ DRY: false,
34
+ DRY_STATUS: false,
35
+ STORAGE: false,
36
+ STORAGE_STATUS: false,
37
+ TIME_REMAINING: undefined,
38
+ PROGRESS: undefined,
39
+ STORAGE_REMAINING: undefined,
40
+ TEMPERATURE: undefined,
41
+ HUMIDITY: undefined,
42
+ WATERSWITCH: false,
43
+ WATER_LACK: false,
44
+ ERROR_CODE: undefined,
45
+ SOFTWATER: 0,
46
+ WRONG_OPERATION: undefined,
47
+ BRIGHT: undefined,
48
+ };
49
+ }
50
+ build_query() {
51
+ return [new MessageQuery(this.device_protocol_version)];
52
+ }
53
+ process_message(msg) {
54
+ const message = new MessageE1Response(msg);
55
+ if (this.verbose) {
56
+ this.logger.debug(`[${this.name}] Body:\n${JSON.stringify(message.body)}`);
57
+ }
58
+ const changed = {};
59
+ for (const status of Object.keys(this.attributes)) {
60
+ const value = message.get_body_attribute(status.toLowerCase());
61
+ if (value !== undefined) {
62
+ if (this.attributes[status] !== value) {
63
+ // Track only those attributes that change value. So when we send to the Homebridge /
64
+ // HomeKit accessory we only update values that change. First time through this
65
+ // should be most/all attributes having initialized them to invalid values.
66
+ this.logger.debug(`[${this.name}] Value for ${status} changed from '${this.attributes[status]}' to '${value}'`);
67
+ changed[status] = value;
68
+ }
69
+ this.attributes[status] = value;
70
+ }
71
+ }
72
+ // Now we update Homebridge / Homekit accessory
73
+ if (Object.keys(changed).length > 0) {
74
+ this.update(changed);
75
+ }
76
+ else {
77
+ this.logger.debug(`[${this.name}] Status unchanged`);
78
+ }
79
+ }
80
+ async set_attribute(attributes) {
81
+ const messageToSend = {
82
+ POWER: undefined,
83
+ CHILD_LOCK: undefined,
84
+ STORAGE: undefined,
85
+ };
86
+ try {
87
+ for (const [k, v] of Object.entries(attributes)) {
88
+ if (v === this.attributes[k]) {
89
+ this.logger.info(`[${this.name}] Attribute ${k} already set to ${v}`);
90
+ continue;
91
+ }
92
+ this.logger.info(`[${this.name}] Set device attribute ${k} to: ${v}`);
93
+ this.attributes[k] = v;
94
+ if (k === 'POWER') {
95
+ messageToSend.POWER ??= new MessagePower(this.device_protocol_version);
96
+ messageToSend.POWER.power = v;
97
+ }
98
+ else if (k === 'CHILD_LOCK') {
99
+ messageToSend.CHILD_LOCK ??= new MessageLock(this.device_protocol_version);
100
+ messageToSend.CHILD_LOCK.lock = v;
101
+ }
102
+ else if (k === 'STORAGE') {
103
+ messageToSend.STORAGE ??= new MessageStorage(this.device_protocol_version);
104
+ messageToSend.STORAGE.storage = v;
105
+ }
106
+ }
107
+ for (const [k, v] of Object.entries(messageToSend)) {
108
+ if (v !== undefined) {
109
+ this.logger.debug(`[${this.name}] Set message ${k}:\n${JSON.stringify(v)}`);
110
+ await this.build_send(v);
111
+ }
112
+ }
113
+ }
114
+ catch (err) {
115
+ const msg = err instanceof Error ? err.stack : err;
116
+ this.logger.debug(`[${this.name}] Error in set_attribute (${this.ip}:${this.port}):\n${msg}`);
117
+ }
118
+ }
119
+ set_subtype() {
120
+ this.logger.debug('No subtype for E1 device');
121
+ }
122
+ }
129
123
  //# sourceMappingURL=MideaE1Device.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MideaE1Device.js","sourceRoot":"","sources":["../../../src/devices/e1/MideaE1Device.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MideaE1Device.js","sourceRoot":"","sources":["../../../src/devices/e1/MideaE1Device.ts"],"names":[],"mappings":"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"}
@@ -1,29 +1,27 @@
1
- /// <reference types="node" />
2
- import { MessageRequest, MessageResponse, MessageType } from '../../core/MideaMessage';
3
- declare abstract class MessageE1Base extends MessageRequest {
4
- constructor(device_protocol_version: number, message_type: MessageType, body_type: number);
5
- }
6
- export declare class MessagePower extends MessageE1Base {
7
- power: boolean;
8
- constructor(device_protocol_version: number);
9
- get _body(): Buffer;
10
- }
11
- export declare class MessageLock extends MessageE1Base {
12
- lock: boolean;
13
- constructor(device_protocol_version: number);
14
- get _body(): Buffer;
15
- }
16
- export declare class MessageStorage extends MessageE1Base {
17
- storage: boolean;
18
- constructor(device_protocol_version: number);
19
- get _body(): Buffer;
20
- }
21
- export declare class MessageQuery extends MessageE1Base {
22
- constructor(device_protocol_version: number);
23
- get _body(): Buffer;
24
- }
25
- export declare class MessageE1Response extends MessageResponse {
26
- constructor(message: Buffer);
27
- }
28
- export {};
29
- //# sourceMappingURL=MideaE1Message.d.ts.map
1
+ import { MessageRequest, MessageResponse, MessageType } from '../../core/MideaMessage.js';
2
+ declare abstract class MessageE1Base extends MessageRequest {
3
+ constructor(device_protocol_version: number, message_type: MessageType, body_type: number);
4
+ }
5
+ export declare class MessagePower extends MessageE1Base {
6
+ power: boolean;
7
+ constructor(device_protocol_version: number);
8
+ get _body(): Buffer;
9
+ }
10
+ export declare class MessageLock extends MessageE1Base {
11
+ lock: boolean;
12
+ constructor(device_protocol_version: number);
13
+ get _body(): Buffer;
14
+ }
15
+ export declare class MessageStorage extends MessageE1Base {
16
+ storage: boolean;
17
+ constructor(device_protocol_version: number);
18
+ get _body(): Buffer;
19
+ }
20
+ export declare class MessageQuery extends MessageE1Base {
21
+ constructor(device_protocol_version: number);
22
+ get _body(): Buffer;
23
+ }
24
+ export declare class MessageE1Response extends MessageResponse {
25
+ constructor(message: Buffer);
26
+ }
27
+ export {};
@@ -1,108 +1,129 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MessageE1Response = exports.MessageQuery = exports.MessageStorage = exports.MessageLock = exports.MessagePower = void 0;
4
- /***********************************************************************
5
- * Midea Dishwasher Device message handler class
6
- *
7
- * Copyright (c) 2024 Kovalovszky Patrik, https://github.com/kovapatrik
8
- *
9
- * With thanks to https://github.com/georgezhao2010/midea_ac_lan
10
- *
11
- */
12
- const MideaConstants_1 = require("../../core/MideaConstants");
13
- const MideaMessage_1 = require("../../core/MideaMessage");
14
- class MessageE1Base extends MideaMessage_1.MessageRequest {
15
- constructor(device_protocol_version, message_type, body_type) {
16
- super(MideaConstants_1.DeviceType.DISHWASHER, message_type, body_type, device_protocol_version);
17
- }
18
- }
19
- class MessagePower extends MessageE1Base {
20
- constructor(device_protocol_version) {
21
- super(device_protocol_version, MideaMessage_1.MessageType.SET, 0x08);
22
- this.power = false;
23
- }
24
- get _body() {
25
- const power = this.power ? 0x01 : 0x00;
26
- return Buffer.from([power, 0x00, 0x00, 0x00]);
27
- }
28
- }
29
- exports.MessagePower = MessagePower;
30
- class MessageLock extends MessageE1Base {
31
- constructor(device_protocol_version) {
32
- super(device_protocol_version, MideaMessage_1.MessageType.SET, 0x83);
33
- this.lock = false;
34
- }
35
- get _body() {
36
- const lock = this.lock ? 0x03 : 0x04;
37
- return Buffer.concat([Buffer.from([lock]), Buffer.alloc(36)]);
38
- }
39
- }
40
- exports.MessageLock = MessageLock;
41
- class MessageStorage extends MessageE1Base {
42
- constructor(device_protocol_version) {
43
- super(device_protocol_version, MideaMessage_1.MessageType.SET, 0x14);
44
- this.storage = false;
45
- }
46
- get _body() {
47
- const storage = this.storage ? 0x01 : 0x00;
48
- return Buffer.concat([Buffer.from([0x00, 0x00, 0x00, storage]), Buffer.alloc(6, 0xff), Buffer.alloc(27)]);
49
- }
50
- }
51
- exports.MessageStorage = MessageStorage;
52
- class MessageQuery extends MessageE1Base {
53
- constructor(device_protocol_version) {
54
- super(device_protocol_version, MideaMessage_1.MessageType.QUERY, 0x00);
55
- }
56
- get _body() {
57
- return Buffer.alloc(0);
58
- }
59
- }
60
- exports.MessageQuery = MessageQuery;
61
- class E1GeneralMessageBody extends MideaMessage_1.MessageBody {
62
- constructor(body) {
63
- super(body);
64
- this.power = body[1] > 0;
65
- this.status = body[1];
66
- this.mode = body[2];
67
- this.additional = body[3];
68
- this.door = (body[5] & 0x01) === 0; // 0: closed, 1: open
69
- this.rinse_aid = (body[5] & 0x02) > 0; // 0: enough, 1: shortage
70
- this.salt = (body[5] & 0x04) > 0; // 0: enough, 1: shortage
71
- this.start_pause = (body[5] & 0x08) > 0;
72
- this.start = false;
73
- if (this.start_pause) {
74
- this.start = true;
75
- }
76
- else if ([2, 3].includes(this.status)) {
77
- this.start = false;
78
- }
79
- this.child_lock = (body[5] & 0x10) > 0;
80
- this.uv = (body[4] & 0x2) > 0;
81
- this.dry = (body[4] & 0x10) > 0;
82
- this.dry_status = (body[4] & 0x20) > 0;
83
- this.storage = (body[5] & 0x20) > 0;
84
- this.storage_status = (body[5] & 0x40) > 0;
85
- this.time_remaining = body[6];
86
- this.progress = body[9];
87
- this.storage_remaining = body.length > 18 ? body[18] : undefined;
88
- this.temperature = body[11];
89
- this.humidity = body.length > 33 ? body[33] : undefined;
90
- this.waterswitch = (body[4] & 0x4) > 0;
91
- this.water_lack = (body[5] & 0x80) > 0;
92
- this.error_code = body[10];
93
- this.softwater = body[13];
94
- this.wrong_operation = body[16];
95
- this.bright = body.length > 24 ? body[24] : undefined;
96
- }
97
- }
98
- class MessageE1Response extends MideaMessage_1.MessageResponse {
99
- constructor(message) {
100
- super(message);
101
- if ((this.message_type === MideaMessage_1.MessageType.SET && this.body_type >= 0 && this.body_type <= 7) ||
102
- ([MideaMessage_1.MessageType.QUERY, MideaMessage_1.MessageType.NOTIFY1].includes(this.message_type) && this.body_type === 0x00)) {
103
- this.set_body(new E1GeneralMessageBody(this.body));
104
- }
105
- }
106
- }
107
- exports.MessageE1Response = MessageE1Response;
1
+ /***********************************************************************
2
+ * Midea Dishwasher Device message handler 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
+ import { DeviceType } from '../../core/MideaConstants.js';
10
+ import { MessageBody, MessageRequest, MessageResponse, MessageType } from '../../core/MideaMessage.js';
11
+ class MessageE1Base extends MessageRequest {
12
+ constructor(device_protocol_version, message_type, body_type) {
13
+ super(DeviceType.DISHWASHER, message_type, body_type, device_protocol_version);
14
+ }
15
+ }
16
+ export class MessagePower extends MessageE1Base {
17
+ power;
18
+ constructor(device_protocol_version) {
19
+ super(device_protocol_version, MessageType.SET, 0x08);
20
+ this.power = false;
21
+ }
22
+ get _body() {
23
+ const power = this.power ? 0x01 : 0x00;
24
+ return Buffer.from([power, 0x00, 0x00, 0x00]);
25
+ }
26
+ }
27
+ export class MessageLock extends MessageE1Base {
28
+ lock;
29
+ constructor(device_protocol_version) {
30
+ super(device_protocol_version, MessageType.SET, 0x83);
31
+ this.lock = false;
32
+ }
33
+ get _body() {
34
+ const lock = this.lock ? 0x03 : 0x04;
35
+ return Buffer.concat([Buffer.from([lock]), Buffer.alloc(36)]);
36
+ }
37
+ }
38
+ export class MessageStorage extends MessageE1Base {
39
+ storage;
40
+ constructor(device_protocol_version) {
41
+ super(device_protocol_version, MessageType.SET, 0x14);
42
+ this.storage = false;
43
+ }
44
+ get _body() {
45
+ const storage = this.storage ? 0x01 : 0x00;
46
+ return Buffer.concat([Buffer.from([0x00, 0x00, 0x00, storage]), Buffer.alloc(6, 0xff), Buffer.alloc(27)]);
47
+ }
48
+ }
49
+ export class MessageQuery extends MessageE1Base {
50
+ constructor(device_protocol_version) {
51
+ super(device_protocol_version, MessageType.QUERY, 0x00);
52
+ }
53
+ get _body() {
54
+ return Buffer.alloc(0);
55
+ }
56
+ }
57
+ class E1GeneralMessageBody extends MessageBody {
58
+ power;
59
+ status;
60
+ mode;
61
+ additional;
62
+ door;
63
+ rinse_aid;
64
+ salt;
65
+ start_pause;
66
+ start;
67
+ child_lock;
68
+ uv;
69
+ dry;
70
+ dry_status;
71
+ storage;
72
+ storage_status;
73
+ time_remaining;
74
+ progress;
75
+ storage_remaining;
76
+ temperature;
77
+ humidity;
78
+ waterswitch;
79
+ water_lack;
80
+ error_code;
81
+ softwater;
82
+ wrong_operation;
83
+ bright;
84
+ constructor(body) {
85
+ super(body);
86
+ this.power = body[1] > 0;
87
+ this.status = body[1];
88
+ this.mode = body[2];
89
+ this.additional = body[3];
90
+ this.door = (body[5] & 0x01) === 0; // 0: closed, 1: open
91
+ this.rinse_aid = (body[5] & 0x02) > 0; // 0: enough, 1: shortage
92
+ this.salt = (body[5] & 0x04) > 0; // 0: enough, 1: shortage
93
+ this.start_pause = (body[5] & 0x08) > 0;
94
+ this.start = false;
95
+ if (this.start_pause) {
96
+ this.start = true;
97
+ }
98
+ else if ([2, 3].includes(this.status)) {
99
+ this.start = false;
100
+ }
101
+ this.child_lock = (body[5] & 0x10) > 0;
102
+ this.uv = (body[4] & 0x2) > 0;
103
+ this.dry = (body[4] & 0x10) > 0;
104
+ this.dry_status = (body[4] & 0x20) > 0;
105
+ this.storage = (body[5] & 0x20) > 0;
106
+ this.storage_status = (body[5] & 0x40) > 0;
107
+ this.time_remaining = body[6];
108
+ this.progress = body[9];
109
+ this.storage_remaining = body.length > 18 ? body[18] : undefined;
110
+ this.temperature = body[11];
111
+ this.humidity = body.length > 33 ? body[33] : undefined;
112
+ this.waterswitch = (body[4] & 0x4) > 0;
113
+ this.water_lack = (body[5] & 0x80) > 0;
114
+ this.error_code = body[10];
115
+ this.softwater = body[13];
116
+ this.wrong_operation = body[16];
117
+ this.bright = body.length > 24 ? body[24] : undefined;
118
+ }
119
+ }
120
+ export class MessageE1Response extends MessageResponse {
121
+ constructor(message) {
122
+ super(message);
123
+ if ((this.message_type === MessageType.SET && this.body_type >= 0 && this.body_type <= 7) ||
124
+ ([MessageType.QUERY, MessageType.NOTIFY1].includes(this.message_type) && this.body_type === 0x00)) {
125
+ this.set_body(new E1GeneralMessageBody(this.body));
126
+ }
127
+ }
128
+ }
108
129
  //# sourceMappingURL=MideaE1Message.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MideaE1Message.js","sourceRoot":"","sources":["../../../src/devices/e1/MideaE1Message.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MideaE1Message.js","sourceRoot":"","sources":["../../../src/devices/e1/MideaE1Message.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEvG,MAAe,aAAc,SAAQ,cAAc;IACjD,YAAY,uBAA+B,EAAE,YAAyB,EAAE,SAAiB;QACvF,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,uBAAuB,CAAC,CAAC;IACjF,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,aAAa;IAC7C,KAAK,CAAU;IAEf,YAAY,uBAA+B;QACzC,KAAK,CAAC,uBAAuB,EAAE,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,IAAI,KAAK;QACP,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACvC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAChD,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,aAAa;IAC5C,IAAI,CAAU;IAEd,YAAY,uBAA+B;QACzC,KAAK,CAAC,uBAAuB,EAAE,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,KAAK;QACP,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACrC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,aAAa;IAC/C,OAAO,CAAU;IAEjB,YAAY,uBAA+B;QACzC,KAAK,CAAC,uBAAuB,EAAE,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,IAAI,KAAK;QACP,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5G,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,aAAa;IAC7C,YAAY,uBAA+B;QACzC,KAAK,CAAC,uBAAuB,EAAE,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,KAAK;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;CACF;AAED,MAAM,oBAAqB,SAAQ,WAAW;IAC5C,KAAK,CAAU;IACf,MAAM,CAAU;IAChB,IAAI,CAAS;IACb,UAAU,CAAS;IACnB,IAAI,CAAU;IACd,SAAS,CAAU;IACnB,IAAI,CAAU;IACd,WAAW,CAAU;IACrB,KAAK,CAAU;IACf,UAAU,CAAU;IACpB,EAAE,CAAU;IACZ,GAAG,CAAU;IACb,UAAU,CAAU;IACpB,OAAO,CAAU;IACjB,cAAc,CAAU;IACxB,cAAc,CAAU;IACxB,QAAQ,CAAU;IAClB,iBAAiB,CAAU;IAC3B,WAAW,CAAU;IACrB,QAAQ,CAAU;IAClB,WAAW,CAAU;IACrB,UAAU,CAAU;IACpB,UAAU,CAAU;IACpB,SAAS,CAAS;IAClB,eAAe,CAAU;IACzB,MAAM,CAAU;IAEhB,YAAY,IAAY;QACtB,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,qBAAqB;QACzD,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,yBAAyB;QAChE,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,yBAAyB;QAC3D,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;aAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxD,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxD,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,eAAe;IACpD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IACE,CAAC,IAAI,CAAC,YAAY,KAAK,WAAW,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;YACrF,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,EACjG,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;CACF"}