homebridge-midea-platform 1.1.1 → 1.1.2-beta.10
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/.husky/pre-commit +0 -0
- package/AC_ori.lua +5150 -0
- package/CHANGELOG.md +9 -1
- package/README.md +1 -0
- package/config.schema.json +26 -56
- package/dist/accessory/AccessoryFactory.d.ts +12 -11
- package/dist/accessory/AccessoryFactory.d.ts.map +1 -1
- package/dist/accessory/AccessoryFactory.js +31 -28
- package/dist/accessory/AccessoryFactory.js.map +1 -1
- package/dist/accessory/AirConditionerAccessory.d.ts +89 -86
- package/dist/accessory/AirConditionerAccessory.d.ts.map +1 -1
- package/dist/accessory/AirConditionerAccessory.js +584 -560
- package/dist/accessory/AirConditionerAccessory.js.map +1 -1
- package/dist/accessory/BaseAccessory.d.ts +11 -11
- package/dist/accessory/BaseAccessory.js +21 -21
- package/dist/accessory/DehumidifierAccessory.d.ts +45 -45
- package/dist/accessory/DehumidifierAccessory.d.ts.map +1 -1
- package/dist/accessory/DehumidifierAccessory.js +345 -343
- package/dist/accessory/DehumidifierAccessory.js.map +1 -1
- package/dist/accessory/ElectricWaterHeaterAccessory.d.ts +44 -44
- package/dist/accessory/ElectricWaterHeaterAccessory.js +176 -176
- package/dist/accessory/FanAccessory.d.ts +39 -39
- package/dist/accessory/FanAccessory.js +123 -123
- package/dist/accessory/FrontLoadWasherAccessory.d.ts +31 -0
- package/dist/accessory/FrontLoadWasherAccessory.d.ts.map +1 -0
- package/dist/accessory/FrontLoadWasherAccessory.js +61 -0
- package/dist/accessory/FrontLoadWasherAccessory.js.map +1 -0
- package/dist/accessory/GasWaterHeaterAccessory.d.ts +51 -51
- package/dist/accessory/GasWaterHeaterAccessory.js +216 -216
- package/dist/core/MideaCloud.d.ts +35 -35
- package/dist/core/MideaCloud.js +350 -350
- package/dist/core/MideaConstants.d.ts +49 -48
- package/dist/core/MideaConstants.d.ts.map +1 -1
- package/dist/core/MideaConstants.js +57 -56
- package/dist/core/MideaConstants.js.map +1 -1
- package/dist/core/MideaDevice.d.ts +76 -76
- package/dist/core/MideaDevice.d.ts.map +1 -1
- package/dist/core/MideaDevice.js +411 -411
- package/dist/core/MideaDiscover.d.ts +35 -35
- package/dist/core/MideaDiscover.js +212 -212
- package/dist/core/MideaMessage.d.ts +75 -75
- package/dist/core/MideaMessage.js +184 -184
- package/dist/core/MideaPacketBuilder.d.ts +10 -10
- package/dist/core/MideaPacketBuilder.js +60 -60
- package/dist/core/MideaSecurity.d.ts +63 -63
- package/dist/core/MideaSecurity.d.ts.map +1 -1
- package/dist/core/MideaSecurity.js +251 -242
- package/dist/core/MideaSecurity.js.map +1 -1
- package/dist/core/MideaUtils.d.ts +32 -32
- package/dist/core/MideaUtils.js +181 -181
- package/dist/devices/DeviceFactory.d.ts +12 -11
- package/dist/devices/DeviceFactory.d.ts.map +1 -1
- package/dist/devices/DeviceFactory.js +33 -30
- package/dist/devices/DeviceFactory.js.map +1 -1
- package/dist/devices/a1/MideaA1Device.d.ts +76 -76
- package/dist/devices/a1/MideaA1Device.js +136 -136
- package/dist/devices/a1/MideaA1Message.d.ts +40 -40
- package/dist/devices/a1/MideaA1Message.js +198 -198
- package/dist/devices/ac/MideaACDevice.d.ts +100 -100
- package/dist/devices/ac/MideaACDevice.d.ts.map +1 -1
- package/dist/devices/ac/MideaACDevice.js +381 -370
- package/dist/devices/ac/MideaACDevice.js.map +1 -1
- package/dist/devices/ac/MideaACMessage.d.ts +92 -92
- package/dist/devices/ac/MideaACMessage.js +589 -589
- package/dist/devices/db/MideaDBDevice.d.ts +30 -0
- package/dist/devices/db/MideaDBDevice.d.ts.map +1 -0
- package/dist/devices/db/MideaDBDevice.js +90 -0
- package/dist/devices/db/MideaDBDevice.js.map +1 -0
- package/dist/devices/db/MideaDBMessage.d.ts +33 -0
- package/dist/devices/db/MideaDBMessage.d.ts.map +1 -0
- package/dist/devices/db/MideaDBMessage.js +102 -0
- package/dist/devices/db/MideaDBMessage.js.map +1 -0
- package/dist/devices/e2/MideaE2Device.d.ts +44 -44
- package/dist/devices/e2/MideaE2Device.js +119 -119
- package/dist/devices/e2/MideaE2Message.d.ts +33 -33
- package/dist/devices/e2/MideaE2Message.js +132 -132
- package/dist/devices/e3/MideaE3Device.d.ts +43 -43
- package/dist/devices/e3/MideaE3Device.js +125 -125
- package/dist/devices/e3/MideaE3Message.d.ts +51 -51
- package/dist/devices/e3/MideaE3Message.js +136 -136
- package/dist/devices/fa/MideaFADevice.d.ts +36 -36
- package/dist/devices/fa/MideaFADevice.js +92 -92
- package/dist/devices/fa/MideaFAMessage.d.ts +38 -38
- package/dist/devices/fa/MideaFAMessage.js +98 -98
- package/dist/index.d.ts +6 -6
- package/dist/index.js +6 -6
- package/dist/platform.d.ts +60 -60
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +212 -213
- package/dist/platform.js.map +1 -1
- package/dist/platformUtils.d.ts +99 -97
- package/dist/platformUtils.d.ts.map +1 -1
- package/dist/platformUtils.js +97 -95
- package/dist/platformUtils.js.map +1 -1
- package/dist/settings.d.ts +8 -8
- package/dist/settings.js +11 -11
- package/docs/ac.md +2 -0
- package/docs/db.md +3 -0
- package/homebridge-ui/server.js +30 -26
- package/package.json +1 -1
package/dist/platformUtils.d.ts
CHANGED
|
@@ -1,98 +1,100 @@
|
|
|
1
|
-
export type Config = {
|
|
2
|
-
refreshInterval: number;
|
|
3
|
-
heartbeatInterval: number;
|
|
4
|
-
verbose: boolean;
|
|
5
|
-
logRecoverableErrors: boolean;
|
|
6
|
-
uiDebug: boolean;
|
|
7
|
-
devices: DeviceConfig[];
|
|
8
|
-
};
|
|
9
|
-
export declare const defaultConfig: Config;
|
|
10
|
-
export type DeviceConfig = {
|
|
11
|
-
name?: string;
|
|
12
|
-
id: number;
|
|
13
|
-
type: string;
|
|
14
|
-
advanced_options: {
|
|
15
|
-
ip: string;
|
|
16
|
-
token: string;
|
|
17
|
-
key: string;
|
|
18
|
-
verbose: boolean;
|
|
19
|
-
logRecoverableErrors: boolean;
|
|
20
|
-
registerIfOffline: boolean;
|
|
21
|
-
};
|
|
22
|
-
AC_options: ACOptions;
|
|
23
|
-
A1_options: A1Options;
|
|
24
|
-
E2_options: E2Options;
|
|
25
|
-
E3_options: E3Options;
|
|
26
|
-
};
|
|
27
|
-
export declare enum SwingMode {
|
|
28
|
-
NONE = "None",
|
|
29
|
-
VERTICAL = "Vertical",
|
|
30
|
-
HORIZONTAL = "Horizontal",
|
|
31
|
-
BOTH = "Both"
|
|
32
|
-
}
|
|
33
|
-
export declare enum SwingAngle {
|
|
34
|
-
VERTICAL = "Vertical",
|
|
35
|
-
HORIZONTAL = "Horizontal"
|
|
36
|
-
}
|
|
37
|
-
export declare enum WaterTankSensor {
|
|
38
|
-
NONE = "None",
|
|
39
|
-
LEAK_SENSOR = "Leak Sensor",
|
|
40
|
-
CONTACT_SENSOR = "Contact Sensor"
|
|
41
|
-
}
|
|
42
|
-
type ACOptions = {
|
|
43
|
-
swing: {
|
|
44
|
-
mode: SwingMode;
|
|
45
|
-
angleAccessory: boolean;
|
|
46
|
-
angleMainControl: SwingAngle;
|
|
47
|
-
};
|
|
48
|
-
heatingCapable: boolean;
|
|
49
|
-
ecoSwitch: boolean;
|
|
50
|
-
displaySwitch: {
|
|
51
|
-
flag: boolean;
|
|
52
|
-
command: boolean;
|
|
53
|
-
};
|
|
54
|
-
minTemp: number;
|
|
55
|
-
maxTemp: number;
|
|
56
|
-
tempStep: number;
|
|
57
|
-
fahrenheit: boolean;
|
|
58
|
-
fanOnlyModeSwitch: boolean;
|
|
59
|
-
fanAccessory: boolean;
|
|
60
|
-
breezeAwaySwitch: boolean;
|
|
61
|
-
dryModeSwitch: boolean;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
1
|
+
export type Config = {
|
|
2
|
+
refreshInterval: number;
|
|
3
|
+
heartbeatInterval: number;
|
|
4
|
+
verbose: boolean;
|
|
5
|
+
logRecoverableErrors: boolean;
|
|
6
|
+
uiDebug: boolean;
|
|
7
|
+
devices: DeviceConfig[];
|
|
8
|
+
};
|
|
9
|
+
export declare const defaultConfig: Config;
|
|
10
|
+
export type DeviceConfig = {
|
|
11
|
+
name?: string;
|
|
12
|
+
id: number;
|
|
13
|
+
type: string;
|
|
14
|
+
advanced_options: {
|
|
15
|
+
ip: string;
|
|
16
|
+
token: string;
|
|
17
|
+
key: string;
|
|
18
|
+
verbose: boolean;
|
|
19
|
+
logRecoverableErrors: boolean;
|
|
20
|
+
registerIfOffline: boolean;
|
|
21
|
+
};
|
|
22
|
+
AC_options: ACOptions;
|
|
23
|
+
A1_options: A1Options;
|
|
24
|
+
E2_options: E2Options;
|
|
25
|
+
E3_options: E3Options;
|
|
26
|
+
};
|
|
27
|
+
export declare enum SwingMode {
|
|
28
|
+
NONE = "None",
|
|
29
|
+
VERTICAL = "Vertical",
|
|
30
|
+
HORIZONTAL = "Horizontal",
|
|
31
|
+
BOTH = "Both"
|
|
32
|
+
}
|
|
33
|
+
export declare enum SwingAngle {
|
|
34
|
+
VERTICAL = "Vertical",
|
|
35
|
+
HORIZONTAL = "Horizontal"
|
|
36
|
+
}
|
|
37
|
+
export declare enum WaterTankSensor {
|
|
38
|
+
NONE = "None",
|
|
39
|
+
LEAK_SENSOR = "Leak Sensor",
|
|
40
|
+
CONTACT_SENSOR = "Contact Sensor"
|
|
41
|
+
}
|
|
42
|
+
type ACOptions = {
|
|
43
|
+
swing: {
|
|
44
|
+
mode: SwingMode;
|
|
45
|
+
angleAccessory: boolean;
|
|
46
|
+
angleMainControl: SwingAngle;
|
|
47
|
+
};
|
|
48
|
+
heatingCapable: boolean;
|
|
49
|
+
ecoSwitch: boolean;
|
|
50
|
+
displaySwitch: {
|
|
51
|
+
flag: boolean;
|
|
52
|
+
command: boolean;
|
|
53
|
+
};
|
|
54
|
+
minTemp: number;
|
|
55
|
+
maxTemp: number;
|
|
56
|
+
tempStep: number;
|
|
57
|
+
fahrenheit: boolean;
|
|
58
|
+
fanOnlyModeSwitch: boolean;
|
|
59
|
+
fanAccessory: boolean;
|
|
60
|
+
breezeAwaySwitch: boolean;
|
|
61
|
+
dryModeSwitch: boolean;
|
|
62
|
+
boostModeSwitch: boolean;
|
|
63
|
+
auxHeatingSwitches: boolean;
|
|
64
|
+
outDoorTemp: boolean;
|
|
65
|
+
audioFeedback: boolean;
|
|
66
|
+
screenOff: boolean;
|
|
67
|
+
};
|
|
68
|
+
type A1Options = {
|
|
69
|
+
temperatureSensor: boolean;
|
|
70
|
+
fanAccessory: boolean;
|
|
71
|
+
humiditySensor: boolean;
|
|
72
|
+
pumpSwitch: boolean;
|
|
73
|
+
waterTankSensor: WaterTankSensor;
|
|
74
|
+
minHumidity: number;
|
|
75
|
+
maxHumidity: number;
|
|
76
|
+
humidityStep: number;
|
|
77
|
+
humidityOffset: number;
|
|
78
|
+
};
|
|
79
|
+
type E2Options = {
|
|
80
|
+
protocol: string;
|
|
81
|
+
minTemp: number;
|
|
82
|
+
maxTemp: number;
|
|
83
|
+
tempStep: number;
|
|
84
|
+
variableHeatingSwitch: boolean;
|
|
85
|
+
wholeTankHeatingSwitch: boolean;
|
|
86
|
+
};
|
|
87
|
+
type E3Options = {
|
|
88
|
+
precisionHalves: boolean;
|
|
89
|
+
minTemp: number;
|
|
90
|
+
maxTemp: number;
|
|
91
|
+
tempStep: number;
|
|
92
|
+
burningStateSensor: boolean;
|
|
93
|
+
protectionSensor: boolean;
|
|
94
|
+
zeroColdWaterSwitch: boolean;
|
|
95
|
+
zeroColdPulseSwitch: boolean;
|
|
96
|
+
smartVolumeSwitch: boolean;
|
|
97
|
+
};
|
|
98
|
+
export declare const defaultDeviceConfig: DeviceConfig;
|
|
99
|
+
export {};
|
|
98
100
|
//# sourceMappingURL=platformUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platformUtils.d.ts","sourceRoot":"","sources":["../src/platformUtils.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,MAO3B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,OAAO,CAAC;QACjB,oBAAoB,EAAE,OAAO,CAAC;QAC9B,iBAAiB,EAAE,OAAO,CAAC;KAC5B,CAAC;IACF,UAAU,EAAE,SAAS,CAAC;IACtB,UAAU,EAAE,SAAS,CAAC;IACtB,UAAU,EAAE,SAAS,CAAC;IACtB,UAAU,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,oBAAY,SAAS;IACnB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,UAAU,eAAe;IACzB,IAAI,SAAS;CACd;AAED,oBAAY,UAAU;IACpB,QAAQ,aAAa;IACrB,UAAU,eAAe;CAC1B;AAED,oBAAY,eAAe;IACzB,IAAI,SAAS;IACb,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;CAClC;AAED,KAAK,SAAS,GAAG;IACf,KAAK,EAAE;QACL,IAAI,EAAE,SAAS,CAAC;QAChB,cAAc,EAAE,OAAO,CAAC;QACxB,gBAAgB,EAAE,UAAU,CAAC;KAC9B,CAAC;IACF,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE;QACb,IAAI,EAAE,OAAO,CAAC;QACd,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,iBAAiB,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,eAAe,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"platformUtils.d.ts","sourceRoot":"","sources":["../src/platformUtils.ts"],"names":[],"mappings":"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"}
|
package/dist/platformUtils.js
CHANGED
|
@@ -1,96 +1,98 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.defaultDeviceConfig = exports.WaterTankSensor = exports.SwingAngle = exports.SwingMode = exports.defaultConfig = void 0;
|
|
4
|
-
exports.defaultConfig = {
|
|
5
|
-
refreshInterval: 30,
|
|
6
|
-
heartbeatInterval: 10,
|
|
7
|
-
verbose: false,
|
|
8
|
-
logRecoverableErrors: true,
|
|
9
|
-
uiDebug: false,
|
|
10
|
-
devices: [],
|
|
11
|
-
};
|
|
12
|
-
var SwingMode;
|
|
13
|
-
(function (SwingMode) {
|
|
14
|
-
SwingMode["NONE"] = "None";
|
|
15
|
-
SwingMode["VERTICAL"] = "Vertical";
|
|
16
|
-
SwingMode["HORIZONTAL"] = "Horizontal";
|
|
17
|
-
SwingMode["BOTH"] = "Both";
|
|
18
|
-
})(SwingMode = exports.SwingMode || (exports.SwingMode = {}));
|
|
19
|
-
var SwingAngle;
|
|
20
|
-
(function (SwingAngle) {
|
|
21
|
-
SwingAngle["VERTICAL"] = "Vertical";
|
|
22
|
-
SwingAngle["HORIZONTAL"] = "Horizontal";
|
|
23
|
-
})(SwingAngle = exports.SwingAngle || (exports.SwingAngle = {}));
|
|
24
|
-
var WaterTankSensor;
|
|
25
|
-
(function (WaterTankSensor) {
|
|
26
|
-
WaterTankSensor["NONE"] = "None";
|
|
27
|
-
WaterTankSensor["LEAK_SENSOR"] = "Leak Sensor";
|
|
28
|
-
WaterTankSensor["CONTACT_SENSOR"] = "Contact Sensor";
|
|
29
|
-
})(WaterTankSensor = exports.WaterTankSensor || (exports.WaterTankSensor = {}));
|
|
30
|
-
exports.defaultDeviceConfig = {
|
|
31
|
-
id: 0,
|
|
32
|
-
type: '',
|
|
33
|
-
advanced_options: {
|
|
34
|
-
ip: '',
|
|
35
|
-
token: '',
|
|
36
|
-
key: '',
|
|
37
|
-
verbose: false,
|
|
38
|
-
logRecoverableErrors: true,
|
|
39
|
-
registerIfOffline: false,
|
|
40
|
-
},
|
|
41
|
-
AC_options: {
|
|
42
|
-
swing: {
|
|
43
|
-
mode: SwingMode.NONE,
|
|
44
|
-
angleAccessory: false,
|
|
45
|
-
angleMainControl: SwingAngle.VERTICAL,
|
|
46
|
-
},
|
|
47
|
-
heatingCapable: true,
|
|
48
|
-
outDoorTemp: false,
|
|
49
|
-
audioFeedback: false,
|
|
50
|
-
screenOff: false,
|
|
51
|
-
ecoSwitch: false,
|
|
52
|
-
dryModeSwitch: false,
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultDeviceConfig = exports.WaterTankSensor = exports.SwingAngle = exports.SwingMode = exports.defaultConfig = void 0;
|
|
4
|
+
exports.defaultConfig = {
|
|
5
|
+
refreshInterval: 30,
|
|
6
|
+
heartbeatInterval: 10,
|
|
7
|
+
verbose: false,
|
|
8
|
+
logRecoverableErrors: true,
|
|
9
|
+
uiDebug: false,
|
|
10
|
+
devices: [],
|
|
11
|
+
};
|
|
12
|
+
var SwingMode;
|
|
13
|
+
(function (SwingMode) {
|
|
14
|
+
SwingMode["NONE"] = "None";
|
|
15
|
+
SwingMode["VERTICAL"] = "Vertical";
|
|
16
|
+
SwingMode["HORIZONTAL"] = "Horizontal";
|
|
17
|
+
SwingMode["BOTH"] = "Both";
|
|
18
|
+
})(SwingMode = exports.SwingMode || (exports.SwingMode = {}));
|
|
19
|
+
var SwingAngle;
|
|
20
|
+
(function (SwingAngle) {
|
|
21
|
+
SwingAngle["VERTICAL"] = "Vertical";
|
|
22
|
+
SwingAngle["HORIZONTAL"] = "Horizontal";
|
|
23
|
+
})(SwingAngle = exports.SwingAngle || (exports.SwingAngle = {}));
|
|
24
|
+
var WaterTankSensor;
|
|
25
|
+
(function (WaterTankSensor) {
|
|
26
|
+
WaterTankSensor["NONE"] = "None";
|
|
27
|
+
WaterTankSensor["LEAK_SENSOR"] = "Leak Sensor";
|
|
28
|
+
WaterTankSensor["CONTACT_SENSOR"] = "Contact Sensor";
|
|
29
|
+
})(WaterTankSensor = exports.WaterTankSensor || (exports.WaterTankSensor = {}));
|
|
30
|
+
exports.defaultDeviceConfig = {
|
|
31
|
+
id: 0,
|
|
32
|
+
type: '',
|
|
33
|
+
advanced_options: {
|
|
34
|
+
ip: '',
|
|
35
|
+
token: '',
|
|
36
|
+
key: '',
|
|
37
|
+
verbose: false,
|
|
38
|
+
logRecoverableErrors: true,
|
|
39
|
+
registerIfOffline: false,
|
|
40
|
+
},
|
|
41
|
+
AC_options: {
|
|
42
|
+
swing: {
|
|
43
|
+
mode: SwingMode.NONE,
|
|
44
|
+
angleAccessory: false,
|
|
45
|
+
angleMainControl: SwingAngle.VERTICAL,
|
|
46
|
+
},
|
|
47
|
+
heatingCapable: true,
|
|
48
|
+
outDoorTemp: false,
|
|
49
|
+
audioFeedback: false,
|
|
50
|
+
screenOff: false,
|
|
51
|
+
ecoSwitch: false,
|
|
52
|
+
dryModeSwitch: false,
|
|
53
|
+
boostModeSwitch: false,
|
|
54
|
+
breezeAwaySwitch: false,
|
|
55
|
+
displaySwitch: {
|
|
56
|
+
flag: true,
|
|
57
|
+
command: false,
|
|
58
|
+
},
|
|
59
|
+
auxHeatingSwitches: false,
|
|
60
|
+
minTemp: 16,
|
|
61
|
+
maxTemp: 30,
|
|
62
|
+
tempStep: 1,
|
|
63
|
+
fahrenheit: false,
|
|
64
|
+
fanOnlyModeSwitch: false,
|
|
65
|
+
fanAccessory: false,
|
|
66
|
+
},
|
|
67
|
+
A1_options: {
|
|
68
|
+
temperatureSensor: false,
|
|
69
|
+
fanAccessory: false,
|
|
70
|
+
humiditySensor: false,
|
|
71
|
+
pumpSwitch: false,
|
|
72
|
+
waterTankSensor: WaterTankSensor.NONE,
|
|
73
|
+
minHumidity: 35,
|
|
74
|
+
maxHumidity: 85,
|
|
75
|
+
humidityStep: 5,
|
|
76
|
+
humidityOffset: 0,
|
|
77
|
+
},
|
|
78
|
+
E2_options: {
|
|
79
|
+
protocol: 'auto',
|
|
80
|
+
minTemp: 30,
|
|
81
|
+
maxTemp: 75,
|
|
82
|
+
tempStep: 1,
|
|
83
|
+
variableHeatingSwitch: false,
|
|
84
|
+
wholeTankHeatingSwitch: false,
|
|
85
|
+
},
|
|
86
|
+
E3_options: {
|
|
87
|
+
precisionHalves: false,
|
|
88
|
+
minTemp: 35,
|
|
89
|
+
maxTemp: 65,
|
|
90
|
+
tempStep: 1,
|
|
91
|
+
burningStateSensor: false,
|
|
92
|
+
protectionSensor: false,
|
|
93
|
+
zeroColdWaterSwitch: false,
|
|
94
|
+
zeroColdPulseSwitch: false,
|
|
95
|
+
smartVolumeSwitch: false,
|
|
96
|
+
},
|
|
97
|
+
};
|
|
96
98
|
//# sourceMappingURL=platformUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platformUtils.js","sourceRoot":"","sources":["../src/platformUtils.ts"],"names":[],"mappings":";;;AASa,QAAA,aAAa,GAAW;IACnC,eAAe,EAAE,EAAE;IACnB,iBAAiB,EAAE,EAAE;IACrB,OAAO,EAAE,KAAK;IACd,oBAAoB,EAAE,IAAI;IAC1B,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,EAAE;CACZ,CAAC;AAoBF,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,0BAAa,CAAA;IACb,kCAAqB,CAAA;IACrB,sCAAyB,CAAA;IACzB,0BAAa,CAAA;AACf,CAAC,EALW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAKpB;AAED,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,mCAAqB,CAAA;IACrB,uCAAyB,CAAA;AAC3B,CAAC,EAHW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAGrB;AAED,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,8CAA2B,CAAA;IAC3B,oDAAiC,CAAA;AACnC,CAAC,EAJW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAI1B;
|
|
1
|
+
{"version":3,"file":"platformUtils.js","sourceRoot":"","sources":["../src/platformUtils.ts"],"names":[],"mappings":";;;AASa,QAAA,aAAa,GAAW;IACnC,eAAe,EAAE,EAAE;IACnB,iBAAiB,EAAE,EAAE;IACrB,OAAO,EAAE,KAAK;IACd,oBAAoB,EAAE,IAAI;IAC1B,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,EAAE;CACZ,CAAC;AAoBF,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,0BAAa,CAAA;IACb,kCAAqB,CAAA;IACrB,sCAAyB,CAAA;IACzB,0BAAa,CAAA;AACf,CAAC,EALW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAKpB;AAED,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,mCAAqB,CAAA;IACrB,uCAAyB,CAAA;AAC3B,CAAC,EAHW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAGrB;AAED,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,8CAA2B,CAAA;IAC3B,oDAAiC,CAAA;AACnC,CAAC,EAJW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAI1B;AA8DY,QAAA,mBAAmB,GAAiB;IAC/C,EAAE,EAAE,CAAC;IACL,IAAI,EAAE,EAAE;IACR,gBAAgB,EAAE;QAChB,EAAE,EAAE,EAAE;QACN,KAAK,EAAE,EAAE;QACT,GAAG,EAAE,EAAE;QACP,OAAO,EAAE,KAAK;QACd,oBAAoB,EAAE,IAAI;QAC1B,iBAAiB,EAAE,KAAK;KACzB;IACD,UAAU,EAAE;QACV,KAAK,EAAE;YACL,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,cAAc,EAAE,KAAK;YACrB,gBAAgB,EAAE,UAAU,CAAC,QAAQ;SACtC;QACD,cAAc,EAAE,IAAI;QACpB,WAAW,EAAE,KAAK;QAClB,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,KAAK;QAChB,aAAa,EAAE,KAAK;QACpB,eAAe,EAAE,KAAK;QACtB,gBAAgB,EAAE,KAAK;QACvB,aAAa,EAAE;YACb,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,KAAK;SACf;QACD,kBAAkB,EAAE,KAAK;QACzB,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,KAAK;QACjB,iBAAiB,EAAE,KAAK;QACxB,YAAY,EAAE,KAAK;KACpB;IACD,UAAU,EAAE;QACV,iBAAiB,EAAE,KAAK;QACxB,YAAY,EAAE,KAAK;QACnB,cAAc,EAAE,KAAK;QACrB,UAAU,EAAE,KAAK;QACjB,eAAe,EAAE,eAAe,CAAC,IAAI;QACrC,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,EAAE;QACf,YAAY,EAAE,CAAC;QACf,cAAc,EAAE,CAAC;KAClB;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,CAAC;QACX,qBAAqB,EAAE,KAAK;QAC5B,sBAAsB,EAAE,KAAK;KAC9B;IACD,UAAU,EAAE;QACV,eAAe,EAAE,KAAK;QACtB,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,CAAC;QACX,kBAAkB,EAAE,KAAK;QACzB,gBAAgB,EAAE,KAAK;QACvB,mBAAmB,EAAE,KAAK;QAC1B,mBAAmB,EAAE,KAAK;QAC1B,iBAAiB,EAAE,KAAK;KACzB;CACF,CAAC"}
|
package/dist/settings.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This is the name of the platform that users will use to register the plugin in the Homebridge config.json
|
|
3
|
-
*/
|
|
4
|
-
export declare const PLATFORM_NAME = "midea-platform";
|
|
5
|
-
/**
|
|
6
|
-
* This must match the name of your plugin as defined the package.json
|
|
7
|
-
*/
|
|
8
|
-
export declare const PLUGIN_NAME = "homebridge-midea-platform";
|
|
1
|
+
/**
|
|
2
|
+
* This is the name of the platform that users will use to register the plugin in the Homebridge config.json
|
|
3
|
+
*/
|
|
4
|
+
export declare const PLATFORM_NAME = "midea-platform";
|
|
5
|
+
/**
|
|
6
|
+
* This must match the name of your plugin as defined the package.json
|
|
7
|
+
*/
|
|
8
|
+
export declare const PLUGIN_NAME = "homebridge-midea-platform";
|
|
9
9
|
//# sourceMappingURL=settings.d.ts.map
|
package/dist/settings.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PLUGIN_NAME = exports.PLATFORM_NAME = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* This is the name of the platform that users will use to register the plugin in the Homebridge config.json
|
|
6
|
-
*/
|
|
7
|
-
exports.PLATFORM_NAME = 'midea-platform';
|
|
8
|
-
/**
|
|
9
|
-
* This must match the name of your plugin as defined the package.json
|
|
10
|
-
*/
|
|
11
|
-
exports.PLUGIN_NAME = 'homebridge-midea-platform';
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PLUGIN_NAME = exports.PLATFORM_NAME = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* This is the name of the platform that users will use to register the plugin in the Homebridge config.json
|
|
6
|
+
*/
|
|
7
|
+
exports.PLATFORM_NAME = 'midea-platform';
|
|
8
|
+
/**
|
|
9
|
+
* This must match the name of your plugin as defined the package.json
|
|
10
|
+
*/
|
|
11
|
+
exports.PLUGIN_NAME = 'homebridge-midea-platform';
|
|
12
12
|
//# sourceMappingURL=settings.js.map
|
package/docs/ac.md
CHANGED
|
@@ -15,6 +15,7 @@ Providing air conditioner settings is optional and the whole section or individu
|
|
|
15
15
|
"screenOff": false,
|
|
16
16
|
"ecoSwitch": false,
|
|
17
17
|
"dryModeSwitch": false,
|
|
18
|
+
"boostModeSwitch": false,
|
|
18
19
|
"breezeAwaySwitch": false,
|
|
19
20
|
"displaySwitch": {
|
|
20
21
|
"flag": true,
|
|
@@ -40,6 +41,7 @@ Providing air conditioner settings is optional and the whole section or individu
|
|
|
40
41
|
- **screenOff** *(optional)*: Toggles if the screen is turned off by default when the unit is turned on. Default is `false`.
|
|
41
42
|
- **ecoSwitch** *(optional)*: Toggles if the eco switch is created with the accessory. Default is `false`.
|
|
42
43
|
- **dryModeSwitch** *(optional)*: Toggles if the dry mode switch is created with the accessory. Default is `false`.
|
|
44
|
+
- **boostModeSwitch** *(optional)*: Toggles if the boost/turbo mode switch is created with the accessory. Default is `false`.
|
|
43
45
|
- **breezeAwaySwitch** *(optional)*: Toggles if the breeze away switch is created with the accessory. Default is `false`.
|
|
44
46
|
- **displaySwitch**:
|
|
45
47
|
- **flag** *(optional)*: Toggles if a switch, which can turn the display on or off will be created or not. Default is `true`.
|
package/docs/db.md
ADDED
package/homebridge-ui/server.js
CHANGED
|
@@ -10,16 +10,16 @@
|
|
|
10
10
|
const { HomebridgePluginUiServer, RequestError } = require('@homebridge/plugin-ui-utils');
|
|
11
11
|
const Discover = require('../dist/core/MideaDiscover.js').default;
|
|
12
12
|
const CloudFactory = require('../dist/core/MideaCloud.js').default;
|
|
13
|
-
const { DeviceType, TCPMessageType, ProtocolVersion, Endianness } = require(
|
|
14
|
-
const { LocalSecurity } = require(
|
|
15
|
-
const { PromiseSocket } = require(
|
|
13
|
+
const { DeviceType, TCPMessageType, ProtocolVersion, Endianness } = require('../dist/core/MideaConstants.js');
|
|
14
|
+
const { LocalSecurity } = require('../dist/core/MideaSecurity.js');
|
|
15
|
+
const { PromiseSocket } = require('../dist/core/MideaUtils.js');
|
|
16
16
|
const { defaultConfig, defaultDeviceConfig } = require('../dist/platformUtils.js');
|
|
17
17
|
|
|
18
18
|
const DEFAULT_ACCOUNT = [
|
|
19
|
-
BigInt(
|
|
20
|
-
BigInt(
|
|
21
|
-
BigInt(
|
|
22
|
-
]
|
|
19
|
+
BigInt('39182118275972017797890111985649342047468653967530949796945843010512'),
|
|
20
|
+
BigInt('29406100301096535908214728322278519471982973450672552249652548883645'),
|
|
21
|
+
BigInt('39182118275972017797890111985649342050088014265865102175083010656997'),
|
|
22
|
+
];
|
|
23
23
|
|
|
24
24
|
var _ = require('lodash');
|
|
25
25
|
|
|
@@ -29,19 +29,19 @@ var _ = require('lodash');
|
|
|
29
29
|
*/
|
|
30
30
|
class Logger {
|
|
31
31
|
_debug;
|
|
32
|
-
_Reset =
|
|
33
|
-
_Bright =
|
|
34
|
-
_Dim =
|
|
32
|
+
_Reset = '\x1b[0m';
|
|
33
|
+
_Bright = '\x1b[1m';
|
|
34
|
+
_Dim = '\x1b[2m';
|
|
35
35
|
|
|
36
|
-
_FgBlack =
|
|
37
|
-
_FgRed =
|
|
38
|
-
_FgGreen =
|
|
39
|
-
_FgYellow =
|
|
40
|
-
_FgBlue =
|
|
41
|
-
_FgMagenta =
|
|
42
|
-
_FgCyan =
|
|
43
|
-
_FgWhite =
|
|
44
|
-
_FgGray =
|
|
36
|
+
_FgBlack = '\x1b[30m';
|
|
37
|
+
_FgRed = '\x1b[31m';
|
|
38
|
+
_FgGreen = '\x1b[32m';
|
|
39
|
+
_FgYellow = '\x1b[33m';
|
|
40
|
+
_FgBlue = '\x1b[34m';
|
|
41
|
+
_FgMagenta = '\x1b[35m';
|
|
42
|
+
_FgCyan = '\x1b[36m';
|
|
43
|
+
_FgWhite = '\x1b[37m';
|
|
44
|
+
_FgGray = '\x1b[90m';
|
|
45
45
|
|
|
46
46
|
constructor(uiDebug = false) {
|
|
47
47
|
this._debug = uiDebug;
|
|
@@ -70,7 +70,6 @@ class Logger {
|
|
|
70
70
|
* Main server-side script called when Custom UI client sends requests
|
|
71
71
|
*/
|
|
72
72
|
class UiServer extends HomebridgePluginUiServer {
|
|
73
|
-
|
|
74
73
|
cloud;
|
|
75
74
|
promiseSocket;
|
|
76
75
|
security;
|
|
@@ -92,8 +91,8 @@ class UiServer extends HomebridgePluginUiServer {
|
|
|
92
91
|
if (useDefaultProfile) {
|
|
93
92
|
this.logger.debug(`Using default profile.`);
|
|
94
93
|
registeredApp = 'Midea SmartHome (MSmartHome)';
|
|
95
|
-
username = Buffer.from((DEFAULT_ACCOUNT[0] ^ DEFAULT_ACCOUNT[1]).toString(16), 'hex').toString('ascii')
|
|
96
|
-
password = Buffer.from((DEFAULT_ACCOUNT[0] ^ DEFAULT_ACCOUNT[2]).toString(16), 'hex').toString('ascii')
|
|
94
|
+
username = Buffer.from((DEFAULT_ACCOUNT[0] ^ DEFAULT_ACCOUNT[1]).toString(16), 'hex').toString('ascii');
|
|
95
|
+
password = Buffer.from((DEFAULT_ACCOUNT[0] ^ DEFAULT_ACCOUNT[2]).toString(16), 'hex').toString('ascii');
|
|
97
96
|
}
|
|
98
97
|
this.cloud = CloudFactory.createCloud(username, password, registeredApp);
|
|
99
98
|
if (username && password && registeredApp) {
|
|
@@ -136,9 +135,7 @@ class UiServer extends HomebridgePluginUiServer {
|
|
|
136
135
|
}
|
|
137
136
|
}
|
|
138
137
|
this.logger.debug(`All devices:\n${JSON.stringify(devices, null, 2)}`);
|
|
139
|
-
return devices
|
|
140
|
-
.filter((a) => Object.keys(a).length > 0)
|
|
141
|
-
.sort((a, b) => a.ip.localeCompare(b.ip));
|
|
138
|
+
return devices.filter((a) => Object.keys(a).length > 0).sort((a, b) => a.ip.localeCompare(b.ip));
|
|
142
139
|
} catch (e) {
|
|
143
140
|
const msg = e instanceof Error ? e.stack : e;
|
|
144
141
|
throw new RequestError(`Device discovery failed:\n${msg}`);
|
|
@@ -199,7 +196,11 @@ class UiServer extends HomebridgePluginUiServer {
|
|
|
199
196
|
const response = await this.promiseSocket.read();
|
|
200
197
|
if (response) {
|
|
201
198
|
if (response.length < 20) {
|
|
202
|
-
this.logger.debug(
|
|
199
|
+
this.logger.debug(
|
|
200
|
+
`[${device.name}] Authenticate error when receiving data from ${device.ip}:${device.port}. (Data length: ${
|
|
201
|
+
response.length
|
|
202
|
+
})\n${JSON.stringify(response)}`,
|
|
203
|
+
);
|
|
203
204
|
throw Error(`[${device.name}] Authenticate error when receiving data from ${device.ip}:${device.port}. (Data length mismatch)`);
|
|
204
205
|
}
|
|
205
206
|
const resp = response.subarray(8, 72);
|
|
@@ -239,6 +240,9 @@ class UiServer extends HomebridgePluginUiServer {
|
|
|
239
240
|
case DeviceType.DEHUMIDIFIER:
|
|
240
241
|
device['displayName'] = 'Dehumidifier';
|
|
241
242
|
break;
|
|
243
|
+
case DeviceType.FRONT_LOAD_WASHER:
|
|
244
|
+
device['displayName'] = 'Front Load Washer';
|
|
245
|
+
break;
|
|
242
246
|
case DeviceType.ELECTRIC_WATER_HEATER:
|
|
243
247
|
device['displayName'] = 'Electric Water Heater';
|
|
244
248
|
break;
|
package/package.json
CHANGED