homebridge-midea-platform 1.2.0-beta.2 → 1.2.0-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 (89) hide show
  1. package/.husky/pre-commit +0 -0
  2. package/AC_ori.lua +5140 -0
  3. package/config.schema.json +14 -2
  4. package/dist/accessory/AccessoryFactory.d.ts +13 -12
  5. package/dist/accessory/AccessoryFactory.d.ts.map +1 -1
  6. package/dist/accessory/AccessoryFactory.js +37 -31
  7. package/dist/accessory/AccessoryFactory.js.map +1 -1
  8. package/dist/accessory/AirConditionerAccessory.d.ts +98 -92
  9. package/dist/accessory/AirConditionerAccessory.d.ts.map +1 -1
  10. package/dist/accessory/AirConditionerAccessory.js +662 -607
  11. package/dist/accessory/AirConditionerAccessory.js.map +1 -1
  12. package/dist/accessory/BaseAccessory.d.ts +11 -11
  13. package/dist/accessory/BaseAccessory.js +21 -21
  14. package/dist/accessory/DehumidifierAccessory.d.ts +45 -45
  15. package/dist/accessory/DehumidifierAccessory.js +344 -344
  16. package/dist/accessory/DishwasherAccessory.d.ts +30 -30
  17. package/dist/accessory/DishwasherAccessory.js +63 -63
  18. package/dist/accessory/ElectricWaterHeaterAccessory.d.ts +44 -44
  19. package/dist/accessory/ElectricWaterHeaterAccessory.js +176 -176
  20. package/dist/accessory/FanAccessory.d.ts +39 -39
  21. package/dist/accessory/FanAccessory.js +123 -123
  22. package/dist/accessory/FrontLoadWasherAccessory.d.ts +30 -30
  23. package/dist/accessory/FrontLoadWasherAccessory.js +66 -66
  24. package/dist/accessory/GasWaterHeaterAccessory.d.ts +51 -51
  25. package/dist/accessory/GasWaterHeaterAccessory.js +216 -216
  26. package/dist/core/MideaCloud.d.ts +35 -35
  27. package/dist/core/MideaCloud.js +350 -350
  28. package/dist/core/MideaConstants.d.ts +50 -50
  29. package/dist/core/MideaConstants.js +58 -58
  30. package/dist/core/MideaDevice.d.ts +76 -76
  31. package/dist/core/MideaDevice.js +409 -409
  32. package/dist/core/MideaDiscover.d.ts +35 -35
  33. package/dist/core/MideaDiscover.js +212 -212
  34. package/dist/core/MideaMessage.d.ts +75 -75
  35. package/dist/core/MideaMessage.js +184 -184
  36. package/dist/core/MideaPacketBuilder.d.ts +10 -10
  37. package/dist/core/MideaPacketBuilder.js +60 -60
  38. package/dist/core/MideaSecurity.d.ts +63 -63
  39. package/dist/core/MideaSecurity.js +251 -251
  40. package/dist/core/MideaUtils.d.ts +32 -32
  41. package/dist/core/MideaUtils.js +181 -181
  42. package/dist/devices/DeviceFactory.d.ts +13 -13
  43. package/dist/devices/DeviceFactory.d.ts.map +1 -1
  44. package/dist/devices/DeviceFactory.js +37 -36
  45. package/dist/devices/DeviceFactory.js.map +1 -1
  46. package/dist/devices/a1/MideaA1Device.d.ts +76 -76
  47. package/dist/devices/a1/MideaA1Device.js +145 -145
  48. package/dist/devices/a1/MideaA1Message.d.ts +40 -40
  49. package/dist/devices/a1/MideaA1Message.js +198 -198
  50. package/dist/devices/ac/MideaACDevice.d.ts +106 -104
  51. package/dist/devices/ac/MideaACDevice.d.ts.map +1 -1
  52. package/dist/devices/ac/MideaACDevice.js +400 -384
  53. package/dist/devices/ac/MideaACDevice.js.map +1 -1
  54. package/dist/devices/ac/MideaACMessage.d.ts +95 -94
  55. package/dist/devices/ac/MideaACMessage.d.ts.map +1 -1
  56. package/dist/devices/ac/MideaACMessage.js +619 -611
  57. package/dist/devices/ac/MideaACMessage.js.map +1 -1
  58. package/dist/devices/db/MideaDBDevice.d.ts +29 -29
  59. package/dist/devices/db/MideaDBDevice.js +100 -100
  60. package/dist/devices/db/MideaDBMessage.d.ts +32 -32
  61. package/dist/devices/db/MideaDBMessage.js +101 -101
  62. package/dist/devices/e1/MideaE1Device.d.ts +56 -56
  63. package/dist/devices/e1/MideaE1Device.js +128 -128
  64. package/dist/devices/e1/MideaE1Message.d.ts +28 -28
  65. package/dist/devices/e1/MideaE1Message.js +107 -107
  66. package/dist/devices/e2/MideaE2Device.d.ts +44 -44
  67. package/dist/devices/e2/MideaE2Device.js +129 -129
  68. package/dist/devices/e2/MideaE2Message.d.ts +33 -33
  69. package/dist/devices/e2/MideaE2Message.js +132 -132
  70. package/dist/devices/e3/MideaE3Device.d.ts +43 -43
  71. package/dist/devices/e3/MideaE3Device.js +137 -137
  72. package/dist/devices/e3/MideaE3Message.d.ts +51 -51
  73. package/dist/devices/e3/MideaE3Message.js +136 -136
  74. package/dist/devices/fa/MideaFADevice.d.ts +36 -36
  75. package/dist/devices/fa/MideaFADevice.js +106 -106
  76. package/dist/devices/fa/MideaFAMessage.d.ts +38 -38
  77. package/dist/devices/fa/MideaFAMessage.js +98 -98
  78. package/dist/index.d.ts +6 -6
  79. package/dist/index.js +6 -6
  80. package/dist/platform.d.ts +60 -60
  81. package/dist/platform.js +212 -212
  82. package/dist/platformUtils.d.ts +108 -106
  83. package/dist/platformUtils.d.ts.map +1 -1
  84. package/dist/platformUtils.js +103 -101
  85. package/dist/platformUtils.js.map +1 -1
  86. package/dist/settings.d.ts +8 -8
  87. package/dist/settings.js +11 -11
  88. package/docs/ac.md +6 -0
  89. package/package.json +1 -1
@@ -1,199 +1,199 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MessageA1Response = exports.MessageNewProtocolSet = exports.MessageSet = exports.MessageNewProtocolQuery = exports.MessageQuery = void 0;
4
- /***********************************************************************
5
- * Midea Dehumidifier Device message handler class
6
- *
7
- * Copyright (c) 2023 David Kerr, https://github.com/dkerr64
8
- *
9
- * With thanks to https://github.com/kovapatrik/homebridge-midea-platform
10
- * And https://github.com/georgezhao2010/midea_ac_lan
11
- *
12
- */
13
- const MideaConstants_1 = require("../../core/MideaConstants");
14
- const MideaMessage_1 = require("../../core/MideaMessage");
15
- const MideaUtils_1 = require("../../core/MideaUtils");
16
- var NewProtocolTags;
17
- (function (NewProtocolTags) {
18
- NewProtocolTags[NewProtocolTags["LIGHT"] = 91] = "LIGHT";
19
- })(NewProtocolTags || (NewProtocolTags = {}));
20
- class MessageA1Base extends MideaMessage_1.MessageRequest {
21
- constructor(device_protocol_version, message_type, body_type) {
22
- super(MideaConstants_1.DeviceType.DEHUMIDIFIER, message_type, body_type, device_protocol_version);
23
- MessageA1Base.message_serial += 1;
24
- // I don't know why dehumidifier wraps at 100, air conditioner wraps at 254
25
- if (MessageA1Base.message_serial >= 100) {
26
- MessageA1Base.message_serial = 1;
27
- }
28
- this.message_id = MessageA1Base.message_serial;
29
- }
30
- get body() {
31
- let body = Buffer.concat([Buffer.from([this.body_type]), this._body, Buffer.from([this.message_id])]);
32
- body = Buffer.concat([body, Buffer.from([(0, MideaUtils_1.calculate)(body)])]);
33
- return body;
34
- }
35
- }
36
- MessageA1Base.message_serial = 0;
37
- class MessageQuery extends MessageA1Base {
38
- constructor(device_protocol_version) {
39
- super(device_protocol_version, MideaMessage_1.MessageType.QUERY, 0x41);
40
- }
41
- get _body() {
42
- return Buffer.from([0x81, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]);
43
- }
44
- }
45
- exports.MessageQuery = MessageQuery;
46
- class MessageNewProtocolQuery extends MessageA1Base {
47
- constructor(device_protocol_version, alternate_display = false) {
48
- super(device_protocol_version, MideaMessage_1.MessageType.QUERY, 0xb1);
49
- this.alternate_display = alternate_display;
50
- }
51
- get _body() {
52
- const query_params = [NewProtocolTags.LIGHT];
53
- let body = Buffer.from([query_params.length]);
54
- for (const param of query_params) {
55
- if (param) {
56
- body = Buffer.concat([body, Buffer.from([param & 0xff, param >> 8])]);
57
- }
58
- }
59
- return body;
60
- }
61
- }
62
- exports.MessageNewProtocolQuery = MessageNewProtocolQuery;
63
- class MessageSet extends MessageA1Base {
64
- constructor(device_protocol_version) {
65
- super(device_protocol_version, MideaMessage_1.MessageType.SET, 0x48);
66
- this.power = false;
67
- this.prompt_tone = true;
68
- this.mode = 1;
69
- this.fan_speed = 40;
70
- this.child_lock = false;
71
- this.target_humidity = 40;
72
- this.swing = false;
73
- this.anion = false;
74
- this.water_level_set = 50;
75
- }
76
- get _body() {
77
- // byte1, power, prompt_tone
78
- const power = this.power ? 0x01 : 0x00;
79
- const prompt_tone = this.prompt_tone ? 0x40 : 0x00;
80
- // byte2 mode
81
- const mode = this.mode;
82
- // byte3 fan_speed
83
- const fan_speed = this.fan_speed;
84
- // byte7 target_humidity
85
- const target_humidity = this.target_humidity;
86
- // byte8 child_lock
87
- const child_lock = this.child_lock ? 0x80 : 0x00;
88
- // byte9 anion
89
- const anion = this.anion ? 0x40 : 0x00;
90
- // byte10 swing
91
- const swing = this.swing ? 0x08 : 0x00;
92
- // byte 13 water_level_set
93
- const water_level_set = this.water_level_set;
94
- return Buffer.from([
95
- power | prompt_tone | 0x02,
96
- mode,
97
- fan_speed,
98
- 0x00,
99
- 0x00,
100
- 0x00,
101
- target_humidity,
102
- child_lock,
103
- anion,
104
- swing,
105
- 0x00,
106
- 0x00,
107
- water_level_set,
108
- 0x00,
109
- 0x00,
110
- 0x00,
111
- 0x00,
112
- 0x00,
113
- 0x00,
114
- 0x00,
115
- ]);
116
- }
117
- }
118
- exports.MessageSet = MessageSet;
119
- class MessageNewProtocolSet extends MessageA1Base {
120
- constructor(device_protocol_version) {
121
- super(device_protocol_version, MideaMessage_1.MessageType.SET, 0xb0);
122
- this.light = false;
123
- }
124
- get _body() {
125
- let pack_count = 0;
126
- let payload = Buffer.from([0x00]);
127
- if (this.light !== undefined) {
128
- pack_count += 1;
129
- payload = Buffer.concat([
130
- payload,
131
- // original python code at:
132
- // https://github.com/georgezhao2010/midea_ac_lan/blob/master/custom_components/midea_ac_lan/midea/devices/a1/message.py
133
- // used "NewProtocolTags.INDIRECT_WIND" but that is/was not defined so assumed to be a bug and should be LIGHT
134
- MideaMessage_1.NewProtocolMessageBody.packet(NewProtocolTags.LIGHT, Buffer.from([this.light ? 0x01 : 0x00])),
135
- ]);
136
- }
137
- payload[0] = pack_count;
138
- return payload;
139
- }
140
- }
141
- exports.MessageNewProtocolSet = MessageNewProtocolSet;
142
- class A1GeneralMessageBody extends MideaMessage_1.MessageBody {
143
- constructor(body) {
144
- super(body);
145
- this.power = (body[1] & 0x01) > 0;
146
- this.mode = body[2] & 0x0f;
147
- this.fan_speed = body[3] & 0x7f;
148
- // Target humidity between 35% and 85%
149
- this.target_humidity = body[7] < 35 ? 35 : body[7] > 85 ? 85 : body[7];
150
- this.child_lock = (body[8] & 0x80) > 0;
151
- this.filter_indicator = (body[9] & 0x80) > 0;
152
- this.anion = (body[9] & 0x40) > 0;
153
- this.sleep_mode = (body[9] & 0x20) > 0;
154
- this.pump_switch_flag = (body[9] & 0x10) > 0;
155
- this.pump = (body[9] & 0x08) > 0;
156
- this.defrosting = (body[10] & 0x80) > 0;
157
- this.tank_level = body[10] & 0x7f;
158
- this.tank_full = this.tank_level >= 100;
159
- this.water_level_set = body[15];
160
- this.current_humidity = body[16];
161
- this.current_temperature = (body[17] - 50) / 2;
162
- // vertical swing or horizontal swing
163
- this.swing = (body[19] & 0x20) > 0 || (body[19] & 0x10) > 0;
164
- // Not sure the purpose of thisfan speed check, but it is part of the original python code at
165
- // https://github.com/georgezhao2010/midea_ac_lan/blob/master/custom_components/midea_ac_lan/midea/devices/a1/message.py
166
- if (this.fan_speed < 5) {
167
- this.fan_speed = 1;
168
- }
169
- }
170
- }
171
- class A1NewProtocolMessageBody extends MideaMessage_1.NewProtocolMessageBody {
172
- constructor(body, body_type) {
173
- super(body, body_type);
174
- this.light = false;
175
- const params = this.parse();
176
- if (NewProtocolTags.LIGHT in params) {
177
- this.light = params[NewProtocolTags.LIGHT][0] > 0;
178
- }
179
- }
180
- }
181
- class MessageA1Response extends MideaMessage_1.MessageResponse {
182
- constructor(message) {
183
- super(message);
184
- this.message = message;
185
- if ([MideaMessage_1.MessageType.QUERY, MideaMessage_1.MessageType.SET, MideaMessage_1.MessageType.NOTIFY2].includes(this.message_type)) {
186
- if ([0xb0, 0xb1, 0xb5].includes(this.body_type)) {
187
- this.set_body(new A1NewProtocolMessageBody(this.body, this.body_type));
188
- }
189
- else {
190
- this.set_body(new A1GeneralMessageBody(this.body));
191
- }
192
- }
193
- else if (this.message_type === MideaMessage_1.MessageType.NOTIFY2 && this.body_type === 0xa0) {
194
- this.set_body(new A1GeneralMessageBody(this.body));
195
- }
196
- }
197
- }
198
- exports.MessageA1Response = MessageA1Response;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MessageA1Response = exports.MessageNewProtocolSet = exports.MessageSet = exports.MessageNewProtocolQuery = exports.MessageQuery = void 0;
4
+ /***********************************************************************
5
+ * Midea Dehumidifier Device message handler class
6
+ *
7
+ * Copyright (c) 2023 David Kerr, https://github.com/dkerr64
8
+ *
9
+ * With thanks to https://github.com/kovapatrik/homebridge-midea-platform
10
+ * And https://github.com/georgezhao2010/midea_ac_lan
11
+ *
12
+ */
13
+ const MideaConstants_1 = require("../../core/MideaConstants");
14
+ const MideaMessage_1 = require("../../core/MideaMessage");
15
+ const MideaUtils_1 = require("../../core/MideaUtils");
16
+ var NewProtocolTags;
17
+ (function (NewProtocolTags) {
18
+ NewProtocolTags[NewProtocolTags["LIGHT"] = 91] = "LIGHT";
19
+ })(NewProtocolTags || (NewProtocolTags = {}));
20
+ class MessageA1Base extends MideaMessage_1.MessageRequest {
21
+ constructor(device_protocol_version, message_type, body_type) {
22
+ super(MideaConstants_1.DeviceType.DEHUMIDIFIER, message_type, body_type, device_protocol_version);
23
+ MessageA1Base.message_serial += 1;
24
+ // I don't know why dehumidifier wraps at 100, air conditioner wraps at 254
25
+ if (MessageA1Base.message_serial >= 100) {
26
+ MessageA1Base.message_serial = 1;
27
+ }
28
+ this.message_id = MessageA1Base.message_serial;
29
+ }
30
+ get body() {
31
+ let body = Buffer.concat([Buffer.from([this.body_type]), this._body, Buffer.from([this.message_id])]);
32
+ body = Buffer.concat([body, Buffer.from([(0, MideaUtils_1.calculate)(body)])]);
33
+ return body;
34
+ }
35
+ }
36
+ MessageA1Base.message_serial = 0;
37
+ class MessageQuery extends MessageA1Base {
38
+ constructor(device_protocol_version) {
39
+ super(device_protocol_version, MideaMessage_1.MessageType.QUERY, 0x41);
40
+ }
41
+ get _body() {
42
+ return Buffer.from([0x81, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]);
43
+ }
44
+ }
45
+ exports.MessageQuery = MessageQuery;
46
+ class MessageNewProtocolQuery extends MessageA1Base {
47
+ constructor(device_protocol_version, alternate_display = false) {
48
+ super(device_protocol_version, MideaMessage_1.MessageType.QUERY, 0xb1);
49
+ this.alternate_display = alternate_display;
50
+ }
51
+ get _body() {
52
+ const query_params = [NewProtocolTags.LIGHT];
53
+ let body = Buffer.from([query_params.length]);
54
+ for (const param of query_params) {
55
+ if (param) {
56
+ body = Buffer.concat([body, Buffer.from([param & 0xff, param >> 8])]);
57
+ }
58
+ }
59
+ return body;
60
+ }
61
+ }
62
+ exports.MessageNewProtocolQuery = MessageNewProtocolQuery;
63
+ class MessageSet extends MessageA1Base {
64
+ constructor(device_protocol_version) {
65
+ super(device_protocol_version, MideaMessage_1.MessageType.SET, 0x48);
66
+ this.power = false;
67
+ this.prompt_tone = true;
68
+ this.mode = 1;
69
+ this.fan_speed = 40;
70
+ this.child_lock = false;
71
+ this.target_humidity = 40;
72
+ this.swing = false;
73
+ this.anion = false;
74
+ this.water_level_set = 50;
75
+ }
76
+ get _body() {
77
+ // byte1, power, prompt_tone
78
+ const power = this.power ? 0x01 : 0x00;
79
+ const prompt_tone = this.prompt_tone ? 0x40 : 0x00;
80
+ // byte2 mode
81
+ const mode = this.mode;
82
+ // byte3 fan_speed
83
+ const fan_speed = this.fan_speed;
84
+ // byte7 target_humidity
85
+ const target_humidity = this.target_humidity;
86
+ // byte8 child_lock
87
+ const child_lock = this.child_lock ? 0x80 : 0x00;
88
+ // byte9 anion
89
+ const anion = this.anion ? 0x40 : 0x00;
90
+ // byte10 swing
91
+ const swing = this.swing ? 0x08 : 0x00;
92
+ // byte 13 water_level_set
93
+ const water_level_set = this.water_level_set;
94
+ return Buffer.from([
95
+ power | prompt_tone | 0x02,
96
+ mode,
97
+ fan_speed,
98
+ 0x00,
99
+ 0x00,
100
+ 0x00,
101
+ target_humidity,
102
+ child_lock,
103
+ anion,
104
+ swing,
105
+ 0x00,
106
+ 0x00,
107
+ water_level_set,
108
+ 0x00,
109
+ 0x00,
110
+ 0x00,
111
+ 0x00,
112
+ 0x00,
113
+ 0x00,
114
+ 0x00,
115
+ ]);
116
+ }
117
+ }
118
+ exports.MessageSet = MessageSet;
119
+ class MessageNewProtocolSet extends MessageA1Base {
120
+ constructor(device_protocol_version) {
121
+ super(device_protocol_version, MideaMessage_1.MessageType.SET, 0xb0);
122
+ this.light = false;
123
+ }
124
+ get _body() {
125
+ let pack_count = 0;
126
+ let payload = Buffer.from([0x00]);
127
+ if (this.light !== undefined) {
128
+ pack_count += 1;
129
+ payload = Buffer.concat([
130
+ payload,
131
+ // original python code at:
132
+ // https://github.com/georgezhao2010/midea_ac_lan/blob/master/custom_components/midea_ac_lan/midea/devices/a1/message.py
133
+ // used "NewProtocolTags.INDIRECT_WIND" but that is/was not defined so assumed to be a bug and should be LIGHT
134
+ MideaMessage_1.NewProtocolMessageBody.packet(NewProtocolTags.LIGHT, Buffer.from([this.light ? 0x01 : 0x00])),
135
+ ]);
136
+ }
137
+ payload[0] = pack_count;
138
+ return payload;
139
+ }
140
+ }
141
+ exports.MessageNewProtocolSet = MessageNewProtocolSet;
142
+ class A1GeneralMessageBody extends MideaMessage_1.MessageBody {
143
+ constructor(body) {
144
+ super(body);
145
+ this.power = (body[1] & 0x01) > 0;
146
+ this.mode = body[2] & 0x0f;
147
+ this.fan_speed = body[3] & 0x7f;
148
+ // Target humidity between 35% and 85%
149
+ this.target_humidity = body[7] < 35 ? 35 : body[7] > 85 ? 85 : body[7];
150
+ this.child_lock = (body[8] & 0x80) > 0;
151
+ this.filter_indicator = (body[9] & 0x80) > 0;
152
+ this.anion = (body[9] & 0x40) > 0;
153
+ this.sleep_mode = (body[9] & 0x20) > 0;
154
+ this.pump_switch_flag = (body[9] & 0x10) > 0;
155
+ this.pump = (body[9] & 0x08) > 0;
156
+ this.defrosting = (body[10] & 0x80) > 0;
157
+ this.tank_level = body[10] & 0x7f;
158
+ this.tank_full = this.tank_level >= 100;
159
+ this.water_level_set = body[15];
160
+ this.current_humidity = body[16];
161
+ this.current_temperature = (body[17] - 50) / 2;
162
+ // vertical swing or horizontal swing
163
+ this.swing = (body[19] & 0x20) > 0 || (body[19] & 0x10) > 0;
164
+ // Not sure the purpose of thisfan speed check, but it is part of the original python code at
165
+ // https://github.com/georgezhao2010/midea_ac_lan/blob/master/custom_components/midea_ac_lan/midea/devices/a1/message.py
166
+ if (this.fan_speed < 5) {
167
+ this.fan_speed = 1;
168
+ }
169
+ }
170
+ }
171
+ class A1NewProtocolMessageBody extends MideaMessage_1.NewProtocolMessageBody {
172
+ constructor(body, body_type) {
173
+ super(body, body_type);
174
+ this.light = false;
175
+ const params = this.parse();
176
+ if (NewProtocolTags.LIGHT in params) {
177
+ this.light = params[NewProtocolTags.LIGHT][0] > 0;
178
+ }
179
+ }
180
+ }
181
+ class MessageA1Response extends MideaMessage_1.MessageResponse {
182
+ constructor(message) {
183
+ super(message);
184
+ this.message = message;
185
+ if ([MideaMessage_1.MessageType.QUERY, MideaMessage_1.MessageType.SET, MideaMessage_1.MessageType.NOTIFY2].includes(this.message_type)) {
186
+ if ([0xb0, 0xb1, 0xb5].includes(this.body_type)) {
187
+ this.set_body(new A1NewProtocolMessageBody(this.body, this.body_type));
188
+ }
189
+ else {
190
+ this.set_body(new A1GeneralMessageBody(this.body));
191
+ }
192
+ }
193
+ else if (this.message_type === MideaMessage_1.MessageType.NOTIFY2 && this.body_type === 0xa0) {
194
+ this.set_body(new A1GeneralMessageBody(this.body));
195
+ }
196
+ }
197
+ }
198
+ exports.MessageA1Response = MessageA1Response;
199
199
  //# sourceMappingURL=MideaA1Message.js.map
@@ -1,105 +1,107 @@
1
- /// <reference types="node" />
2
- /***********************************************************************
3
- * Midea Air Conditioner Device class
4
- *
5
- * Copyright (c) 2023 Kovalovszky Patrik, https://github.com/kovapatrik
6
- *
7
- * With thanks to https://github.com/georgezhao2010/midea_ac_lan
8
- *
9
- */
10
- import { Logger } from 'homebridge';
11
- import { DeviceInfo } from '../../core/MideaConstants';
12
- import MideaDevice, { DeviceAttributeBase } from '../../core/MideaDevice';
13
- import { MessageGeneralSet, MessageNewProtocolQuery, MessagePowerQuery, MessageQuery, MessageSubProtocolSet } from './MideaACMessage';
14
- import { Config, DeviceConfig, SwingAngle } from '../../platformUtils';
15
- export interface ACAttributes extends DeviceAttributeBase {
16
- PROMPT_TONE: boolean;
17
- POWER: boolean | undefined;
18
- MODE: number;
19
- TARGET_TEMPERATURE: number;
20
- FAN_SPEED: number;
21
- FAN_AUTO: boolean;
22
- SWING_VERTICAL: boolean | undefined;
23
- WIND_SWING_UD_ANGLE: number;
24
- SWING_HORIZONTAL: boolean | undefined;
25
- WIND_SWING_LR_ANGLE: number;
26
- SMART_EYE: boolean;
27
- DRY: boolean;
28
- AUX_HEATING: boolean;
29
- BOOST_MODE: boolean;
30
- SLEEP_MODE: boolean;
31
- FROST_PROTECT: boolean;
32
- COMFORT_MODE: boolean;
33
- ECO_MODE: boolean;
34
- NATURAL_WIND: boolean;
35
- TEMP_FAHRENHEIT: boolean;
36
- SCREEN_DISPLAY: boolean | undefined;
37
- SCREEN_DISPLAY_NEW: boolean;
38
- FULL_DUST: boolean;
39
- INDOOR_TEMPERATURE?: number;
40
- OUTDOOR_TEMPERATURE?: number;
41
- INDIRECT_WIND: boolean;
42
- INDOOR_HUMIDITY: number | undefined;
43
- BREEZELESS: boolean;
44
- TOTAL_ENERGY_CONSUMPTION?: number;
45
- CURRENT_ENERGY_CONSUMPTION?: number;
46
- REALTIME_POWER: number;
47
- FRESH_AIR_POWER: boolean;
48
- FRESH_AIR_FAN_SPEED: number;
49
- FRESH_AIR_MODE?: string;
50
- FRESH_AIR_1: boolean;
51
- FRESH_AIR_2: boolean;
52
- RATE_SELECT?: number;
53
- SELF_CLEAN?: boolean;
54
- }
55
- export default class MideaACDevice extends MideaDevice {
56
- readonly FRESH_AIR_FAN_SPEEDS: {
57
- 0: string;
58
- 20: string;
59
- 40: string;
60
- 60: string;
61
- 80: string;
62
- 100: string;
63
- };
64
- readonly FRESH_AIR_FAN_SPEEDS_REVERSE: {
65
- 100: string;
66
- 80: string;
67
- 60: string;
68
- 40: string;
69
- 20: string;
70
- 0: string;
71
- };
72
- attributes: ACAttributes;
73
- private fresh_air_version?;
74
- private used_subprotocol;
75
- private bb_sn8_flag;
76
- private bb_timer;
77
- private readonly DEFAULT_POWER_ANALYSIS_METHOD;
78
- private power_analysis_method?;
79
- private alternate_switch_display;
80
- private last_fan_speed;
81
- private defaultFahrenheit;
82
- private defaultScreenOff;
83
- /*********************************************************************
84
- * Constructor initializes all the attributes. We set some to invalid
85
- * values so that they are detected as "changed" on the first status
86
- * refresh... and passed back to the Homebridge/HomeKit accessory callback
87
- * function to set their initial values.
88
- */
89
- constructor(logger: Logger, device_info: DeviceInfo, config: Config, deviceConfig: DeviceConfig);
90
- build_query(): (MessageQuery | MessagePowerQuery | MessageNewProtocolQuery)[];
91
- process_message(msg: Buffer): void;
92
- make_message_set(): MessageGeneralSet;
93
- make_subprotocol_message_set(): MessageSubProtocolSet;
94
- make_message_unique_set(): MessageGeneralSet | MessageSubProtocolSet;
95
- set_attribute(attributes: Partial<ACAttributes>): Promise<void>;
96
- set_alternate_switch_display(value: boolean): void;
97
- set_target_temperature(target_temperature: number, mode?: number): Promise<void>;
98
- set_swing(swing_horizontal: boolean, swing_vertical: boolean): Promise<void>;
99
- set_fan_auto(fan_auto: boolean): Promise<void>;
100
- set_swing_angle(swing_direction: SwingAngle, swing_angle: number): Promise<void>;
101
- set_self_clean(self_clean: boolean): Promise<void>;
102
- set_rate_select(rate_select: number): Promise<void>;
103
- protected set_subtype(): void;
104
- }
1
+ /// <reference types="node" />
2
+ /***********************************************************************
3
+ * Midea Air Conditioner Device class
4
+ *
5
+ * Copyright (c) 2023 Kovalovszky Patrik, https://github.com/kovapatrik
6
+ *
7
+ * With thanks to https://github.com/georgezhao2010/midea_ac_lan
8
+ *
9
+ */
10
+ import { Logger } from 'homebridge';
11
+ import { DeviceInfo } from '../../core/MideaConstants';
12
+ import MideaDevice, { DeviceAttributeBase } from '../../core/MideaDevice';
13
+ import { MessageGeneralSet, MessageNewProtocolQuery, MessagePowerQuery, MessageQuery, MessageSubProtocolSet } from './MideaACMessage';
14
+ import { Config, DeviceConfig, SwingAngle } from '../../platformUtils';
15
+ export interface ACAttributes extends DeviceAttributeBase {
16
+ PROMPT_TONE: boolean;
17
+ POWER: boolean | undefined;
18
+ MODE: number;
19
+ TARGET_TEMPERATURE: number;
20
+ FAN_SPEED: number;
21
+ FAN_AUTO: boolean;
22
+ SWING_VERTICAL: boolean | undefined;
23
+ WIND_SWING_UD_ANGLE: number;
24
+ SWING_HORIZONTAL: boolean | undefined;
25
+ WIND_SWING_LR_ANGLE: number;
26
+ SMART_EYE: boolean;
27
+ DRY: boolean;
28
+ AUX_HEATING: boolean;
29
+ BOOST_MODE: boolean;
30
+ SLEEP_MODE: boolean;
31
+ FROST_PROTECT: boolean;
32
+ COMFORT_MODE: boolean;
33
+ ECO_MODE: boolean;
34
+ NATURAL_WIND: boolean;
35
+ TEMP_FAHRENHEIT: boolean;
36
+ SCREEN_DISPLAY: boolean | undefined;
37
+ SCREEN_DISPLAY_NEW: boolean;
38
+ FULL_DUST: boolean;
39
+ INDOOR_TEMPERATURE?: number;
40
+ OUTDOOR_TEMPERATURE?: number;
41
+ INDIRECT_WIND: boolean;
42
+ INDOOR_HUMIDITY: number | undefined;
43
+ BREEZELESS: boolean;
44
+ TOTAL_ENERGY_CONSUMPTION?: number;
45
+ CURRENT_ENERGY_CONSUMPTION?: number;
46
+ REALTIME_POWER: number;
47
+ FRESH_AIR_POWER: boolean;
48
+ FRESH_AIR_FAN_SPEED: number;
49
+ FRESH_AIR_MODE?: string;
50
+ FRESH_AIR_1: boolean;
51
+ FRESH_AIR_2: boolean;
52
+ RATE_SELECT?: number;
53
+ SELF_CLEAN?: boolean;
54
+ ION?: boolean;
55
+ }
56
+ export default class MideaACDevice extends MideaDevice {
57
+ readonly FRESH_AIR_FAN_SPEEDS: {
58
+ 0: string;
59
+ 20: string;
60
+ 40: string;
61
+ 60: string;
62
+ 80: string;
63
+ 100: string;
64
+ };
65
+ readonly FRESH_AIR_FAN_SPEEDS_REVERSE: {
66
+ 100: string;
67
+ 80: string;
68
+ 60: string;
69
+ 40: string;
70
+ 20: string;
71
+ 0: string;
72
+ };
73
+ attributes: ACAttributes;
74
+ private fresh_air_version?;
75
+ private used_subprotocol;
76
+ private bb_sn8_flag;
77
+ private bb_timer;
78
+ private readonly DEFAULT_POWER_ANALYSIS_METHOD;
79
+ private power_analysis_method?;
80
+ private alternate_switch_display;
81
+ private last_fan_speed;
82
+ private defaultFahrenheit;
83
+ private defaultScreenOff;
84
+ /*********************************************************************
85
+ * Constructor initializes all the attributes. We set some to invalid
86
+ * values so that they are detected as "changed" on the first status
87
+ * refresh... and passed back to the Homebridge/HomeKit accessory callback
88
+ * function to set their initial values.
89
+ */
90
+ constructor(logger: Logger, device_info: DeviceInfo, config: Config, deviceConfig: DeviceConfig);
91
+ build_query(): (MessageQuery | MessagePowerQuery | MessageNewProtocolQuery)[];
92
+ process_message(msg: Buffer): void;
93
+ make_message_set(): MessageGeneralSet;
94
+ make_subprotocol_message_set(): MessageSubProtocolSet;
95
+ make_message_unique_set(): MessageGeneralSet | MessageSubProtocolSet;
96
+ set_attribute(attributes: Partial<ACAttributes>): Promise<void>;
97
+ set_alternate_switch_display(value: boolean): void;
98
+ set_target_temperature(target_temperature: number, mode?: number): Promise<void>;
99
+ set_swing(swing_horizontal: boolean, swing_vertical: boolean): Promise<void>;
100
+ set_fan_auto(fan_auto: boolean): Promise<void>;
101
+ set_swing_angle(swing_direction: SwingAngle, swing_angle: number): Promise<void>;
102
+ set_self_clean(self_clean: boolean): Promise<void>;
103
+ set_ion(ion: boolean): Promise<void>;
104
+ set_rate_select(rate_select: number): Promise<void>;
105
+ protected set_subtype(): void;
106
+ }
105
107
  //# sourceMappingURL=MideaACDevice.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MideaACDevice.d.ts","sourceRoot":"","sources":["../../../src/devices/ac/MideaACDevice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MideaACDevice.d.ts","sourceRoot":"","sources":["../../../src/devices/ac/MideaACDevice.ts"],"names":[],"mappings":"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"}