homebridge-midea-platform 0.2.0 → 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 +55 -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 +26 -0
  11. package/dist/accessory/AirConditionerAccessory.d.ts.map +1 -1
  12. package/dist/accessory/AirConditionerAccessory.js +153 -45
  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 +109 -58
  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 +42 -17
  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 +7 -1
  75. package/dist/platformUtils.d.ts.map +1 -1
  76. package/dist/platformUtils.js.map +1 -1
  77. package/package.json +12 -5
package/.eslintignore ADDED
@@ -0,0 +1,3 @@
1
+ dist
2
+ .vscode
3
+ .github
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env sh
2
+ . "$(dirname -- "$0")/_/husky.sh"
3
+
4
+ npm run format
package/.prettierrc ADDED
@@ -0,0 +1,18 @@
1
+ {
2
+ "useTabs": false,
3
+ "printWidth": 80,
4
+ "tabWidth": 2,
5
+ "semi": true,
6
+ "singleQuote": true,
7
+ "trailingComma": "all",
8
+ "bracketSpacing": true,
9
+ "bracketSameLine": false,
10
+ "overrides": [
11
+ {
12
+ "files": "*.{json,babelrc,eslintrc,remarkrc,prettierrc}",
13
+ "options": {
14
+ "useTabs": false
15
+ }
16
+ }
17
+ ]
18
+ }
package/README.md CHANGED
@@ -1,11 +1,16 @@
1
1
  # Still in development! Needs testing!
2
+
2
3
  The plugin only supports Midea SmartHome (formerly Midea MSmartHome) accounts and applications. You must have the devices assigned to the account which you will use in the plugin.
3
4
 
4
5
  If anyone wants to contribute, you are welcome to do so! Because the plugin is almost identical with [midea_ac_lan](https://github.com/georgezhao2010/midea_ac_lan), you can create any device within this plugin.
5
6
  Also, my TCP socket knowledge (especially in Node.js) is kinda bad, so if you have any more idea how to reconnect in case of connection is lost, or when there is any error in the TCP connection, I will thank you!
7
+
6
8
  # Usage
9
+
7
10
  **Make sure you setup the plugin as a child bridge! (Plugins->Homebridge Midea->The wrench icon->Bridge Settings->Toggle the platform)**
8
11
  In the plugin's config you have to provide the IP of your Midea device, so it's highly recommended to reserve an IP for the devices you need. There is also a discover functionality, but I didn't tested it fully yet.
12
+
9
13
  # About the plugin
14
+
10
15
  The plugin is almost a one-to-one copy of [midea_ac_lan](https://github.com/georgezhao2010/midea_ac_lan), so huge props to [@georgezhao2010](https://github.com/georgezhao2010)!
11
16
  I've just figured how to do some Python specific (or Python package specific) things in Node.js and wrote the Homebridge plugin for it.
@@ -27,6 +27,38 @@
27
27
  "default": "Midea SmartHome (MSmartHome)",
28
28
  "required": true
29
29
  },
30
+ "refreshInterval": {
31
+ "title": "Interval, in seconds, to query Midea devices for state",
32
+ "type": "number",
33
+ "required": false,
34
+ "default": 30,
35
+ "minimum": 0,
36
+ "maximum": 86400,
37
+ "description": "The plugin will query devices for their current state (temperature, humidity, etc.). Some Midea devices update the plugin automatically on any change, others require that the device is queried. You can observe in the log whenever a state changes. The default is 30 seconds, the maximum is 86400 (24 hours). Setting value to 0 (zero) disables polling and updates will only be noted if devices sends it automatically."
38
+ },
39
+ "heartbeatInterval": {
40
+ "title": "Interval, in seconds, to send keep-alive message to Midea devices",
41
+ "type": "number",
42
+ "required": false,
43
+ "default": 10,
44
+ "minimum": 10,
45
+ "maximum": 120,
46
+ "description": "The plugin sends a message to Midea devices every 10 seconds to keep the network socket open. You can increase this up to a maximum of 120 (2 minutes). If you see socket closed messages in the log reduce this value."
47
+ },
48
+ "forceLogin": {
49
+ "title": "Login to Midea Cloud every restart",
50
+ "type": "boolean",
51
+ "required": false,
52
+ "default": false,
53
+ "description": "Force the plugin to login and retrieve new device token/key pair every time the plugin starts. By default login and token/key retrieval occurs only if a new Midea device is discovered on the network."
54
+ },
55
+ "verbose": {
56
+ "title": "Enable verbose logging",
57
+ "type": "boolean",
58
+ "required": false,
59
+ "default": false,
60
+ "description": "Enables additional debug logging that may help a developer identify problems when working on Midea device support. Homebridge must be running with debug enabled for any debug logging to be visible."
61
+ },
30
62
  "devices": {
31
63
  "title": "Devices",
32
64
  "type": "array",
@@ -88,6 +120,12 @@
88
120
  "type": "boolean",
89
121
  "default": false
90
122
  },
123
+ "ecoSwitch": {
124
+ "title": "Eco Mode Switch",
125
+ "description": "Toggles if the ECO mode switch is created with the accessory.",
126
+ "type": "boolean",
127
+ "default": true
128
+ },
91
129
  "switchDisplay": {
92
130
  "type": "object",
93
131
  "properties": {
@@ -156,6 +194,22 @@
156
194
  "key": "registeredApp",
157
195
  "type": "string"
158
196
  },
197
+ {
198
+ "key": "refreshInterval",
199
+ "type": "number"
200
+ },
201
+ {
202
+ "key": "heartbeatInterval",
203
+ "type": "number"
204
+ },
205
+ {
206
+ "key": "forceLogin",
207
+ "type": "boolean"
208
+ },
209
+ {
210
+ "key": "verbose",
211
+ "type": "boolean"
212
+ },
159
213
  {
160
214
  "key": "devices",
161
215
  "type": "array",
@@ -175,6 +229,7 @@
175
229
  "devices[].AC_options.swingMode",
176
230
  "devices[].AC_options.outDoorTemp",
177
231
  "devices[].AC_options.audioFeedback",
232
+ "devices[].AC_options.ecoSwitch",
178
233
  {
179
234
  "key": "devices[].AC_options.switchDisplay",
180
235
  "items": [
@@ -1,8 +1,9 @@
1
1
  import { MideaAccessory, MideaPlatform } from '../platform';
2
2
  import AirConditionerAccessory from './AirConditionerAccessory';
3
+ import DehumidifierAccessory from './DehumidifierAccessory';
3
4
  import MideaDevice from '../core/MideaDevice';
4
5
  import { DeviceConfig } from '../platformUtils';
5
6
  export default class AccessoryFactory {
6
- static createAccessory<T extends MideaDevice>(platform: MideaPlatform, accessory: MideaAccessory, device: T, configDev: DeviceConfig): AirConditionerAccessory;
7
+ static createAccessory<T extends MideaDevice>(platform: MideaPlatform, accessory: MideaAccessory, device: T, configDev: DeviceConfig): AirConditionerAccessory | DehumidifierAccessory;
7
8
  }
8
9
  //# sourceMappingURL=AccessoryFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccessoryFactory.d.ts","sourceRoot":"","sources":["../../src/accessory/AccessoryFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAChE,OAAO,WAAW,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,MAAM,CAAC,OAAO,OAAO,gBAAgB;WAErB,eAAe,CAAC,CAAC,SAAS,WAAW,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY;CAM5I"}
1
+ {"version":3,"file":"AccessoryFactory.d.ts","sourceRoot":"","sources":["../../src/accessory/AccessoryFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAChE,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,WAAW,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIhD,MAAM,CAAC,OAAO,OAAO,gBAAgB;WACrB,eAAe,CAAC,CAAC,SAAS,WAAW,EACjD,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,cAAc,EACzB,MAAM,EAAE,CAAC,EACT,SAAS,EAAE,YAAY;CAmB1B"}
@@ -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 AirConditionerAccessory_1 = __importDefault(require("./AirConditionerAccessory"));
8
+ const DehumidifierAccessory_1 = __importDefault(require("./DehumidifierAccessory"));
8
9
  class AccessoryFactory {
9
10
  static createAccessory(platform, accessory, device, configDev) {
10
11
  switch (device.type) {
11
12
  case MideaConstants_1.DeviceType.AIR_CONDITIONER:
12
13
  return new AirConditionerAccessory_1.default(platform, accessory, device, configDev);
14
+ case MideaConstants_1.DeviceType.DEHUMIDIFIER:
15
+ return new DehumidifierAccessory_1.default(platform, accessory, device, configDev);
13
16
  }
14
17
  }
15
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AccessoryFactory.js","sourceRoot":"","sources":["../../src/accessory/AccessoryFactory.ts"],"names":[],"mappings":";;;;;AAAA,2DAAoD;AAEpD,wFAAgE;AAKhE,MAAqB,gBAAgB;IAE5B,MAAM,CAAC,eAAe,CAAwB,QAAuB,EAAE,SAAyB,EAAE,MAAS,EAAE,SAAuB;QACzI,QAAQ,MAAM,CAAC,IAAI,EAAE;YACnB,KAAK,2BAAU,CAAC,eAAe;gBAC7B,OAAO,IAAI,iCAAuB,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAkC,EAAE,SAAS,CAAC,CAAC;SAC1G;IACH,CAAC;CACF;AARD,mCAQC"}
1
+ {"version":3,"file":"AccessoryFactory.js","sourceRoot":"","sources":["../../src/accessory/AccessoryFactory.ts"],"names":[],"mappings":";;;;;AAAA,2DAAoD;AAEpD,wFAAgE;AAChE,oFAA4D;AAM5D,MAAqB,gBAAgB;IAC5B,MAAM,CAAC,eAAe,CAC3B,QAAuB,EACvB,SAAyB,EACzB,MAAS,EACT,SAAuB;QAEvB,QAAQ,MAAM,CAAC,IAAI,EAAE;YACnB,KAAK,2BAAU,CAAC,eAAe;gBAC7B,OAAO,IAAI,iCAAuB,CAChC,QAAQ,EACR,SAAS,EACT,MAAkC,EAClC,SAAS,CACV,CAAC;YACJ,KAAK,2BAAU,CAAC,YAAY;gBAC1B,OAAO,IAAI,+BAAqB,CAC9B,QAAQ,EACR,SAAS,EACT,MAAkC,EAClC,SAAS,CACV,CAAC;SACL;IACH,CAAC;CACF;AAxBD,mCAwBC"}
@@ -1,3 +1,13 @@
1
+ /***********************************************************************
2
+ * Midea Platform Air Conditioner Accessory class
3
+ *
4
+ * Copyright (c) 2023 Kovalovszky Patrik, https://github.com/kovapatrik
5
+ *
6
+ * Based on https://github.com/homebridge/homebridge-plugin-template
7
+ *
8
+ * An instance of this class is created for each accessory the platform registers.
9
+ *
10
+ */
1
11
  import { CharacteristicValue } from 'homebridge';
2
12
  import { MideaAccessory, MideaPlatform } from '../platform';
3
13
  import BaseAccessory from './BaseAccessory';
@@ -10,8 +20,22 @@ export default class AirConditionerAccessory extends BaseAccessory<MideaACDevice
10
20
  private outDoorTemperatureService?;
11
21
  private displayService?;
12
22
  private fanService?;
23
+ private ecoModeService?;
13
24
  private accessories;
25
+ /*********************************************************************
26
+ * Constructor registers all the service types with Homebridge, registers
27
+ * a callback function with the MideaDevice class, and requests device status.
28
+ */
14
29
  constructor(platform: MideaPlatform, accessory: MideaAccessory, device: MideaACDevice, configDev: DeviceConfig);
30
+ /*********************************************************************
31
+ * Callback function called by MideaDevice whenever there is a change to
32
+ * any attribute value.
33
+ */
34
+ private updateCharacteristics;
35
+ /*********************************************************************
36
+ * Callback functions for each Homebridge/HomeKit service
37
+ *
38
+ */
15
39
  getActive(): Promise<CharacteristicValue>;
16
40
  setActive(value: CharacteristicValue): Promise<void>;
17
41
  getCurrentHeaterCoolerState(): CharacteristicValue;
@@ -27,6 +51,8 @@ export default class AirConditionerAccessory extends BaseAccessory<MideaACDevice
27
51
  getOutdoorTemperature(): CharacteristicValue;
28
52
  getDisplayActive(): CharacteristicValue;
29
53
  setDisplayActive(value: CharacteristicValue): Promise<void>;
54
+ getEcoMode(): CharacteristicValue;
55
+ setEcoMode(value: CharacteristicValue): Promise<void>;
30
56
  getOrCreateSubAccessory(type: string): MideaAccessory;
31
57
  }
32
58
  //# sourceMappingURL=AirConditionerAccessory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AirConditionerAccessory.d.ts","sourceRoot":"","sources":["../../src/accessory/AirConditionerAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAW,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAa,MAAM,kBAAkB,CAAC;AAC3D,OAAO,aAAa,MAAM,6BAA6B,CAAC;AAGxD,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,aAAa,CAAC,aAAa,CAAC;IAW7E,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa;IACxC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY;IAV5C,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,yBAAyB,CAAC,CAAU;IAC5C,OAAO,CAAC,cAAc,CAAC,CAAU;IACjC,OAAO,CAAC,UAAU,CAAC,CAAU;IAC7B,OAAO,CAAC,WAAW,CAAmB;gBAGpC,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,cAAc,EACN,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,YAAY;IAgGtC,SAAS,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAKzC,SAAS,CAAC,KAAK,EAAE,mBAAmB;IAM1C,2BAA2B,IAAI,mBAAmB;IAsBlD,0BAA0B,IAAI,mBAAmB;IAU3C,0BAA0B,CAAC,KAAK,EAAE,mBAAmB;IAc3D,qBAAqB,IAAI,mBAAmB;IAI5C,oBAAoB,IAAI,mBAAmB;IAKrC,oBAAoB,CAAC,KAAK,EAAE,mBAAmB;IAMrD,YAAY,IAAI,mBAAmB;IAK7B,YAAY,CAAC,KAAK,EAAE,mBAAmB;IAa7C,gBAAgB,IAAI,mBAAmB;IAIjC,gBAAgB,CAAC,KAAK,EAAE,mBAAmB;IAQjD,qBAAqB,IAAI,mBAAmB;IAI5C,gBAAgB,IAAI,mBAAmB;IAIjC,gBAAgB,CAAC,KAAK,EAAE,mBAAmB;IAMjD,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc;CAwBtD"}
1
+ {"version":3,"file":"AirConditionerAccessory.d.ts","sourceRoot":"","sources":["../../src/accessory/AirConditionerAccessory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,mBAAmB,EAAW,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAa,MAAM,kBAAkB,CAAC;AAC3D,OAAO,aAA+B,MAAM,6BAA6B,CAAC;AAG1E,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,aAAa,CAAC,aAAa,CAAC;IAe7E,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa;IACxC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY;IAf5C,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,yBAAyB,CAAC,CAAU;IAC5C,OAAO,CAAC,cAAc,CAAC,CAAU;IACjC,OAAO,CAAC,UAAU,CAAC,CAAU;IAC7B,OAAO,CAAC,cAAc,CAAC,CAAU;IACjC,OAAO,CAAC,WAAW,CAAmB;IAEtC;;;OAGG;gBAED,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,cAAc,EACN,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,YAAY;IAiL5C;;;OAGG;YACW,qBAAqB;IA8EnC;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAMzC,SAAS,CAAC,KAAK,EAAE,mBAAmB;IAS1C,2BAA2B,IAAI,mBAAmB;IA4BlD,0BAA0B,IAAI,mBAAmB;IAU3C,0BAA0B,CAAC,KAAK,EAAE,mBAAmB;IAc3D,qBAAqB,IAAI,mBAAmB;IAO5C,oBAAoB,IAAI,mBAAmB;IAUrC,oBAAoB,CAAC,KAAK,EAAE,mBAAmB;IAQrD,YAAY,IAAI,mBAAmB;IAO7B,YAAY,CAAC,KAAK,EAAE,mBAAmB;IAkB7C,gBAAgB,IAAI,mBAAmB;IAIjC,gBAAgB,CAAC,KAAK,EAAE,mBAAmB;IAQjD,qBAAqB,IAAI,mBAAmB;IAI5C,gBAAgB,IAAI,mBAAmB;IAIjC,gBAAgB,CAAC,KAAK,EAAE,mBAAmB;IAMjD,UAAU,IAAI,mBAAmB;IAI3B,UAAU,CAAC,KAAK,EAAE,mBAAmB;IAI3C,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc;CAuCtD"}
@@ -7,25 +7,36 @@ const BaseAccessory_1 = __importDefault(require("./BaseAccessory"));
7
7
  const platformUtils_1 = require("../platformUtils");
8
8
  const settings_1 = require("../settings");
9
9
  class AirConditionerAccessory extends BaseAccessory_1.default {
10
+ /*********************************************************************
11
+ * Constructor registers all the service types with Homebridge, registers
12
+ * a callback function with the MideaDevice class, and requests device status.
13
+ */
10
14
  constructor(platform, accessory, device, configDev) {
15
+ var _a, _b;
11
16
  super(platform, accessory, device, configDev);
12
17
  this.device = device;
13
18
  this.configDev = configDev;
14
- this.service = this.accessory.getService(this.platform.Service.HeaterCooler) ||
15
- this.accessory.addService(this.platform.Service.HeaterCooler);
19
+ this.service =
20
+ this.accessory.getService(this.platform.Service.HeaterCooler) ||
21
+ this.accessory.addService(this.platform.Service.HeaterCooler);
16
22
  this.service.setCharacteristic(this.platform.Characteristic.Name, this.device.name);
17
- this.accessories = this.platform.accessories.filter(acc => acc.context.id === this.accessory.UUID && acc !== this.accessory);
18
- this.service.getCharacteristic(this.platform.Characteristic.Active)
23
+ this.accessories = this.platform.accessories.filter((acc) => acc.context.id === this.accessory.UUID && acc !== this.accessory);
24
+ this.service
25
+ .getCharacteristic(this.platform.Characteristic.Active)
19
26
  .onGet(this.getActive.bind(this))
20
27
  .onSet(this.setActive.bind(this));
21
- this.service.getCharacteristic(this.platform.Characteristic.CurrentHeaterCoolerState)
28
+ this.service
29
+ .getCharacteristic(this.platform.Characteristic.CurrentHeaterCoolerState)
22
30
  .onGet(this.getCurrentHeaterCoolerState.bind(this));
23
- this.service.getCharacteristic(this.platform.Characteristic.TargetHeaterCoolerState)
31
+ this.service
32
+ .getCharacteristic(this.platform.Characteristic.TargetHeaterCoolerState)
24
33
  .onGet(this.getTargetHeaterCoolerState.bind(this))
25
34
  .onSet(this.setTargetHeaterCoolerState.bind(this));
26
- this.service.getCharacteristic(this.platform.Characteristic.CurrentTemperature)
35
+ this.service
36
+ .getCharacteristic(this.platform.Characteristic.CurrentTemperature)
27
37
  .onGet(this.getCurrentTemperature.bind(this));
28
- this.service.getCharacteristic(this.platform.Characteristic.CoolingThresholdTemperature)
38
+ this.service
39
+ .getCharacteristic(this.platform.Characteristic.CoolingThresholdTemperature)
29
40
  .onGet(this.getTargetTemperature.bind(this))
30
41
  .onSet(this.setTargetTemperature.bind(this))
31
42
  .setProps({
@@ -33,7 +44,8 @@ class AirConditionerAccessory extends BaseAccessory_1.default {
33
44
  maxValue: this.configDev.AC_options.maxTemp,
34
45
  minStep: this.configDev.AC_options.tempStep,
35
46
  });
36
- this.service.getCharacteristic(this.platform.Characteristic.HeatingThresholdTemperature)
47
+ this.service
48
+ .getCharacteristic(this.platform.Characteristic.HeatingThresholdTemperature)
37
49
  .onGet(this.getTargetTemperature.bind(this))
38
50
  .onSet(this.setTargetTemperature.bind(this))
39
51
  .setProps({
@@ -41,7 +53,8 @@ class AirConditionerAccessory extends BaseAccessory_1.default {
41
53
  maxValue: this.configDev.AC_options.maxTemp,
42
54
  minStep: this.configDev.AC_options.tempStep,
43
55
  });
44
- this.service.getCharacteristic(this.platform.Characteristic.RotationSpeed)
56
+ this.service
57
+ .getCharacteristic(this.platform.Characteristic.RotationSpeed)
45
58
  .onGet(this.getRotationSpeed.bind(this))
46
59
  .onSet(this.setRotationSpeed.bind(this))
47
60
  .setProps({
@@ -51,54 +64,139 @@ class AirConditionerAccessory extends BaseAccessory_1.default {
51
64
  });
52
65
  // Swing modes
53
66
  if (this.configDev.AC_options.swingMode !== platformUtils_1.SwingMode.NONE) {
54
- this.service.getCharacteristic(this.platform.Characteristic.SwingMode)
67
+ this.service
68
+ .getCharacteristic(this.platform.Characteristic.SwingMode)
55
69
  .onGet(this.getSwingMode.bind(this))
56
70
  .onSet(this.setSwingMode.bind(this));
57
71
  }
58
72
  // Outdoor temperature sensor
59
73
  if (this.configDev.AC_options.outDoorTemp) {
60
- const outDoorTemperatureAccessory = this.getOrCreateSubAccessory('Outdoor');
61
- this.outDoorTemperatureService = outDoorTemperatureAccessory.getService(this.platform.Service.TemperatureSensor) ||
62
- outDoorTemperatureAccessory.addService(this.platform.Service.TemperatureSensor);
74
+ this.outDoorTemperatureService = this.accessory.getServiceById(this.platform.Service.TemperatureSensor, 'Outdoor');
75
+ if (!this.outDoorTemperatureService) {
76
+ this.outDoorTemperatureService = this.accessory.addService(this.platform.Service.TemperatureSensor, `${this.device.name} Outdoor`, 'Outdoor');
77
+ }
63
78
  this.outDoorTemperatureService.setCharacteristic(this.platform.Characteristic.Name, `${this.device.name} Outdoor`);
64
- this.outDoorTemperatureService.getCharacteristic(this.platform.Characteristic.CurrentTemperature)
79
+ this.outDoorTemperatureService
80
+ .getCharacteristic(this.platform.Characteristic.CurrentTemperature)
65
81
  .onGet(this.getOutdoorTemperature.bind(this));
66
- this.outDoorTemperatureService.getCharacteristic(this.platform.Characteristic.StatusFault)
67
- .onGet(() => this.device.attributes.OUTDOOR_TEMPERATURE === undefined ?
68
- this.platform.Characteristic.StatusFault.GENERAL_FAULT :
69
- this.platform.Characteristic.StatusFault.NO_FAULT);
82
+ this.outDoorTemperatureService
83
+ .getCharacteristic(this.platform.Characteristic.StatusFault)
84
+ .onGet(() => this.device.attributes.OUTDOOR_TEMPERATURE === undefined
85
+ ? this.platform.Characteristic.StatusFault.GENERAL_FAULT
86
+ : this.platform.Characteristic.StatusFault.NO_FAULT);
87
+ this.service.addLinkedService(this.outDoorTemperatureService);
70
88
  }
71
- // Display
72
- if (this.configDev.AC_options.switchDisplay.flag) {
73
- this.device.set_alternate_switch_display(this.configDev.AC_options.switchDisplay.command);
74
- const displayAccessory = this.getOrCreateSubAccessory('Display');
75
- this.displayService = displayAccessory.getService(this.platform.Service.Switch) ||
76
- displayAccessory.addService(this.platform.Service.Switch);
77
- this.displayService.setCharacteristic(this.platform.Characteristic.Name, `${this.device.name} Display`);
78
- this.displayService.getCharacteristic(this.platform.Characteristic.On)
79
- .onGet(this.getDisplayActive.bind(this))
80
- .onSet(this.setDisplayActive.bind(this));
89
+ // Switches
90
+ if (((_a = this.configDev.AC_options) === null || _a === void 0 ? void 0 : _a.ecoSwitch) ||
91
+ ((_b = this.configDev.AC_options) === null || _b === void 0 ? void 0 : _b.switchDisplay.flag)) {
92
+ const switchAccessory = this.getOrCreateSubAccessory('Switch');
93
+ // Display
94
+ if (this.configDev.AC_options.switchDisplay.flag) {
95
+ this.device.set_alternate_switch_display(this.configDev.AC_options.switchDisplay.command);
96
+ this.displayService = switchAccessory.getServiceById(this.platform.Service.Switch, 'Display');
97
+ if (!this.displayService) {
98
+ this.displayService = switchAccessory.addService(this.platform.Service.Switch, `${this.device.name} Display`, 'Display');
99
+ }
100
+ this.displayService
101
+ .getCharacteristic(this.platform.Characteristic.On)
102
+ .onGet(this.getDisplayActive.bind(this))
103
+ .onSet(this.setDisplayActive.bind(this));
104
+ }
105
+ if (this.configDev.AC_options.ecoSwitch) {
106
+ this.ecoModeService = switchAccessory.getServiceById(this.platform.Service.Switch, 'EcoMode');
107
+ if (!this.ecoModeService) {
108
+ this.ecoModeService = switchAccessory.addService(this.platform.Service.Switch, `${this.device.name} Eco`, 'EcoMode');
109
+ }
110
+ this.ecoModeService
111
+ .getCharacteristic(this.platform.Characteristic.On)
112
+ .onGet(this.getEcoMode.bind(this))
113
+ .onSet(this.setEcoMode.bind(this));
114
+ }
81
115
  }
82
116
  // Misc
83
- this.device.attributes.PROMPT_TONE = this.configDev.AC_options.audioFeedback;
84
- this.device.attributes.TEMP_FAHRENHEIT = this.configDev.AC_options.fahrenHeit;
117
+ this.device.attributes.PROMPT_TONE =
118
+ this.configDev.AC_options.audioFeedback;
119
+ this.device.attributes.TEMP_FAHRENHEIT =
120
+ this.configDev.AC_options.fahrenHeit;
121
+ // Register a callback function with MideaDevice and then refresh device status. The callback
122
+ // is called whenever there is a change in any attribute value from the device.
123
+ this.device.on('update', this.updateCharacteristics.bind(this));
124
+ this.device.refresh_status();
85
125
  // Remove unused accessories
86
126
  this.platform.api.unregisterPlatformAccessories(settings_1.PLUGIN_NAME, settings_1.PLATFORM_NAME, this.accessories);
87
127
  }
128
+ /*********************************************************************
129
+ * Callback function called by MideaDevice whenever there is a change to
130
+ * any attribute value.
131
+ */
132
+ async updateCharacteristics(attributes) {
133
+ var _a;
134
+ for (const [k, v] of Object.entries(attributes)) {
135
+ this.platform.log.debug(`[${this.device.name}] Set attribute ${k} to: ${v}`);
136
+ let updateState = false;
137
+ switch (k.toLowerCase()) {
138
+ case 'power':
139
+ this.service.updateCharacteristic(this.platform.Characteristic.Active, v
140
+ ? this.platform.Characteristic.Active.ACTIVE
141
+ : this.platform.Characteristic.Active.INACTIVE);
142
+ updateState = true;
143
+ break;
144
+ case 'screen_display':
145
+ (_a = this.displayService) === null || _a === void 0 ? void 0 : _a.updateCharacteristic(this.platform.Characteristic.On, !!v);
146
+ break;
147
+ case 'target_temperature':
148
+ // If MODE is 4 then device is heating. Therefore target temperature value must be heating target? Right?
149
+ if (this.device.attributes.MODE === 4) {
150
+ this.service.updateCharacteristic(this.platform.Characteristic.HeatingThresholdTemperature, v);
151
+ }
152
+ else {
153
+ this.service.updateCharacteristic(this.platform.Characteristic.CoolingThresholdTemperature, v);
154
+ }
155
+ updateState = true;
156
+ break;
157
+ case 'indoor_temperature':
158
+ this.service.updateCharacteristic(this.platform.Characteristic.CurrentTemperature, v);
159
+ updateState = true;
160
+ break;
161
+ case 'fan_speed':
162
+ this.service.updateCharacteristic(this.platform.Characteristic.RotationSpeed, v);
163
+ break;
164
+ case 'swing_vertical':
165
+ case 'swing_horizontal':
166
+ this.service.updateCharacteristic(this.platform.Characteristic.SwingMode, this.getSwingMode());
167
+ break;
168
+ case 'mode':
169
+ updateState = true;
170
+ break;
171
+ default:
172
+ this.platform.log.warn(`[${this.device.name}] Attempt to set unsupported attribute ${k} to ${v}`);
173
+ }
174
+ if (updateState) {
175
+ this.service.updateCharacteristic(this.platform.Characteristic.TargetHeaterCoolerState, this.getTargetHeaterCoolerState());
176
+ this.service.updateCharacteristic(this.platform.Characteristic.CurrentHeaterCoolerState, this.getCurrentHeaterCoolerState());
177
+ }
178
+ }
179
+ }
180
+ /*********************************************************************
181
+ * Callback functions for each Homebridge/HomeKit service
182
+ *
183
+ */
88
184
  async getActive() {
89
- return this.device.attributes.POWER ?
90
- this.platform.Characteristic.Active.ACTIVE : this.platform.Characteristic.Active.INACTIVE;
185
+ return this.device.attributes.POWER
186
+ ? this.platform.Characteristic.Active.ACTIVE
187
+ : this.platform.Characteristic.Active.INACTIVE;
91
188
  }
92
189
  async setActive(value) {
93
190
  var _a;
94
- await this.device.set_attribute({ POWER: value });
95
- this.device.attributes.SCREEN_DISPLAY = value;
96
- (_a = this.displayService) === null || _a === void 0 ? void 0 : _a.updateCharacteristic(this.platform.Characteristic.On, value);
191
+ await this.device.set_attribute({ POWER: !!value });
192
+ this.device.attributes.SCREEN_DISPLAY = !!value;
193
+ (_a = this.displayService) === null || _a === void 0 ? void 0 : _a.updateCharacteristic(this.platform.Characteristic.On, !!value);
97
194
  }
98
195
  getCurrentHeaterCoolerState() {
99
196
  var _a;
100
197
  if (this.device.attributes.POWER && this.device.attributes.MODE > 0) {
101
- if (this.device.attributes.TARGET_TEMPERATURE < ((_a = this.device.attributes.INDOOR_TEMPERATURE) !== null && _a !== void 0 ? _a : 0)) {
198
+ if (this.device.attributes.TARGET_TEMPERATURE <
199
+ ((_a = this.device.attributes.INDOOR_TEMPERATURE) !== null && _a !== void 0 ? _a : 0)) {
102
200
  if ([1, 2].includes(this.device.attributes.MODE)) {
103
201
  return this.platform.Characteristic.CurrentHeaterCoolerState.COOLING;
104
202
  }
@@ -106,7 +204,8 @@ class AirConditionerAccessory extends BaseAccessory_1.default {
106
204
  return this.platform.Characteristic.CurrentHeaterCoolerState.IDLE;
107
205
  }
108
206
  }
109
- else if (this.device.attributes.TARGET_TEMPERATURE === this.device.attributes.INDOOR_TEMPERATURE) {
207
+ else if (this.device.attributes.TARGET_TEMPERATURE ===
208
+ this.device.attributes.INDOOR_TEMPERATURE) {
110
209
  return this.platform.Characteristic.CurrentHeaterCoolerState.IDLE;
111
210
  }
112
211
  else {
@@ -148,7 +247,7 @@ class AirConditionerAccessory extends BaseAccessory_1.default {
148
247
  }
149
248
  getCurrentTemperature() {
150
249
  var _a;
151
- return (_a = this.device.attributes.INDOOR_TEMPERATURE) !== null && _a !== void 0 ? _a : this.configDev.AC_options.minTemp;
250
+ return ((_a = this.device.attributes.INDOOR_TEMPERATURE) !== null && _a !== void 0 ? _a : this.configDev.AC_options.minTemp);
152
251
  }
153
252
  getTargetTemperature() {
154
253
  return Math.max(this.configDev.AC_options.minTemp, Math.min(this.configDev.AC_options.maxTemp, this.device.attributes.TARGET_TEMPERATURE));
@@ -158,8 +257,10 @@ class AirConditionerAccessory extends BaseAccessory_1.default {
158
257
  await this.device.set_target_temperature(value);
159
258
  }
160
259
  getSwingMode() {
161
- return this.device.attributes.SWING_HORIZONTAL || this.device.attributes.SWING_VERTICAL ?
162
- this.platform.Characteristic.SwingMode.SWING_ENABLED : this.platform.Characteristic.SwingMode.SWING_DISABLED;
260
+ return this.device.attributes.SWING_HORIZONTAL ||
261
+ this.device.attributes.SWING_VERTICAL
262
+ ? this.platform.Characteristic.SwingMode.SWING_ENABLED
263
+ : this.platform.Characteristic.SwingMode.SWING_DISABLED;
163
264
  }
164
265
  async setSwingMode(value) {
165
266
  switch (value) {
@@ -186,20 +287,26 @@ class AirConditionerAccessory extends BaseAccessory_1.default {
186
287
  return (_a = this.device.attributes.OUTDOOR_TEMPERATURE) !== null && _a !== void 0 ? _a : -270;
187
288
  }
188
289
  getDisplayActive() {
189
- return this.device.attributes.SCREEN_DISPLAY;
290
+ return !!this.device.attributes.SCREEN_DISPLAY; // force boolean
190
291
  }
191
292
  async setDisplayActive(value) {
192
293
  if (this.device.attributes.POWER) {
193
- await this.device.set_attribute({ SCREEN_DISPLAY: value });
294
+ await this.device.set_attribute({ SCREEN_DISPLAY: !!value });
194
295
  }
195
296
  }
297
+ getEcoMode() {
298
+ return this.device.attributes.ECO_MODE;
299
+ }
300
+ async setEcoMode(value) {
301
+ await this.device.set_attribute({ ECO_MODE: !!value });
302
+ }
196
303
  getOrCreateSubAccessory(type) {
197
304
  let accessory;
198
305
  if (this.configDev.singleAccessory) {
199
306
  accessory = this.accessory;
200
307
  }
201
308
  else {
202
- const tempFind = this.accessories.findIndex(acc => acc.context.type === type);
309
+ const tempFind = this.accessories.findIndex((acc) => acc.context.type === type);
203
310
  if (tempFind !== -1) {
204
311
  accessory = this.accessories[tempFind];
205
312
  this.accessories.splice(tempFind, 1);
@@ -210,7 +317,8 @@ class AirConditionerAccessory extends BaseAccessory_1.default {
210
317
  accessory.context.id = this.accessory.UUID;
211
318
  this.platform.api.registerPlatformAccessories(settings_1.PLUGIN_NAME, settings_1.PLATFORM_NAME, [accessory]);
212
319
  }
213
- accessory.getService(this.platform.Service.AccessoryInformation)
320
+ accessory
321
+ .getService(this.platform.Service.AccessoryInformation)
214
322
  .setCharacteristic(this.platform.Characteristic.Manufacturer, 'Midea')
215
323
  .setCharacteristic(this.platform.Characteristic.Model, this.device.model)
216
324
  .setCharacteristic(this.platform.Characteristic.SerialNumber, this.device.sn);
@@ -1 +1 @@
1
- {"version":3,"file":"AirConditionerAccessory.js","sourceRoot":"","sources":["../../src/accessory/AirConditionerAccessory.ts"],"names":[],"mappings":";;;;;AAEA,oEAA4C;AAC5C,oDAA2D;AAE3D,0CAAyD;AAEzD,MAAqB,uBAAwB,SAAQ,uBAA4B;IAQ/E,YACE,QAAuB,EACvB,SAAyB,EACN,MAAqB,EACrB,SAAuB;QAE1C,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAH3B,WAAM,GAAN,MAAM,CAAe;QACrB,cAAS,GAAT,SAAS,CAAc;QAI1C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;YAC7D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC7E,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEpF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC;QAE7H,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC;aAChE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAChC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEpC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,wBAAwB,CAAC;aAClF,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEtD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC;aACjF,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACjD,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAErD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;aAC5E,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEhD,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,2BAA2B,CAAC;aACrF,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC3C,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC3C,QAAQ,CAAC;YACR,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAW,CAAC,OAAO;YAC5C,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAW,CAAC,OAAO;YAC5C,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,UAAW,CAAC,QAAQ;SAC7C,CAAC,CAAC;QAEL,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,2BAA2B,CAAC;aACrF,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC3C,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC3C,QAAQ,CAAC;YACR,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAW,CAAC,OAAO;YAC5C,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAW,CAAC,OAAO;YAC5C,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,UAAW,CAAC,QAAQ;SAC7C,CAAC,CAAC;QAEL,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC;aACvE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACvC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACvC,QAAQ,CAAC;YACR,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,GAAG;YACb,OAAO,EAAE,CAAC;SACX,CAAC,CAAC;QAEL,cAAc;QACd,IAAI,IAAI,CAAC,SAAS,CAAC,UAAW,CAAC,SAAS,KAAK,yBAAS,CAAC,IAAI,EAAE;YAC3D,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC;iBACnE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACnC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SACxC;QAED,6BAA6B;QAC7B,IAAI,IAAI,CAAC,SAAS,CAAC,UAAW,CAAC,WAAW,EAAE;YAC1C,MAAM,2BAA2B,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;YAC5E,IAAI,CAAC,yBAAyB,GAAG,2BAA2B,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC;gBAC/E,2BAA2B,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAEjH,IAAI,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,CAAC;YAEnH,IAAI,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC;iBAC9F,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAEhD,IAAI,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC;iBACvF,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,mBAAmB,KAAK,SAAS,CAAC,CAAC;gBACrE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;gBACxD,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SACxD;QAED,UAAU;QACV,IAAI,IAAI,CAAC,SAAS,CAAC,UAAW,CAAC,aAAa,CAAC,IAAI,EAAE;YACjD,IAAI,CAAC,MAAM,CAAC,4BAA4B,CAAC,IAAI,CAAC,SAAS,CAAC,UAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC3F,MAAM,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;YACjE,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;gBACzD,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAChF,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,CAAC;YACxG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;iBACnE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACvC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SAC5C;QAED,OAAO;QACP,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,UAAW,CAAC,aAAa,CAAC;QAC9E,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,UAAW,CAAC,UAAU,CAAC;QAG/E,4BAA4B;QAC5B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,6BAA6B,CAAC,sBAAW,EAAE,wBAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAChG,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC;IAC9F,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAA0B;;QACxC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,KAAgB,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,GAAG,KAAgB,CAAC;QACzD,MAAA,IAAI,CAAC,cAAc,0CAAE,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,KAAgB,CAAC,CAAC;IAC/F,CAAC;IAED,2BAA2B;;QACzB,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,EAAE;YACnE,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,GAAG,CAAC,MAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,mCAAI,CAAC,CAAE,EAAG;gBAClG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;oBAChD,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,wBAAwB,CAAC,OAAO,CAAC;iBACtE;qBAAM;oBACL,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC;iBACnE;aACF;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,EAAE;gBAClG,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC;aACnE;iBAAM;gBACL,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE;oBACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,wBAAwB,CAAC,OAAO,CAAC;iBACtE;qBAAM;oBACL,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC;iBACnE;aACF;SACF;aAAM;YACL,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,wBAAwB,CAAC,QAAQ,CAAC;SACvE;IACH,CAAC;IAED,0BAA0B;QACxB,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE;YACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,IAAI,CAAC;SAClE;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE;YAC5C,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,IAAI,CAAC;SAClE;aAAM;YACL,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,IAAI,CAAC;SAClE;IACH,CAAC;IAED,KAAK,CAAC,0BAA0B,CAAC,KAA0B;QACzD,QAAQ,KAAK,EAAE;YACb,KAAK,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,IAAI;gBAC5D,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC7C,MAAM;YACR,KAAK,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,IAAI;gBAC5D,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC7C,MAAM;YACR,KAAK,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,uBAAuB,CAAC,IAAI;gBAC5D,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC7C,MAAM;SACT;IACH,CAAC;IAED,qBAAqB;;QACnB,OAAO,MAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,mCAAI,IAAI,CAAC,SAAS,CAAC,UAAW,CAAC,OAAO,CAAC;IACzF,CAAC;IAED,oBAAoB;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAW,CAAC,OAAO,EAChD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAW,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,KAA0B;QACnD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAW,CAAC,OAAO,EACjD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAW,CAAC,OAAO,EAAE,KAAe,CAAC,CAAC,CAAC;QACjE,MAAM,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YACvF,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,cAAc,CAAC;IACjH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAA0B;QAC3C,QAAQ,KAAK,EAAE;YACb,KAAK,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,aAAa;gBACvD,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CACzB,CAAC,yBAAS,CAAC,UAAU,EAAE,yBAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,UAAW,CAAC,SAAS,CAAC,EACrF,CAAC,yBAAS,CAAC,QAAQ,EAAE,yBAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,UAAW,CAAC,SAAS,CAAC,CAAC,CAAC;gBACvF,MAAM;YACR,KAAK,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,cAAc;gBACxD,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC1C,MAAM;SACT;IACH,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,KAA0B;QAC/C,KAAK,GAAG,KAAe,CAAC;QACxB,IAAI,KAAK,KAAK,GAAG,EAAE;YACjB,KAAK,GAAG,GAAG,CAAC;SACb;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,qBAAqB;;QACnB,OAAO,MAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,mBAAmB,mCAAI,CAAC,GAAG,CAAC;IAC5D,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,KAA0B;QAC/C,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE;YAChC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,cAAc,EAAE,KAAgB,EAAE,CAAC,CAAC;SACvE;IACH,CAAC;IAED,uBAAuB,CAAC,IAAY;QAClC,IAAI,SAAyB,CAAC;QAC9B,IAAI,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE;YAClC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;SAC5B;aAAM;YACL,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAC9E,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE;gBACnB,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBACvC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;aACtC;iBAAM;gBACL,SAAS,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,EAC/E,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;gBACpE,SAAS,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;gBAC9B,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAE3C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,2BAA2B,CAAC,sBAAW,EAAE,wBAAa,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;aACxF;YACD,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAE;iBAC9D,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC;iBACrE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;iBACxE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SACjF;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAxPD,0CAwPC"}
1
+ {"version":3,"file":"AirConditionerAccessory.js","sourceRoot":"","sources":["../../src/accessory/AirConditionerAccessory.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"BaseAccessory.d.ts","sourceRoot":"","sources":["../../src/accessory/BaseAccessory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,WAAW,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,CAAC,OAAO,OAAO,aAAa,CAAC,CAAC,SAAS,WAAW;IAGpD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa;IAC1C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,cAAc;IAC5C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC5B,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY;gBAHvB,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,cAAc,EACzB,MAAM,EAAE,CAAC,EACT,SAAS,EAAE,YAAY;CAwB7C"}
1
+ {"version":3,"file":"BaseAccessory.d.ts","sourceRoot":"","sources":["../../src/accessory/BaseAccessory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,WAAW,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,CAAC,OAAO,OAAO,aAAa,CAAC,CAAC,SAAS,WAAW;IAEpD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa;IAC1C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,cAAc;IAC5C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC5B,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY;gBAHvB,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,cAAc,EACzB,MAAM,EAAE,CAAC,EACT,SAAS,EAAE,YAAY;CAW7C"}
@@ -6,25 +6,11 @@ class BaseAccessory {
6
6
  this.accessory = accessory;
7
7
  this.device = device;
8
8
  this.configDev = configDev;
9
- this.accessory.getService(this.platform.Service.AccessoryInformation)
9
+ this.accessory
10
+ .getService(this.platform.Service.AccessoryInformation)
10
11
  .setCharacteristic(this.platform.Characteristic.Manufacturer, 'Midea')
11
12
  .setCharacteristic(this.platform.Characteristic.Model, this.device.model)
12
13
  .setCharacteristic(this.platform.Characteristic.SerialNumber, this.device.sn);
13
- setInterval(async () => {
14
- this.device.send_heartbeat();
15
- try {
16
- const msg = await this.device.promiseSocket.read(512);
17
- if (msg && msg.length > 0) {
18
- this.device.parse_message(msg);
19
- }
20
- }
21
- catch (err) {
22
- this.platform.log.error(err);
23
- }
24
- }, 10000);
25
- setInterval(() => {
26
- this.device.refresh_status();
27
- }, 30000);
28
14
  }
29
15
  }
30
16
  exports.default = BaseAccessory;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseAccessory.js","sourceRoot":"","sources":["../../src/accessory/BaseAccessory.ts"],"names":[],"mappings":";;AAKA,MAAqB,aAAa;IAEhC,YACqB,QAAuB,EACvB,SAAyB,EACzB,MAAS,EACT,SAAuB;QAHvB,aAAQ,GAAR,QAAQ,CAAe;QACvB,cAAS,GAAT,SAAS,CAAgB;QACzB,WAAM,GAAN,MAAM,CAAG;QACT,cAAS,GAAT,SAAS,CAAc;QAG1C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAE;aACnE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC;aACrE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;aACxE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEhF,WAAW,CAAC,KAAK,IAAI,EAAE;YACrB,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC7B,IAAI;gBACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtD,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;oBACzB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;iBAChC;aACF;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAa,CAAC,CAAC;aACxC;QACH,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,WAAW,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAC/B,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC;CACF;AA9BD,gCA8BC"}
1
+ {"version":3,"file":"BaseAccessory.js","sourceRoot":"","sources":["../../src/accessory/BaseAccessory.ts"],"names":[],"mappings":";;AAIA,MAAqB,aAAa;IAChC,YACqB,QAAuB,EACvB,SAAyB,EACzB,MAAS,EACT,SAAuB;QAHvB,aAAQ,GAAR,QAAQ,CAAe;QACvB,cAAS,GAAT,SAAS,CAAgB;QACzB,WAAM,GAAN,MAAM,CAAG;QACT,cAAS,GAAT,SAAS,CAAc;QAE1C,IAAI,CAAC,SAAS;aACX,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAE;aACvD,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC;aACrE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;aACxE,iBAAiB,CAChB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EACzC,IAAI,CAAC,MAAM,CAAC,EAAE,CACf,CAAC;IACN,CAAC;CACF;AAhBD,gCAgBC"}