homebridge-midea-platform 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +3 -0
- package/.husky/pre-commit +4 -0
- package/.prettierrc +18 -0
- package/README.md +5 -0
- package/config.schema.json +48 -0
- package/dist/accessory/AccessoryFactory.d.ts +2 -1
- package/dist/accessory/AccessoryFactory.d.ts.map +1 -1
- package/dist/accessory/AccessoryFactory.js +3 -0
- package/dist/accessory/AccessoryFactory.js.map +1 -1
- package/dist/accessory/AirConditionerAccessory.d.ts +23 -0
- package/dist/accessory/AirConditionerAccessory.d.ts.map +1 -1
- package/dist/accessory/AirConditionerAccessory.js +122 -36
- package/dist/accessory/AirConditionerAccessory.js.map +1 -1
- package/dist/accessory/BaseAccessory.d.ts.map +1 -1
- package/dist/accessory/BaseAccessory.js +2 -16
- package/dist/accessory/BaseAccessory.js.map +1 -1
- package/dist/accessory/DehumidifierAccessory.d.ts +41 -0
- package/dist/accessory/DehumidifierAccessory.d.ts.map +1 -0
- package/dist/accessory/DehumidifierAccessory.js +294 -0
- package/dist/accessory/DehumidifierAccessory.js.map +1 -0
- package/dist/core/MideaCloud.d.ts +11 -0
- package/dist/core/MideaCloud.d.ts.map +1 -1
- package/dist/core/MideaCloud.js +106 -65
- package/dist/core/MideaCloud.js.map +1 -1
- package/dist/core/MideaConstants.d.ts +2 -1
- package/dist/core/MideaConstants.d.ts.map +1 -1
- package/dist/core/MideaConstants.js +12 -16
- package/dist/core/MideaConstants.js.map +1 -1
- package/dist/core/MideaDevice.d.ts +26 -8
- package/dist/core/MideaDevice.d.ts.map +1 -1
- package/dist/core/MideaDevice.js +130 -28
- package/dist/core/MideaDevice.js.map +1 -1
- package/dist/core/MideaDiscover.d.ts +21 -1
- package/dist/core/MideaDiscover.d.ts.map +1 -1
- package/dist/core/MideaDiscover.js +98 -20
- package/dist/core/MideaDiscover.js.map +1 -1
- package/dist/core/MideaMessage.d.ts.map +1 -1
- package/dist/core/MideaMessage.js +28 -11
- package/dist/core/MideaMessage.js.map +1 -1
- package/dist/core/MideaPacketBuilder.d.ts.map +1 -1
- package/dist/core/MideaPacketBuilder.js +15 -5
- package/dist/core/MideaPacketBuilder.js.map +1 -1
- package/dist/core/MideaSecurity.d.ts +3 -1
- package/dist/core/MideaSecurity.d.ts.map +1 -1
- package/dist/core/MideaSecurity.js +41 -16
- package/dist/core/MideaSecurity.js.map +1 -1
- package/dist/core/MideaUtils.d.ts +21 -6
- package/dist/core/MideaUtils.d.ts.map +1 -1
- package/dist/core/MideaUtils.js +81 -83
- package/dist/core/MideaUtils.js.map +1 -1
- package/dist/devices/DeviceFactory.d.ts +3 -2
- package/dist/devices/DeviceFactory.d.ts.map +1 -1
- package/dist/devices/DeviceFactory.js +5 -2
- package/dist/devices/DeviceFactory.js.map +1 -1
- package/dist/devices/a1/MideaA1Device.d.ts +77 -0
- package/dist/devices/a1/MideaA1Device.d.ts.map +1 -0
- package/dist/devices/a1/MideaA1Device.js +144 -0
- package/dist/devices/a1/MideaA1Device.js.map +1 -0
- package/dist/devices/a1/MideaA1Message.d.ts +41 -0
- package/dist/devices/a1/MideaA1Message.d.ts.map +1 -0
- package/dist/devices/a1/MideaA1Message.js +206 -0
- package/dist/devices/a1/MideaA1Message.js.map +1 -0
- package/dist/devices/ac/MideaACDevice.d.ts +21 -7
- package/dist/devices/ac/MideaACDevice.d.ts.map +1 -1
- package/dist/devices/ac/MideaACDevice.js +82 -30
- package/dist/devices/ac/MideaACDevice.js.map +1 -1
- package/dist/devices/ac/MideaACMessage.d.ts.map +1 -1
- package/dist/devices/ac/MideaACMessage.js +158 -82
- package/dist/devices/ac/MideaACMessage.js.map +1 -1
- package/dist/platform.d.ts +29 -5
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +151 -52
- package/dist/platform.js.map +1 -1
- package/dist/platformUtils.d.ts +6 -1
- package/dist/platformUtils.d.ts.map +1 -1
- package/dist/platformUtils.js.map +1 -1
- package/package.json +12 -5
package/.eslintignore
ADDED
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.
|
package/config.schema.json
CHANGED
|
@@ -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;
|
|
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;
|
|
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,
|
|
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 =
|
|
16
|
-
this.accessory.
|
|
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
|
|
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
|
|
28
|
+
this.service
|
|
29
|
+
.getCharacteristic(this.platform.Characteristic.CurrentHeaterCoolerState)
|
|
23
30
|
.onGet(this.getCurrentHeaterCoolerState.bind(this));
|
|
24
|
-
this.service
|
|
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
|
|
35
|
+
this.service
|
|
36
|
+
.getCharacteristic(this.platform.Characteristic.CurrentTemperature)
|
|
28
37
|
.onGet(this.getCurrentTemperature.bind(this));
|
|
29
|
-
this.service
|
|
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
|
|
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
|
|
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
|
|
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
|
|
79
|
+
this.outDoorTemperatureService
|
|
80
|
+
.getCharacteristic(this.platform.Characteristic.CurrentTemperature)
|
|
67
81
|
.onGet(this.getOutdoorTemperature.bind(this));
|
|
68
|
-
this.outDoorTemperatureService
|
|
69
|
-
.
|
|
70
|
-
this.
|
|
71
|
-
this.platform.Characteristic.StatusFault.
|
|
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) ||
|
|
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
|
|
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
|
|
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 =
|
|
100
|
-
|
|
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
|
|
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 <
|
|
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 ===
|
|
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 ||
|
|
178
|
-
this.
|
|
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
|
|
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;
|
|
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
|
|
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;
|
|
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"}
|