@switchbot/homebridge-switchbot 1.3.1-beta.9 → 1.4.1-beta.2
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/CHANGELOG.md +18 -2
- package/config.schema.json +82 -32
- package/dist/devices/bots.d.ts +15 -3
- package/dist/devices/bots.d.ts.map +1 -1
- package/dist/devices/bots.js +227 -165
- package/dist/devices/bots.js.map +1 -1
- package/dist/devices/colorbulb.d.ts +14 -3
- package/dist/devices/colorbulb.d.ts.map +1 -1
- package/dist/devices/colorbulb.js +163 -105
- package/dist/devices/colorbulb.js.map +1 -1
- package/dist/devices/contact.d.ts +13 -3
- package/dist/devices/contact.d.ts.map +1 -1
- package/dist/devices/contact.js +102 -63
- package/dist/devices/contact.js.map +1 -1
- package/dist/devices/curtains.d.ts +14 -5
- package/dist/devices/curtains.d.ts.map +1 -1
- package/dist/devices/curtains.js +180 -140
- package/dist/devices/curtains.js.map +1 -1
- package/dist/devices/humidifiers.d.ts +14 -3
- package/dist/devices/humidifiers.d.ts.map +1 -1
- package/dist/devices/humidifiers.js +173 -133
- package/dist/devices/humidifiers.js.map +1 -1
- package/dist/devices/meters.d.ts +17 -13
- package/dist/devices/meters.d.ts.map +1 -1
- package/dist/devices/meters.js +150 -105
- package/dist/devices/meters.js.map +1 -1
- package/dist/devices/motion.d.ts +13 -3
- package/dist/devices/motion.d.ts.map +1 -1
- package/dist/devices/motion.js +89 -45
- package/dist/devices/motion.js.map +1 -1
- package/dist/devices/plugs.d.ts +15 -3
- package/dist/devices/plugs.d.ts.map +1 -1
- package/dist/devices/plugs.js +115 -53
- package/dist/devices/plugs.js.map +1 -1
- package/dist/irdevices/airconditioners.d.ts +13 -3
- package/dist/irdevices/airconditioners.d.ts.map +1 -1
- package/dist/irdevices/airconditioners.js +97 -46
- package/dist/irdevices/airconditioners.js.map +1 -1
- package/dist/irdevices/airpurifiers.d.ts +13 -3
- package/dist/irdevices/airpurifiers.d.ts.map +1 -1
- package/dist/irdevices/airpurifiers.js +85 -31
- package/dist/irdevices/airpurifiers.js.map +1 -1
- package/dist/irdevices/cameras.d.ts +12 -3
- package/dist/irdevices/cameras.d.ts.map +1 -1
- package/dist/irdevices/cameras.js +73 -24
- package/dist/irdevices/cameras.js.map +1 -1
- package/dist/irdevices/fans.d.ts +12 -3
- package/dist/irdevices/fans.d.ts.map +1 -1
- package/dist/irdevices/fans.js +83 -35
- package/dist/irdevices/fans.js.map +1 -1
- package/dist/irdevices/lights.d.ts +12 -3
- package/dist/irdevices/lights.d.ts.map +1 -1
- package/dist/irdevices/lights.js +74 -25
- package/dist/irdevices/lights.js.map +1 -1
- package/dist/irdevices/others.d.ts +12 -3
- package/dist/irdevices/others.d.ts.map +1 -1
- package/dist/irdevices/others.js +80 -31
- package/dist/irdevices/others.js.map +1 -1
- package/dist/irdevices/tvs.d.ts +12 -3
- package/dist/irdevices/tvs.d.ts.map +1 -1
- package/dist/irdevices/tvs.js +90 -42
- package/dist/irdevices/tvs.js.map +1 -1
- package/dist/irdevices/vacuumcleaners.d.ts +12 -3
- package/dist/irdevices/vacuumcleaners.d.ts.map +1 -1
- package/dist/irdevices/vacuumcleaners.js +73 -24
- package/dist/irdevices/vacuumcleaners.js.map +1 -1
- package/dist/irdevices/waterheaters.d.ts +12 -3
- package/dist/irdevices/waterheaters.d.ts.map +1 -1
- package/dist/irdevices/waterheaters.js +73 -24
- package/dist/irdevices/waterheaters.js.map +1 -1
- package/dist/platform.d.ts +10 -10
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +290 -307
- package/dist/platform.js.map +1 -1
- package/dist/settings.d.ts +9 -6
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js.map +1 -1
- package/nodemon.json +1 -1
- package/package.json +6 -6
- package/src/devices/bots.ts +221 -152
- package/src/devices/colorbulb.ts +172 -108
- package/src/devices/contact.ts +109 -64
- package/src/devices/curtains.ts +190 -146
- package/src/devices/humidifiers.ts +181 -135
- package/src/devices/meters.ts +156 -105
- package/src/devices/motion.ts +95 -45
- package/src/devices/plugs.ts +121 -53
- package/src/irdevices/airconditioners.ts +102 -46
- package/src/irdevices/airpurifiers.ts +91 -31
- package/src/irdevices/cameras.ts +79 -24
- package/src/irdevices/fans.ts +89 -36
- package/src/irdevices/lights.ts +80 -25
- package/src/irdevices/others.ts +86 -31
- package/src/irdevices/tvs.ts +96 -42
- package/src/irdevices/vacuumcleaners.ts +79 -24
- package/src/irdevices/waterheaters.ts +79 -24
- package/src/platform.ts +285 -302
- package/src/settings.ts +10 -6
- package/dist/devices/indoorcam.d.ts +0 -64
- package/dist/devices/indoorcam.d.ts.map +0 -1
- package/dist/devices/indoorcam.js +0 -249
- package/dist/devices/indoorcam.js.map +0 -1
- package/src/devices/indoorcam.ts +0 -309
package/dist/devices/plugs.js
CHANGED
|
@@ -9,11 +9,17 @@ class Plug {
|
|
|
9
9
|
this.platform = platform;
|
|
10
10
|
this.accessory = accessory;
|
|
11
11
|
this.device = device;
|
|
12
|
-
// Config
|
|
13
|
-
this.deviceDebug = this.platform.config.options?.debug === 'device' || this.platform.debugMode;
|
|
14
|
-
this.debugDebug = this.platform.config.options?.debug === 'debug' || this.platform.debugMode;
|
|
15
12
|
// default placeholders
|
|
16
|
-
this.
|
|
13
|
+
this.refreshRate();
|
|
14
|
+
this.logs();
|
|
15
|
+
if (this.On === undefined) {
|
|
16
|
+
this.On = false;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
this.On = this.accessory.context.On;
|
|
20
|
+
}
|
|
21
|
+
// Plug Config
|
|
22
|
+
this.debugLog(`Plug: ${this.accessory.displayName} Config: (offline: ${device.offline})`);
|
|
17
23
|
// this is subject we use to track when we need to POST changes to the SwitchBot API
|
|
18
24
|
this.doPlugUpdate = new rxjs_1.Subject();
|
|
19
25
|
this.plugUpdateInProgress = false;
|
|
@@ -43,7 +49,7 @@ class Plug {
|
|
|
43
49
|
// Update Homekit
|
|
44
50
|
this.updateHomeKitCharacteristics();
|
|
45
51
|
// Start an update interval
|
|
46
|
-
(0, rxjs_1.interval)(this.
|
|
52
|
+
(0, rxjs_1.interval)(this.deviceRefreshRate * 1000)
|
|
47
53
|
.pipe((0, operators_1.skipWhile)(() => this.plugUpdateInProgress))
|
|
48
54
|
.subscribe(() => {
|
|
49
55
|
this.refreshStatus();
|
|
@@ -59,20 +65,39 @@ class Plug {
|
|
|
59
65
|
await this.pushChanges();
|
|
60
66
|
}
|
|
61
67
|
catch (e) {
|
|
62
|
-
this.
|
|
63
|
-
if (this.
|
|
64
|
-
this.
|
|
68
|
+
this.errorLog(`Plug: ${this.accessory.displayName} failed pushChanges`);
|
|
69
|
+
if (this.deviceLogging === 'debug') {
|
|
70
|
+
this.errorLog(`Plug: ${this.accessory.displayName} failed pushChanges,`
|
|
65
71
|
+ ` Error Message: ${JSON.stringify(e.message)}`);
|
|
66
72
|
}
|
|
67
|
-
if (this.
|
|
68
|
-
this.
|
|
73
|
+
if (this.platform.debugMode) {
|
|
74
|
+
this.errorLog(`Plug: ${this.accessory.displayName} failed pushChanges,`
|
|
69
75
|
+ ` Error: ${JSON.stringify(e)}`);
|
|
70
76
|
}
|
|
71
|
-
this.apiError(
|
|
77
|
+
this.apiError();
|
|
72
78
|
}
|
|
73
79
|
this.plugUpdateInProgress = false;
|
|
74
80
|
});
|
|
75
81
|
}
|
|
82
|
+
refreshRate() {
|
|
83
|
+
if (this.device.refreshRate) {
|
|
84
|
+
this.deviceRefreshRate = this.accessory.context.refreshRate = this.device.refreshRate;
|
|
85
|
+
}
|
|
86
|
+
else if (this.platform.config.options.refreshRate) {
|
|
87
|
+
this.deviceRefreshRate = this.accessory.context.refreshRate = this.platform.config.options.refreshRate;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
logs() {
|
|
91
|
+
if (this.device.logging) {
|
|
92
|
+
this.deviceLogging = this.accessory.context.logging = this.device.logging;
|
|
93
|
+
}
|
|
94
|
+
else if (this.platform.config.options?.logging) {
|
|
95
|
+
this.deviceLogging = this.accessory.context.logging = this.platform.config.options?.logging;
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
this.deviceLogging = this.accessory.context.logging = 'standard';
|
|
99
|
+
}
|
|
100
|
+
}
|
|
76
101
|
parseStatus() {
|
|
77
102
|
switch (this.deviceStatus.body.power) {
|
|
78
103
|
case 'on':
|
|
@@ -81,26 +106,26 @@ class Plug {
|
|
|
81
106
|
default:
|
|
82
107
|
this.On = false;
|
|
83
108
|
}
|
|
84
|
-
this.
|
|
109
|
+
this.debugLog(`Plug ${this.accessory.displayName} On: ${this.On}`);
|
|
85
110
|
}
|
|
86
111
|
async refreshStatus() {
|
|
87
112
|
try {
|
|
88
113
|
this.deviceStatus = (await this.platform.axios.get(`${settings_1.DeviceURL}/${this.device.deviceId}/status`)).data;
|
|
89
|
-
this.
|
|
114
|
+
this.debugLog(`Plug: ${this.accessory.displayName} refreshStatus: ${JSON.stringify(this.deviceStatus)}`);
|
|
90
115
|
this.parseStatus();
|
|
91
116
|
this.updateHomeKitCharacteristics();
|
|
92
117
|
}
|
|
93
118
|
catch (e) {
|
|
94
|
-
this.
|
|
95
|
-
if (this.
|
|
96
|
-
this.
|
|
119
|
+
this.errorLog(`Plug: ${this.accessory.displayName} failed refreshStatus with OpenAPI Connection`);
|
|
120
|
+
if (this.deviceLogging === 'debug') {
|
|
121
|
+
this.errorLog(`Plug: ${this.accessory.displayName} failed refreshStatus with OpenAPI Connection,`
|
|
97
122
|
+ ` Error Message: ${JSON.stringify(e.message)}`);
|
|
98
123
|
}
|
|
99
|
-
if (this.
|
|
100
|
-
this.
|
|
124
|
+
if (this.platform.debugMode) {
|
|
125
|
+
this.errorLog(`Plug: ${this.accessory.displayName} failed refreshStatus with OpenAPI Connection,`
|
|
101
126
|
+ ` Error: ${JSON.stringify(e)}`);
|
|
102
127
|
}
|
|
103
|
-
this.apiError(
|
|
128
|
+
this.apiError();
|
|
104
129
|
}
|
|
105
130
|
}
|
|
106
131
|
/**
|
|
@@ -110,22 +135,26 @@ class Plug {
|
|
|
110
135
|
* Plug - "command" "turnOn" "default" = set to ON state
|
|
111
136
|
*/
|
|
112
137
|
async pushChanges() {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
138
|
+
if (this.On !== this.OnCached) {
|
|
139
|
+
const payload = {
|
|
140
|
+
commandType: 'command',
|
|
141
|
+
parameter: 'default',
|
|
142
|
+
};
|
|
143
|
+
if (this.On) {
|
|
144
|
+
payload.command = 'turnOn';
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
payload.command = 'turnOff';
|
|
148
|
+
}
|
|
149
|
+
this.infoLog(`Plug: ${this.accessory.displayName} Sending request to SwitchBot API. command: ${payload.command},`
|
|
150
|
+
+ ` parameter: ${payload.parameter}, commandType: ${payload.commandType}`);
|
|
151
|
+
// Make the API request
|
|
152
|
+
const push = (await this.platform.axios.post(`${settings_1.DeviceURL}/${this.device.deviceId}/commands`, payload));
|
|
153
|
+
this.debugLog(`Plug: ${this.accessory.displayName} pushchanges: ${JSON.stringify(push.data)}`);
|
|
154
|
+
this.statusCode(push);
|
|
155
|
+
this.OnCached = this.On;
|
|
156
|
+
this.accessory.context.On = this.OnCached;
|
|
119
157
|
}
|
|
120
|
-
else {
|
|
121
|
-
payload.command = 'turnOff';
|
|
122
|
-
}
|
|
123
|
-
this.platform.log.info(`Plug: ${this.accessory.displayName} Sending request to SwitchBot API. command: ${payload.command},`
|
|
124
|
-
+ ` parameter: ${payload.parameter}, commandType: ${payload.commandType}`);
|
|
125
|
-
// Make the API request
|
|
126
|
-
const push = (await this.platform.axios.post(`${settings_1.DeviceURL}/${this.device.deviceId}/commands`, payload));
|
|
127
|
-
this.platform.debug(`Plug: ${this.accessory.displayName} pushchanges: ${JSON.stringify(push.data)}`);
|
|
128
|
-
this.statusCode(push);
|
|
129
158
|
(0, rxjs_1.interval)(5000)
|
|
130
159
|
.pipe((0, operators_1.skipWhile)(() => this.plugUpdateInProgress))
|
|
131
160
|
.pipe((0, operators_1.take)(1))
|
|
@@ -135,58 +164,91 @@ class Plug {
|
|
|
135
164
|
}
|
|
136
165
|
updateHomeKitCharacteristics() {
|
|
137
166
|
if (this.On === undefined) {
|
|
138
|
-
this.
|
|
167
|
+
this.debugLog(`Plug: ${this.accessory.displayName} On: ${this.On}`);
|
|
139
168
|
}
|
|
140
169
|
else {
|
|
141
170
|
this.service.updateCharacteristic(this.platform.Characteristic.On, this.On);
|
|
142
|
-
this.
|
|
171
|
+
this.debugLog(`Plug: ${this.accessory.displayName} updateCharacteristic On: ${this.On}`);
|
|
143
172
|
}
|
|
144
173
|
}
|
|
145
|
-
apiError(
|
|
146
|
-
this.
|
|
174
|
+
apiError() {
|
|
175
|
+
throw new this.platform.api.hap.HapStatusError(-70402 /* SERVICE_COMMUNICATION_FAILURE */);
|
|
147
176
|
}
|
|
148
177
|
statusCode(push) {
|
|
149
178
|
switch (push.data.statusCode) {
|
|
150
179
|
case 151:
|
|
151
|
-
this.
|
|
180
|
+
this.errorLog(`Plug: ${this.accessory.displayName} Command not supported by this device type.`);
|
|
152
181
|
break;
|
|
153
182
|
case 152:
|
|
154
|
-
this.
|
|
183
|
+
this.errorLog(`Plug: ${this.accessory.displayName} Device not found.`);
|
|
155
184
|
break;
|
|
156
185
|
case 160:
|
|
157
|
-
this.
|
|
186
|
+
this.errorLog(`Plug: ${this.accessory.displayName} Command is not supported.`);
|
|
158
187
|
break;
|
|
159
188
|
case 161:
|
|
160
|
-
this.
|
|
161
|
-
|
|
162
|
-
this.On = false;
|
|
163
|
-
}
|
|
189
|
+
this.errorLog(`Plug: ${this.accessory.displayName} Device is offline.`);
|
|
190
|
+
this.offlineOff();
|
|
164
191
|
break;
|
|
165
192
|
case 171:
|
|
166
|
-
this.
|
|
167
|
-
|
|
168
|
-
this.On = false;
|
|
169
|
-
}
|
|
193
|
+
this.errorLog(`Plug: ${this.accessory.displayName} Hub Device is offline. Hub: ${this.device.hubDeviceId}`);
|
|
194
|
+
this.offlineOff();
|
|
170
195
|
break;
|
|
171
196
|
case 190:
|
|
172
|
-
this.
|
|
197
|
+
this.errorLog(`Plug: ${this.accessory.displayName} Device internal error due to device states not synchronized with server,`
|
|
173
198
|
+ ` Or command: ${JSON.stringify(push.data)} format is invalid`);
|
|
174
199
|
break;
|
|
175
200
|
case 100:
|
|
176
|
-
this.
|
|
201
|
+
this.debugLog(`Plug: ${this.accessory.displayName} Command successfully sent.`);
|
|
177
202
|
break;
|
|
178
203
|
default:
|
|
179
|
-
this.
|
|
204
|
+
this.debugLog(`Plug: ${this.accessory.displayName} Unknown statusCode.`);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
offlineOff() {
|
|
208
|
+
if (this.device.offline) {
|
|
209
|
+
this.On = false;
|
|
210
|
+
this.service.getCharacteristic(this.platform.Characteristic.On).updateValue(this.On);
|
|
180
211
|
}
|
|
181
212
|
}
|
|
182
213
|
/**
|
|
183
214
|
* Handle requests to set the value of the "On" characteristic
|
|
184
215
|
*/
|
|
185
216
|
OnSet(value) {
|
|
186
|
-
this.
|
|
217
|
+
this.debugLog(`Plug: ${this.accessory.displayName} - Set On: ${value}`);
|
|
187
218
|
this.On = value;
|
|
188
219
|
this.doPlugUpdate.next();
|
|
189
220
|
}
|
|
221
|
+
/**
|
|
222
|
+
* Logging for Device
|
|
223
|
+
*/
|
|
224
|
+
infoLog(...log) {
|
|
225
|
+
if (this.enablingDeviceLogging()) {
|
|
226
|
+
this.platform.log.info(String(...log));
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
warnLog(...log) {
|
|
230
|
+
if (this.enablingDeviceLogging()) {
|
|
231
|
+
this.platform.log.warn(String(...log));
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
errorLog(...log) {
|
|
235
|
+
if (this.enablingDeviceLogging()) {
|
|
236
|
+
this.platform.log.error(String(...log));
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
debugLog(...log) {
|
|
240
|
+
if (this.enablingDeviceLogging()) {
|
|
241
|
+
if (this.deviceLogging === 'debug') {
|
|
242
|
+
this.platform.log.info('[DEBUG]', String(...log));
|
|
243
|
+
}
|
|
244
|
+
else {
|
|
245
|
+
this.platform.log.debug(String(...log));
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
enablingDeviceLogging() {
|
|
250
|
+
return this.deviceLogging === 'debug' || this.deviceLogging === 'standard';
|
|
251
|
+
}
|
|
190
252
|
}
|
|
191
253
|
exports.Plug = Plug;
|
|
192
254
|
//# sourceMappingURL=plugs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugs.js","sourceRoot":"","sources":["../../src/devices/plugs.ts"],"names":[],"mappings":";;;AAEA,+BAAyC;AAEzC,8CAAoE;AAEpE,0CAA8F;AAE9F,MAAa,IAAI;
|
|
1
|
+
{"version":3,"file":"plugs.js","sourceRoot":"","sources":["../../src/devices/plugs.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,9 +12,11 @@ export declare class AirConditioner {
|
|
|
12
12
|
device: irdevice & irDevicesConfig;
|
|
13
13
|
service: Service;
|
|
14
14
|
Active: CharacteristicValue;
|
|
15
|
+
ActiveCached: CharacteristicValue;
|
|
15
16
|
RotationSpeed: CharacteristicValue;
|
|
16
17
|
LastTemperature: CharacteristicValue;
|
|
17
18
|
CurrentTemperature: CharacteristicValue;
|
|
19
|
+
CurrentTemperatureCached: CharacteristicValue;
|
|
18
20
|
TargetHeaterCoolerState?: CharacteristicValue;
|
|
19
21
|
CurrentHeaterCoolerState: CharacteristicValue;
|
|
20
22
|
HeatingThresholdTemperature?: CharacteristicValue;
|
|
@@ -27,9 +29,9 @@ export declare class AirConditioner {
|
|
|
27
29
|
static MODE_AUTO: number;
|
|
28
30
|
static MODE_COOL: number;
|
|
29
31
|
static MODE_HEAT: number;
|
|
30
|
-
|
|
31
|
-
private readonly debugDebug;
|
|
32
|
+
deviceLogging: string;
|
|
32
33
|
constructor(platform: SwitchBotPlatform, accessory: PlatformAccessory, device: irdevice & irDevicesConfig);
|
|
34
|
+
logs(): void;
|
|
33
35
|
private RotationSpeedSet;
|
|
34
36
|
private RotationSpeedGet;
|
|
35
37
|
private ActiveSet;
|
|
@@ -54,6 +56,14 @@ export declare class AirConditioner {
|
|
|
54
56
|
pushAirConditionerDetailsChanges(): Promise<void>;
|
|
55
57
|
pushChanges(payload: payload): Promise<void>;
|
|
56
58
|
private statusCode;
|
|
57
|
-
apiError(
|
|
59
|
+
apiError(): void;
|
|
60
|
+
/**
|
|
61
|
+
* Logging for Device
|
|
62
|
+
*/
|
|
63
|
+
infoLog(...log: any[]): void;
|
|
64
|
+
warnLog(...log: any[]): void;
|
|
65
|
+
errorLog(...log: any[]): void;
|
|
66
|
+
debugLog(...log: any[]): void;
|
|
67
|
+
enablingDeviceLogging(): boolean;
|
|
58
68
|
}
|
|
59
69
|
//# sourceMappingURL=airconditioners.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"airconditioners.d.ts","sourceRoot":"","sources":["../../src/irdevices/airconditioners.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,eAAe,EAAa,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"airconditioners.d.ts","sourceRoot":"","sources":["../../src/irdevices/airconditioners.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,eAAe,EAAa,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAa,iBAAiB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAExF;;;;GAIG;AACH,qBAAa,cAAc;IA8BvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,SAAS;IACV,MAAM,EAAE,QAAQ,GAAG,eAAe;IA9B3C,OAAO,EAAG,OAAO,CAAC;IAGlB,MAAM,EAAG,mBAAmB,CAAC;IAC7B,YAAY,EAAG,mBAAmB,CAAC;IACnC,aAAa,EAAG,mBAAmB,CAAC;IACpC,eAAe,EAAG,mBAAmB,CAAC;IACtC,kBAAkB,EAAG,mBAAmB,CAAC;IACzC,wBAAwB,EAAG,mBAAmB,CAAC;IAC/C,uBAAuB,CAAC,EAAE,mBAAmB,CAAC;IAC9C,wBAAwB,EAAG,mBAAmB,CAAC;IAC/C,2BAA2B,CAAC,EAAE,mBAAmB,CAAC;IAGlD,KAAK,EAAG,MAAM,CAAC;IACf,IAAI,EAAE,GAAG,CAAC;IACV,OAAO,EAAE,GAAG,CAAQ;IACpB,WAAW,EAAG,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAG,MAAM,CAAC;IACzB,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC;IAGzB,aAAa,EAAG,MAAM,CAAC;gBAGJ,QAAQ,EAAE,iBAAiB,EACpC,SAAS,EAAE,iBAAiB,EAC7B,MAAM,EAAE,QAAQ,GAAG,eAAe;IAuG3C,IAAI;IAUJ,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,4BAA4B;IA0CpC,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,0BAA0B;IAiBlC,OAAO,CAAC,2BAA2B;IAcnC,OAAO,CAAC,8BAA8B;IAMtC,OAAO,CAAC,8BAA8B;IAQtC;;;;;;;;OAQG;IACG,2BAA2B;IAW3B,4BAA4B;IAW5B,+BAA+B;IAW/B,gCAAgC;IAqCzB,WAAW,CAAC,OAAO,EAAE,OAAO;IA0BzC,OAAO,CAAC,UAAU;IA6BX,QAAQ;IAIf;;KAEC;IACD,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE;IAMrB,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE;IAMrB,QAAQ,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE;IAMtB,QAAQ,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE;IAUtB,qBAAqB,IAAI,OAAO;CAGjC"}
|
|
@@ -13,10 +13,20 @@ class AirConditioner {
|
|
|
13
13
|
this.accessory = accessory;
|
|
14
14
|
this.device = device;
|
|
15
15
|
this.Timeout = null;
|
|
16
|
-
//
|
|
17
|
-
this.
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
// default placeholders
|
|
17
|
+
this.logs();
|
|
18
|
+
if (this.Active === undefined) {
|
|
19
|
+
this.Active = this.platform.Characteristic.Active.INACTIVE;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
this.Active = this.accessory.context.Active;
|
|
23
|
+
}
|
|
24
|
+
if (this.CurrentTemperature === undefined) {
|
|
25
|
+
this.CurrentTemperature = 24;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
this.CurrentTemperature = this.accessory.context.CurrentTemperature;
|
|
29
|
+
}
|
|
20
30
|
// set accessory information
|
|
21
31
|
accessory
|
|
22
32
|
.getService(this.platform.Service.AccessoryInformation)
|
|
@@ -95,6 +105,17 @@ class AirConditioner {
|
|
|
95
105
|
})
|
|
96
106
|
.onSet(this.RotationSpeedSet.bind(this));
|
|
97
107
|
}
|
|
108
|
+
logs() {
|
|
109
|
+
if (this.device.logging) {
|
|
110
|
+
this.deviceLogging = this.accessory.context.logging = this.device.logging;
|
|
111
|
+
}
|
|
112
|
+
else if (this.platform.config.options?.logging) {
|
|
113
|
+
this.deviceLogging = this.accessory.context.logging = this.platform.config.options?.logging;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
this.deviceLogging = this.accessory.context.logging = 'standard';
|
|
117
|
+
}
|
|
118
|
+
}
|
|
98
119
|
RotationSpeedSet(value) {
|
|
99
120
|
if (value === 4) {
|
|
100
121
|
this.CurrentFanSpeed = 1;
|
|
@@ -115,67 +136,69 @@ class AirConditioner {
|
|
|
115
136
|
return this.RotationSpeed;
|
|
116
137
|
}
|
|
117
138
|
ActiveSet(value) {
|
|
118
|
-
this.
|
|
139
|
+
this.debugLog(`Air Conditioner: ${this.accessory.displayName} Set Active: ${value}`);
|
|
119
140
|
if (value === this.platform.Characteristic.Active.INACTIVE) {
|
|
120
141
|
this.pushAirConditionerOffChanges();
|
|
121
|
-
this.
|
|
142
|
+
this.debugLog(`Air Conditioner: ${this.accessory.displayName} pushAirConditionerOffChanges, Active: ${this.Active}`);
|
|
122
143
|
}
|
|
123
144
|
else {
|
|
124
145
|
this.pushAirConditionerOnChanges();
|
|
125
|
-
this.
|
|
146
|
+
this.debugLog(`Air Conditioner: ${this.accessory.displayName} pushAirConditionerOffChanges, Active: ${this.Active}`);
|
|
126
147
|
}
|
|
127
148
|
this.Active = value;
|
|
149
|
+
this.ActiveCached = this.Active;
|
|
150
|
+
this.accessory.context.Active = this.ActiveCached;
|
|
128
151
|
}
|
|
129
152
|
updateHomeKitCharacteristics() {
|
|
130
153
|
if (this.Active === undefined) {
|
|
131
|
-
this.
|
|
154
|
+
this.debugLog(`Air Conditioner: ${this.accessory.displayName} Active: ${this.Active}`);
|
|
132
155
|
}
|
|
133
156
|
else {
|
|
134
157
|
this.service?.updateCharacteristic(this.platform.Characteristic.Active, this.Active);
|
|
135
|
-
this.
|
|
158
|
+
this.debugLog(`Air Conditioner: ${this.accessory.displayName} updateCharacteristic Active: ${this.Active}`);
|
|
136
159
|
}
|
|
137
160
|
if (this.RotationSpeed === undefined) {
|
|
138
|
-
this.
|
|
161
|
+
this.debugLog(`Air Conditioner: ${this.accessory.displayName} RotationSpeed: ${this.RotationSpeed}`);
|
|
139
162
|
}
|
|
140
163
|
else {
|
|
141
164
|
this.service?.updateCharacteristic(this.platform.Characteristic.RotationSpeed, this.RotationSpeed);
|
|
142
|
-
this.
|
|
165
|
+
this.debugLog(`Air Conditioner: ${this.accessory.displayName} updateCharacteristic RotationSpeed: ${this.RotationSpeed}`);
|
|
143
166
|
}
|
|
144
167
|
if (this.CurrentTemperature === undefined) {
|
|
145
|
-
this.
|
|
168
|
+
this.debugLog(`Air Conditioner: ${this.accessory.displayName} CurrentTemperature: ${this.CurrentTemperature}`);
|
|
146
169
|
}
|
|
147
170
|
else {
|
|
148
171
|
this.service?.updateCharacteristic(this.platform.Characteristic.CurrentTemperature, this.CurrentTemperature);
|
|
149
|
-
this.
|
|
172
|
+
this.debugLog(`Air Conditioner: ${this.accessory.displayName} updateCharacteristic CurrentTemperature: ${this.CurrentTemperature}`);
|
|
150
173
|
}
|
|
151
174
|
if (this.TargetHeaterCoolerState === undefined) {
|
|
152
|
-
this.
|
|
175
|
+
this.debugLog(`Air Conditioner: ${this.accessory.displayName} TargetHeaterCoolerState: ${this.TargetHeaterCoolerState}`);
|
|
153
176
|
}
|
|
154
177
|
else {
|
|
155
178
|
this.service?.updateCharacteristic(this.platform.Characteristic.TargetHeaterCoolerState, this.TargetHeaterCoolerState);
|
|
156
|
-
this.
|
|
179
|
+
this.debugLog(`Air Conditioner: ${this.accessory.displayName}`
|
|
157
180
|
+ ` updateCharacteristic TargetHeaterCoolerState: ${this.TargetHeaterCoolerState}`);
|
|
158
181
|
}
|
|
159
182
|
if (this.CurrentHeaterCoolerState === undefined) {
|
|
160
|
-
this.
|
|
183
|
+
this.debugLog(`Air Conditioner: ${this.accessory.displayName} CurrentHeaterCoolerState: ${this.CurrentHeaterCoolerState}`);
|
|
161
184
|
}
|
|
162
185
|
else {
|
|
163
186
|
this.service?.updateCharacteristic(this.platform.Characteristic.CurrentHeaterCoolerState, this.CurrentHeaterCoolerState);
|
|
164
|
-
this.
|
|
187
|
+
this.debugLog(`Air Conditioner: ${this.accessory.displayName}`
|
|
165
188
|
+ ` updateCharacteristic CurrentHeaterCoolerState: ${this.CurrentHeaterCoolerState}`);
|
|
166
189
|
}
|
|
167
190
|
if (this.HeatingThresholdTemperature === undefined) {
|
|
168
|
-
this.
|
|
191
|
+
this.debugLog(`Air Conditioner: ${this.accessory.displayName} HeatingThresholdTemperature: ${this.HeatingThresholdTemperature}`);
|
|
169
192
|
}
|
|
170
193
|
else {
|
|
171
194
|
this.service?.updateCharacteristic(this.platform.Characteristic.HeatingThresholdTemperature, this.HeatingThresholdTemperature);
|
|
172
|
-
this.
|
|
195
|
+
this.debugLog(`Air Conditioner: ${this.accessory.displayName}`
|
|
173
196
|
+ ` updateCharacteristic HeatingThresholdTemperature: ${this.HeatingThresholdTemperature}`);
|
|
174
197
|
}
|
|
175
198
|
}
|
|
176
199
|
CurrentTemperatureGet(value) {
|
|
177
200
|
value = Number(this.CurrentTemperature) || 24;
|
|
178
|
-
this.
|
|
201
|
+
this.debugLog(`Air Conditioner: ${this.accessory.displayName} Trigger Get CurrentTemperature: ${value}`);
|
|
179
202
|
this.service
|
|
180
203
|
.getCharacteristic(this.platform.Characteristic.CurrentTemperature)
|
|
181
204
|
.updateValue(value);
|
|
@@ -209,19 +232,19 @@ class AirConditioner {
|
|
|
209
232
|
else {
|
|
210
233
|
this.CurrentHeaterCoolerState = this.platform.Characteristic.CurrentHeaterCoolerState.INACTIVE;
|
|
211
234
|
}
|
|
212
|
-
this.
|
|
235
|
+
this.debugLog(`Air Conditioner: ${this.accessory.displayName} CurrentHeaterCoolerState: ${this.CurrentHeaterCoolerState}`);
|
|
213
236
|
return this.CurrentHeaterCoolerState;
|
|
214
237
|
}
|
|
215
238
|
HeatingThresholdTemperatureGet() {
|
|
216
239
|
this.CurrentTemperature = this.CurrentTemperature || 24;
|
|
217
|
-
this.
|
|
240
|
+
this.debugLog(`Air Conditioner: ${this.accessory.displayName} CurrentTemperature: ${this.CurrentTemperature}`);
|
|
218
241
|
return this.CurrentTemperature;
|
|
219
242
|
}
|
|
220
243
|
HeatingThresholdTemperatureSet(value) {
|
|
221
244
|
this.pushAirConditionerStatusChanges();
|
|
222
245
|
this.LastTemperature = Number(this.CurrentTemperature);
|
|
223
246
|
this.CurrentTemperature = Number(value);
|
|
224
|
-
this.
|
|
247
|
+
this.debugLog(`Air Conditioner: ${this.accessory.displayName} CurrentTemperature: ${this.CurrentTemperature},`
|
|
225
248
|
+ ` LastTemperature: ${this.LastTemperature}`);
|
|
226
249
|
}
|
|
227
250
|
/**
|
|
@@ -299,62 +322,90 @@ class AirConditioner {
|
|
|
299
322
|
}
|
|
300
323
|
async pushChanges(payload) {
|
|
301
324
|
try {
|
|
302
|
-
this.
|
|
325
|
+
this.infoLog(`Air Conditioner: ${this.accessory.displayName} Sending request to SwitchBot API. command: ${payload.command},`
|
|
303
326
|
+ ` parameter: [${payload.parameter}], commandType: ${payload.commandType}`);
|
|
304
327
|
// Make the API request
|
|
305
328
|
const push = await this.platform.axios.post(`${settings_1.DeviceURL}/${this.device.deviceId}/commands`, payload);
|
|
306
|
-
this.
|
|
329
|
+
this.errorLog(`Air Conditioner: ${this.accessory.displayName} pushChanges: ${JSON.stringify(push.data)}`);
|
|
307
330
|
this.statusCode(push);
|
|
331
|
+
this.CurrentTemperatureCached = this.CurrentTemperature;
|
|
332
|
+
this.accessory.context.CurrentTemperature = this.CurrentTemperatureCached;
|
|
308
333
|
this.updateHomeKitCharacteristics();
|
|
309
334
|
}
|
|
310
335
|
catch (e) {
|
|
311
|
-
this.
|
|
312
|
-
if (this.
|
|
313
|
-
this.
|
|
336
|
+
this.errorLog(`Air Conditioner: ${this.accessory.displayName} failed pushChanges`);
|
|
337
|
+
if (this.deviceLogging === 'debug') {
|
|
338
|
+
this.errorLog(`Air Conditioner: ${this.accessory.displayName} failed pushChanges,`
|
|
314
339
|
+ ` Error Message: ${JSON.stringify(e.message)}`);
|
|
315
340
|
}
|
|
316
|
-
if (this.
|
|
317
|
-
this.
|
|
341
|
+
if (this.platform.debugMode) {
|
|
342
|
+
this.errorLog(`Air Conditioner: ${this.accessory.displayName} failed pushChanges,`
|
|
318
343
|
+ ` Error: ${JSON.stringify(e)}`);
|
|
319
344
|
}
|
|
320
|
-
this.apiError(
|
|
345
|
+
this.apiError();
|
|
321
346
|
}
|
|
322
347
|
}
|
|
323
348
|
statusCode(push) {
|
|
324
349
|
switch (push.data.statusCode) {
|
|
325
350
|
case 151:
|
|
326
|
-
this.
|
|
351
|
+
this.errorLog(`Air Conditioner: ${this.accessory.displayName} Command not supported by this device type.`);
|
|
327
352
|
break;
|
|
328
353
|
case 152:
|
|
329
|
-
this.
|
|
354
|
+
this.errorLog(`Air Conditioner: ${this.accessory.displayName} Device not found.`);
|
|
330
355
|
break;
|
|
331
356
|
case 160:
|
|
332
|
-
this.
|
|
357
|
+
this.errorLog(`Air Conditioner: ${this.accessory.displayName} Command is not supported.`);
|
|
333
358
|
break;
|
|
334
359
|
case 161:
|
|
335
|
-
this.
|
|
360
|
+
this.errorLog(`Air Conditioner: ${this.accessory.displayName} Device is offline.`);
|
|
336
361
|
break;
|
|
337
362
|
case 171:
|
|
338
|
-
this.
|
|
363
|
+
this.errorLog(`Air Conditioner: ${this.accessory.displayName} Hub Device is offline. Hub: ${this.device.hubDeviceId}`);
|
|
339
364
|
break;
|
|
340
365
|
case 190:
|
|
341
|
-
this.
|
|
366
|
+
this.errorLog(`Air Conditioner: ${this.accessory.displayName} Device internal error due to device states not synchronized`
|
|
342
367
|
+ ` with server, Or command: ${JSON.stringify(push.data)} format is invalid`);
|
|
343
368
|
break;
|
|
344
369
|
case 100:
|
|
345
|
-
this.
|
|
370
|
+
this.debugLog(`Air Conditioner: ${this.accessory.displayName} Command successfully sent.`);
|
|
346
371
|
break;
|
|
347
372
|
default:
|
|
348
|
-
this.
|
|
373
|
+
this.debugLog(`Air Conditioner: ${this.accessory.displayName} Unknown statusCode.`);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
apiError() {
|
|
377
|
+
throw new this.platform.api.hap.HapStatusError(-70402 /* SERVICE_COMMUNICATION_FAILURE */);
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Logging for Device
|
|
381
|
+
*/
|
|
382
|
+
infoLog(...log) {
|
|
383
|
+
if (this.enablingDeviceLogging()) {
|
|
384
|
+
this.platform.log.info(String(...log));
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
warnLog(...log) {
|
|
388
|
+
if (this.enablingDeviceLogging()) {
|
|
389
|
+
this.platform.log.warn(String(...log));
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
errorLog(...log) {
|
|
393
|
+
if (this.enablingDeviceLogging()) {
|
|
394
|
+
this.platform.log.error(String(...log));
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
debugLog(...log) {
|
|
398
|
+
if (this.enablingDeviceLogging()) {
|
|
399
|
+
if (this.deviceLogging === 'debug') {
|
|
400
|
+
this.platform.log.info('[DEBUG]', String(...log));
|
|
401
|
+
}
|
|
402
|
+
else {
|
|
403
|
+
this.platform.log.debug(String(...log));
|
|
404
|
+
}
|
|
349
405
|
}
|
|
350
406
|
}
|
|
351
|
-
|
|
352
|
-
this.
|
|
353
|
-
this.service.updateCharacteristic(this.platform.Characteristic.RotationSpeed, e);
|
|
354
|
-
this.service.updateCharacteristic(this.platform.Characteristic.CurrentTemperature, e);
|
|
355
|
-
this.service.updateCharacteristic(this.platform.Characteristic.TargetHeaterCoolerState, e);
|
|
356
|
-
this.service.updateCharacteristic(this.platform.Characteristic.CurrentHeaterCoolerState, e);
|
|
357
|
-
this.service.updateCharacteristic(this.platform.Characteristic.HeatingThresholdTemperature, e);
|
|
407
|
+
enablingDeviceLogging() {
|
|
408
|
+
return this.deviceLogging === 'debug' || this.deviceLogging === 'standard';
|
|
358
409
|
}
|
|
359
410
|
}
|
|
360
411
|
exports.AirConditioner = AirConditioner;
|