@switchbot/homebridge-switchbot 2.8.0-beta.1 → 2.8.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +1 -0
- package/dist/device/bot.d.ts.map +1 -1
- package/dist/device/bot.js +8 -5
- 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 +31 -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 +29 -4
- 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 +1 -0
- package/dist/device/robotvacuumcleaner.d.ts.map +1 -1
- package/dist/device/robotvacuumcleaner.js +26 -2
- package/dist/device/robotvacuumcleaner.js.map +1 -1
- package/dist/irdevice/airconditioner.d.ts.map +1 -1
- package/dist/irdevice/airconditioner.js +7 -5
- 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 +3 -2
- package/dist/platform.js.map +1 -1
- package/package.json +3 -3
- package/src/device/blindtilt.ts +8 -6
- package/src/device/bot.ts +8 -5
- package/src/device/ceilinglight.ts +12 -6
- package/src/device/colorbulb.ts +10 -5
- package/src/device/contact.ts +44 -30
- package/src/device/curtain.ts +30 -33
- package/src/device/hub.ts +30 -4
- package/src/device/humidifier.ts +8 -5
- package/src/device/iosensor.ts +9 -5
- package/src/device/lightstrip.ts +10 -5
- package/src/device/lock.ts +12 -5
- package/src/device/meter.ts +12 -7
- package/src/device/meterplus.ts +60 -53
- package/src/device/motion.ts +45 -27
- package/src/device/plug.ts +8 -5
- package/src/device/robotvacuumcleaner.ts +29 -2
- package/src/irdevice/airconditioner.ts +7 -5
- package/src/irdevice/airpurifier.ts +5 -5
- package/src/irdevice/camera.ts +5 -5
- package/src/irdevice/fan.ts +5 -5
- package/src/irdevice/light.ts +5 -5
- package/src/irdevice/other.ts +5 -5
- package/src/irdevice/tv.ts +5 -5
- package/src/irdevice/vacuumcleaner.ts +5 -5
- package/src/irdevice/waterheater.ts +5 -5
- package/src/platform.ts +3 -2
- package/src/settings.ts +1 -1
package/src/device/colorbulb.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 ColorBulb {
|
|
|
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'];
|
|
@@ -82,8 +84,9 @@ export class ColorBulb {
|
|
|
82
84
|
this.scan(device);
|
|
83
85
|
this.refreshRate(device);
|
|
84
86
|
this.adaptiveLighting(device);
|
|
85
|
-
this.config(device);
|
|
86
87
|
this.context();
|
|
88
|
+
this.config(device);
|
|
89
|
+
|
|
87
90
|
// this is subject we use to track when we need to POST changes to the SwitchBot API
|
|
88
91
|
this.doColorBulbUpdate = new Subject();
|
|
89
92
|
this.colorBulbUpdateInProgress = false;
|
|
@@ -1133,10 +1136,12 @@ export class ColorBulb {
|
|
|
1133
1136
|
);
|
|
1134
1137
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
|
|
1135
1138
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
|
|
1136
|
-
if (
|
|
1137
|
-
FirmwareRevision = accessory.context.FirmwareRevision;
|
|
1138
|
-
} else if (device.firmware) {
|
|
1139
|
+
if (device.firmware) {
|
|
1139
1140
|
FirmwareRevision = device.firmware;
|
|
1141
|
+
} else if (device.version) {
|
|
1142
|
+
FirmwareRevision = JSON.stringify(device.version);
|
|
1143
|
+
} if (accessory.context.FirmwareRevision) {
|
|
1144
|
+
FirmwareRevision = accessory.context.FirmwareRevision;
|
|
1140
1145
|
} else {
|
|
1141
1146
|
FirmwareRevision = this.platform.version;
|
|
1142
1147
|
}
|
|
@@ -1210,7 +1215,7 @@ export class ColorBulb {
|
|
|
1210
1215
|
config['maxRetry'] = device.maxRetry;
|
|
1211
1216
|
}
|
|
1212
1217
|
if (Object.entries(config).length !== 0) {
|
|
1213
|
-
this.
|
|
1218
|
+
this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName} Config: ${JSON.stringify(config)}`);
|
|
1214
1219
|
}
|
|
1215
1220
|
}
|
|
1216
1221
|
|
package/src/device/contact.ts
CHANGED
|
@@ -27,6 +27,8 @@ export class Contact {
|
|
|
27
27
|
StatusLowBattery!: CharacteristicValue;
|
|
28
28
|
|
|
29
29
|
// OpenAPI others
|
|
30
|
+
Version: deviceStatus['version'];
|
|
31
|
+
Battery: deviceStatus['battery'];
|
|
30
32
|
openState: deviceStatus['openState'];
|
|
31
33
|
moveDetected: deviceStatus['moveDetected'];
|
|
32
34
|
brightness: deviceStatus['brightness'];
|
|
@@ -71,8 +73,8 @@ export class Contact {
|
|
|
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);
|
|
76
78
|
|
|
77
79
|
// this is subject we use to track when we need to POST changes to the SwitchBot API
|
|
78
80
|
this.doContactUpdate = new Subject();
|
|
@@ -145,17 +147,16 @@ export class Contact {
|
|
|
145
147
|
}
|
|
146
148
|
|
|
147
149
|
// Battery Service
|
|
148
|
-
if (!this.
|
|
149
|
-
this.debugLog(`${this.device.deviceType}: ${accessory.displayName} Removing Battery Service`);
|
|
150
|
-
this.batteryService = this.accessory.getService(this.platform.Service.Battery);
|
|
151
|
-
accessory.removeService(this.batteryService!);
|
|
152
|
-
} else if (this.BLE && !this.batteryService) {
|
|
150
|
+
if (!this.batteryService) {
|
|
153
151
|
this.debugLog(`${this.device.deviceType}: ${accessory.displayName} Add Battery Service`);
|
|
154
152
|
(this.batteryService = this.accessory.getService(this.platform.Service.Battery) || this.accessory.addService(this.platform.Service.Battery)),
|
|
155
153
|
`${accessory.displayName} Battery`;
|
|
156
154
|
|
|
157
155
|
this.batteryService.setCharacteristic(this.platform.Characteristic.Name, `${accessory.displayName} Battery`);
|
|
158
|
-
this.batteryService.
|
|
156
|
+
if (!this.batteryService.testCharacteristic(this.platform.Characteristic.ConfiguredName)) {
|
|
157
|
+
this.batteryService.addCharacteristic(this.platform.Characteristic.ConfiguredName, `${accessory.displayName} Battery`);
|
|
158
|
+
}
|
|
159
|
+
this.batteryService.setCharacteristic(this.platform.Characteristic.ChargingState, this.platform.Characteristic.ChargingState.NOT_CHARGEABLE);
|
|
159
160
|
} else {
|
|
160
161
|
this.debugLog(`${this.device.deviceType}: ${accessory.displayName} Battery Service Not Added`);
|
|
161
162
|
}
|
|
@@ -284,6 +285,19 @@ export class Contact {
|
|
|
284
285
|
}
|
|
285
286
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} CurrentAmbientLightLevel: ${this.CurrentAmbientLightLevel}`);
|
|
286
287
|
}
|
|
288
|
+
// Battery
|
|
289
|
+
if (this.battery === undefined) {
|
|
290
|
+
this.battery === 100;
|
|
291
|
+
}
|
|
292
|
+
this.BatteryLevel = Number(this.Battery);
|
|
293
|
+
if (this.BatteryLevel < 10) {
|
|
294
|
+
this.StatusLowBattery = this.platform.Characteristic.StatusLowBattery.BATTERY_LEVEL_LOW;
|
|
295
|
+
} else {
|
|
296
|
+
this.StatusLowBattery = this.platform.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL;
|
|
297
|
+
}
|
|
298
|
+
this.debugLog(
|
|
299
|
+
`${this.device.deviceType}: ${this.accessory.displayName} BatteryLevel: ${this.BatteryLevel}, ` + `StatusLowBattery: ${this.StatusLowBattery}`,
|
|
300
|
+
);
|
|
287
301
|
}
|
|
288
302
|
|
|
289
303
|
/**
|
|
@@ -394,6 +408,8 @@ export class Contact {
|
|
|
394
408
|
this.openState = deviceStatus.body.openState;
|
|
395
409
|
this.moveDetected = deviceStatus.body.moveDetected;
|
|
396
410
|
this.brightness = deviceStatus.body.brightness;
|
|
411
|
+
this.Battery = deviceStatus.body.battery!;
|
|
412
|
+
this.Version = deviceStatus.body.version!;
|
|
397
413
|
this.openAPIparseStatus();
|
|
398
414
|
this.updateHomeKitCharacteristics();
|
|
399
415
|
} catch (e: any) {
|
|
@@ -437,21 +453,19 @@ export class Contact {
|
|
|
437
453
|
);
|
|
438
454
|
}
|
|
439
455
|
}
|
|
440
|
-
if (this.
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} updateCharacteristic StatusLowBattery: ${this.StatusLowBattery}`);
|
|
454
|
-
}
|
|
456
|
+
if (this.BatteryLevel === undefined) {
|
|
457
|
+
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} BatteryLevel: ${this.BatteryLevel}`);
|
|
458
|
+
} else {
|
|
459
|
+
this.accessory.context.BatteryLevel = this.BatteryLevel;
|
|
460
|
+
this.batteryService?.updateCharacteristic(this.platform.Characteristic.BatteryLevel, this.BatteryLevel);
|
|
461
|
+
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} updateCharacteristic BatteryLevel: ${this.BatteryLevel}`);
|
|
462
|
+
}
|
|
463
|
+
if (this.StatusLowBattery === undefined) {
|
|
464
|
+
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} StatusLowBattery: ${this.StatusLowBattery}`);
|
|
465
|
+
} else {
|
|
466
|
+
this.accessory.context.StatusLowBattery = this.StatusLowBattery;
|
|
467
|
+
this.batteryService?.updateCharacteristic(this.platform.Characteristic.StatusLowBattery, this.StatusLowBattery);
|
|
468
|
+
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} updateCharacteristic StatusLowBattery: ${this.StatusLowBattery}`);
|
|
455
469
|
}
|
|
456
470
|
}
|
|
457
471
|
|
|
@@ -580,10 +594,8 @@ export class Contact {
|
|
|
580
594
|
if (!this.device.contact?.hide_lightsensor) {
|
|
581
595
|
this.lightSensorService?.updateCharacteristic(this.platform.Characteristic.CurrentAmbientLightLevel, e);
|
|
582
596
|
}
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
this.batteryService?.updateCharacteristic(this.platform.Characteristic.StatusLowBattery, e);
|
|
586
|
-
}
|
|
597
|
+
this.batteryService?.updateCharacteristic(this.platform.Characteristic.BatteryLevel, e);
|
|
598
|
+
this.batteryService?.updateCharacteristic(this.platform.Characteristic.StatusLowBattery, e);
|
|
587
599
|
}
|
|
588
600
|
|
|
589
601
|
FirmwareRevision(accessory: PlatformAccessory<Context>, device: device & devicesConfig): CharacteristicValue {
|
|
@@ -593,10 +605,12 @@ export class Contact {
|
|
|
593
605
|
);
|
|
594
606
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
|
|
595
607
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} this.platform.version: ${this.platform.version}`);
|
|
596
|
-
if (
|
|
597
|
-
FirmwareRevision = accessory.context.FirmwareRevision;
|
|
598
|
-
} else if (device.firmware) {
|
|
608
|
+
if (device.firmware) {
|
|
599
609
|
FirmwareRevision = device.firmware;
|
|
610
|
+
} else if (device.version) {
|
|
611
|
+
FirmwareRevision = JSON.stringify(device.version);
|
|
612
|
+
} else if (accessory.context.FirmwareRevision) {
|
|
613
|
+
FirmwareRevision = accessory.context.FirmwareRevision;
|
|
600
614
|
} else {
|
|
601
615
|
FirmwareRevision = this.platform.version;
|
|
602
616
|
}
|
|
@@ -647,7 +661,7 @@ export class Contact {
|
|
|
647
661
|
config['scanDuration'] = device.scanDuration;
|
|
648
662
|
}
|
|
649
663
|
if (Object.entries(config).length !== 0) {
|
|
650
|
-
this.
|
|
664
|
+
this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName} Config: ${JSON.stringify(config)}`);
|
|
651
665
|
}
|
|
652
666
|
}
|
|
653
667
|
|
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
|
}
|
|
@@ -823,27 +822,25 @@ export class Curtain {
|
|
|
823
822
|
}
|
|
824
823
|
}
|
|
825
824
|
}
|
|
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}`);
|
|
825
|
+
if (this.BatteryLevel === undefined) {
|
|
826
|
+
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} BatteryLevel: ${this.BatteryLevel}`);
|
|
827
|
+
} else {
|
|
828
|
+
if (this.device.mqttURL) {
|
|
829
|
+
this.mqttPublish('BatteryLevel', this.BatteryLevel);
|
|
836
830
|
}
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
}
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
this.
|
|
831
|
+
this.accessory.context.BatteryLevel = this.BatteryLevel;
|
|
832
|
+
this.batteryService?.updateCharacteristic(this.platform.Characteristic.BatteryLevel, this.BatteryLevel);
|
|
833
|
+
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} updateCharacteristic BatteryLevel: ${this.BatteryLevel}`);
|
|
834
|
+
}
|
|
835
|
+
if (this.StatusLowBattery === undefined) {
|
|
836
|
+
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} StatusLowBattery: ${this.StatusLowBattery}`);
|
|
837
|
+
} else {
|
|
838
|
+
if (this.device.mqttURL) {
|
|
839
|
+
this.mqttPublish('StatusLowBattery', this.StatusLowBattery);
|
|
846
840
|
}
|
|
841
|
+
this.accessory.context.StatusLowBattery = this.StatusLowBattery;
|
|
842
|
+
this.batteryService?.updateCharacteristic(this.platform.Characteristic.StatusLowBattery, this.StatusLowBattery);
|
|
843
|
+
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} updateCharacteristic StatusLowBattery: ${this.StatusLowBattery}`);
|
|
847
844
|
}
|
|
848
845
|
}
|
|
849
846
|
|
|
@@ -1071,10 +1068,8 @@ export class Curtain {
|
|
|
1071
1068
|
if (!this.device.curtain?.hide_lightsensor) {
|
|
1072
1069
|
this.lightSensorService?.updateCharacteristic(this.platform.Characteristic.CurrentAmbientLightLevel, e);
|
|
1073
1070
|
}
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
this.batteryService?.updateCharacteristic(this.platform.Characteristic.StatusLowBattery, e);
|
|
1077
|
-
}
|
|
1071
|
+
this.batteryService?.updateCharacteristic(this.platform.Characteristic.BatteryLevel, e);
|
|
1072
|
+
this.batteryService?.updateCharacteristic(this.platform.Characteristic.StatusLowBattery, e);
|
|
1078
1073
|
//throw new this.platform.api.hap.HapStatusError(HAPStatus.SERVICE_COMMUNICATION_FAILURE);
|
|
1079
1074
|
}
|
|
1080
1075
|
|
|
@@ -1085,10 +1080,12 @@ export class Curtain {
|
|
|
1085
1080
|
);
|
|
1086
1081
|
this.debugLog(`${this.device.deviceType}: ${this.accessory.displayName} device.firmware: ${device.firmware}`);
|
|
1087
1082
|
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) {
|
|
1083
|
+
if (device.firmware) {
|
|
1091
1084
|
FirmwareRevision = device.firmware;
|
|
1085
|
+
} else if (device.version) {
|
|
1086
|
+
FirmwareRevision = JSON.stringify(device.version);
|
|
1087
|
+
} if (accessory.context.FirmwareRevision) {
|
|
1088
|
+
FirmwareRevision = accessory.context.FirmwareRevision;
|
|
1092
1089
|
} else {
|
|
1093
1090
|
FirmwareRevision = this.platform.version;
|
|
1094
1091
|
}
|
|
@@ -1188,7 +1185,7 @@ export class Curtain {
|
|
|
1188
1185
|
config['maxRetry'] = device.maxRetry;
|
|
1189
1186
|
}
|
|
1190
1187
|
if (Object.entries(config).length !== 0) {
|
|
1191
|
-
this.
|
|
1188
|
+
this.debugWarnLog(`${this.device.deviceType}: ${this.accessory.displayName} Config: ${JSON.stringify(config)}`);
|
|
1192
1189
|
}
|
|
1193
1190
|
}
|
|
1194
1191
|
|
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;
|
|
@@ -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();
|
|
@@ -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();
|
|
@@ -345,6 +346,7 @@ export class IOSensor {
|
|
|
345
346
|
this.Humidity = deviceStatus.body.humidity!;
|
|
346
347
|
this.Temperature = deviceStatus.body.temperature!;
|
|
347
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;
|
|
@@ -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();
|
|
@@ -316,6 +319,8 @@ export class Lock {
|
|
|
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.Version = deviceStatus.body.version;
|
|
323
|
+
this.Battery = deviceStatus.body.battery;
|
|
319
324
|
this.openAPIparseStatus();
|
|
320
325
|
this.updateHomeKitCharacteristics();
|
|
321
326
|
} catch (e: any) {
|
|
@@ -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 {
|
|
@@ -349,7 +351,8 @@ export class Meter {
|
|
|
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.ver!;
|
|
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
|
|