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.
Files changed (77) hide show
  1. package/.eslintignore +3 -0
  2. package/.husky/pre-commit +4 -0
  3. package/.prettierrc +18 -0
  4. package/README.md +5 -0
  5. package/config.schema.json +48 -0
  6. package/dist/accessory/AccessoryFactory.d.ts +2 -1
  7. package/dist/accessory/AccessoryFactory.d.ts.map +1 -1
  8. package/dist/accessory/AccessoryFactory.js +3 -0
  9. package/dist/accessory/AccessoryFactory.js.map +1 -1
  10. package/dist/accessory/AirConditionerAccessory.d.ts +23 -0
  11. package/dist/accessory/AirConditionerAccessory.d.ts.map +1 -1
  12. package/dist/accessory/AirConditionerAccessory.js +122 -36
  13. package/dist/accessory/AirConditionerAccessory.js.map +1 -1
  14. package/dist/accessory/BaseAccessory.d.ts.map +1 -1
  15. package/dist/accessory/BaseAccessory.js +2 -16
  16. package/dist/accessory/BaseAccessory.js.map +1 -1
  17. package/dist/accessory/DehumidifierAccessory.d.ts +41 -0
  18. package/dist/accessory/DehumidifierAccessory.d.ts.map +1 -0
  19. package/dist/accessory/DehumidifierAccessory.js +294 -0
  20. package/dist/accessory/DehumidifierAccessory.js.map +1 -0
  21. package/dist/core/MideaCloud.d.ts +11 -0
  22. package/dist/core/MideaCloud.d.ts.map +1 -1
  23. package/dist/core/MideaCloud.js +106 -65
  24. package/dist/core/MideaCloud.js.map +1 -1
  25. package/dist/core/MideaConstants.d.ts +2 -1
  26. package/dist/core/MideaConstants.d.ts.map +1 -1
  27. package/dist/core/MideaConstants.js +12 -16
  28. package/dist/core/MideaConstants.js.map +1 -1
  29. package/dist/core/MideaDevice.d.ts +26 -8
  30. package/dist/core/MideaDevice.d.ts.map +1 -1
  31. package/dist/core/MideaDevice.js +130 -28
  32. package/dist/core/MideaDevice.js.map +1 -1
  33. package/dist/core/MideaDiscover.d.ts +21 -1
  34. package/dist/core/MideaDiscover.d.ts.map +1 -1
  35. package/dist/core/MideaDiscover.js +98 -20
  36. package/dist/core/MideaDiscover.js.map +1 -1
  37. package/dist/core/MideaMessage.d.ts.map +1 -1
  38. package/dist/core/MideaMessage.js +28 -11
  39. package/dist/core/MideaMessage.js.map +1 -1
  40. package/dist/core/MideaPacketBuilder.d.ts.map +1 -1
  41. package/dist/core/MideaPacketBuilder.js +15 -5
  42. package/dist/core/MideaPacketBuilder.js.map +1 -1
  43. package/dist/core/MideaSecurity.d.ts +3 -1
  44. package/dist/core/MideaSecurity.d.ts.map +1 -1
  45. package/dist/core/MideaSecurity.js +41 -16
  46. package/dist/core/MideaSecurity.js.map +1 -1
  47. package/dist/core/MideaUtils.d.ts +21 -6
  48. package/dist/core/MideaUtils.d.ts.map +1 -1
  49. package/dist/core/MideaUtils.js +81 -83
  50. package/dist/core/MideaUtils.js.map +1 -1
  51. package/dist/devices/DeviceFactory.d.ts +3 -2
  52. package/dist/devices/DeviceFactory.d.ts.map +1 -1
  53. package/dist/devices/DeviceFactory.js +5 -2
  54. package/dist/devices/DeviceFactory.js.map +1 -1
  55. package/dist/devices/a1/MideaA1Device.d.ts +77 -0
  56. package/dist/devices/a1/MideaA1Device.d.ts.map +1 -0
  57. package/dist/devices/a1/MideaA1Device.js +144 -0
  58. package/dist/devices/a1/MideaA1Device.js.map +1 -0
  59. package/dist/devices/a1/MideaA1Message.d.ts +41 -0
  60. package/dist/devices/a1/MideaA1Message.d.ts.map +1 -0
  61. package/dist/devices/a1/MideaA1Message.js +206 -0
  62. package/dist/devices/a1/MideaA1Message.js.map +1 -0
  63. package/dist/devices/ac/MideaACDevice.d.ts +21 -7
  64. package/dist/devices/ac/MideaACDevice.d.ts.map +1 -1
  65. package/dist/devices/ac/MideaACDevice.js +82 -30
  66. package/dist/devices/ac/MideaACDevice.js.map +1 -1
  67. package/dist/devices/ac/MideaACMessage.d.ts.map +1 -1
  68. package/dist/devices/ac/MideaACMessage.js +158 -82
  69. package/dist/devices/ac/MideaACMessage.js.map +1 -1
  70. package/dist/platform.d.ts +29 -5
  71. package/dist/platform.d.ts.map +1 -1
  72. package/dist/platform.js +151 -52
  73. package/dist/platform.js.map +1 -1
  74. package/dist/platformUtils.d.ts +6 -1
  75. package/dist/platformUtils.d.ts.map +1 -1
  76. package/dist/platformUtils.js.map +1 -1
  77. package/package.json +12 -5
@@ -1 +1 @@
1
- {"version":3,"file":"MideaUtils.d.ts","sourceRoot":"","sources":["../../src/core/MideaUtils.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAE7B,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,cAO1F;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,UAY1C;AAqCD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,UAarC;AAGD,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ;IAAU,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAzC,QAAQ,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM;IAE9D,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBnD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc;IA4BpD,IAAI,CAAC,IAAI,EAAE,MAAM;IAsCjB,OAAO;CAiCd"}
1
+ {"version":3,"file":"MideaUtils.d.ts","sourceRoot":"","sources":["../../src/core/MideaUtils.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,cAQvB;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,UAW1C;AAyBD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,UAarC;AAMD;;;;GAIG;AACH,qBAAa,aAAa;IAKtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,OAAO,CAAC,QAAQ,CAAS;IAClB,SAAS,EAAE,OAAO,CAAC;gBAGP,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO;IA2BtB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxD,UAAU,CAAC,CAAC,EAAE,MAAM;IAIpB,OAAO;IAKD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc;IA6BtD,IAAI;CAwClB"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PromiseSocket = exports.calculate = exports.strxor = exports.numberToUint8Array = void 0;
4
+ const net_1 = require("net");
4
5
  function numberToUint8Array(num, byte_length, endianness) {
5
6
  const arr = new Uint8Array(byte_length);
6
7
  for (let i = 0; i < byte_length; i++) {
@@ -22,38 +23,26 @@ function strxor(a, b) {
22
23
  }
23
24
  exports.strxor = strxor;
24
25
  const CRC8_854_TABLE = [
25
- 0x00, 0x5E, 0xBC, 0xE2, 0x61, 0x3F, 0xDD, 0x83,
26
- 0xC2, 0x9C, 0x7E, 0x20, 0xA3, 0xFD, 0x1F, 0x41,
27
- 0x9D, 0xC3, 0x21, 0x7F, 0xFC, 0xA2, 0x40, 0x1E,
28
- 0x5F, 0x01, 0xE3, 0xBD, 0x3E, 0x60, 0x82, 0xDC,
29
- 0x23, 0x7D, 0x9F, 0xC1, 0x42, 0x1C, 0xFE, 0xA0,
30
- 0xE1, 0xBF, 0x5D, 0x03, 0x80, 0xDE, 0x3C, 0x62,
31
- 0xBE, 0xE0, 0x02, 0x5C, 0xDF, 0x81, 0x63, 0x3D,
32
- 0x7C, 0x22, 0xC0, 0x9E, 0x1D, 0x43, 0xA1, 0xFF,
33
- 0x46, 0x18, 0xFA, 0xA4, 0x27, 0x79, 0x9B, 0xC5,
34
- 0x84, 0xDA, 0x38, 0x66, 0xE5, 0xBB, 0x59, 0x07,
35
- 0xDB, 0x85, 0x67, 0x39, 0xBA, 0xE4, 0x06, 0x58,
36
- 0x19, 0x47, 0xA5, 0xFB, 0x78, 0x26, 0xC4, 0x9A,
37
- 0x65, 0x3B, 0xD9, 0x87, 0x04, 0x5A, 0xB8, 0xE6,
38
- 0xA7, 0xF9, 0x1B, 0x45, 0xC6, 0x98, 0x7A, 0x24,
39
- 0xF8, 0xA6, 0x44, 0x1A, 0x99, 0xC7, 0x25, 0x7B,
40
- 0x3A, 0x64, 0x86, 0xD8, 0x5B, 0x05, 0xE7, 0xB9,
41
- 0x8C, 0xD2, 0x30, 0x6E, 0xED, 0xB3, 0x51, 0x0F,
42
- 0x4E, 0x10, 0xF2, 0xAC, 0x2F, 0x71, 0x93, 0xCD,
43
- 0x11, 0x4F, 0xAD, 0xF3, 0x70, 0x2E, 0xCC, 0x92,
44
- 0xD3, 0x8D, 0x6F, 0x31, 0xB2, 0xEC, 0x0E, 0x50,
45
- 0xAF, 0xF1, 0x13, 0x4D, 0xCE, 0x90, 0x72, 0x2C,
46
- 0x6D, 0x33, 0xD1, 0x8F, 0x0C, 0x52, 0xB0, 0xEE,
47
- 0x32, 0x6C, 0x8E, 0xD0, 0x53, 0x0D, 0xEF, 0xB1,
48
- 0xF0, 0xAE, 0x4C, 0x12, 0x91, 0xCF, 0x2D, 0x73,
49
- 0xCA, 0x94, 0x76, 0x28, 0xAB, 0xF5, 0x17, 0x49,
50
- 0x08, 0x56, 0xB4, 0xEA, 0x69, 0x37, 0xD5, 0x8B,
51
- 0x57, 0x09, 0xEB, 0xB5, 0x36, 0x68, 0x8A, 0xD4,
52
- 0x95, 0xCB, 0x29, 0x77, 0xF4, 0xAA, 0x48, 0x16,
53
- 0xE9, 0xB7, 0x55, 0x0B, 0x88, 0xD6, 0x34, 0x6A,
54
- 0x2B, 0x75, 0x97, 0xC9, 0x4A, 0x14, 0xF6, 0xA8,
55
- 0x74, 0x2A, 0xC8, 0x96, 0x15, 0x4B, 0xA9, 0xF7,
56
- 0xB6, 0xE8, 0x0A, 0x54, 0xD7, 0x89, 0x6B, 0x35,
26
+ 0x00, 0x5e, 0xbc, 0xe2, 0x61, 0x3f, 0xdd, 0x83, 0xc2, 0x9c, 0x7e, 0x20, 0xa3,
27
+ 0xfd, 0x1f, 0x41, 0x9d, 0xc3, 0x21, 0x7f, 0xfc, 0xa2, 0x40, 0x1e, 0x5f, 0x01,
28
+ 0xe3, 0xbd, 0x3e, 0x60, 0x82, 0xdc, 0x23, 0x7d, 0x9f, 0xc1, 0x42, 0x1c, 0xfe,
29
+ 0xa0, 0xe1, 0xbf, 0x5d, 0x03, 0x80, 0xde, 0x3c, 0x62, 0xbe, 0xe0, 0x02, 0x5c,
30
+ 0xdf, 0x81, 0x63, 0x3d, 0x7c, 0x22, 0xc0, 0x9e, 0x1d, 0x43, 0xa1, 0xff, 0x46,
31
+ 0x18, 0xfa, 0xa4, 0x27, 0x79, 0x9b, 0xc5, 0x84, 0xda, 0x38, 0x66, 0xe5, 0xbb,
32
+ 0x59, 0x07, 0xdb, 0x85, 0x67, 0x39, 0xba, 0xe4, 0x06, 0x58, 0x19, 0x47, 0xa5,
33
+ 0xfb, 0x78, 0x26, 0xc4, 0x9a, 0x65, 0x3b, 0xd9, 0x87, 0x04, 0x5a, 0xb8, 0xe6,
34
+ 0xa7, 0xf9, 0x1b, 0x45, 0xc6, 0x98, 0x7a, 0x24, 0xf8, 0xa6, 0x44, 0x1a, 0x99,
35
+ 0xc7, 0x25, 0x7b, 0x3a, 0x64, 0x86, 0xd8, 0x5b, 0x05, 0xe7, 0xb9, 0x8c, 0xd2,
36
+ 0x30, 0x6e, 0xed, 0xb3, 0x51, 0x0f, 0x4e, 0x10, 0xf2, 0xac, 0x2f, 0x71, 0x93,
37
+ 0xcd, 0x11, 0x4f, 0xad, 0xf3, 0x70, 0x2e, 0xcc, 0x92, 0xd3, 0x8d, 0x6f, 0x31,
38
+ 0xb2, 0xec, 0x0e, 0x50, 0xaf, 0xf1, 0x13, 0x4d, 0xce, 0x90, 0x72, 0x2c, 0x6d,
39
+ 0x33, 0xd1, 0x8f, 0x0c, 0x52, 0xb0, 0xee, 0x32, 0x6c, 0x8e, 0xd0, 0x53, 0x0d,
40
+ 0xef, 0xb1, 0xf0, 0xae, 0x4c, 0x12, 0x91, 0xcf, 0x2d, 0x73, 0xca, 0x94, 0x76,
41
+ 0x28, 0xab, 0xf5, 0x17, 0x49, 0x08, 0x56, 0xb4, 0xea, 0x69, 0x37, 0xd5, 0x8b,
42
+ 0x57, 0x09, 0xeb, 0xb5, 0x36, 0x68, 0x8a, 0xd4, 0x95, 0xcb, 0x29, 0x77, 0xf4,
43
+ 0xaa, 0x48, 0x16, 0xe9, 0xb7, 0x55, 0x0b, 0x88, 0xd6, 0x34, 0x6a, 0x2b, 0x75,
44
+ 0x97, 0xc9, 0x4a, 0x14, 0xf6, 0xa8, 0x74, 0x2a, 0xc8, 0x96, 0x15, 0x4b, 0xa9,
45
+ 0xf7, 0xb6, 0xe8, 0x0a, 0x54, 0xd7, 0x89, 0x6b, 0x35,
57
46
  ];
58
47
  function calculate(data) {
59
48
  let crc = 0;
@@ -70,32 +59,66 @@ function calculate(data) {
70
59
  return crc;
71
60
  }
72
61
  exports.calculate = calculate;
62
+ function formattedDate() {
63
+ return new Date().toISOString().replace(/T/, ', ').replace(/\..+/, '');
64
+ }
65
+ /*********************************************************************
66
+ * PromiseSocket
67
+ * A very basic implementation of promise-wrapped Socket
68
+ *
69
+ */
73
70
  class PromiseSocket {
74
- constructor(innerSok, logger) {
75
- this.innerSok = innerSok;
71
+ constructor(logger, verbose) {
76
72
  this.logger = logger;
73
+ this.verbose = verbose;
74
+ this.innerSok = new net_1.Socket();
75
+ this.destroyed = false;
76
+ this.innerSok.on('error', (e) => {
77
+ // Log the error
78
+ const msg = e instanceof Error ? e.stack : e;
79
+ if (this.verbose) {
80
+ this.logger.error(`[${formattedDate()}] [homebridge-midea-platform] Socket error:\n${msg}`);
81
+ }
82
+ // According to https://nodejs.org/api/net.html#event-error_1 the "close" event
83
+ // will be called immediately following an "error" event. So don't throw an error
84
+ // and handle the destory in the close event.
85
+ });
86
+ this.innerSok.on('close', async (hadError) => {
87
+ this.destroy();
88
+ // eslint-disable-next-line no-console
89
+ console.info(`[${formattedDate()}] [homebridge-midea-platform] Socket closed ${hadError ? 'with' : 'without'} error`);
90
+ });
77
91
  }
78
- connect(port, host) {
92
+ async connect(port, host) {
79
93
  return new Promise((resolve, reject) => {
80
94
  const errorHandler = (err) => {
81
- reject(err);
82
95
  removeListeners();
96
+ reject(err);
97
+ };
98
+ const removeListeners = () => {
99
+ this.innerSok.removeListener('error', errorHandler);
83
100
  };
84
101
  this.innerSok.connect(port, host, () => {
85
- resolve();
102
+ // This function is added as a "connect" listener so called
103
+ // on successful connection.
86
104
  removeListeners();
105
+ resolve();
87
106
  });
88
107
  this.innerSok.on('error', errorHandler);
89
- const removeListeners = () => {
90
- this.innerSok.removeListener('error', errorHandler);
91
- };
92
108
  });
93
109
  }
110
+ setTimeout(t) {
111
+ this.innerSok.setTimeout(t);
112
+ }
113
+ destroy() {
114
+ this.destroyed = true;
115
+ this.innerSok.destroy();
116
+ }
94
117
  async write(data, encoding) {
95
118
  return new Promise((resolve, reject) => {
96
119
  const errorHandler = (err) => {
97
- reject(err);
98
120
  removeListeners();
121
+ reject(err);
99
122
  };
100
123
  const removeListeners = () => {
101
124
  this.innerSok.removeListener('error', errorHandler);
@@ -103,83 +126,58 @@ class PromiseSocket {
103
126
  this.innerSok.on('error', errorHandler);
104
127
  try {
105
128
  this.innerSok.write(data, encoding, (err) => {
129
+ // This function is called when all data successfully sent
130
+ removeListeners();
106
131
  if (err) {
107
132
  reject(err);
108
- removeListeners();
109
- return;
110
133
  }
111
- resolve();
112
- removeListeners();
134
+ else {
135
+ resolve();
136
+ }
113
137
  });
114
138
  }
115
139
  catch (err) {
116
- reject(err);
117
140
  removeListeners();
141
+ reject(err);
118
142
  }
119
143
  });
120
144
  }
121
- async read(size) {
145
+ async read() {
122
146
  return new Promise((resolve, reject) => {
123
147
  let buf = Buffer.alloc(0);
124
148
  const dataHandler = (data) => {
125
149
  buf = Buffer.concat([buf, data]);
126
- if (buf.length >= size) {
127
- resolve(buf);
128
- removeListeners();
129
- }
150
+ removeListeners();
151
+ resolve(buf);
130
152
  };
131
153
  const timeoutHandler = () => {
132
- resolve(buf);
133
154
  removeListeners();
155
+ resolve(buf);
134
156
  };
135
157
  const endHandler = () => {
136
- resolve(buf);
137
158
  removeListeners();
159
+ resolve(buf);
138
160
  };
139
161
  const errorHandler = (err) => {
162
+ removeListeners();
140
163
  reject(err);
164
+ };
165
+ const closeHandler = () => {
141
166
  removeListeners();
167
+ resolve(buf);
142
168
  };
143
- this.innerSok.on('data', dataHandler);
144
- this.innerSok.on('timeout', timeoutHandler);
145
- this.innerSok.on('end', endHandler);
146
- this.innerSok.on('error', errorHandler);
147
169
  const removeListeners = () => {
170
+ this.innerSok.removeListener('close', closeHandler);
148
171
  this.innerSok.removeListener('data', dataHandler);
149
172
  this.innerSok.removeListener('timeout', timeoutHandler);
150
173
  this.innerSok.removeListener('end', endHandler);
151
174
  this.innerSok.removeListener('error', errorHandler);
152
175
  };
153
- });
154
- }
155
- async readAll() {
156
- return new Promise((resolve, reject) => {
157
- let buf = Buffer.alloc(0);
158
- const dataHandler = (data) => {
159
- buf = Buffer.concat([buf, data]);
160
- };
161
- const endHandler = () => {
162
- resolve(buf);
163
- removeListeners();
164
- };
165
- const errorHandler = (err) => {
166
- reject(err);
167
- removeListeners();
168
- };
169
- const timeoutHandler = () => {
170
- resolve(buf);
171
- removeListeners();
172
- };
176
+ this.innerSok.on('close', closeHandler);
173
177
  this.innerSok.on('data', dataHandler);
174
178
  this.innerSok.on('timeout', timeoutHandler);
175
179
  this.innerSok.on('end', endHandler);
176
180
  this.innerSok.on('error', errorHandler);
177
- const removeListeners = () => {
178
- this.innerSok.removeListener('data', dataHandler);
179
- this.innerSok.removeListener('timeout', timeoutHandler);
180
- this.innerSok.removeListener('end', endHandler);
181
- this.innerSok.removeListener('error', errorHandler);
182
- };
183
181
  });
184
182
  }
185
183
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MideaUtils.js","sourceRoot":"","sources":["../../src/core/MideaUtils.ts"],"names":[],"mappings":";;;AAIA,SAAgB,kBAAkB,CAAC,GAAW,EAAE,WAAmB,EAAE,UAAsB;IACzF,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;QACpC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QACnB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;KAC7B;IACD,OAAO,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AACpD,CAAC;AAPD,gDAOC;AAED,SAAgB,MAAM,CAAC,CAAS,EAAE,CAAS;IAEzC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;QACzB,MAAM,KAAK,CAAC,4CAA4C,CAAC,CAAC;KAC3D;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KACzB;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAZD,wBAYC;AAED,MAAM,cAAc,GAAG;IACrB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE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"}
1
+ {"version":3,"file":"MideaUtils.js","sourceRoot":"","sources":["../../src/core/MideaUtils.ts"],"names":[],"mappings":";;;AAWA,6BAA6B;AAE7B,SAAgB,kBAAkB,CAChC,GAAW,EACX,WAAmB,EACnB,UAAsB;IAEtB,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;QACpC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QACnB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;KAC7B;IACD,OAAO,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AACpD,CAAC;AAXD,gDAWC;AAED,SAAgB,MAAM,CAAC,CAAS,EAAE,CAAS;IACzC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;QACzB,MAAM,KAAK,CAAC,4CAA4C,CAAC,CAAC;KAC3D;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KACzB;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAXD,wBAWC;AAED,MAAM,cAAc,GAAG;IACrB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IA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"}
@@ -1,8 +1,9 @@
1
1
  import { Logger } from 'homebridge';
2
2
  import { DeviceInfo } from '../core/MideaConstants';
3
3
  import MideaACDevice from './ac/MideaACDevice';
4
- import { KeyToken } from '../core/MideaSecurity';
4
+ import MideaA1Device from './a1/MideaA1Device';
5
+ import { Config } from '../platformUtils';
5
6
  export default class DeviceFactory {
6
- static createDevice(logger: Logger, device_info: DeviceInfo, token: KeyToken, key: KeyToken): MideaACDevice | undefined;
7
+ static createDevice(logger: Logger, device_info: DeviceInfo, config: Partial<Config>): MideaACDevice | MideaA1Device | undefined;
7
8
  }
8
9
  //# sourceMappingURL=DeviceFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceFactory.d.ts","sourceRoot":"","sources":["../../src/devices/DeviceFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,UAAU,EAAc,MAAM,wBAAwB,CAAC;AAChE,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,aAAa;WAClB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ;CAMnG"}
1
+ {"version":3,"file":"DeviceFactory.d.ts","sourceRoot":"","sources":["../../src/devices/DeviceFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,UAAU,EAAc,MAAM,wBAAwB,CAAC;AAChE,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,MAAM,CAAC,OAAO,OAAO,aAAa;WAClB,YAAY,CACxB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,UAAU,EACvB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;CAS1B"}
@@ -5,11 +5,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const MideaConstants_1 = require("../core/MideaConstants");
7
7
  const MideaACDevice_1 = __importDefault(require("./ac/MideaACDevice"));
8
+ const MideaA1Device_1 = __importDefault(require("./a1/MideaA1Device"));
8
9
  class DeviceFactory {
9
- static createDevice(logger, device_info, token, key) {
10
+ static createDevice(logger, device_info, config) {
10
11
  switch (device_info.type) {
11
12
  case MideaConstants_1.DeviceType.AIR_CONDITIONER:
12
- return new MideaACDevice_1.default(logger, device_info, token, key);
13
+ return new MideaACDevice_1.default(logger, device_info, config);
14
+ case MideaConstants_1.DeviceType.DEHUMIDIFIER:
15
+ return new MideaA1Device_1.default(logger, device_info, config);
13
16
  }
14
17
  }
15
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceFactory.js","sourceRoot":"","sources":["../../src/devices/DeviceFactory.ts"],"names":[],"mappings":";;;;;AACA,2DAAgE;AAChE,uEAA+C;AAG/C,MAAqB,aAAa;IACzB,MAAM,CAAC,YAAY,CAAC,MAAc,EAAE,WAAuB,EAAE,KAAe,EAAE,GAAa;QAChG,QAAQ,WAAW,CAAC,IAAI,EAAE;YACxB,KAAK,2BAAU,CAAC,eAAe;gBAC7B,OAAO,IAAI,uBAAa,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;SAC7D;IACH,CAAC;CACF;AAPD,gCAOC"}
1
+ {"version":3,"file":"DeviceFactory.js","sourceRoot":"","sources":["../../src/devices/DeviceFactory.ts"],"names":[],"mappings":";;;;;AACA,2DAAgE;AAChE,uEAA+C;AAC/C,uEAA+C;AAG/C,MAAqB,aAAa;IACzB,MAAM,CAAC,YAAY,CACxB,MAAc,EACd,WAAuB,EACvB,MAAuB;QAEvB,QAAQ,WAAW,CAAC,IAAI,EAAE;YACxB,KAAK,2BAAU,CAAC,eAAe;gBAC7B,OAAO,IAAI,uBAAa,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;YACxD,KAAK,2BAAU,CAAC,YAAY;gBAC1B,OAAO,IAAI,uBAAa,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;SACzD;IACH,CAAC;CACF;AAbD,gCAaC"}
@@ -0,0 +1,77 @@
1
+ /// <reference types="node" />
2
+ /***********************************************************************
3
+ * Midea Dehumidifier Device class
4
+ *
5
+ * Copyright (c) 2023 David Kerr, https://github.com/dkerr64
6
+ *
7
+ * With thanks to https://github.com/kovapatrik/homebridge-midea-platform
8
+ * And https://github.com/georgezhao2010/midea_ac_lan
9
+ *
10
+ * An instance of this class is created for each device the platform registers.
11
+ *
12
+ */
13
+ import { Logger } from 'homebridge';
14
+ import { DeviceInfo } from '../../core/MideaConstants';
15
+ import MideaDevice, { DeviceAttributeBase } from '../../core/MideaDevice';
16
+ import { MessageQuery, MessageSet } from './MideaA1Message';
17
+ import { Config } from '../../platformUtils';
18
+ export interface A1Attributes extends DeviceAttributeBase {
19
+ POWER: boolean | undefined;
20
+ PROMPT_TONE: boolean;
21
+ CHILD_LOCK: boolean | undefined;
22
+ MODE: number;
23
+ FAN_SPEED: number;
24
+ SWING: boolean | undefined;
25
+ TARGET_HUMIDITY: number;
26
+ ANION: boolean;
27
+ TANK_LEVEL: number;
28
+ WATER_LEVEL_SET: number;
29
+ TANK_FULL: boolean | undefined;
30
+ CURRENT_HUMIDITY: number;
31
+ CURRENT_TEMPERATURE: number;
32
+ DEFROSTING: boolean;
33
+ FILTER_INDICATOR: boolean;
34
+ PUMP: boolean;
35
+ PUMP_SWITCH_FLAG: boolean;
36
+ SLEEP_MODE: boolean;
37
+ }
38
+ export default class MideaA1Device extends MideaDevice {
39
+ readonly MIN_HUMIDITY = 35;
40
+ readonly MAX_HUMIDITY = 85;
41
+ private readonly HUMIDITY_STEP;
42
+ attributes: A1Attributes;
43
+ readonly MODES: {
44
+ 0: string;
45
+ 1: string;
46
+ 2: string;
47
+ 3: string;
48
+ 4: string;
49
+ };
50
+ readonly SPEEDS: {
51
+ 1: string;
52
+ 40: string;
53
+ 60: string;
54
+ 80: string;
55
+ 102: string;
56
+ 127: string;
57
+ };
58
+ readonly WATER_LEVEL_SETS: {
59
+ 25: string;
60
+ 50: string;
61
+ 75: string;
62
+ 100: string;
63
+ };
64
+ /*********************************************************************
65
+ * Constructor initializes all the attributes. We set some to invalid
66
+ * values so that they are detected as "changed" on the first status
67
+ * refresh... and passed back to the Homebridge/HomeKit accessory callback
68
+ * function to set their initial values.
69
+ */
70
+ constructor(logger: Logger, device_info: DeviceInfo, config: Partial<Config>);
71
+ build_query(): MessageQuery[];
72
+ process_message(msg: Buffer): void;
73
+ make_message_set(): MessageSet;
74
+ set_attribute(attributes: Partial<A1Attributes>): Promise<void>;
75
+ protected set_subtype(): void;
76
+ }
77
+ //# sourceMappingURL=MideaA1Device.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MideaA1Device.d.ts","sourceRoot":"","sources":["../../../src/devices/a1/MideaA1Device.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,WAAW,EAAE,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAqB,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAI7C,MAAM,WAAW,YAAa,SAAQ,mBAAmB;IACvD,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,gBAAgB,EAAE,OAAO,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,QAAQ,CAAC,YAAY,MAAM;IAC3B,QAAQ,CAAC,YAAY,MAAM;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAK;IAC5B,UAAU,EAAE,YAAY,CAAC;IAEhC,QAAQ,CAAC,KAAK;;;;;;MAMZ;IAEF,QAAQ,CAAC,MAAM;;;;;;;MAOb;IAEF,QAAQ,CAAC,gBAAgB;;;;;MAKvB;IAEF;;;;;OAKG;gBAED,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,UAAU,EACvB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;IAyBzB,WAAW;IAIX,eAAe,CAAC,GAAG,EAAE,MAAM;IAwC3B,gBAAgB;IAcV,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC;IAkCrD,SAAS,CAAC,WAAW,IAAI,IAAI;CAG9B"}
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const MideaDevice_1 = __importDefault(require("../../core/MideaDevice"));
7
+ const MideaA1Message_1 = require("./MideaA1Message");
8
+ class MideaA1Device extends MideaDevice_1.default {
9
+ /*********************************************************************
10
+ * Constructor initializes all the attributes. We set some to invalid
11
+ * values so that they are detected as "changed" on the first status
12
+ * refresh... and passed back to the Homebridge/HomeKit accessory callback
13
+ * function to set their initial values.
14
+ */
15
+ constructor(logger, device_info, config) {
16
+ super(logger, device_info, config);
17
+ this.MIN_HUMIDITY = 35;
18
+ this.MAX_HUMIDITY = 85;
19
+ this.HUMIDITY_STEP = 5;
20
+ this.MODES = {
21
+ 0: 'Off',
22
+ 1: 'Auto',
23
+ 2: 'Continuous',
24
+ 3: 'Clothes-Dry',
25
+ 4: 'Shoes-Dry',
26
+ };
27
+ this.SPEEDS = {
28
+ 1: 'Lowest',
29
+ 40: 'Low',
30
+ 60: 'Medium',
31
+ 80: 'High',
32
+ 102: 'Auto',
33
+ 127: 'Off',
34
+ };
35
+ this.WATER_LEVEL_SETS = {
36
+ 25: 'Low',
37
+ 50: 'Medium',
38
+ 75: 'High',
39
+ 100: 'Full',
40
+ };
41
+ this.attributes = {
42
+ POWER: undefined,
43
+ PROMPT_TONE: false,
44
+ CHILD_LOCK: undefined,
45
+ MODE: 99,
46
+ FAN_SPEED: 999,
47
+ SWING: undefined,
48
+ TARGET_HUMIDITY: 999,
49
+ ANION: false,
50
+ TANK_LEVEL: 999,
51
+ WATER_LEVEL_SET: 999,
52
+ TANK_FULL: undefined,
53
+ CURRENT_HUMIDITY: 999,
54
+ CURRENT_TEMPERATURE: 999,
55
+ DEFROSTING: false,
56
+ FILTER_INDICATOR: false,
57
+ PUMP: false,
58
+ PUMP_SWITCH_FLAG: false,
59
+ SLEEP_MODE: false,
60
+ };
61
+ }
62
+ build_query() {
63
+ return [new MideaA1Message_1.MessageQuery(this.device_protocol_version)];
64
+ }
65
+ process_message(msg) {
66
+ const message = new MideaA1Message_1.MessageA1Response(msg);
67
+ if (this.verbose) {
68
+ this.logger.debug(`[${this.name}] Body:\n${JSON.stringify(message.body)}`);
69
+ }
70
+ const changed = {};
71
+ for (const status of Object.keys(this.attributes)) {
72
+ const value = message.get_body_attribute(status.toLowerCase());
73
+ if (value !== undefined) {
74
+ if (this.attributes[status] !== value) {
75
+ // Track only those attributes that change value. So when we send to the Homebridge /
76
+ // HomeKit accessory we only update values that change. First time through this
77
+ // should be most/all attributes having initialized them to invalid values.
78
+ this.logger.debug(`[${this.name}] Value for ${status} changed from '${this.attributes[status]}' to '${value}'`);
79
+ changed[status] = value;
80
+ }
81
+ this.attributes[status] = value;
82
+ }
83
+ }
84
+ const value = this.attributes.TANK_LEVEL >= this.attributes.WATER_LEVEL_SET;
85
+ if (this.attributes.TANK_FULL !== value) {
86
+ this.logger.debug(`[${this.name}] Value for TANK_FULL changed from '${this.attributes.TANK_FULL}' to '${value}'`);
87
+ changed.TANK_FULL = value;
88
+ }
89
+ this.attributes.TANK_FULL = value;
90
+ // Now we update Homebridge / Homekit accessory
91
+ if (Object.keys(changed).length > 0) {
92
+ this.update(changed);
93
+ }
94
+ else {
95
+ this.logger.debug(`[${this.name}] Status unchanged`);
96
+ }
97
+ }
98
+ make_message_set() {
99
+ const message = new MideaA1Message_1.MessageSet(this.device_protocol_version);
100
+ message.power = !!this.attributes.POWER; // force to boolean
101
+ message.prompt_tone = this.attributes.PROMPT_TONE;
102
+ message.mode = this.attributes.MODE;
103
+ message.child_lock = !!this.attributes.CHILD_LOCK; // force to boolean
104
+ message.fan_speed = this.attributes.FAN_SPEED;
105
+ message.target_humidity = this.attributes.TARGET_HUMIDITY;
106
+ message.swing = !!this.attributes.SWING;
107
+ message.anion = this.attributes.ANION;
108
+ message.water_level_set = this.attributes.WATER_LEVEL_SET;
109
+ return message;
110
+ }
111
+ async set_attribute(attributes) {
112
+ for (const [k, v] of Object.entries(attributes)) {
113
+ let message = undefined;
114
+ this.logger.info(`[${this.name}] Set device attribute ${k} to: ${v}`);
115
+ // not sensor data
116
+ if (![
117
+ 'CURRENT_TEMPERATURE',
118
+ 'CURRENT_HUMIDITY',
119
+ 'TANK_FULL',
120
+ 'DEFROSTING',
121
+ 'FILTER_INDICATOR',
122
+ 'PUMP',
123
+ ].includes(k)) {
124
+ this.attributes[k] = v;
125
+ if (k === 'PROMPT_TONE') {
126
+ this.attributes.PROMPT_TONE = !!v;
127
+ }
128
+ else {
129
+ message = this.make_message_set();
130
+ // TODO handle MODE, FAN_SPEED and WATER_LEVEL_SET to ensure valid value.
131
+ }
132
+ }
133
+ if (message) {
134
+ this.logger.debug(`[${this.name}] Set message:\n${JSON.stringify(message)}`);
135
+ await this.build_send(message);
136
+ }
137
+ }
138
+ }
139
+ set_subtype() {
140
+ this.logger.debug('No subtype for A1 (dehumidifier) device');
141
+ }
142
+ }
143
+ exports.default = MideaA1Device;
144
+ //# sourceMappingURL=MideaA1Device.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MideaA1Device.js","sourceRoot":"","sources":["../../../src/devices/a1/MideaA1Device.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /// <reference types="node" />
2
+ import { MessageRequest, MessageResponse, MessageType } from '../../core/MideaMessage';
3
+ declare abstract class MessageA1Base extends MessageRequest {
4
+ private static message_serial;
5
+ private message_id;
6
+ constructor(device_protocol_version: number, message_type: MessageType, body_type: number);
7
+ get body(): Buffer;
8
+ }
9
+ export declare class MessageQuery extends MessageA1Base {
10
+ constructor(device_protocol_version: number);
11
+ get _body(): Buffer;
12
+ }
13
+ export declare class MessageNewProtocolQuery extends MessageA1Base {
14
+ private readonly alternate_display;
15
+ constructor(device_protocol_version: number, alternate_display?: boolean);
16
+ get _body(): Buffer;
17
+ }
18
+ export declare class MessageSet extends MessageA1Base {
19
+ power: boolean;
20
+ prompt_tone: boolean;
21
+ mode: number;
22
+ fan_speed: number;
23
+ child_lock: boolean;
24
+ target_humidity: number;
25
+ swing: boolean;
26
+ anion: boolean;
27
+ water_level_set: number;
28
+ constructor(device_protocol_version: number);
29
+ get _body(): Buffer;
30
+ }
31
+ export declare class MessageNewProtocolSet extends MessageA1Base {
32
+ light: boolean;
33
+ constructor(device_protocol_version: number);
34
+ get _body(): Buffer;
35
+ }
36
+ export declare class MessageA1Response extends MessageResponse {
37
+ private readonly message;
38
+ constructor(message: Buffer);
39
+ }
40
+ export {};
41
+ //# sourceMappingURL=MideaA1Message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MideaA1Message.d.ts","sourceRoot":"","sources":["../../../src/devices/a1/MideaA1Message.ts"],"names":[],"mappings":";AAUA,OAAO,EAEL,cAAc,EACd,eAAe,EACf,WAAW,EAEZ,MAAM,yBAAyB,CAAC;AAOjC,uBAAe,aAAc,SAAQ,cAAc;IACjD,OAAO,CAAC,MAAM,CAAC,cAAc,CAAK;IAClC,OAAO,CAAC,UAAU,CAAS;gBAGzB,uBAAuB,EAAE,MAAM,EAC/B,YAAY,EAAE,WAAW,EACzB,SAAS,EAAE,MAAM;IAgBnB,IAAI,IAAI,WAQP;CACF;AAED,qBAAa,YAAa,SAAQ,aAAa;gBACjC,uBAAuB,EAAE,MAAM;IAI3C,IAAI,KAAK,WAKR;CACF;AAED,qBAAa,uBAAwB,SAAQ,aAAa;IAGtD,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBADlC,uBAAuB,EAAE,MAAM,EACd,iBAAiB,UAAQ;IAK5C,IAAI,KAAK,WASR;CACF;AAED,qBAAa,UAAW,SAAQ,aAAa;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;gBAEnB,uBAAuB,EAAE,MAAM;IAa3C,IAAI,KAAK,WAyCR;CACF;AAED,qBAAa,qBAAsB,SAAQ,aAAa;IAC/C,KAAK,UAAS;gBAET,uBAAuB,EAAE,MAAM;IAI3C,IAAI,KAAK,WAoBR;CACF;AA8DD,qBAAa,iBAAkB,SAAQ,eAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,MAAM;CAmB7C"}