@switchbot/homebridge-switchbot 2.8.0-beta.2 → 2.8.0-beta.20
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 +4 -2
- package/README.md +1 -1
- package/dist/device/blindtilt.d.ts +1 -0
- package/dist/device/blindtilt.d.ts.map +1 -1
- package/dist/device/blindtilt.js +9 -6
- package/dist/device/blindtilt.js.map +1 -1
- package/dist/device/bot.d.ts +2 -0
- package/dist/device/bot.d.ts.map +1 -1
- package/dist/device/bot.js +66 -52
- package/dist/device/bot.js.map +1 -1
- package/dist/device/ceilinglight.d.ts +1 -0
- package/dist/device/ceilinglight.d.ts.map +1 -1
- package/dist/device/ceilinglight.js +12 -9
- package/dist/device/ceilinglight.js.map +1 -1
- package/dist/device/colorbulb.d.ts +1 -0
- package/dist/device/colorbulb.d.ts.map +1 -1
- package/dist/device/colorbulb.js +8 -5
- package/dist/device/colorbulb.js.map +1 -1
- package/dist/device/contact.d.ts +2 -0
- package/dist/device/contact.d.ts.map +1 -1
- package/dist/device/contact.js +45 -34
- package/dist/device/contact.js.map +1 -1
- package/dist/device/curtain.d.ts +2 -0
- package/dist/device/curtain.d.ts.map +1 -1
- package/dist/device/curtain.js +33 -36
- package/dist/device/curtain.js.map +1 -1
- package/dist/device/hub.d.ts +3 -1
- package/dist/device/hub.d.ts.map +1 -1
- package/dist/device/hub.js +30 -5
- package/dist/device/hub.js.map +1 -1
- package/dist/device/humidifier.d.ts.map +1 -1
- package/dist/device/humidifier.js +9 -6
- package/dist/device/humidifier.js.map +1 -1
- package/dist/device/iosensor.d.ts +1 -0
- package/dist/device/iosensor.d.ts.map +1 -1
- package/dist/device/iosensor.js +10 -6
- package/dist/device/iosensor.js.map +1 -1
- package/dist/device/lightstrip.d.ts +1 -0
- package/dist/device/lightstrip.d.ts.map +1 -1
- package/dist/device/lightstrip.js +9 -6
- package/dist/device/lightstrip.js.map +1 -1
- package/dist/device/lock.d.ts +2 -0
- package/dist/device/lock.d.ts.map +1 -1
- package/dist/device/lock.js +11 -6
- package/dist/device/lock.js.map +1 -1
- package/dist/device/meter.d.ts +2 -0
- package/dist/device/meter.d.ts.map +1 -1
- package/dist/device/meter.js +12 -8
- package/dist/device/meter.js.map +1 -1
- package/dist/device/meterplus.d.ts +4 -3
- package/dist/device/meterplus.d.ts.map +1 -1
- package/dist/device/meterplus.js +56 -54
- package/dist/device/meterplus.js.map +1 -1
- package/dist/device/motion.d.ts +2 -0
- package/dist/device/motion.d.ts.map +1 -1
- package/dist/device/motion.js +46 -31
- package/dist/device/motion.js.map +1 -1
- package/dist/device/plug.d.ts +1 -0
- package/dist/device/plug.d.ts.map +1 -1
- package/dist/device/plug.js +9 -6
- package/dist/device/plug.js.map +1 -1
- package/dist/device/robotvacuumcleaner.d.ts +2 -0
- package/dist/device/robotvacuumcleaner.d.ts.map +1 -1
- package/dist/device/robotvacuumcleaner.js +27 -2
- package/dist/device/robotvacuumcleaner.js.map +1 -1
- package/dist/irdevice/airconditioner.d.ts +2 -0
- package/dist/irdevice/airconditioner.d.ts.map +1 -1
- package/dist/irdevice/airconditioner.js +71 -88
- 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 +3 -3
- 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 +3 -3
- package/dist/irdevice/camera.js.map +1 -1
- package/dist/irdevice/fan.d.ts +2 -2
- package/dist/irdevice/fan.d.ts.map +1 -1
- package/dist/irdevice/fan.js +3 -3
- 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 +3 -3
- 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 +3 -3
- package/dist/irdevice/other.js.map +1 -1
- package/dist/irdevice/tv.d.ts +2 -2
- package/dist/irdevice/tv.d.ts.map +1 -1
- package/dist/irdevice/tv.js +3 -3
- 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 +3 -3
- 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 +3 -3
- package/dist/irdevice/waterheater.js.map +1 -1
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +67 -65
- package/dist/platform.js.map +1 -1
- package/package.json +11 -11
- package/src/device/blindtilt.ts +10 -8
- package/src/device/bot.ts +66 -50
- package/src/device/ceilinglight.ts +17 -11
- package/src/device/colorbulb.ts +15 -10
- package/src/device/contact.ts +45 -31
- package/src/device/curtain.ts +34 -35
- package/src/device/hub.ts +32 -6
- package/src/device/humidifier.ts +12 -9
- package/src/device/iosensor.ts +11 -7
- package/src/device/lightstrip.ts +14 -9
- package/src/device/lock.ts +14 -7
- package/src/device/meter.ts +13 -8
- package/src/device/meterplus.ts +62 -55
- package/src/device/motion.ts +46 -28
- package/src/device/plug.ts +10 -7
- package/src/device/robotvacuumcleaner.ts +34 -5
- package/src/irdevice/airconditioner.ts +84 -96
- package/src/irdevice/airpurifier.ts +6 -6
- package/src/irdevice/camera.ts +6 -6
- package/src/irdevice/fan.ts +6 -6
- package/src/irdevice/light.ts +6 -6
- package/src/irdevice/other.ts +6 -6
- package/src/irdevice/tv.ts +6 -6
- package/src/irdevice/vacuumcleaner.ts +6 -6
- package/src/irdevice/waterheater.ts +6 -6
- package/src/platform.ts +76 -75
- package/src/settings.ts +1 -1
package/src/device/curtain.ts
CHANGED
|
@@ -26,6 +26,8 @@ export class Curtain {
|
|
|
26
26
|
lastActivation?: number;
|
|
27
27
|
|
|
28
28
|
// OpenAPI Others
|
|
29
|
+
Version: deviceStatus['version'];
|
|
30
|
+
Battery: deviceStatus['battery'];
|
|
29
31
|
deviceStatus!: any; //deviceStatusResponse;
|
|
30
32
|
slidePosition: deviceStatus['slidePosition'];
|
|
31
33
|
moving: deviceStatus['moving'];
|
|
@@ -83,9 +85,9 @@ export class Curtain {
|
|
|
83
85
|
this.logs(device);
|
|
84
86
|
this.refreshRate(device);
|
|
85
87
|
this.scan(device);
|
|
86
|
-
this.config(device);
|
|
87
88
|
this.setupMqtt(device);
|
|
88
89
|
this.context();
|
|
90
|
+
this.config(device);
|
|
89
91
|
|
|
90
92
|
// this is subject we use to track when we need to POST changes to the SwitchBot API
|
|
91
93
|
this.doCurtainUpdate = new Subject();
|
|
@@ -170,11 +172,7 @@ export class Curtain {
|
|
|
170
172
|
}
|
|
171
173
|
|
|
172
174
|
// Battery Service
|
|
173
|
-
if (!this.
|
|
174
|
-
this.debugLog(`${this.device.deviceType}: ${accessory.displayName} Removing Battery Service`);
|
|
175
|
-
this.batteryService = this.accessory.getService(this.platform.Service.Battery);
|
|
176
|
-
accessory.removeService(this.batteryService!);
|
|
177
|
-
} else if (this.BLE && !this.batteryService) {
|
|
175
|
+
if (!this.batteryService) {
|
|
178
176
|
this.debugLog(`${this.device.deviceType}: ${accessory.displayName} Add Battery Service`);
|
|
179
177
|
(this.batteryService = this.accessory.getService(this.platform.Service.Battery) || this.accessory.addService(this.platform.Service.Battery)),
|
|
180
178
|
`${accessory.displayName} Battery`;
|
|
@@ -183,6 +181,7 @@ export class Curtain {
|
|
|
183
181
|
if (!this.batteryService.testCharacteristic(this.platform.Characteristic.ConfiguredName)) {
|
|
184
182
|
this.batteryService.addCharacteristic(this.platform.Characteristic.ConfiguredName, `${accessory.displayName} Battery`);
|
|
185
183
|
}
|
|
184
|
+
this.batteryService.setCharacteristic(this.platform.Characteristic.ChargingState, this.platform.Characteristic.ChargingState.NOT_CHARGEABLE);
|
|
186
185
|
} else {
|
|
187
186
|
this.debugLog(`${this.device.deviceType}: ${accessory.displayName} Battery Service Not Added`);
|
|
188
187
|
}
|
|
@@ -560,7 +559,7 @@ export class Curtain {
|
|
|
560
559
|
const { body, statusCode, headers } = await request(`${Devices}/${this.device.deviceId}/status`, {
|
|
561
560
|
headers: this.platform.generateHeaders(),
|
|
562
561
|
});
|
|
563
|
-
const deviceStatus = await body.json();
|
|
562
|
+
const deviceStatus: any = await body.json();
|
|
564
563
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
|
|
565
564
|
this.statusCode(statusCode);
|
|
566
565
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
|
|
@@ -568,6 +567,8 @@ export class Curtain {
|
|
|
568
567
|
this.slidePosition = deviceStatus.body.slidePosition;
|
|
569
568
|
this.moving = deviceStatus.body.moving;
|
|
570
569
|
this.brightness = deviceStatus.body.brightness;
|
|
570
|
+
this.Battery = deviceStatus.body.battery;
|
|
571
|
+
this.Version = deviceStatus.body.version;
|
|
571
572
|
this.openAPIparseStatus();
|
|
572
573
|
this.updateHomeKitCharacteristics();
|
|
573
574
|
} catch (e: any) {
|
|
@@ -704,7 +705,7 @@ export class Curtain {
|
|
|
704
705
|
method: 'POST',
|
|
705
706
|
headers: this.platform.generateHeaders(),
|
|
706
707
|
});
|
|
707
|
-
const deviceStatus = await body.json();
|
|
708
|
+
const deviceStatus: any = await body.json();
|
|
708
709
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
|
|
709
710
|
this.statusCode(statusCode);
|
|
710
711
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
|
|
@@ -823,27 +824,25 @@ export class Curtain {
|
|
|
823
824
|
}
|
|
824
825
|
}
|
|
825
826
|
}
|
|
826
|
-
if (this.
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
this.mqttPublish('BatteryLevel', this.BatteryLevel);
|
|
832
|
-
}
|
|
833
|
-
this.accessory.context.BatteryLevel = this.BatteryLevel;
|
|
834
|
-
this.batteryService?.updateCharacteristic(this.platform.Characteristic.BatteryLevel, this.BatteryLevel);
|
|
835
|
-
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} updateCharacteristic BatteryLevel: ${this.BatteryLevel}`);
|
|
827
|
+
if (this.BatteryLevel === undefined) {
|
|
828
|
+
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} BatteryLevel: ${this.BatteryLevel}`);
|
|
829
|
+
} else {
|
|
830
|
+
if (this.device.mqttURL) {
|
|
831
|
+
this.mqttPublish('BatteryLevel', this.BatteryLevel);
|
|
836
832
|
}
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
}
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
this.
|
|
833
|
+
this.accessory.context.BatteryLevel = this.BatteryLevel;
|
|
834
|
+
this.batteryService?.updateCharacteristic(this.platform.Characteristic.BatteryLevel, this.BatteryLevel);
|
|
835
|
+
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} updateCharacteristic BatteryLevel: ${this.BatteryLevel}`);
|
|
836
|
+
}
|
|
837
|
+
if (this.StatusLowBattery === undefined) {
|
|
838
|
+
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} StatusLowBattery: ${this.StatusLowBattery}`);
|
|
839
|
+
} else {
|
|
840
|
+
if (this.device.mqttURL) {
|
|
841
|
+
this.mqttPublish('StatusLowBattery', this.StatusLowBattery);
|
|
846
842
|
}
|
|
843
|
+
this.accessory.context.StatusLowBattery = this.StatusLowBattery;
|
|
844
|
+
this.batteryService?.updateCharacteristic(this.platform.Characteristic.StatusLowBattery, this.StatusLowBattery);
|
|
845
|
+
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} updateCharacteristic StatusLowBattery: ${this.StatusLowBattery}`);
|
|
847
846
|
}
|
|
848
847
|
}
|
|
849
848
|
|
|
@@ -1071,10 +1070,8 @@ export class Curtain {
|
|
|
1071
1070
|
if (!this.device.curtain?.hide_lightsensor) {
|
|
1072
1071
|
this.lightSensorService?.updateCharacteristic(this.platform.Characteristic.CurrentAmbientLightLevel, e);
|
|
1073
1072
|
}
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
this.batteryService?.updateCharacteristic(this.platform.Characteristic.StatusLowBattery, e);
|
|
1077
|
-
}
|
|
1073
|
+
this.batteryService?.updateCharacteristic(this.platform.Characteristic.BatteryLevel, e);
|
|
1074
|
+
this.batteryService?.updateCharacteristic(this.platform.Characteristic.StatusLowBattery, e);
|
|
1078
1075
|
//throw new this.platform.api.hap.HapStatusError(HAPStatus.SERVICE_COMMUNICATION_FAILURE);
|
|
1079
1076
|
}
|
|
1080
1077
|
|
|
@@ -1085,10 +1082,12 @@ export class Curtain {
|
|
|
1085
1082
|
);
|
|
1086
1083
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
|
|
1087
1084
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
|
|
1088
|
-
if (
|
|
1089
|
-
FirmwareRevision = accessory.context.FirmwareRevision;
|
|
1090
|
-
} else if (device.firmware) {
|
|
1085
|
+
if (device.firmware) {
|
|
1091
1086
|
FirmwareRevision = device.firmware;
|
|
1087
|
+
} else if (device.version) {
|
|
1088
|
+
FirmwareRevision = JSON.stringify(device.version);
|
|
1089
|
+
} if (accessory.context.FirmwareRevision) {
|
|
1090
|
+
FirmwareRevision = accessory.context.FirmwareRevision;
|
|
1092
1091
|
} else {
|
|
1093
1092
|
FirmwareRevision = this.platform.version;
|
|
1094
1093
|
}
|
|
@@ -1188,7 +1187,7 @@ export class Curtain {
|
|
|
1188
1187
|
config['maxRetry'] = device.maxRetry;
|
|
1189
1188
|
}
|
|
1190
1189
|
if (Object.entries(config).length !== 0) {
|
|
1191
|
-
this.
|
|
1190
|
+
this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName} Config: ${JSON.stringify(config)}`);
|
|
1192
1191
|
}
|
|
1193
1192
|
}
|
|
1194
1193
|
|
package/src/device/hub.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { interval } from 'rxjs';
|
|
|
3
3
|
import { request } from 'undici';
|
|
4
4
|
import { Context } from 'vm';
|
|
5
5
|
import { SwitchBotPlatform } from '../platform';
|
|
6
|
-
import { Devices, device, devicesConfig } from '../settings';
|
|
6
|
+
import { Devices, device, deviceStatus, devicesConfig } from '../settings';
|
|
7
7
|
import { sleep } from '../utils';
|
|
8
8
|
|
|
9
9
|
export class Hub {
|
|
@@ -18,6 +18,7 @@ export class Hub {
|
|
|
18
18
|
CurrentAmbientLightLevel!: number;
|
|
19
19
|
|
|
20
20
|
// OpenAPI Others
|
|
21
|
+
Version: deviceStatus['version'];
|
|
21
22
|
deviceStatus!: any; //deviceStatusResponse;
|
|
22
23
|
lightLevel!: number;
|
|
23
24
|
spaceBetweenLevels!: number;
|
|
@@ -43,6 +44,7 @@ export class Hub {
|
|
|
43
44
|
// default placeholders
|
|
44
45
|
this.logs(device);
|
|
45
46
|
this.refreshRate(device);
|
|
47
|
+
this.config(device);
|
|
46
48
|
|
|
47
49
|
this.CurrentRelativeHumidity = accessory.context.CurrentRelativeHumidity;
|
|
48
50
|
this.CurrentTemperature = accessory.context.CurrentTemperature;
|
|
@@ -292,7 +294,7 @@ export class Hub {
|
|
|
292
294
|
const { body, statusCode, headers } = await request(`${Devices}/${this.device.deviceId}/status`, {
|
|
293
295
|
headers: this.platform.generateHeaders(),
|
|
294
296
|
});
|
|
295
|
-
const deviceStatus = await body.json();
|
|
297
|
+
const deviceStatus: any = await body.json();
|
|
296
298
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
|
|
297
299
|
this.statusCode(statusCode);
|
|
298
300
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
|
|
@@ -356,7 +358,7 @@ export class Hub {
|
|
|
356
358
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} CurrentAmbientLightLevel: ${this.CurrentAmbientLightLevel}`);
|
|
357
359
|
} else {
|
|
358
360
|
this.accessory.context.CurrentAmbientLightLevel = this.CurrentAmbientLightLevel;
|
|
359
|
-
this.
|
|
361
|
+
this.hubLightSensor?.updateCharacteristic(this.platform.Characteristic.CurrentAmbientLightLevel, this.CurrentAmbientLightLevel);
|
|
360
362
|
this.debugLog(
|
|
361
363
|
`${this.device.deviceType}: ${this.accessory.displayName} ` +
|
|
362
364
|
`updateCharacteristic CurrentAmbientLightLevel: ${this.CurrentAmbientLightLevel}`,
|
|
@@ -443,10 +445,12 @@ export class Hub {
|
|
|
443
445
|
);
|
|
444
446
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
|
|
445
447
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
|
|
446
|
-
if (
|
|
447
|
-
FirmwareRevision = accessory.context.FirmwareRevision;
|
|
448
|
-
} else if (device.firmware) {
|
|
448
|
+
if (device.firmware) {
|
|
449
449
|
FirmwareRevision = device.firmware;
|
|
450
|
+
} else if (device.version) {
|
|
451
|
+
FirmwareRevision = JSON.stringify(device.version);
|
|
452
|
+
} else if (accessory.context.FirmwareRevision) {
|
|
453
|
+
FirmwareRevision = accessory.context.FirmwareRevision;
|
|
450
454
|
} else {
|
|
451
455
|
FirmwareRevision = this.platform.version;
|
|
452
456
|
}
|
|
@@ -472,6 +476,28 @@ export class Hub {
|
|
|
472
476
|
}
|
|
473
477
|
}
|
|
474
478
|
|
|
479
|
+
async config(device: device & devicesConfig): Promise<void> {
|
|
480
|
+
let config = {};
|
|
481
|
+
if (device.hub) {
|
|
482
|
+
config = device.hub;
|
|
483
|
+
}
|
|
484
|
+
if (device.connectionType !== undefined) {
|
|
485
|
+
config['connectionType'] = device.connectionType;
|
|
486
|
+
}
|
|
487
|
+
if (device.external !== undefined) {
|
|
488
|
+
config['external'] = device.external;
|
|
489
|
+
}
|
|
490
|
+
if (device.logging !== undefined) {
|
|
491
|
+
config['logging'] = device.logging;
|
|
492
|
+
}
|
|
493
|
+
if (device.refreshRate !== undefined) {
|
|
494
|
+
config['refreshRate'] = device.refreshRate;
|
|
495
|
+
}
|
|
496
|
+
if (Object.entries(config).length !== 0) {
|
|
497
|
+
this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName} Config: ${JSON.stringify(config)}`);
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
|
|
475
501
|
async logs(device: device & devicesConfig): Promise<void> {
|
|
476
502
|
if (this.platform.debugMode) {
|
|
477
503
|
this.deviceLogging = this.accessory.context.logging = 'debugMode';
|
package/src/device/humidifier.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable brace-style */
|
|
1
2
|
import { Context } from 'vm';
|
|
2
3
|
import { request } from 'undici';
|
|
3
4
|
import { sleep } from '../utils';
|
|
@@ -66,8 +67,8 @@ export class Humidifier {
|
|
|
66
67
|
this.logs(device);
|
|
67
68
|
this.scan(device);
|
|
68
69
|
this.refreshRate(device);
|
|
69
|
-
this.config(device);
|
|
70
70
|
this.context();
|
|
71
|
+
this.config(device);
|
|
71
72
|
|
|
72
73
|
// this is subject we use to track when we need to POST changes to the SwitchBot API
|
|
73
74
|
this.doHumidifierUpdate = new Subject();
|
|
@@ -378,7 +379,7 @@ export class Humidifier {
|
|
|
378
379
|
const { body, statusCode, headers } = await request(`${Devices}/${this.device.deviceId}/status`, {
|
|
379
380
|
headers: this.platform.generateHeaders(),
|
|
380
381
|
});
|
|
381
|
-
const deviceStatus = await body.json();
|
|
382
|
+
const deviceStatus: any = await body.json();
|
|
382
383
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
|
|
383
384
|
this.statusCode(statusCode);
|
|
384
385
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
|
|
@@ -474,7 +475,7 @@ export class Humidifier {
|
|
|
474
475
|
method: 'POST',
|
|
475
476
|
headers: this.platform.generateHeaders(),
|
|
476
477
|
});
|
|
477
|
-
const deviceStatus = await body.json();
|
|
478
|
+
const deviceStatus: any = await body.json();
|
|
478
479
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
|
|
479
480
|
this.statusCode(statusCode);
|
|
480
481
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
|
|
@@ -517,7 +518,7 @@ export class Humidifier {
|
|
|
517
518
|
method: 'POST',
|
|
518
519
|
headers: this.platform.generateHeaders(),
|
|
519
520
|
});
|
|
520
|
-
const deviceStatus = await body.json();
|
|
521
|
+
const deviceStatus: any = await body.json();
|
|
521
522
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
|
|
522
523
|
this.statusCode(statusCode);
|
|
523
524
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
|
|
@@ -555,7 +556,7 @@ export class Humidifier {
|
|
|
555
556
|
method: 'POST',
|
|
556
557
|
headers: this.platform.generateHeaders(),
|
|
557
558
|
});
|
|
558
|
-
const deviceStatus = await body.json();
|
|
559
|
+
const deviceStatus: any = await body.json();
|
|
559
560
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
|
|
560
561
|
this.statusCode(statusCode);
|
|
561
562
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
|
|
@@ -844,10 +845,12 @@ export class Humidifier {
|
|
|
844
845
|
);
|
|
845
846
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
|
|
846
847
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
|
|
847
|
-
if (
|
|
848
|
-
FirmwareRevision = accessory.context.FirmwareRevision;
|
|
849
|
-
} else if (device.firmware) {
|
|
848
|
+
if (device.firmware) {
|
|
850
849
|
FirmwareRevision = device.firmware;
|
|
850
|
+
} else if (device.version) {
|
|
851
|
+
FirmwareRevision = JSON.stringify(device.version);
|
|
852
|
+
} else if (accessory.context.FirmwareRevision) {
|
|
853
|
+
FirmwareRevision = accessory.context.FirmwareRevision;
|
|
851
854
|
} else {
|
|
852
855
|
FirmwareRevision = this.platform.version;
|
|
853
856
|
}
|
|
@@ -930,7 +933,7 @@ export class Humidifier {
|
|
|
930
933
|
config['offline'] = device.offline;
|
|
931
934
|
}
|
|
932
935
|
if (Object.entries(config).length !== 0) {
|
|
933
|
-
this.
|
|
936
|
+
this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName} Config: ${JSON.stringify(config)}`);
|
|
934
937
|
}
|
|
935
938
|
}
|
|
936
939
|
|
package/src/device/iosensor.ts
CHANGED
|
@@ -29,6 +29,7 @@ export class IOSensor {
|
|
|
29
29
|
StatusLowBattery?: CharacteristicValue;
|
|
30
30
|
|
|
31
31
|
// OpenAPI Others
|
|
32
|
+
Version: deviceStatus['version'];
|
|
32
33
|
Battery: deviceStatus['battery'];
|
|
33
34
|
Temperature: deviceStatus['temperature'];
|
|
34
35
|
Humidity: deviceStatus['humidity'];
|
|
@@ -73,10 +74,10 @@ export class IOSensor {
|
|
|
73
74
|
this.logs(device);
|
|
74
75
|
this.scan(device);
|
|
75
76
|
this.refreshRate(device);
|
|
76
|
-
this.config(device);
|
|
77
77
|
this.context();
|
|
78
78
|
this.setupHistoryService(device);
|
|
79
79
|
this.setupMqtt(device);
|
|
80
|
+
this.config(device);
|
|
80
81
|
|
|
81
82
|
// this is subject we use to track when we need to POST changes to the SwitchBot API
|
|
82
83
|
this.doIOSensorUpdate = new Subject();
|
|
@@ -337,14 +338,15 @@ export class IOSensor {
|
|
|
337
338
|
const { body, statusCode, headers } = await request(`${Devices}/${this.device.deviceId}/status`, {
|
|
338
339
|
headers: this.platform.generateHeaders(),
|
|
339
340
|
});
|
|
340
|
-
const deviceStatus = await body.json();
|
|
341
|
+
const deviceStatus: any = await body.json();
|
|
341
342
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
|
|
342
343
|
this.statusCode(statusCode);
|
|
343
344
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
|
|
344
345
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} refreshStatus: ${JSON.stringify(deviceStatus)}`);
|
|
345
346
|
this.Humidity = deviceStatus.body.humidity!;
|
|
346
347
|
this.Temperature = deviceStatus.body.temperature!;
|
|
347
|
-
this.Battery = deviceStatus.body.battery
|
|
348
|
+
this.Battery = deviceStatus.body.battery;
|
|
349
|
+
this.Version = deviceStatus.body.version;
|
|
348
350
|
this.openAPIparseStatus();
|
|
349
351
|
this.updateHomeKitCharacteristics();
|
|
350
352
|
} catch (e: any) {
|
|
@@ -592,10 +594,12 @@ export class IOSensor {
|
|
|
592
594
|
);
|
|
593
595
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
|
|
594
596
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
|
|
595
|
-
if (
|
|
596
|
-
FirmwareRevision = accessory.context.FirmwareRevision;
|
|
597
|
-
} else if (device.firmware) {
|
|
597
|
+
if (device.firmware) {
|
|
598
598
|
FirmwareRevision = device.firmware;
|
|
599
|
+
} else if (device.version) {
|
|
600
|
+
FirmwareRevision = JSON.stringify(device.version);
|
|
601
|
+
} else if (accessory.context.FirmwareRevision) {
|
|
602
|
+
FirmwareRevision = accessory.context.FirmwareRevision;
|
|
599
603
|
} else {
|
|
600
604
|
FirmwareRevision = this.platform.version;
|
|
601
605
|
}
|
|
@@ -660,7 +664,7 @@ export class IOSensor {
|
|
|
660
664
|
config['scanDuration'] = device.scanDuration;
|
|
661
665
|
}
|
|
662
666
|
if (Object.entries(config).length !== 0) {
|
|
663
|
-
this.
|
|
667
|
+
this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName} Config: ${JSON.stringify(config)}`);
|
|
664
668
|
}
|
|
665
669
|
}
|
|
666
670
|
|
package/src/device/lightstrip.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable brace-style */
|
|
1
2
|
import { Context } from 'vm';
|
|
2
3
|
import { request } from 'undici';
|
|
3
4
|
import { sleep } from '../utils';
|
|
@@ -24,6 +25,7 @@ export class StripLight {
|
|
|
24
25
|
ColorTemperature?: CharacteristicValue;
|
|
25
26
|
|
|
26
27
|
// OpenAPI Others
|
|
28
|
+
Version: deviceStatus['version'];
|
|
27
29
|
power: deviceStatus['power'];
|
|
28
30
|
color: deviceStatus['color'];
|
|
29
31
|
brightness: deviceStatus['brightness'];
|
|
@@ -71,8 +73,9 @@ export class StripLight {
|
|
|
71
73
|
this.logs(device);
|
|
72
74
|
this.scan(device);
|
|
73
75
|
this.refreshRate(device);
|
|
74
|
-
this.config(device);
|
|
75
76
|
this.context();
|
|
77
|
+
this.config(device);
|
|
78
|
+
|
|
76
79
|
// this is subject we use to track when we need to POST changes to the SwitchBot API
|
|
77
80
|
this.doStripLightUpdate = new Subject();
|
|
78
81
|
this.stripLightUpdateInProgress = false;
|
|
@@ -378,7 +381,7 @@ export class StripLight {
|
|
|
378
381
|
const { body, statusCode, headers } = await request(`${Devices}/${this.device.deviceId}/status`, {
|
|
379
382
|
headers: this.platform.generateHeaders(),
|
|
380
383
|
});
|
|
381
|
-
const deviceStatus = await body.json();
|
|
384
|
+
const deviceStatus: any = await body.json();
|
|
382
385
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
|
|
383
386
|
this.statusCode(statusCode);
|
|
384
387
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
|
|
@@ -591,7 +594,7 @@ export class StripLight {
|
|
|
591
594
|
method: 'POST',
|
|
592
595
|
headers: this.platform.generateHeaders(),
|
|
593
596
|
});
|
|
594
|
-
const deviceStatus = await body.json();
|
|
597
|
+
const deviceStatus: any = await body.json();
|
|
595
598
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
|
|
596
599
|
this.statusCode(statusCode);
|
|
597
600
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
|
|
@@ -639,7 +642,7 @@ export class StripLight {
|
|
|
639
642
|
method: 'POST',
|
|
640
643
|
headers: this.platform.generateHeaders(),
|
|
641
644
|
});
|
|
642
|
-
const deviceStatus = await body.json();
|
|
645
|
+
const deviceStatus: any = await body.json();
|
|
643
646
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
|
|
644
647
|
this.statusCode(statusCode);
|
|
645
648
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
|
|
@@ -673,7 +676,7 @@ export class StripLight {
|
|
|
673
676
|
method: 'POST',
|
|
674
677
|
headers: this.platform.generateHeaders(),
|
|
675
678
|
});
|
|
676
|
-
const deviceStatus = await body.json();
|
|
679
|
+
const deviceStatus: any = await body.json();
|
|
677
680
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
|
|
678
681
|
this.statusCode(statusCode);
|
|
679
682
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
|
|
@@ -988,10 +991,12 @@ export class StripLight {
|
|
|
988
991
|
);
|
|
989
992
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
|
|
990
993
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
|
|
991
|
-
if (
|
|
992
|
-
FirmwareRevision = accessory.context.FirmwareRevision;
|
|
993
|
-
} else if (device.firmware) {
|
|
994
|
+
if (device.firmware) {
|
|
994
995
|
FirmwareRevision = device.firmware;
|
|
996
|
+
} else if (device.version) {
|
|
997
|
+
FirmwareRevision = JSON.stringify(device.version);
|
|
998
|
+
} else if (accessory.context.FirmwareRevision) {
|
|
999
|
+
FirmwareRevision = accessory.context.FirmwareRevision;
|
|
995
1000
|
} else {
|
|
996
1001
|
FirmwareRevision = this.platform.version;
|
|
997
1002
|
}
|
|
@@ -1065,7 +1070,7 @@ export class StripLight {
|
|
|
1065
1070
|
config['maxRetry'] = device.maxRetry;
|
|
1066
1071
|
}
|
|
1067
1072
|
if (Object.entries(config).length !== 0) {
|
|
1068
|
-
this.
|
|
1073
|
+
this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName} Config: ${JSON.stringify(config)}`);
|
|
1069
1074
|
}
|
|
1070
1075
|
}
|
|
1071
1076
|
|
package/src/device/lock.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable brace-style */
|
|
1
2
|
import { Context } from 'vm';
|
|
2
3
|
import { request } from 'undici';
|
|
3
4
|
import { sleep } from '../utils';
|
|
@@ -18,6 +19,8 @@ export class Lock {
|
|
|
18
19
|
LockTargetState!: CharacteristicValue;
|
|
19
20
|
|
|
20
21
|
// OpenAPI Others
|
|
22
|
+
Version: deviceStatus['version'];
|
|
23
|
+
Battery: deviceStatus['battery'];
|
|
21
24
|
doorState!: deviceStatus['doorState'];
|
|
22
25
|
lockState!: deviceStatus['lockState'];
|
|
23
26
|
deviceStatus!: any; //deviceStatusResponse;
|
|
@@ -59,8 +62,8 @@ export class Lock {
|
|
|
59
62
|
this.logs(device);
|
|
60
63
|
this.scan(device);
|
|
61
64
|
this.refreshRate(device);
|
|
62
|
-
this.config(device);
|
|
63
65
|
this.context();
|
|
66
|
+
this.config(device);
|
|
64
67
|
|
|
65
68
|
// this is subject we use to track when we need to POST changes to the SwitchBot API
|
|
66
69
|
this.doLockUpdate = new Subject();
|
|
@@ -309,13 +312,15 @@ export class Lock {
|
|
|
309
312
|
const { body, statusCode, headers } = await request(`${Devices}/${this.device.deviceId}/status`, {
|
|
310
313
|
headers: this.platform.generateHeaders(),
|
|
311
314
|
});
|
|
312
|
-
const deviceStatus = await body.json();
|
|
315
|
+
const deviceStatus: any = await body.json();
|
|
313
316
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
|
|
314
317
|
this.statusCode(statusCode);
|
|
315
318
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
|
|
316
319
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} refreshStatus: ${JSON.stringify(deviceStatus)}`);
|
|
317
320
|
this.lockState = deviceStatus.body.lockState;
|
|
318
321
|
this.doorState = deviceStatus.body.doorState;
|
|
322
|
+
this.Battery = deviceStatus.body.battery;
|
|
323
|
+
this.Version = deviceStatus.body.version;
|
|
319
324
|
this.openAPIparseStatus();
|
|
320
325
|
this.updateHomeKitCharacteristics();
|
|
321
326
|
} catch (e: any) {
|
|
@@ -416,7 +421,7 @@ export class Lock {
|
|
|
416
421
|
method: 'POST',
|
|
417
422
|
headers: this.platform.generateHeaders(),
|
|
418
423
|
});
|
|
419
|
-
const deviceStatus = await body.json();
|
|
424
|
+
const deviceStatus: any = await body.json();
|
|
420
425
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
|
|
421
426
|
this.statusCode(statusCode);
|
|
422
427
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
|
|
@@ -597,10 +602,12 @@ export class Lock {
|
|
|
597
602
|
);
|
|
598
603
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
|
|
599
604
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
|
|
600
|
-
if (
|
|
601
|
-
FirmwareRevision = accessory.context.FirmwareRevision;
|
|
602
|
-
} else if (device.firmware) {
|
|
605
|
+
if (device.firmware) {
|
|
603
606
|
FirmwareRevision = device.firmware;
|
|
607
|
+
} else if (device.version) {
|
|
608
|
+
FirmwareRevision = JSON.stringify(device.version);
|
|
609
|
+
} else if (accessory.context.FirmwareRevision) {
|
|
610
|
+
FirmwareRevision = accessory.context.FirmwareRevision;
|
|
604
611
|
} else {
|
|
605
612
|
FirmwareRevision = this.platform.version;
|
|
606
613
|
}
|
|
@@ -646,7 +653,7 @@ export class Lock {
|
|
|
646
653
|
config['scanDuration'] = device.scanDuration;
|
|
647
654
|
}
|
|
648
655
|
if (Object.entries(config).length !== 0) {
|
|
649
|
-
this.
|
|
656
|
+
this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName} Config: ${JSON.stringify(config)}`);
|
|
650
657
|
}
|
|
651
658
|
}
|
|
652
659
|
|
package/src/device/meter.ts
CHANGED
|
@@ -29,6 +29,8 @@ export class Meter {
|
|
|
29
29
|
StatusLowBattery?: CharacteristicValue;
|
|
30
30
|
|
|
31
31
|
// OpenAPI Others
|
|
32
|
+
Version: deviceStatus['version'];
|
|
33
|
+
Battery: deviceStatus['battery'];
|
|
32
34
|
Temperature: deviceStatus['temperature'];
|
|
33
35
|
Humidity: deviceStatus['humidity'];
|
|
34
36
|
deviceStatus!: any; //deviceStatusResponse;
|
|
@@ -72,10 +74,10 @@ export class Meter {
|
|
|
72
74
|
this.logs(device);
|
|
73
75
|
this.scan(device);
|
|
74
76
|
this.refreshRate(device);
|
|
75
|
-
this.config(device);
|
|
76
77
|
this.context();
|
|
77
78
|
this.setupHistoryService(device);
|
|
78
79
|
this.setupMqtt(device);
|
|
80
|
+
this.config(device);
|
|
79
81
|
|
|
80
82
|
// this is subject we use to track when we need to POST changes to the SwitchBot API
|
|
81
83
|
this.doMeterUpdate = new Subject();
|
|
@@ -226,7 +228,7 @@ export class Meter {
|
|
|
226
228
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} openAPIparseStatus`);
|
|
227
229
|
|
|
228
230
|
// Battery
|
|
229
|
-
this.BatteryLevel = Number(this.
|
|
231
|
+
this.BatteryLevel = Number(this.Battery);
|
|
230
232
|
if (this.BatteryLevel < 15) {
|
|
231
233
|
this.StatusLowBattery = this.platform.Characteristic.StatusLowBattery.BATTERY_LEVEL_LOW;
|
|
232
234
|
} else {
|
|
@@ -342,14 +344,15 @@ export class Meter {
|
|
|
342
344
|
const { body, statusCode, headers } = await request(`${Devices}/${this.device.deviceId}/status`, {
|
|
343
345
|
headers: this.platform.generateHeaders(),
|
|
344
346
|
});
|
|
345
|
-
const deviceStatus = await body.json();
|
|
347
|
+
const deviceStatus: any = await body.json();
|
|
346
348
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Devices: ${JSON.stringify(deviceStatus.body)}`);
|
|
347
349
|
this.statusCode(statusCode);
|
|
348
350
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} Headers: ${JSON.stringify(headers)}`);
|
|
349
351
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} refreshStatus: ${JSON.stringify(deviceStatus)}`);
|
|
350
352
|
this.Humidity = deviceStatus.body.humidity!;
|
|
351
353
|
this.Temperature = deviceStatus.body.temperature!;
|
|
352
|
-
this.
|
|
354
|
+
this.Battery = deviceStatus.body.battery;
|
|
355
|
+
this.Version = deviceStatus.body.version;
|
|
353
356
|
this.openAPIparseStatus();
|
|
354
357
|
this.updateHomeKitCharacteristics();
|
|
355
358
|
} catch (e: any) {
|
|
@@ -599,10 +602,12 @@ export class Meter {
|
|
|
599
602
|
);
|
|
600
603
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
|
|
601
604
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
|
|
602
|
-
if (
|
|
603
|
-
FirmwareRevision = accessory.context.FirmwareRevision;
|
|
604
|
-
} else if (device.firmware) {
|
|
605
|
+
if (device.firmware) {
|
|
605
606
|
FirmwareRevision = device.firmware;
|
|
607
|
+
} else if (device.version) {
|
|
608
|
+
FirmwareRevision = JSON.stringify(device.version);
|
|
609
|
+
} else if (accessory.context.FirmwareRevision) {
|
|
610
|
+
FirmwareRevision = accessory.context.FirmwareRevision;
|
|
606
611
|
} else {
|
|
607
612
|
FirmwareRevision = this.platform.version;
|
|
608
613
|
}
|
|
@@ -667,7 +672,7 @@ export class Meter {
|
|
|
667
672
|
config['scanDuration'] = device.scanDuration;
|
|
668
673
|
}
|
|
669
674
|
if (Object.entries(config).length !== 0) {
|
|
670
|
-
this.
|
|
675
|
+
this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName} Config: ${JSON.stringify(config)}`);
|
|
671
676
|
}
|
|
672
677
|
}
|
|
673
678
|
|