homebridge-midea-platform 0.2.1 → 0.3.1

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 +12 -0
  22. package/dist/core/MideaCloud.d.ts.map +1 -1
  23. package/dist/core/MideaCloud.js +130 -73
  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
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",
@@ -162,6 +194,22 @@
162
194
  "key": "registeredApp",
163
195
  "type": "string"
164
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
+ },
165
213
  {
166
214
  "key": "devices",
167
215
  "type": "array",
@@ -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';
@@ -12,7 +22,20 @@ export default class AirConditionerAccessory extends BaseAccessory<MideaACDevice
12
22
  private fanService?;
13
23
  private ecoModeService?;
14
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
+ */
15
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
+ */
16
39
  getActive(): Promise<CharacteristicValue>;
17
40
  setActive(value: CharacteristicValue): Promise<void>;
18
41
  getCurrentHeaterCoolerState(): CharacteristicValue;
@@ -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;IAY7E,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa;IACxC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY;IAX5C,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;gBAGpC,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,cAAc,EACN,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,YAAY;IAkHtC,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,UAAU,IAAI,mBAAmB;IAI3B,UAAU,CAAC,KAAK,EAAE,mBAAmB;IAI3C,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,26 +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) {
11
15
  var _a, _b;
12
16
  super(platform, accessory, device, configDev);
13
17
  this.device = device;
14
18
  this.configDev = configDev;
15
- this.service = this.accessory.getService(this.platform.Service.HeaterCooler) ||
16
- 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);
17
22
  this.service.setCharacteristic(this.platform.Characteristic.Name, this.device.name);
18
- this.accessories = this.platform.accessories.filter(acc => acc.context.id === this.accessory.UUID && acc !== this.accessory);
19
- 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)
20
26
  .onGet(this.getActive.bind(this))
21
27
  .onSet(this.setActive.bind(this));
22
- this.service.getCharacteristic(this.platform.Characteristic.CurrentHeaterCoolerState)
28
+ this.service
29
+ .getCharacteristic(this.platform.Characteristic.CurrentHeaterCoolerState)
23
30
  .onGet(this.getCurrentHeaterCoolerState.bind(this));
24
- this.service.getCharacteristic(this.platform.Characteristic.TargetHeaterCoolerState)
31
+ this.service
32
+ .getCharacteristic(this.platform.Characteristic.TargetHeaterCoolerState)
25
33
  .onGet(this.getTargetHeaterCoolerState.bind(this))
26
34
  .onSet(this.setTargetHeaterCoolerState.bind(this));
27
- this.service.getCharacteristic(this.platform.Characteristic.CurrentTemperature)
35
+ this.service
36
+ .getCharacteristic(this.platform.Characteristic.CurrentTemperature)
28
37
  .onGet(this.getCurrentTemperature.bind(this));
29
- this.service.getCharacteristic(this.platform.Characteristic.CoolingThresholdTemperature)
38
+ this.service
39
+ .getCharacteristic(this.platform.Characteristic.CoolingThresholdTemperature)
30
40
  .onGet(this.getTargetTemperature.bind(this))
31
41
  .onSet(this.setTargetTemperature.bind(this))
32
42
  .setProps({
@@ -34,7 +44,8 @@ class AirConditionerAccessory extends BaseAccessory_1.default {
34
44
  maxValue: this.configDev.AC_options.maxTemp,
35
45
  minStep: this.configDev.AC_options.tempStep,
36
46
  });
37
- this.service.getCharacteristic(this.platform.Characteristic.HeatingThresholdTemperature)
47
+ this.service
48
+ .getCharacteristic(this.platform.Characteristic.HeatingThresholdTemperature)
38
49
  .onGet(this.getTargetTemperature.bind(this))
39
50
  .onSet(this.setTargetTemperature.bind(this))
40
51
  .setProps({
@@ -42,7 +53,8 @@ class AirConditionerAccessory extends BaseAccessory_1.default {
42
53
  maxValue: this.configDev.AC_options.maxTemp,
43
54
  minStep: this.configDev.AC_options.tempStep,
44
55
  });
45
- this.service.getCharacteristic(this.platform.Characteristic.RotationSpeed)
56
+ this.service
57
+ .getCharacteristic(this.platform.Characteristic.RotationSpeed)
46
58
  .onGet(this.getRotationSpeed.bind(this))
47
59
  .onSet(this.setRotationSpeed.bind(this))
48
60
  .setProps({
@@ -52,7 +64,8 @@ class AirConditionerAccessory extends BaseAccessory_1.default {
52
64
  });
53
65
  // Swing modes
54
66
  if (this.configDev.AC_options.swingMode !== platformUtils_1.SwingMode.NONE) {
55
- this.service.getCharacteristic(this.platform.Characteristic.SwingMode)
67
+ this.service
68
+ .getCharacteristic(this.platform.Characteristic.SwingMode)
56
69
  .onGet(this.getSwingMode.bind(this))
57
70
  .onSet(this.setSwingMode.bind(this));
58
71
  }
@@ -63,16 +76,19 @@ class AirConditionerAccessory extends BaseAccessory_1.default {
63
76
  this.outDoorTemperatureService = this.accessory.addService(this.platform.Service.TemperatureSensor, `${this.device.name} Outdoor`, 'Outdoor');
64
77
  }
65
78
  this.outDoorTemperatureService.setCharacteristic(this.platform.Characteristic.Name, `${this.device.name} Outdoor`);
66
- this.outDoorTemperatureService.getCharacteristic(this.platform.Characteristic.CurrentTemperature)
79
+ this.outDoorTemperatureService
80
+ .getCharacteristic(this.platform.Characteristic.CurrentTemperature)
67
81
  .onGet(this.getOutdoorTemperature.bind(this));
68
- this.outDoorTemperatureService.getCharacteristic(this.platform.Characteristic.StatusFault)
69
- .onGet(() => this.device.attributes.OUTDOOR_TEMPERATURE === undefined ?
70
- this.platform.Characteristic.StatusFault.GENERAL_FAULT :
71
- 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);
72
87
  this.service.addLinkedService(this.outDoorTemperatureService);
73
88
  }
74
89
  // Switches
75
- if (((_a = this.configDev.AC_options) === null || _a === void 0 ? void 0 : _a.ecoSwitch) || ((_b = this.configDev.AC_options) === null || _b === void 0 ? void 0 : _b.switchDisplay.flag)) {
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)) {
76
92
  const switchAccessory = this.getOrCreateSubAccessory('Switch');
77
93
  // Display
78
94
  if (this.configDev.AC_options.switchDisplay.flag) {
@@ -81,7 +97,8 @@ class AirConditionerAccessory extends BaseAccessory_1.default {
81
97
  if (!this.displayService) {
82
98
  this.displayService = switchAccessory.addService(this.platform.Service.Switch, `${this.device.name} Display`, 'Display');
83
99
  }
84
- this.displayService.getCharacteristic(this.platform.Characteristic.On)
100
+ this.displayService
101
+ .getCharacteristic(this.platform.Characteristic.On)
85
102
  .onGet(this.getDisplayActive.bind(this))
86
103
  .onSet(this.setDisplayActive.bind(this));
87
104
  }
@@ -90,31 +107,96 @@ class AirConditionerAccessory extends BaseAccessory_1.default {
90
107
  if (!this.ecoModeService) {
91
108
  this.ecoModeService = switchAccessory.addService(this.platform.Service.Switch, `${this.device.name} Eco`, 'EcoMode');
92
109
  }
93
- this.ecoModeService.getCharacteristic(this.platform.Characteristic.On)
110
+ this.ecoModeService
111
+ .getCharacteristic(this.platform.Characteristic.On)
94
112
  .onGet(this.getEcoMode.bind(this))
95
113
  .onSet(this.setEcoMode.bind(this));
96
114
  }
97
115
  }
98
116
  // Misc
99
- this.device.attributes.PROMPT_TONE = this.configDev.AC_options.audioFeedback;
100
- 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();
101
125
  // Remove unused accessories
102
126
  this.platform.api.unregisterPlatformAccessories(settings_1.PLUGIN_NAME, settings_1.PLATFORM_NAME, this.accessories);
103
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
+ */
104
184
  async getActive() {
105
- return this.device.attributes.POWER ?
106
- 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;
107
188
  }
108
189
  async setActive(value) {
109
190
  var _a;
110
- await this.device.set_attribute({ POWER: value });
111
- this.device.attributes.SCREEN_DISPLAY = value;
112
- (_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);
113
194
  }
114
195
  getCurrentHeaterCoolerState() {
115
196
  var _a;
116
197
  if (this.device.attributes.POWER && this.device.attributes.MODE > 0) {
117
- 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)) {
118
200
  if ([1, 2].includes(this.device.attributes.MODE)) {
119
201
  return this.platform.Characteristic.CurrentHeaterCoolerState.COOLING;
120
202
  }
@@ -122,7 +204,8 @@ class AirConditionerAccessory extends BaseAccessory_1.default {
122
204
  return this.platform.Characteristic.CurrentHeaterCoolerState.IDLE;
123
205
  }
124
206
  }
125
- 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) {
126
209
  return this.platform.Characteristic.CurrentHeaterCoolerState.IDLE;
127
210
  }
128
211
  else {
@@ -164,7 +247,7 @@ class AirConditionerAccessory extends BaseAccessory_1.default {
164
247
  }
165
248
  getCurrentTemperature() {
166
249
  var _a;
167
- 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);
168
251
  }
169
252
  getTargetTemperature() {
170
253
  return Math.max(this.configDev.AC_options.minTemp, Math.min(this.configDev.AC_options.maxTemp, this.device.attributes.TARGET_TEMPERATURE));
@@ -174,8 +257,10 @@ class AirConditionerAccessory extends BaseAccessory_1.default {
174
257
  await this.device.set_target_temperature(value);
175
258
  }
176
259
  getSwingMode() {
177
- return this.device.attributes.SWING_HORIZONTAL || this.device.attributes.SWING_VERTICAL ?
178
- 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;
179
264
  }
180
265
  async setSwingMode(value) {
181
266
  switch (value) {
@@ -202,18 +287,18 @@ class AirConditionerAccessory extends BaseAccessory_1.default {
202
287
  return (_a = this.device.attributes.OUTDOOR_TEMPERATURE) !== null && _a !== void 0 ? _a : -270;
203
288
  }
204
289
  getDisplayActive() {
205
- return this.device.attributes.SCREEN_DISPLAY;
290
+ return !!this.device.attributes.SCREEN_DISPLAY; // force boolean
206
291
  }
207
292
  async setDisplayActive(value) {
208
293
  if (this.device.attributes.POWER) {
209
- await this.device.set_attribute({ SCREEN_DISPLAY: value });
294
+ await this.device.set_attribute({ SCREEN_DISPLAY: !!value });
210
295
  }
211
296
  }
212
297
  getEcoMode() {
213
298
  return this.device.attributes.ECO_MODE;
214
299
  }
215
300
  async setEcoMode(value) {
216
- await this.device.set_attribute({ ECO_MODE: value });
301
+ await this.device.set_attribute({ ECO_MODE: !!value });
217
302
  }
218
303
  getOrCreateSubAccessory(type) {
219
304
  let accessory;
@@ -221,7 +306,7 @@ class AirConditionerAccessory extends BaseAccessory_1.default {
221
306
  accessory = this.accessory;
222
307
  }
223
308
  else {
224
- const tempFind = this.accessories.findIndex(acc => acc.context.type === type);
309
+ const tempFind = this.accessories.findIndex((acc) => acc.context.type === type);
225
310
  if (tempFind !== -1) {
226
311
  accessory = this.accessories[tempFind];
227
312
  this.accessories.splice(tempFind, 1);
@@ -232,7 +317,8 @@ class AirConditionerAccessory extends BaseAccessory_1.default {
232
317
  accessory.context.id = this.accessory.UUID;
233
318
  this.platform.api.registerPlatformAccessories(settings_1.PLUGIN_NAME, settings_1.PLATFORM_NAME, [accessory]);
234
319
  }
235
- accessory.getService(this.platform.Service.AccessoryInformation)
320
+ accessory
321
+ .getService(this.platform.Service.AccessoryInformation)
236
322
  .setCharacteristic(this.platform.Characteristic.Manufacturer, 'Midea')
237
323
  .setCharacteristic(this.platform.Characteristic.Model, this.device.model)
238
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":"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"}
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":"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;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":";;AAIA,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"}
@@ -0,0 +1,41 @@
1
+ import { MideaAccessory, MideaPlatform } from '../platform';
2
+ import BaseAccessory from './BaseAccessory';
3
+ import { DeviceConfig } from '../platformUtils';
4
+ import MideaA1Device from '../devices/a1/MideaA1Device';
5
+ export default class DehumidifierAccessory extends BaseAccessory<MideaA1Device> {
6
+ protected readonly device: MideaA1Device;
7
+ protected readonly configDev: DeviceConfig;
8
+ private service;
9
+ private accessories;
10
+ /*********************************************************************
11
+ * Constructor registers all the service types with Homebridge, registers
12
+ * a callback function with the MideaDevice class, and requests device status.
13
+ */
14
+ constructor(platform: MideaPlatform, accessory: MideaAccessory, device: MideaA1Device, configDev: DeviceConfig);
15
+ /*********************************************************************
16
+ * Callback function called by MideaDevice whenever there is a change to
17
+ * any attribute value.
18
+ */
19
+ private updateCharacteristics;
20
+ /*********************************************************************
21
+ * Callback functions for each Homebridge/HomeKit service
22
+ *
23
+ */
24
+ private getActive;
25
+ private setActive;
26
+ private getCurrentHumidifierDehumidifierState;
27
+ private currentHumidifierDehumidifierState;
28
+ private getTargetHumidifierDehumidifierState;
29
+ private setTargetHumidifierDehumidifierState;
30
+ private getCurrentRelativeHumidity;
31
+ private getRelativeHumidityDehumidifierThreshold;
32
+ private setRelativeHumidityDehumidifierThreshold;
33
+ private getRotationSpeed;
34
+ private setRotationSpeed;
35
+ private getWaterLevel;
36
+ private getSwingMode;
37
+ private setSwingMode;
38
+ private getChildLockMode;
39
+ private setChildLockMode;
40
+ }
41
+ //# sourceMappingURL=DehumidifierAccessory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DehumidifierAccessory.d.ts","sourceRoot":"","sources":["../../src/accessory/DehumidifierAccessory.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,aAA+B,MAAM,6BAA6B,CAAC;AAG1E,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,aAAa,CAAC,aAAa,CAAC;IAW3E,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa;IACxC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY;IAX5C,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,WAAW,CAAmB;IAEtC;;;OAGG;gBAED,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,cAAc,EACN,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,YAAY;IAkG5C;;;OAGG;YACW,qBAAqB;IA2FnC;;;OAGG;YACW,SAAS;YAST,SAAS;YAMT,qCAAqC;IAOnD,OAAO,CAAC,kCAAkC;YA+B5B,oCAAoC;YAWpC,oCAAoC;YAkBpC,0BAA0B;YAQ1B,wCAAwC;YAQxC,wCAAwC;YAmCxC,gBAAgB;YAQhB,gBAAgB;YAuBhB,aAAa;YAQb,YAAY;YAUZ,YAAY;YAMZ,gBAAgB;YAUhB,gBAAgB;CAM/B"}