@switchbot/homebridge-switchbot 1.15.1-beta.10 → 1.15.1-beta.12
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/dist/device/bot.js +1 -1
- package/dist/device/bot.js.map +1 -1
- package/dist/device/colorbulb.d.ts +1 -1
- package/dist/device/colorbulb.d.ts.map +1 -1
- package/dist/device/colorbulb.js +78 -68
- package/dist/device/colorbulb.js.map +1 -1
- package/dist/device/contact.js +1 -1
- package/dist/device/contact.js.map +1 -1
- package/dist/device/curtain.js +1 -1
- package/dist/device/curtain.js.map +1 -1
- package/dist/device/humidifier.js +1 -1
- package/dist/device/humidifier.js.map +1 -1
- package/dist/device/meter.js +1 -1
- package/dist/device/meter.js.map +1 -1
- package/dist/device/meterplus.js +1 -1
- package/dist/device/meterplus.js.map +1 -1
- package/dist/device/motion.js +1 -1
- package/dist/device/motion.js.map +1 -1
- package/dist/device/plug.js +1 -1
- package/dist/device/plug.js.map +1 -1
- package/dist/irdevice/airconditioner.d.ts +1 -1
- package/dist/irdevice/airconditioner.d.ts.map +1 -1
- package/dist/irdevice/airconditioner.js +35 -32
- package/dist/irdevice/airconditioner.js.map +1 -1
- package/dist/irdevice/airpurifier.d.ts +1 -1
- package/dist/irdevice/airpurifier.d.ts.map +1 -1
- package/dist/irdevice/airpurifier.js +30 -28
- package/dist/irdevice/airpurifier.js.map +1 -1
- package/dist/irdevice/camera.d.ts +1 -1
- package/dist/irdevice/camera.d.ts.map +1 -1
- package/dist/irdevice/camera.js +28 -26
- package/dist/irdevice/camera.js.map +1 -1
- package/dist/irdevice/fan.d.ts +1 -1
- package/dist/irdevice/fan.d.ts.map +1 -1
- package/dist/irdevice/fan.js +47 -45
- package/dist/irdevice/fan.js.map +1 -1
- package/dist/irdevice/light.d.ts +1 -1
- package/dist/irdevice/light.d.ts.map +1 -1
- package/dist/irdevice/light.js +40 -38
- package/dist/irdevice/light.js.map +1 -1
- package/dist/irdevice/other.d.ts +1 -1
- package/dist/irdevice/other.d.ts.map +1 -1
- package/dist/irdevice/other.js +28 -26
- package/dist/irdevice/other.js.map +1 -1
- package/dist/irdevice/tv.d.ts +1 -1
- package/dist/irdevice/tv.d.ts.map +1 -1
- package/dist/irdevice/tv.js +82 -80
- package/dist/irdevice/tv.js.map +1 -1
- package/dist/irdevice/vacuumcleaner.d.ts +1 -1
- package/dist/irdevice/vacuumcleaner.d.ts.map +1 -1
- package/dist/irdevice/vacuumcleaner.js +24 -22
- package/dist/irdevice/vacuumcleaner.js.map +1 -1
- package/dist/irdevice/waterheater.d.ts +1 -1
- package/dist/irdevice/waterheater.d.ts.map +1 -1
- package/dist/irdevice/waterheater.js +28 -26
- package/dist/irdevice/waterheater.js.map +1 -1
- package/package.json +1 -1
- package/src/device/bot.ts +1 -1
- package/src/device/colorbulb.ts +81 -71
- package/src/device/contact.ts +1 -1
- package/src/device/curtain.ts +1 -1
- package/src/device/humidifier.ts +1 -1
- package/src/device/meter.ts +1 -1
- package/src/device/meterplus.ts +1 -1
- package/src/device/motion.ts +1 -1
- package/src/device/plug.ts +1 -1
- package/src/irdevice/airconditioner.ts +35 -40
- package/src/irdevice/airpurifier.ts +30 -37
- package/src/irdevice/camera.ts +28 -33
- package/src/irdevice/fan.ts +47 -52
- package/src/irdevice/light.ts +40 -45
- package/src/irdevice/other.ts +28 -33
- package/src/irdevice/tv.ts +82 -87
- package/src/irdevice/vacuumcleaner.ts +24 -29
- package/src/irdevice/waterheater.ts +28 -33
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"waterheater.d.ts","sourceRoot":"","sources":["../../src/irdevice/waterheater.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,QAAQ,EAA0B,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE7E;;;;GAIG;AACH,qBAAa,WAAW;IAWV,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAAqB,OAAO,CAAC,SAAS;IAA4B,MAAM,EAAE,QAAQ,GAAG,eAAe;IATzI,YAAY,EAAG,OAAO,CAAC;IAGvB,MAAM,EAAG,mBAAmB,CAAC;IAC7B,YAAY,EAAG,mBAAmB,CAAC;IAGnC,aAAa,EAAG,MAAM,CAAC;gBAEM,QAAQ,EAAE,iBAAiB,EAAU,SAAS,EAAE,iBAAiB,EAAS,MAAM,EAAE,QAAQ,GAAG,eAAe;IAqCnI,SAAS,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAcpD,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC;IASnD;;;;;;;;;OASG;IACG,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAWzC,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC;IAW1C,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"waterheater.d.ts","sourceRoot":"","sources":["../../src/irdevice/waterheater.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,QAAQ,EAA0B,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE7E;;;;GAIG;AACH,qBAAa,WAAW;IAWV,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAAqB,OAAO,CAAC,SAAS;IAA4B,MAAM,EAAE,QAAQ,GAAG,eAAe;IATzI,YAAY,EAAG,OAAO,CAAC;IAGvB,MAAM,EAAG,mBAAmB,CAAC;IAC7B,YAAY,EAAG,mBAAmB,CAAC;IAGnC,aAAa,EAAG,MAAM,CAAC;gBAEM,QAAQ,EAAE,iBAAiB,EAAU,SAAS,EAAE,iBAAiB,EAAS,MAAM,EAAE,QAAQ,GAAG,eAAe;IAqCnI,SAAS,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAcpD,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC;IASnD;;;;;;;;;OASG;IACG,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAWzC,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC;IAW1C,WAAW,CAAC,IAAI,KAAA,GAAG,OAAO,CAAC,IAAI,CAAC;IAmDhC,UAAU,CAAC,EAAE,GAAG,EAAE,EAAE;QAAE,GAAG,EAAE,eAAe,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B5D,QAAQ,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/B,MAAM,CAAC,MAAM,EAAE,QAAQ,GAAG,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAazD,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB7D;;OAEG;IACH,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAM5B,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAM5B,QAAQ,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAM7B,QAAQ,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAU7B,qBAAqB,IAAI,OAAO;CAGjC"}
|
|
@@ -82,59 +82,61 @@ class WaterHeater {
|
|
|
82
82
|
*/
|
|
83
83
|
async pushWaterHeaterOnChanges() {
|
|
84
84
|
if (this.Active !== 1) {
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
parameter: 'default',
|
|
88
|
-
|
|
89
|
-
};
|
|
90
|
-
await this.pushChanges(
|
|
85
|
+
const body = JSON.stringify({
|
|
86
|
+
'command': 'turnOn',
|
|
87
|
+
'parameter': 'default',
|
|
88
|
+
'commandType': 'command',
|
|
89
|
+
});
|
|
90
|
+
await this.pushChanges(body);
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
async pushWaterHeaterOffChanges() {
|
|
94
94
|
if (this.Active !== 0) {
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
parameter: 'default',
|
|
98
|
-
|
|
99
|
-
};
|
|
100
|
-
await this.pushChanges(
|
|
95
|
+
const body = JSON.stringify({
|
|
96
|
+
'command': 'turnOff',
|
|
97
|
+
'parameter': 'default',
|
|
98
|
+
'commandType': 'command',
|
|
99
|
+
});
|
|
100
|
+
await this.pushChanges(body);
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
|
-
async pushChanges(
|
|
103
|
+
async pushChanges(body) {
|
|
104
104
|
try {
|
|
105
|
-
|
|
106
|
-
` parameter: ${payload.parameter}, commandType: ${payload.commandType}`);
|
|
107
|
-
// Make the API request
|
|
105
|
+
// Make Push On request to the API
|
|
108
106
|
const t = Date.now();
|
|
109
107
|
const nonce = 'requestID';
|
|
110
108
|
const data = this.platform.config.credentials?.token + t + nonce;
|
|
111
|
-
const signTerm = crypto_1.default.createHmac('sha256', this.platform.config.credentials?.secret)
|
|
109
|
+
const signTerm = crypto_1.default.createHmac('sha256', this.platform.config.credentials?.secret)
|
|
110
|
+
.update(Buffer.from(data, 'utf-8'))
|
|
111
|
+
.digest();
|
|
112
112
|
const sign = signTerm.toString('base64');
|
|
113
113
|
this.debugLog(`Water Heater: ${this.accessory.displayName} sign: ${sign}`);
|
|
114
|
+
this.infoLog(`Water Heater: ${this.accessory.displayName} Sending request to SwitchBot API. body: ${body},`);
|
|
114
115
|
const options = {
|
|
115
116
|
hostname: settings_1.HostDomain,
|
|
116
117
|
port: 443,
|
|
117
118
|
path: `${settings_1.DevicePath}/${this.device.deviceId}/commands`,
|
|
118
119
|
method: 'POST',
|
|
119
120
|
headers: {
|
|
120
|
-
Authorization: this.platform.config.credentials?.token,
|
|
121
|
-
sign: sign,
|
|
122
|
-
nonce: nonce,
|
|
123
|
-
t: t,
|
|
121
|
+
'Authorization': this.platform.config.credentials?.token,
|
|
122
|
+
'sign': sign,
|
|
123
|
+
'nonce': nonce,
|
|
124
|
+
't': t,
|
|
124
125
|
'Content-Type': 'application/json',
|
|
126
|
+
'Content-Length': body.length,
|
|
125
127
|
},
|
|
126
128
|
};
|
|
127
|
-
const req = https_1.default.request(options,
|
|
129
|
+
const req = https_1.default.request(options, res => {
|
|
128
130
|
this.debugLog(`Water Heater: ${this.accessory.displayName} statusCode: ${res.statusCode}`);
|
|
129
131
|
this.statusCode({ res });
|
|
130
|
-
res.on('data',
|
|
132
|
+
res.on('data', d => {
|
|
131
133
|
this.debugLog(`Water Heater: ${this.accessory.displayName} d: ${d}`);
|
|
132
134
|
});
|
|
133
135
|
});
|
|
134
|
-
req.on('error', (
|
|
135
|
-
this.errorLog(`Water Heater: ${this.accessory.displayName} error: ${
|
|
136
|
+
req.on('error', (e) => {
|
|
137
|
+
this.errorLog(`Water Heater: ${this.accessory.displayName} error message: ${e.message}`);
|
|
136
138
|
});
|
|
137
|
-
req.write(
|
|
139
|
+
req.write(body);
|
|
138
140
|
req.end();
|
|
139
141
|
this.debugLog(`Water Heater: ${this.accessory.displayName} pushchanges: ${JSON.stringify(req)}`);
|
|
140
142
|
this.updateHomeKitCharacteristics();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"waterheater.js","sourceRoot":"","sources":["../../src/irdevice/waterheater.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"waterheater.js","sourceRoot":"","sources":["../../src/irdevice/waterheater.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"displayName": "Homebridge SwitchBot",
|
|
3
3
|
"name": "@switchbot/homebridge-switchbot",
|
|
4
|
-
"version": "1.15.1-beta.
|
|
4
|
+
"version": "1.15.1-beta.12",
|
|
5
5
|
"description": "The [Homebridge](https://homebridge.io) SwitchBot plugin allows you to access your [SwitchBot](https://www.switch-bot.com) device(s) from HomeKit.",
|
|
6
6
|
"author": "SwitchBot <support@wondertechlabs.com> (https://github.com/SwitchBot)",
|
|
7
7
|
"license": "ISC",
|
package/src/device/bot.ts
CHANGED
|
@@ -544,7 +544,7 @@ export class Bot {
|
|
|
544
544
|
});
|
|
545
545
|
// Set an event handler
|
|
546
546
|
switchbot.onadvertisement = (ad: any) => {
|
|
547
|
-
this.warnLog(JSON.stringify(ad, null, ' '));
|
|
547
|
+
this.warnLog(`Bot: ${this.accessory.displayName} ad: ${JSON.stringify(ad, null, ' ')}`);
|
|
548
548
|
};
|
|
549
549
|
await switchbot.wait(10000);
|
|
550
550
|
// Stop to monitor
|
package/src/device/colorbulb.ts
CHANGED
|
@@ -34,7 +34,7 @@ export class ColorBulb {
|
|
|
34
34
|
color: deviceStatus['color'];
|
|
35
35
|
brightness: deviceStatus['brightness'];
|
|
36
36
|
colorTemperature?: deviceStatus['colorTemperature'];
|
|
37
|
-
deviceStatus!: any;
|
|
37
|
+
deviceStatus!: any;
|
|
38
38
|
|
|
39
39
|
// BLE Others
|
|
40
40
|
connected?: boolean;
|
|
@@ -68,6 +68,7 @@ export class ColorBulb {
|
|
|
68
68
|
constructor(private readonly platform: SwitchBotPlatform, private accessory: PlatformAccessory, public device: device & devicesConfig) {
|
|
69
69
|
// default placeholders
|
|
70
70
|
this.logs(device);
|
|
71
|
+
this.scan(device);
|
|
71
72
|
this.refreshRate(device);
|
|
72
73
|
this.adaptiveLighting(device);
|
|
73
74
|
this.config(device);
|
|
@@ -308,75 +309,79 @@ export class ColorBulb {
|
|
|
308
309
|
this.debugLog(`Color Bulb: ${this.accessory.displayName} BLE Address: ${this.device.bleMac}`);
|
|
309
310
|
this.getCustomBLEAddress(switchbot);
|
|
310
311
|
// Start to monitor advertisement packets
|
|
311
|
-
if (switchbot
|
|
312
|
-
switchbot
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
.
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
}
|
|
327
|
-
this.
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
312
|
+
if (switchbot === false) {
|
|
313
|
+
this.errorLog(`Color Bulb: ${this.accessory.displayName} wasn't able to establish BLE Connection: ${switchbot}`);
|
|
314
|
+
}
|
|
315
|
+
switchbot
|
|
316
|
+
.startScan({
|
|
317
|
+
model: 'u',
|
|
318
|
+
id: this.device.bleMac,
|
|
319
|
+
})
|
|
320
|
+
.then(() => {
|
|
321
|
+
// Set an event hander
|
|
322
|
+
switchbot.onadvertisement = (ad: any) => {
|
|
323
|
+
//this.address = ad.address;
|
|
324
|
+
if (this.deviceLogging.includes('debug')) {
|
|
325
|
+
this.infoLog(this.address);
|
|
326
|
+
this.infoLog(this.device.bleMac);
|
|
327
|
+
this.infoLog(`Color Bulb: ${this.accessory.displayName} BLE Address Found: ${this.address}`);
|
|
328
|
+
this.infoLog(`Color Bulb: ${this.accessory.displayName} Config BLE Address: ${this.device.bleMac}`);
|
|
329
|
+
}
|
|
330
|
+
this.serviceData = ad.serviceData;
|
|
331
|
+
this.state = ad.serviceData.state;
|
|
332
|
+
this.delay = ad.serviceData.delay;
|
|
333
|
+
//this.timer = ad.serviceData.timer;
|
|
334
|
+
//this.syncUtcTime = ad.serviceData.syncUtcTime;
|
|
335
|
+
this.wifiRssi = ad.serviceData.wifiRssi;
|
|
336
|
+
//this.overload = ad.serviceData.overload;
|
|
337
|
+
//this.currentPower = ad.serviceData.currentPower;
|
|
338
|
+
this.debugLog(`Color Bulb: ${this.accessory.displayName} serviceData: ${JSON.stringify(ad.serviceData)}`);
|
|
339
|
+
this.debugLog(
|
|
340
|
+
`Color Bulb: ${this.accessory.displayName} state: ${ad.serviceData.state}, ` +
|
|
338
341
|
`delay: ${ad.serviceData.delay}, timer: ${ad.serviceData.timer}, syncUtcTime: ${ad.serviceData.syncUtcTime} ` +
|
|
339
342
|
`wifiRssi: ${ad.serviceData.wifiRssi}, overload: ${ad.serviceData.overload}, currentPower: ${ad.serviceData.currentPower}`,
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
} else {
|
|
346
|
-
this.connected = false;
|
|
347
|
-
this.debugLog(`Color Bulb: ${this.accessory.displayName} connected: ${this.connected}`);
|
|
348
|
-
}
|
|
349
|
-
};
|
|
350
|
-
// Wait 2 seconds
|
|
351
|
-
return switchbot.wait(this.scanDuration * 1000);
|
|
352
|
-
})
|
|
353
|
-
.then(async () => {
|
|
354
|
-
// Stop to monitor
|
|
355
|
-
switchbot.stopScan();
|
|
356
|
-
if (this.connected) {
|
|
357
|
-
this.parseStatus();
|
|
358
|
-
this.updateHomeKitCharacteristics();
|
|
343
|
+
);
|
|
344
|
+
|
|
345
|
+
if (this.serviceData) {
|
|
346
|
+
this.connected = true;
|
|
347
|
+
this.debugLog(`Color Bulb: ${this.accessory.displayName} connected: ${this.connected}`);
|
|
359
348
|
} else {
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
})
|
|
363
|
-
.catch(async (e: any) => {
|
|
364
|
-
this.errorLog(`Color Bulb: ${this.accessory.displayName} failed refreshStatus with BLE Connection`);
|
|
365
|
-
if (this.deviceLogging.includes('debug')) {
|
|
366
|
-
this.errorLog(
|
|
367
|
-
`Color Bulb: ${this.accessory.displayName} failed refreshStatus with BLE Connection,` + ` Error Message: ${JSON.stringify(e.message)}`,
|
|
368
|
-
);
|
|
349
|
+
this.connected = false;
|
|
350
|
+
this.debugLog(`Color Bulb: ${this.accessory.displayName} connected: ${this.connected}`);
|
|
369
351
|
}
|
|
352
|
+
};
|
|
353
|
+
// Wait 2 seconds
|
|
354
|
+
return switchbot.wait(this.scanDuration * 1000);
|
|
355
|
+
})
|
|
356
|
+
.then(async () => {
|
|
357
|
+
// Stop to monitor
|
|
358
|
+
switchbot.stopScan();
|
|
359
|
+
if (this.connected) {
|
|
360
|
+
this.parseStatus();
|
|
361
|
+
this.updateHomeKitCharacteristics();
|
|
362
|
+
} else {
|
|
363
|
+
this.errorLog(`Color Bulb: ${this.accessory.displayName} wasn't able to establish BLE Connection`);
|
|
370
364
|
if (this.platform.config.credentials?.token) {
|
|
371
365
|
this.warnLog(`Color Bulb: ${this.accessory.displayName} Using OpenAPI Connection`);
|
|
372
366
|
this.SwitchToOpenAPI = true;
|
|
373
367
|
await this.openAPIRefreshStatus();
|
|
374
368
|
}
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
369
|
+
}
|
|
370
|
+
})
|
|
371
|
+
.catch(async (e: any) => {
|
|
372
|
+
this.errorLog(`Color Bulb: ${this.accessory.displayName} failed refreshStatus with BLE Connection`);
|
|
373
|
+
if (this.deviceLogging.includes('debug')) {
|
|
374
|
+
this.errorLog(
|
|
375
|
+
`Color Bulb: ${this.accessory.displayName} failed refreshStatus with BLE Connection,` + ` Error Message: ${JSON.stringify(e.message)}`,
|
|
376
|
+
);
|
|
377
|
+
}
|
|
378
|
+
if (this.platform.config.credentials?.token) {
|
|
379
|
+
this.warnLog(`Color Bulb: ${this.accessory.displayName} Using OpenAPI Connection`);
|
|
380
|
+
this.SwitchToOpenAPI = true;
|
|
381
|
+
await this.openAPIRefreshStatus();
|
|
382
|
+
}
|
|
383
|
+
this.apiError(e);
|
|
384
|
+
});
|
|
380
385
|
}
|
|
381
386
|
|
|
382
387
|
async getCustomBLEAddress(switchbot: any) {
|
|
@@ -388,7 +393,7 @@ export class ColorBulb {
|
|
|
388
393
|
});
|
|
389
394
|
// Set an event handler
|
|
390
395
|
switchbot.onadvertisement = (ad: any) => {
|
|
391
|
-
this.warnLog(JSON.stringify(ad, null, ' '));
|
|
396
|
+
this.warnLog(`Color Bulb: ${this.accessory.displayName} ad: ${JSON.stringify(ad, null, ' ')}`);
|
|
392
397
|
};
|
|
393
398
|
await switchbot.wait(10000);
|
|
394
399
|
// Stop to monitor
|
|
@@ -397,15 +402,6 @@ export class ColorBulb {
|
|
|
397
402
|
}
|
|
398
403
|
}
|
|
399
404
|
|
|
400
|
-
async BLEconnection(switchbot: any): Promise<void> {
|
|
401
|
-
this.errorLog(`Color Bulb: ${this.accessory.displayName} wasn't able to establish BLE Connection, node-switchbot: ${switchbot}`);
|
|
402
|
-
if (this.platform.config.credentials?.token) {
|
|
403
|
-
this.warnLog(`Color Bulb: ${this.accessory.displayName} Using OpenAPI Connection`);
|
|
404
|
-
this.SwitchToOpenAPI = true;
|
|
405
|
-
await this.openAPIRefreshStatus();
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
|
|
409
405
|
private async openAPIRefreshStatus() {
|
|
410
406
|
try {
|
|
411
407
|
const t = Date.now();
|
|
@@ -941,6 +937,20 @@ export class ColorBulb {
|
|
|
941
937
|
}
|
|
942
938
|
}
|
|
943
939
|
|
|
940
|
+
async scan(device: device & devicesConfig): Promise<void> {
|
|
941
|
+
if (device.scanDuration) {
|
|
942
|
+
this.scanDuration = this.accessory.context.scanDuration = device.scanDuration;
|
|
943
|
+
if (device.ble) {
|
|
944
|
+
this.debugLog(`Bot: ${this.accessory.displayName} Using Device Config scanDuration: ${this.scanDuration}`);
|
|
945
|
+
}
|
|
946
|
+
} else {
|
|
947
|
+
this.scanDuration = this.accessory.context.scanDuration = 1;
|
|
948
|
+
if (this.device.ble) {
|
|
949
|
+
this.debugLog(`Bot: ${this.accessory.displayName} Using Default scanDuration: ${this.scanDuration}`);
|
|
950
|
+
}
|
|
951
|
+
}
|
|
952
|
+
}
|
|
953
|
+
|
|
944
954
|
async logs(device: device & devicesConfig): Promise<void> {
|
|
945
955
|
if (this.platform.debugMode) {
|
|
946
956
|
this.deviceLogging = this.accessory.context.logging = 'debugMode';
|
package/src/device/contact.ts
CHANGED
|
@@ -354,7 +354,7 @@ export class Contact {
|
|
|
354
354
|
});
|
|
355
355
|
// Set an event handler
|
|
356
356
|
switchbot.onadvertisement = (ad: any) => {
|
|
357
|
-
this.warnLog(JSON.stringify(ad, null, ' '));
|
|
357
|
+
this.warnLog(`Contact Sensor: ${this.accessory.displayName} ad: ${JSON.stringify(ad, null, ' ')}`);
|
|
358
358
|
};
|
|
359
359
|
await switchbot.wait(10000);
|
|
360
360
|
// Stop to monitor
|
package/src/device/curtain.ts
CHANGED
|
@@ -512,7 +512,7 @@ export class Curtain {
|
|
|
512
512
|
});
|
|
513
513
|
// Set an event handler
|
|
514
514
|
switchbot.onadvertisement = (ad: any) => {
|
|
515
|
-
this.warnLog(JSON.stringify(ad, null, ' '));
|
|
515
|
+
this.warnLog(`Curtain: ${this.accessory.displayName} ad: ${JSON.stringify(ad, null, ' ')}`);
|
|
516
516
|
};
|
|
517
517
|
await switchbot.wait(10000);
|
|
518
518
|
// Stop to monitor
|
package/src/device/humidifier.ts
CHANGED
|
@@ -369,7 +369,7 @@ export class Humidifier {
|
|
|
369
369
|
});
|
|
370
370
|
// Set an event handler
|
|
371
371
|
switchbot.onadvertisement = (ad: any) => {
|
|
372
|
-
this.warnLog(JSON.stringify(ad, null, ' '));
|
|
372
|
+
this.warnLog(`Humidifier: ${this.accessory.displayName} ad: ${JSON.stringify(ad, null, ' ')}`);
|
|
373
373
|
};
|
|
374
374
|
await switchbot.wait(10000);
|
|
375
375
|
// Stop to monitor
|
package/src/device/meter.ts
CHANGED
|
@@ -387,7 +387,7 @@ export class Meter {
|
|
|
387
387
|
});
|
|
388
388
|
// Set an event handler
|
|
389
389
|
switchbot.onadvertisement = (ad: any) => {
|
|
390
|
-
this.warnLog(JSON.stringify(ad, null, ' '));
|
|
390
|
+
this.warnLog(`Meter: ${this.accessory.displayName} ad: ${JSON.stringify(ad, null, ' ')}`);
|
|
391
391
|
};
|
|
392
392
|
await switchbot.wait(10000);
|
|
393
393
|
// Stop to monitor
|
package/src/device/meterplus.ts
CHANGED
|
@@ -324,7 +324,7 @@ export class MeterPlus {
|
|
|
324
324
|
});
|
|
325
325
|
// Set an event handler
|
|
326
326
|
switchbot.onadvertisement = (ad: any) => {
|
|
327
|
-
this.warnLog(JSON.stringify(ad, null, ' '));
|
|
327
|
+
this.warnLog(`Meter Plus: ${this.accessory.displayName} ad: ${JSON.stringify(ad, null, ' ')}`);
|
|
328
328
|
};
|
|
329
329
|
await switchbot.wait(10000);
|
|
330
330
|
// Stop to monitor
|
package/src/device/motion.ts
CHANGED
|
@@ -306,7 +306,7 @@ export class Motion {
|
|
|
306
306
|
});
|
|
307
307
|
// Set an event handler
|
|
308
308
|
switchbot.onadvertisement = (ad: any) => {
|
|
309
|
-
this.warnLog(JSON.stringify(ad, null, ' '));
|
|
309
|
+
this.warnLog(`Motion Sensor: ${this.accessory.displayName} ad: ${JSON.stringify(ad, null, ' ')}`);
|
|
310
310
|
};
|
|
311
311
|
await switchbot.wait(10000);
|
|
312
312
|
// Stop to monitor
|
package/src/device/plug.ts
CHANGED
|
@@ -263,7 +263,7 @@ export class Plug {
|
|
|
263
263
|
});
|
|
264
264
|
// Set an event handler
|
|
265
265
|
switchbot.onadvertisement = (ad: any) => {
|
|
266
|
-
this.warnLog(JSON.stringify(ad, null, ' '));
|
|
266
|
+
this.warnLog(`Plug: ${this.accessory.displayName} ad: ${JSON.stringify(ad, null, ' ')}`);
|
|
267
267
|
};
|
|
268
268
|
await switchbot.wait(10000);
|
|
269
269
|
// Stop to monitor
|
|
@@ -183,22 +183,22 @@ export class AirConditioner {
|
|
|
183
183
|
*/
|
|
184
184
|
async pushAirConditionerOnChanges(): Promise<void> {
|
|
185
185
|
if (this.Active !== this.platform.Characteristic.Active.ACTIVE || this.pushOn) {
|
|
186
|
-
const
|
|
187
|
-
|
|
188
|
-
parameter: 'default',
|
|
189
|
-
|
|
190
|
-
}
|
|
191
|
-
await this.pushChanges(
|
|
186
|
+
const body = JSON.stringify({
|
|
187
|
+
'command': 'turnOn',
|
|
188
|
+
'parameter': 'default',
|
|
189
|
+
'commandType': 'command',
|
|
190
|
+
});
|
|
191
|
+
await this.pushChanges(body);
|
|
192
192
|
}
|
|
193
193
|
}
|
|
194
194
|
|
|
195
195
|
async pushAirConditionerOffChanges(): Promise<void> {
|
|
196
|
-
const
|
|
197
|
-
|
|
198
|
-
parameter: 'default',
|
|
199
|
-
|
|
200
|
-
}
|
|
201
|
-
await this.pushChanges(
|
|
196
|
+
const body = JSON.stringify({
|
|
197
|
+
'command': 'turnOff',
|
|
198
|
+
'parameter': 'default',
|
|
199
|
+
'commandType': 'command',
|
|
200
|
+
});
|
|
201
|
+
await this.pushChanges(body);
|
|
202
202
|
}
|
|
203
203
|
|
|
204
204
|
async pushAirConditionerStatusChanges(): Promise<void> {
|
|
@@ -213,11 +213,6 @@ export class AirConditioner {
|
|
|
213
213
|
}
|
|
214
214
|
|
|
215
215
|
async pushAirConditionerDetailsChanges(): Promise<void> {
|
|
216
|
-
const payload = {
|
|
217
|
-
commandType: 'command',
|
|
218
|
-
command: 'setAll',
|
|
219
|
-
} as any;
|
|
220
|
-
|
|
221
216
|
this.CurrentTemperatureUndefined();
|
|
222
217
|
if (this.CurrentMode === undefined) {
|
|
223
218
|
this.CurrentMode = 1;
|
|
@@ -236,7 +231,7 @@ export class AirConditioner {
|
|
|
236
231
|
`Air Conditioner: ${this.accessory.displayName} CurrentMode: ${this.CurrentMode},` + ` CurrentTemperature: ${this.CurrentTemperature}`,
|
|
237
232
|
);
|
|
238
233
|
}
|
|
239
|
-
|
|
234
|
+
const parameter = `${this.CurrentTemperature},${this.CurrentMode},${this.CurrentFanSpeed},${this.state}`;
|
|
240
235
|
|
|
241
236
|
if (this.Active === this.platform.Characteristic.Active.ACTIVE) {
|
|
242
237
|
this.CurrentTemperatureUndefined();
|
|
@@ -248,53 +243,53 @@ export class AirConditioner {
|
|
|
248
243
|
} else {
|
|
249
244
|
this.CurrentHeaterCoolerState = this.platform.Characteristic.CurrentHeaterCoolerState.INACTIVE;
|
|
250
245
|
}
|
|
246
|
+
const body = JSON.stringify({
|
|
247
|
+
'command': 'setAll',
|
|
248
|
+
'parameter': `${parameter}`,
|
|
249
|
+
'commandType': 'command',
|
|
250
|
+
});
|
|
251
251
|
|
|
252
|
-
await this.pushChanges(
|
|
252
|
+
await this.pushChanges(body);
|
|
253
253
|
}
|
|
254
254
|
|
|
255
|
-
async pushChanges(
|
|
255
|
+
async pushChanges(body): Promise<void> {
|
|
256
256
|
try {
|
|
257
|
-
|
|
258
|
-
`Air Conditioner: ${this.accessory.displayName} Sending request to SwitchBot API. command: ${payload.command},` +
|
|
259
|
-
` parameter: [${payload.parameter}], commandType: ${payload.commandType}`,
|
|
260
|
-
);
|
|
261
|
-
|
|
262
|
-
// Make the API request
|
|
257
|
+
// Make Push On request to the API
|
|
263
258
|
const t = Date.now();
|
|
264
259
|
const nonce = 'requestID';
|
|
265
260
|
const data = this.platform.config.credentials?.token + t + nonce;
|
|
266
|
-
const signTerm = crypto.createHmac('sha256', this.platform.config.credentials?.secret)
|
|
261
|
+
const signTerm = crypto.createHmac('sha256', this.platform.config.credentials?.secret)
|
|
262
|
+
.update(Buffer.from(data, 'utf-8'))
|
|
263
|
+
.digest();
|
|
267
264
|
const sign = signTerm.toString('base64');
|
|
268
265
|
this.debugLog(`Air Conditioner: ${this.accessory.displayName} sign: ${sign}`);
|
|
266
|
+
this.infoLog(`Air Conditioner: ${this.accessory.displayName} Sending request to SwitchBot API. body: ${body},`);
|
|
269
267
|
const options = {
|
|
270
268
|
hostname: HostDomain,
|
|
271
269
|
port: 443,
|
|
272
270
|
path: `${DevicePath}/${this.device.deviceId}/commands`,
|
|
273
271
|
method: 'POST',
|
|
274
272
|
headers: {
|
|
275
|
-
Authorization: this.platform.config.credentials?.token,
|
|
276
|
-
sign: sign,
|
|
277
|
-
nonce: nonce,
|
|
278
|
-
t: t,
|
|
273
|
+
'Authorization': this.platform.config.credentials?.token,
|
|
274
|
+
'sign': sign,
|
|
275
|
+
'nonce': nonce,
|
|
276
|
+
't': t,
|
|
279
277
|
'Content-Type': 'application/json',
|
|
278
|
+
'Content-Length': body.length,
|
|
280
279
|
},
|
|
281
280
|
};
|
|
282
|
-
|
|
283
|
-
const req = https.request(options, (res) => {
|
|
281
|
+
const req = https.request(options, res => {
|
|
284
282
|
this.debugLog(`Air Conditioner: ${this.accessory.displayName} statusCode: ${res.statusCode}`);
|
|
285
283
|
this.statusCode({ res });
|
|
286
|
-
res.on('data',
|
|
284
|
+
res.on('data', d => {
|
|
287
285
|
this.debugLog(`Air Conditioner: ${this.accessory.displayName} d: ${d}`);
|
|
288
286
|
});
|
|
289
287
|
});
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
this.errorLog(`Air Conditioner: ${this.accessory.displayName} error: ${error}`);
|
|
288
|
+
req.on('error', (e: any) => {
|
|
289
|
+
this.errorLog(`Air Conditioner: ${this.accessory.displayName} error message: ${e.message}`);
|
|
293
290
|
});
|
|
294
|
-
|
|
295
|
-
req.write(payload);
|
|
291
|
+
req.write(body);
|
|
296
292
|
req.end();
|
|
297
|
-
|
|
298
293
|
this.debugLog(`Air Conditioner: ${this.accessory.displayName} pushchanges: ${JSON.stringify(req)}`);
|
|
299
294
|
this.CurrentTemperatureCached = this.CurrentTemperature;
|
|
300
295
|
this.accessory.context.CurrentTemperature = this.CurrentTemperatureCached;
|