@switchbot/homebridge-switchbot 4.3.2 → 4.3.4
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 +436 -0
- package/README.md +10 -0
- package/config.schema.json +844 -123
- package/dist/device/blindtilt.d.ts +1 -1
- package/dist/device/blindtilt.d.ts.map +1 -1
- package/dist/device/blindtilt.js.map +1 -1
- package/dist/device/bot.d.ts +1 -1
- package/dist/device/bot.d.ts.map +1 -1
- package/dist/device/bot.js.map +1 -1
- package/dist/device/ceilinglight.d.ts +1 -1
- package/dist/device/ceilinglight.d.ts.map +1 -1
- package/dist/device/ceilinglight.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.map +1 -1
- package/dist/device/contact.d.ts +1 -1
- package/dist/device/contact.d.ts.map +1 -1
- package/dist/device/contact.js.map +1 -1
- package/dist/device/curtain.d.ts +1 -1
- package/dist/device/curtain.d.ts.map +1 -1
- package/dist/device/curtain.js.map +1 -1
- package/dist/device/device.d.ts +1 -1
- package/dist/device/device.d.ts.map +1 -1
- package/dist/device/device.js +12 -0
- package/dist/device/device.js.map +1 -1
- package/dist/device/fan.d.ts +1 -1
- package/dist/device/fan.d.ts.map +1 -1
- package/dist/device/fan.js.map +1 -1
- package/dist/device/hub.d.ts +1 -1
- package/dist/device/hub.d.ts.map +1 -1
- package/dist/device/hub.js.map +1 -1
- package/dist/device/humidifier.d.ts +1 -1
- package/dist/device/humidifier.d.ts.map +1 -1
- package/dist/device/humidifier.js.map +1 -1
- package/dist/device/iosensor.d.ts +1 -1
- package/dist/device/iosensor.d.ts.map +1 -1
- package/dist/device/iosensor.js.map +1 -1
- package/dist/device/lightstrip.d.ts +1 -1
- package/dist/device/lightstrip.d.ts.map +1 -1
- package/dist/device/lightstrip.js.map +1 -1
- package/dist/device/lock.d.ts +4 -4
- package/dist/device/lock.d.ts.map +1 -1
- package/dist/device/lock.js +4 -4
- package/dist/device/lock.js.map +1 -1
- package/dist/device/meter.d.ts +1 -1
- package/dist/device/meter.d.ts.map +1 -1
- package/dist/device/meter.js.map +1 -1
- package/dist/device/meterplus.d.ts +1 -1
- package/dist/device/meterplus.d.ts.map +1 -1
- package/dist/device/meterplus.js.map +1 -1
- package/dist/device/meterpro.d.ts +1 -1
- package/dist/device/meterpro.d.ts.map +1 -1
- package/dist/device/meterpro.js.map +1 -1
- package/dist/device/motion.d.ts +1 -1
- package/dist/device/motion.d.ts.map +1 -1
- package/dist/device/motion.js.map +1 -1
- package/dist/device/plug.d.ts +1 -1
- package/dist/device/plug.d.ts.map +1 -1
- package/dist/device/plug.js.map +1 -1
- package/dist/device/{occupancy.d.ts → presence.d.ts} +6 -6
- package/dist/device/presence.d.ts.map +1 -0
- package/dist/device/{occupancy.js → presence.js} +2 -2
- package/dist/device/presence.js.map +1 -0
- package/dist/device/relayswitch.d.ts +1 -1
- package/dist/device/relayswitch.d.ts.map +1 -1
- package/dist/device/relayswitch.js.map +1 -1
- package/dist/device/robotvacuumcleaner.d.ts +1 -1
- package/dist/device/robotvacuumcleaner.d.ts.map +1 -1
- package/dist/device/robotvacuumcleaner.js.map +1 -1
- package/dist/device/waterdetector.d.ts +1 -1
- package/dist/device/waterdetector.d.ts.map +1 -1
- package/dist/device/waterdetector.js.map +1 -1
- package/dist/irdevice/airconditioner.d.ts.map +1 -1
- package/dist/irdevice/airconditioner.js.map +1 -1
- package/dist/irdevice/airpurifier.d.ts.map +1 -1
- package/dist/irdevice/airpurifier.js.map +1 -1
- package/dist/irdevice/camera.d.ts.map +1 -1
- package/dist/irdevice/camera.js.map +1 -1
- package/dist/irdevice/fan.d.ts.map +1 -1
- package/dist/irdevice/fan.js.map +1 -1
- package/dist/irdevice/light.d.ts.map +1 -1
- package/dist/irdevice/light.js.map +1 -1
- package/dist/irdevice/other.d.ts.map +1 -1
- package/dist/irdevice/other.js.map +1 -1
- package/dist/irdevice/tv.d.ts.map +1 -1
- package/dist/irdevice/tv.js.map +1 -1
- package/dist/irdevice/vacuumcleaner.d.ts.map +1 -1
- package/dist/irdevice/vacuumcleaner.js.map +1 -1
- package/dist/irdevice/waterheater.d.ts.map +1 -1
- package/dist/irdevice/waterheater.js.map +1 -1
- package/dist/platform.d.ts +1 -1
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +9 -7
- package/dist/platform.js.map +1 -1
- package/dist/settings.d.ts +3 -3
- package/dist/settings.d.ts.map +1 -1
- package/docs/assets/highlight.css +14 -0
- package/docs/assets/icons.js +1 -1
- package/docs/assets/icons.svg +1 -1
- package/docs/assets/main.js +2 -2
- package/docs/assets/style.css +3 -3
- package/docs/index.html +41 -13
- package/docs/variables/default.html +1 -1
- package/eslint.config.js +1 -5
- package/package.json +15 -21
- package/src/device/blindtilt.ts +2 -4
- package/src/device/bot.ts +2 -4
- package/src/device/ceilinglight.ts +2 -4
- package/src/device/colorbulb.ts +2 -4
- package/src/device/contact.ts +2 -4
- package/src/device/curtain.ts +6 -8
- package/src/device/device.ts +19 -9
- package/src/device/fan.ts +2 -4
- package/src/device/hub.ts +3 -5
- package/src/device/humidifier.ts +2 -4
- package/src/device/iosensor.ts +3 -5
- package/src/device/lightstrip.ts +2 -4
- package/src/device/lock.ts +12 -14
- package/src/device/meter.ts +3 -5
- package/src/device/meterplus.ts +3 -5
- package/src/device/meterpro.ts +3 -5
- package/src/device/motion.ts +2 -4
- package/src/device/plug.ts +2 -4
- package/src/device/{occupancy.ts → presence.ts} +17 -19
- package/src/device/relayswitch.ts +2 -4
- package/src/device/robotvacuumcleaner.ts +2 -4
- package/src/device/waterdetector.ts +2 -4
- package/src/irdevice/airconditioner.ts +0 -1
- package/src/irdevice/airpurifier.ts +0 -1
- package/src/irdevice/camera.ts +0 -1
- package/src/irdevice/fan.ts +0 -1
- package/src/irdevice/light.ts +0 -1
- package/src/irdevice/other.ts +0 -1
- package/src/irdevice/tv.ts +0 -1
- package/src/irdevice/vacuumcleaner.ts +0 -1
- package/src/irdevice/waterheater.ts +0 -1
- package/src/platform.ts +9 -7
- package/src/settings.ts +3 -3
- package/dist/device/occupancy.d.ts.map +0 -1
- package/dist/device/occupancy.js.map +0 -1
package/src/device/lock.ts
CHANGED
|
@@ -4,10 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
|
|
6
6
|
import type { bodyChange, device, lockProServiceData, lockProStatus, lockProWebhookContext, lockServiceData, lockStatus, lockWebhookContext, SwitchBotBLE, SwitchbotDevice, WoSmartLock } from 'node-switchbot'
|
|
7
|
-
|
|
8
|
-
import type { SwitchBotPlatform } from '../platform.js'
|
|
9
|
-
import type { devicesConfig, lockConfig } from '../settings.js'
|
|
10
|
-
|
|
11
7
|
/*
|
|
12
8
|
* For Testing Locally:
|
|
13
9
|
* import { SwitchBotBLEModel, SwitchBotBLEModelName } from '/Users/Shared/GitHub/OpenWonderLabs/node-switchbot/dist/index.js';
|
|
@@ -15,6 +11,8 @@ import type { devicesConfig, lockConfig } from '../settings.js'
|
|
|
15
11
|
import { SwitchBotBLEModel, SwitchBotBLEModelName } from 'node-switchbot'
|
|
16
12
|
import { debounceTime, interval, skipWhile, Subject, take, tap } from 'rxjs'
|
|
17
13
|
|
|
14
|
+
import type { SwitchBotPlatform } from '../platform.js'
|
|
15
|
+
import type { devicesConfig, lockConfig } from '../settings.js'
|
|
18
16
|
import { formatDeviceIdAsMac } from '../utils.js'
|
|
19
17
|
import { deviceBase } from './device.js'
|
|
20
18
|
|
|
@@ -47,13 +45,13 @@ export class Lock extends deviceBase {
|
|
|
47
45
|
}
|
|
48
46
|
|
|
49
47
|
// OpenAPI
|
|
50
|
-
deviceStatus!: lockStatus | lockProStatus
|
|
48
|
+
deviceStatus!: lockStatus | lockProStatus | any
|
|
51
49
|
|
|
52
50
|
// Webhook
|
|
53
|
-
webhookContext!: lockWebhookContext | lockProWebhookContext
|
|
51
|
+
webhookContext!: lockWebhookContext | lockProWebhookContext | any
|
|
54
52
|
|
|
55
53
|
// BLE
|
|
56
|
-
serviceData!: lockServiceData | lockProServiceData
|
|
54
|
+
serviceData!: lockServiceData | lockProServiceData | any
|
|
57
55
|
|
|
58
56
|
// Updates
|
|
59
57
|
lockUpdateInProgress!: boolean
|
|
@@ -230,7 +228,7 @@ export class Lock extends deviceBase {
|
|
|
230
228
|
this.Battery.BatteryLevel = this.serviceData.battery
|
|
231
229
|
this.debugLog(`BatteryLevel: ${this.Battery.BatteryLevel}`)
|
|
232
230
|
// StatusLowBattery
|
|
233
|
-
this.Battery.StatusLowBattery = this.Battery.BatteryLevel < 10
|
|
231
|
+
this.Battery.StatusLowBattery = Number(this.Battery.BatteryLevel) < 10
|
|
234
232
|
? this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_LOW
|
|
235
233
|
: this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL
|
|
236
234
|
this.debugLog(`StatusLowBattery: ${this.Battery.StatusLowBattery}`)
|
|
@@ -266,7 +264,7 @@ export class Lock extends deviceBase {
|
|
|
266
264
|
this.debugLog(`BatteryLevel: ${this.Battery.BatteryLevel}`)
|
|
267
265
|
|
|
268
266
|
// StatusLowBattery
|
|
269
|
-
this.Battery.StatusLowBattery = this.Battery.BatteryLevel < 10
|
|
267
|
+
this.Battery.StatusLowBattery = Number(this.Battery.BatteryLevel) < 10
|
|
270
268
|
? this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_LOW
|
|
271
269
|
: this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL
|
|
272
270
|
this.debugLog(`StatusLowBattery: ${this.Battery.StatusLowBattery}`)
|
|
@@ -329,10 +327,10 @@ export class Lock extends deviceBase {
|
|
|
329
327
|
// Start to monitor advertisement packets
|
|
330
328
|
(async () => {
|
|
331
329
|
// Start to monitor advertisement packets
|
|
332
|
-
const serviceData = await this.monitorAdvertisementPackets(switchBotBLE) as
|
|
330
|
+
const serviceData = await this.monitorAdvertisementPackets(switchBotBLE) as any
|
|
333
331
|
// Update HomeKit
|
|
334
|
-
if ((serviceData.model === SwitchBotBLEModel.Lock || SwitchBotBLEModel.LockPro)
|
|
335
|
-
&& (serviceData.modelName === SwitchBotBLEModelName.Lock || SwitchBotBLEModelName.LockPro)) {
|
|
332
|
+
if ((serviceData.model === SwitchBotBLEModel.Lock || serviceData.model === SwitchBotBLEModel.LockPro || serviceData.model === SwitchBotBLEModel.LockUltra)
|
|
333
|
+
&& (serviceData.modelName === SwitchBotBLEModelName.Lock || serviceData.modelName === SwitchBotBLEModelName.LockPro || serviceData.modelName === SwitchBotBLEModelName.LockUltra)) {
|
|
336
334
|
this.serviceData = serviceData
|
|
337
335
|
if (serviceData !== undefined || serviceData !== null) {
|
|
338
336
|
await this.BLEparseStatus()
|
|
@@ -357,7 +355,7 @@ export class Lock extends deviceBase {
|
|
|
357
355
|
const formattedDeviceId = formatDeviceIdAsMac(this.device.deviceId)
|
|
358
356
|
this.device.bleMac = formattedDeviceId
|
|
359
357
|
this.debugLog(`bleMac: ${this.device.bleMac}`)
|
|
360
|
-
this.platform.bleEventHandler[this.device.bleMac] = async (context: lockServiceData | lockProServiceData) => {
|
|
358
|
+
this.platform.bleEventHandler[this.device.bleMac] = async (context: lockServiceData | lockProServiceData | any) => {
|
|
361
359
|
try {
|
|
362
360
|
this.serviceData = context
|
|
363
361
|
if (context !== undefined || context !== null) {
|
|
@@ -403,7 +401,7 @@ export class Lock extends deviceBase {
|
|
|
403
401
|
async registerWebhook() {
|
|
404
402
|
if (this.device.webhook) {
|
|
405
403
|
this.debugLog('is listening webhook.')
|
|
406
|
-
this.platform.webhookEventHandler[this.device.deviceId] = async (context: lockWebhookContext | lockProWebhookContext) => {
|
|
404
|
+
this.platform.webhookEventHandler[this.device.deviceId] = async (context: lockWebhookContext | lockProWebhookContext | any) => {
|
|
407
405
|
try {
|
|
408
406
|
this.webhookContext = context
|
|
409
407
|
if (context !== undefined || context !== null) {
|
package/src/device/meter.ts
CHANGED
|
@@ -3,12 +3,8 @@
|
|
|
3
3
|
* meter.ts: @switchbot/homebridge-switchbot.
|
|
4
4
|
*/
|
|
5
5
|
import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
|
|
6
|
-
import type { device, meterServiceData, meterStatus, meterWebhookContext, SwitchBotBLE } from 'node-switchbot'
|
|
7
|
-
|
|
8
|
-
import type { SwitchBotPlatform } from '../platform.js'
|
|
9
|
-
import type { devicesConfig, meterConfig } from '../settings.js'
|
|
10
|
-
|
|
11
6
|
import { Units } from 'homebridge'
|
|
7
|
+
import type { device, meterServiceData, meterStatus, meterWebhookContext, SwitchBotBLE } from 'node-switchbot'
|
|
12
8
|
/*
|
|
13
9
|
* For Testing Locally:
|
|
14
10
|
* import { SwitchBotBLEModel, SwitchBotBLEModelName } from '/Users/Shared/GitHub/OpenWonderLabs/node-switchbot/dist/index.js';
|
|
@@ -16,6 +12,8 @@ import { Units } from 'homebridge'
|
|
|
16
12
|
import { SwitchBotBLEModel, SwitchBotBLEModelName } from 'node-switchbot'
|
|
17
13
|
import { interval, skipWhile, Subject } from 'rxjs'
|
|
18
14
|
|
|
15
|
+
import type { SwitchBotPlatform } from '../platform.js'
|
|
16
|
+
import type { devicesConfig, meterConfig } from '../settings.js'
|
|
19
17
|
import { convertUnits, formatDeviceIdAsMac, validHumidity } from '../utils.js'
|
|
20
18
|
import { deviceBase } from './device.js'
|
|
21
19
|
|
package/src/device/meterplus.ts
CHANGED
|
@@ -3,12 +3,8 @@
|
|
|
3
3
|
* meterplus.ts: @switchbot/homebridge-switchbot.
|
|
4
4
|
*/
|
|
5
5
|
import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
|
|
6
|
-
import type { device, meterPlusServiceData, meterPlusStatus, meterPlusWebhookContext, SwitchBotBLE } from 'node-switchbot'
|
|
7
|
-
|
|
8
|
-
import type { SwitchBotPlatform } from '../platform.js'
|
|
9
|
-
import type { devicesConfig, meterConfig } from '../settings.js'
|
|
10
|
-
|
|
11
6
|
import { Units } from 'homebridge'
|
|
7
|
+
import type { device, meterPlusServiceData, meterPlusStatus, meterPlusWebhookContext, SwitchBotBLE } from 'node-switchbot'
|
|
12
8
|
/*
|
|
13
9
|
* For Testing Locally:
|
|
14
10
|
* import { SwitchBotBLEModel, SwitchBotBLEModelName } from '/Users/Shared/GitHub/OpenWonderLabs/node-switchbot/dist/index.js';
|
|
@@ -16,6 +12,8 @@ import { Units } from 'homebridge'
|
|
|
16
12
|
import { SwitchBotBLEModel, SwitchBotBLEModelName } from 'node-switchbot'
|
|
17
13
|
import { interval, skipWhile, Subject } from 'rxjs'
|
|
18
14
|
|
|
15
|
+
import type { SwitchBotPlatform } from '../platform.js'
|
|
16
|
+
import type { devicesConfig, meterConfig } from '../settings.js'
|
|
19
17
|
import { convertUnits, formatDeviceIdAsMac, validHumidity } from '../utils.js'
|
|
20
18
|
import { deviceBase } from './device.js'
|
|
21
19
|
|
package/src/device/meterpro.ts
CHANGED
|
@@ -3,12 +3,8 @@
|
|
|
3
3
|
* MeterPro.ts: @switchbot/homebridge-switchbot.
|
|
4
4
|
*/
|
|
5
5
|
import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
|
|
6
|
-
import type { device, meterProCO2ServiceData, meterProCO2Status, meterProCO2WebhookContext, meterProServiceData, meterProStatus, meterProWebhookContext, SwitchBotBLE } from 'node-switchbot'
|
|
7
|
-
|
|
8
|
-
import type { SwitchBotPlatform } from '../platform.js'
|
|
9
|
-
import type { devicesConfig, meterProConfig } from '../settings.js'
|
|
10
|
-
|
|
11
6
|
import { Units } from 'homebridge'
|
|
7
|
+
import type { device, meterProCO2ServiceData, meterProCO2Status, meterProCO2WebhookContext, meterProServiceData, meterProStatus, meterProWebhookContext, SwitchBotBLE } from 'node-switchbot'
|
|
12
8
|
/*
|
|
13
9
|
* For Testing Locally:
|
|
14
10
|
* import { SwitchBotBLEModel, SwitchBotBLEModelName } from '/Users/Shared/GitHub/OpenWonderLabs/node-switchbot/dist/index.js';
|
|
@@ -16,6 +12,8 @@ import { Units } from 'homebridge'
|
|
|
16
12
|
import { SwitchBotBLEModel, SwitchBotBLEModelName } from 'node-switchbot'
|
|
17
13
|
import { interval, skipWhile, Subject } from 'rxjs'
|
|
18
14
|
|
|
15
|
+
import type { SwitchBotPlatform } from '../platform.js'
|
|
16
|
+
import type { devicesConfig, meterProConfig } from '../settings.js'
|
|
19
17
|
import { convertUnits, formatDeviceIdAsMac, validHumidity } from '../utils.js'
|
|
20
18
|
import { deviceBase } from './device.js'
|
|
21
19
|
|
package/src/device/motion.ts
CHANGED
|
@@ -4,10 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
|
|
6
6
|
import type { device, motionSensorServiceData, motionSensorStatus, motionSensorWebhookContext, SwitchBotBLE } from 'node-switchbot'
|
|
7
|
-
|
|
8
|
-
import type { SwitchBotPlatform } from '../platform.js'
|
|
9
|
-
import type { devicesConfig, motionConfig } from '../settings.js'
|
|
10
|
-
|
|
11
7
|
/*
|
|
12
8
|
* For Testing Locally:
|
|
13
9
|
* import { SwitchBotBLEModel, SwitchBotBLEModelName } from '/Users/Shared/GitHub/OpenWonderLabs/node-switchbot/dist/index.js';
|
|
@@ -15,6 +11,8 @@ import type { devicesConfig, motionConfig } from '../settings.js'
|
|
|
15
11
|
import { SwitchBotBLEModel, SwitchBotBLEModelName } from 'node-switchbot'
|
|
16
12
|
import { interval, skipWhile, Subject } from 'rxjs'
|
|
17
13
|
|
|
14
|
+
import type { SwitchBotPlatform } from '../platform.js'
|
|
15
|
+
import type { devicesConfig, motionConfig } from '../settings.js'
|
|
18
16
|
import { formatDeviceIdAsMac } from '../utils.js'
|
|
19
17
|
import { deviceBase } from './device.js'
|
|
20
18
|
|
package/src/device/plug.ts
CHANGED
|
@@ -4,10 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
|
|
6
6
|
import type { bodyChange, device, plugMiniJPServiceData, plugMiniJPWebhookContext, plugMiniStatus, plugMiniUSServiceData, plugMiniUSWebhookContext, plugStatus, plugWebhookContext, SwitchBotBLE, SwitchbotDevice, WoPlugMiniUS } from 'node-switchbot'
|
|
7
|
-
|
|
8
|
-
import type { SwitchBotPlatform } from '../platform.js'
|
|
9
|
-
import type { devicesConfig } from '../settings.js'
|
|
10
|
-
|
|
11
7
|
/*
|
|
12
8
|
* For Testing Locally:
|
|
13
9
|
* import { SwitchBotBLEModel, SwitchBotBLEModelName } from '/Users/Shared/GitHub/OpenWonderLabs/node-switchbot/dist/index.js';
|
|
@@ -15,6 +11,8 @@ import type { devicesConfig } from '../settings.js'
|
|
|
15
11
|
import { SwitchBotBLEModel, SwitchBotBLEModelName } from 'node-switchbot'
|
|
16
12
|
import { debounceTime, interval, skipWhile, Subject, take, tap } from 'rxjs'
|
|
17
13
|
|
|
14
|
+
import type { SwitchBotPlatform } from '../platform.js'
|
|
15
|
+
import type { devicesConfig } from '../settings.js'
|
|
18
16
|
import { formatDeviceIdAsMac } from '../utils.js'
|
|
19
17
|
import { deviceBase } from './device.js'
|
|
20
18
|
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
/* Copyright(C) 2021-2024, donavanbecker (https://github.com/donavanbecker). All rights reserved.
|
|
2
2
|
*
|
|
3
|
-
*
|
|
3
|
+
* presence.ts: @switchbot/homebridge-switchbot.
|
|
4
4
|
*/
|
|
5
5
|
import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
|
|
6
|
-
import type { device,
|
|
7
|
-
|
|
8
|
-
import type { SwitchBotPlatform } from '../platform.js'
|
|
9
|
-
import type { devicesConfig, occupancyConfig } from '../settings.js'
|
|
10
|
-
|
|
6
|
+
import type { device, presenceSensorServiceData, presenceSensorStatus, presenceSensorWebhookContext, SwitchBotBLE } from 'node-switchbot'
|
|
11
7
|
/*
|
|
12
8
|
* For Testing Locally:
|
|
13
9
|
* import { SwitchBotBLEModel, SwitchBotBLEModelName } from '/Users/Shared/GitHub/OpenWonderLabs/node-switchbot/dist/index.js';
|
|
@@ -15,6 +11,8 @@ import type { devicesConfig, occupancyConfig } from '../settings.js'
|
|
|
15
11
|
import { SwitchBotBLEModel, SwitchBotBLEModelName } from 'node-switchbot'
|
|
16
12
|
import { interval, skipWhile, Subject } from 'rxjs'
|
|
17
13
|
|
|
14
|
+
import type { SwitchBotPlatform } from '../platform.js'
|
|
15
|
+
import type { devicesConfig, presenceConfig } from '../settings.js'
|
|
18
16
|
import { formatDeviceIdAsMac } from '../utils.js'
|
|
19
17
|
import { deviceBase } from './device.js'
|
|
20
18
|
|
|
@@ -23,7 +21,7 @@ import { deviceBase } from './device.js'
|
|
|
23
21
|
* An instance of this class is created for each accessory your platform registers
|
|
24
22
|
* Each accessory may expose multiple services of different service types.
|
|
25
23
|
*/
|
|
26
|
-
export class
|
|
24
|
+
export class Presence extends deviceBase {
|
|
27
25
|
// Services
|
|
28
26
|
private Battery: {
|
|
29
27
|
Name: CharacteristicValue
|
|
@@ -45,10 +43,10 @@ export class Occupancy extends deviceBase {
|
|
|
45
43
|
}
|
|
46
44
|
|
|
47
45
|
// OpenAPI
|
|
48
|
-
deviceStatus!:
|
|
46
|
+
deviceStatus!: presenceSensorStatus
|
|
49
47
|
|
|
50
48
|
// Webhook
|
|
51
|
-
webhookContext!:
|
|
49
|
+
webhookContext!: presenceSensorWebhookContext
|
|
52
50
|
|
|
53
51
|
// BLE
|
|
54
52
|
serviceData!: presenceSensorServiceData
|
|
@@ -104,7 +102,7 @@ export class Occupancy extends deviceBase {
|
|
|
104
102
|
})
|
|
105
103
|
|
|
106
104
|
// Initialize Light Sensor Service
|
|
107
|
-
if ((device as unknown as
|
|
105
|
+
if ((device as unknown as presenceConfig).hide_lightsensor) {
|
|
108
106
|
if (this.LightSensor) {
|
|
109
107
|
this.debugLog('Removing Light Sensor Service')
|
|
110
108
|
this.LightSensor.Service = this.accessory.getService(this.hap.Service.LightSensor) as Service
|
|
@@ -164,9 +162,9 @@ export class Occupancy extends deviceBase {
|
|
|
164
162
|
this.debugLog(`OccupancyDetected: ${this.OccupancySensor.OccupancyDetected}`)
|
|
165
163
|
|
|
166
164
|
// CurrentAmbientLightLevel
|
|
167
|
-
if (!(this.device as unknown as
|
|
168
|
-
const set_minLux = (this.device as unknown as
|
|
169
|
-
const set_maxLux = (this.device as unknown as
|
|
165
|
+
if (!(this.device as unknown as presenceConfig).hide_lightsensor && this.LightSensor?.Service) {
|
|
166
|
+
const set_minLux = (this.device as unknown as presenceConfig).set_minLux ?? 1
|
|
167
|
+
const set_maxLux = (this.device as unknown as presenceConfig).set_maxLux ?? 6001
|
|
170
168
|
const lightLevel = this.serviceData.lightLevel ? set_maxLux : set_minLux
|
|
171
169
|
this.LightSensor.CurrentAmbientLightLevel = this.getLightLevel(lightLevel, set_minLux, set_maxLux, 2)
|
|
172
170
|
this.debugLog(`LightLevel: ${this.serviceData.lightLevel}, CurrentAmbientLightLevel: ${this.LightSensor.CurrentAmbientLightLevel}`)
|
|
@@ -193,9 +191,9 @@ export class Occupancy extends deviceBase {
|
|
|
193
191
|
this.debugLog(`OccupancyDetected: ${this.OccupancySensor.OccupancyDetected}`)
|
|
194
192
|
|
|
195
193
|
// CurrentAmbientLightLevel
|
|
196
|
-
if (!(this.device as unknown as
|
|
197
|
-
const set_minLux = (this.device as unknown as
|
|
198
|
-
const set_maxLux = (this.device as unknown as
|
|
194
|
+
if (!(this.device as unknown as presenceConfig).hide_lightsensor && this.LightSensor?.Service) {
|
|
195
|
+
const set_minLux = (this.device as unknown as presenceConfig).set_minLux ?? 1
|
|
196
|
+
const set_maxLux = (this.device as unknown as presenceConfig).set_maxLux ?? 6001
|
|
199
197
|
const lightLevel = this.deviceStatus.lightLevel ? set_maxLux : set_minLux
|
|
200
198
|
this.LightSensor.CurrentAmbientLightLevel = this.getLightLevel(lightLevel, set_minLux, set_maxLux, 2)
|
|
201
199
|
this.debugLog(`LightLevel: ${this.deviceStatus.lightLevel}, CurrentAmbientLightLevel: ${this.LightSensor.CurrentAmbientLightLevel}`)
|
|
@@ -333,7 +331,7 @@ export class Occupancy extends deviceBase {
|
|
|
333
331
|
async registerWebhook() {
|
|
334
332
|
if (this.device.webhook) {
|
|
335
333
|
this.debugLog('is listening webhook.')
|
|
336
|
-
this.platform.webhookEventHandler[this.device.deviceId] = async (context:
|
|
334
|
+
this.platform.webhookEventHandler[this.device.deviceId] = async (context: presenceSensorWebhookContext) => {
|
|
337
335
|
try {
|
|
338
336
|
this.webhookContext = context
|
|
339
337
|
if (context !== undefined || context !== null) {
|
|
@@ -363,7 +361,7 @@ export class Occupancy extends deviceBase {
|
|
|
363
361
|
// StatusLowBattery
|
|
364
362
|
await this.updateCharacteristic(this.Battery.Service, this.hap.Characteristic.StatusLowBattery, this.Battery.StatusLowBattery, 'StatusLowBattery')
|
|
365
363
|
// CurrentAmbientLightLevel
|
|
366
|
-
if (!(this.device as unknown as
|
|
364
|
+
if (!(this.device as unknown as presenceConfig).hide_lightsensor && this.LightSensor?.Service) {
|
|
367
365
|
await this.updateCharacteristic(this.LightSensor.Service, this.hap.Characteristic.CurrentAmbientLightLevel, this.LightSensor.CurrentAmbientLightLevel, 'CurrentAmbientLightLevel')
|
|
368
366
|
}
|
|
369
367
|
}
|
|
@@ -386,7 +384,7 @@ export class Occupancy extends deviceBase {
|
|
|
386
384
|
this.OccupancySensor.Service.updateCharacteristic(this.hap.Characteristic.OccupancyDetected, e)
|
|
387
385
|
this.Battery.Service.updateCharacteristic(this.hap.Characteristic.BatteryLevel, e)
|
|
388
386
|
this.Battery.Service.updateCharacteristic(this.hap.Characteristic.StatusLowBattery, e)
|
|
389
|
-
if (!(this.device as unknown as
|
|
387
|
+
if (!(this.device as unknown as presenceConfig).hide_lightsensor && this.LightSensor?.Service) {
|
|
390
388
|
this.LightSensor.Service.updateCharacteristic(this.hap.Characteristic.CurrentAmbientLightLevel, e)
|
|
391
389
|
}
|
|
392
390
|
}
|
|
@@ -4,10 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
|
|
6
6
|
import type { bodyChange, device, relaySwitch1Context, relaySwitch1PMContext, relaySwitch1PMServiceData, relaySwitch1PMStatus, relaySwitch1ServiceData, relaySwitch1Status, SwitchBotBLE, SwitchbotDevice, WoRelaySwitch1, WoRelaySwitch1PM } from 'node-switchbot'
|
|
7
|
-
|
|
8
|
-
import type { SwitchBotPlatform } from '../platform.js'
|
|
9
|
-
import type { devicesConfig, relaySwitch1Config, relaySwitch1PMConfig } from '../settings.js'
|
|
10
|
-
|
|
11
7
|
/*
|
|
12
8
|
* For Testing Locally:
|
|
13
9
|
* import { SwitchBotBLEModel, SwitchBotBLEModelName } from '/Users/Shared/GitHub/OpenWonderLabs/node-switchbot/dist/index.js';
|
|
@@ -15,6 +11,8 @@ import type { devicesConfig, relaySwitch1Config, relaySwitch1PMConfig } from '..
|
|
|
15
11
|
import { SwitchBotBLEModel, SwitchBotBLEModelName } from 'node-switchbot'
|
|
16
12
|
import { debounceTime, interval, skipWhile, Subject, take, tap } from 'rxjs'
|
|
17
13
|
|
|
14
|
+
import type { SwitchBotPlatform } from '../platform.js'
|
|
15
|
+
import type { devicesConfig, relaySwitch1Config, relaySwitch1PMConfig } from '../settings.js'
|
|
18
16
|
import { formatDeviceIdAsMac } from '../utils.js'
|
|
19
17
|
import { deviceBase } from './device.js'
|
|
20
18
|
|
|
@@ -4,10 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
|
|
6
6
|
import type { bodyChange, device, floorCleaningRobotS10Status, floorCleaningRobotS10WebhookContext, robotVacuumCleanerS1PlusStatus, robotVacuumCleanerS1PlusWebhookContext, robotVacuumCleanerS1Status, robotVacuumCleanerS1WebhookContext, robotVacuumCleanerServiceData, SwitchBotBLE, SwitchbotDevice } from 'node-switchbot'
|
|
7
|
-
|
|
8
|
-
import type { SwitchBotPlatform } from '../platform.js'
|
|
9
|
-
import type { devicesConfig } from '../settings.js'
|
|
10
|
-
|
|
11
7
|
/*
|
|
12
8
|
* For Testing Locally:
|
|
13
9
|
* import { SwitchBotBLEModel, SwitchBotBLEModelName } from '/Users/Shared/GitHub/OpenWonderLabs/node-switchbot/dist/index.js';
|
|
@@ -15,6 +11,8 @@ import type { devicesConfig } from '../settings.js'
|
|
|
15
11
|
import { SwitchBotBLEModel, SwitchBotBLEModelName } from 'node-switchbot'
|
|
16
12
|
import { debounceTime, interval, skipWhile, Subject, take, tap } from 'rxjs'
|
|
17
13
|
|
|
14
|
+
import type { SwitchBotPlatform } from '../platform.js'
|
|
15
|
+
import type { devicesConfig } from '../settings.js'
|
|
18
16
|
import { formatDeviceIdAsMac } from '../utils.js'
|
|
19
17
|
import { deviceBase } from './device.js'
|
|
20
18
|
|
|
@@ -4,10 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { CharacteristicValue, PlatformAccessory, Service } from 'homebridge'
|
|
6
6
|
import type { device, SwitchBotBLE, waterLeakDetectorServiceData, waterLeakDetectorStatus, waterLeakDetectorWebhookContext } from 'node-switchbot'
|
|
7
|
-
|
|
8
|
-
import type { SwitchBotPlatform } from '../platform.js'
|
|
9
|
-
import type { devicesConfig, waterDetectorConfig } from '../settings.js'
|
|
10
|
-
|
|
11
7
|
/*
|
|
12
8
|
* For Testing Locally:
|
|
13
9
|
* import { SwitchBotBLEModel, SwitchBotBLEModelName } from '/Users/Shared/GitHub/OpenWonderLabs/node-switchbot/dist/index.js';
|
|
@@ -15,6 +11,8 @@ import type { devicesConfig, waterDetectorConfig } from '../settings.js'
|
|
|
15
11
|
import { SwitchBotBLEModel, SwitchBotBLEModelName } from 'node-switchbot'
|
|
16
12
|
import { interval, skipWhile, Subject } from 'rxjs'
|
|
17
13
|
|
|
14
|
+
import type { SwitchBotPlatform } from '../platform.js'
|
|
15
|
+
import type { devicesConfig, waterDetectorConfig } from '../settings.js'
|
|
18
16
|
import { formatDeviceIdAsMac } from '../utils.js'
|
|
19
17
|
import { deviceBase } from './device.js'
|
|
20
18
|
|
package/src/irdevice/camera.ts
CHANGED
package/src/irdevice/fan.ts
CHANGED
package/src/irdevice/light.ts
CHANGED
package/src/irdevice/other.ts
CHANGED
package/src/irdevice/tv.ts
CHANGED
package/src/platform.ts
CHANGED
|
@@ -40,8 +40,8 @@ import { Meter } from './device/meter.js'
|
|
|
40
40
|
import { MeterPlus } from './device/meterplus.js'
|
|
41
41
|
import { MeterPro } from './device/meterpro.js'
|
|
42
42
|
import { Motion } from './device/motion.js'
|
|
43
|
-
import { Occupancy } from './device/occupancy.js'
|
|
44
43
|
import { Plug } from './device/plug.js'
|
|
44
|
+
import { Presence } from './device/presence.js'
|
|
45
45
|
import { RelaySwitch } from './device/relayswitch.js'
|
|
46
46
|
import { RobotVacuumCleaner } from './device/robotvacuumcleaner.js'
|
|
47
47
|
import { WaterDetector } from './device/waterdetector.js'
|
|
@@ -595,7 +595,7 @@ export class SwitchBotPlatform implements DynamicPlatformPlugin {
|
|
|
595
595
|
'WoIOSensor': this.createIOSensor.bind(this),
|
|
596
596
|
'Water Detector': this.createWaterDetector.bind(this),
|
|
597
597
|
'Motion Sensor': this.createMotion.bind(this),
|
|
598
|
-
'Presence Sensor': this.
|
|
598
|
+
'Presence Sensor': this.createPresence.bind(this),
|
|
599
599
|
'Contact Sensor': this.createContact.bind(this),
|
|
600
600
|
'Curtain': this.createCurtain.bind(this),
|
|
601
601
|
'Curtain3': this.createCurtain.bind(this),
|
|
@@ -607,6 +607,8 @@ export class SwitchBotPlatform implements DynamicPlatformPlugin {
|
|
|
607
607
|
'Plug Mini (JP)': this.createPlug.bind(this),
|
|
608
608
|
'Smart Lock': this.createLock.bind(this),
|
|
609
609
|
'Smart Lock Pro': this.createLock.bind(this),
|
|
610
|
+
'Smart Lock Ultra': this.createLock.bind(this),
|
|
611
|
+
'Lock Ultra': this.createLock.bind(this),
|
|
610
612
|
'Color Bulb': this.createColorBulb.bind(this),
|
|
611
613
|
'K10+': this.createRobotVacuumCleaner.bind(this),
|
|
612
614
|
'K10+ Pro': this.createRobotVacuumCleaner.bind(this),
|
|
@@ -1298,7 +1300,7 @@ export class SwitchBotPlatform implements DynamicPlatformPlugin {
|
|
|
1298
1300
|
}
|
|
1299
1301
|
}
|
|
1300
1302
|
|
|
1301
|
-
private async
|
|
1303
|
+
private async createPresence(device: device & devicesConfig) {
|
|
1302
1304
|
const uuid = this.api.hap.uuid.generate(`${device.deviceId}-${device.deviceType}`)
|
|
1303
1305
|
|
|
1304
1306
|
// see if an accessory with the same uuid has already been registered and restored from
|
|
@@ -1322,7 +1324,7 @@ export class SwitchBotPlatform implements DynamicPlatformPlugin {
|
|
|
1322
1324
|
this.api.updatePlatformAccessories([existingAccessory])
|
|
1323
1325
|
// create the accessory handler for the restored accessory
|
|
1324
1326
|
// this is imported from `platformAccessory.ts`
|
|
1325
|
-
new
|
|
1327
|
+
new Presence(this, existingAccessory, device)
|
|
1326
1328
|
this.debugLog(`${device.deviceType} uuid: ${device.deviceId}-${device.deviceType}, (${existingAccessory.UUID})`)
|
|
1327
1329
|
} else {
|
|
1328
1330
|
this.unregisterPlatformAccessories(existingAccessory)
|
|
@@ -1349,7 +1351,7 @@ export class SwitchBotPlatform implements DynamicPlatformPlugin {
|
|
|
1349
1351
|
this.infoLog(`${newOrExternal} accessory: ${accessory.displayName} deviceId: ${device.deviceId}`)
|
|
1350
1352
|
// create the accessory handler for the newly create accessory
|
|
1351
1353
|
// this is imported from `platformAccessory.ts`
|
|
1352
|
-
new
|
|
1354
|
+
new Presence(this, accessory, device)
|
|
1353
1355
|
this.debugLog(`${device.deviceType} uuid: ${device.deviceId}-${device.deviceType}, (${accessory.UUID})`)
|
|
1354
1356
|
|
|
1355
1357
|
// publish device externally or link the accessory to your platform
|
|
@@ -1660,7 +1662,7 @@ export class SwitchBotPlatform implements DynamicPlatformPlugin {
|
|
|
1660
1662
|
existingAccessory.context.device = device
|
|
1661
1663
|
existingAccessory.context.deviceId = device.deviceId
|
|
1662
1664
|
existingAccessory.context.deviceType = device.deviceType
|
|
1663
|
-
existingAccessory.context.model = device.deviceType === 'Smart Lock Pro' ? SwitchBotModel.LockPro : SwitchBotModel.Lock
|
|
1665
|
+
existingAccessory.context.model = device.deviceType === 'Smart Lock Pro' ? SwitchBotModel.LockPro : (device.deviceType === 'Smart Lock Ultra' || device.deviceType === 'Lock Ultra') ? SwitchBotModel.LockUltra : SwitchBotModel.Lock
|
|
1664
1666
|
existingAccessory.displayName = device.configDeviceName
|
|
1665
1667
|
? await this.validateAndCleanDisplayName(device.configDeviceName, 'configDeviceName', device.configDeviceName)
|
|
1666
1668
|
: await this.validateAndCleanDisplayName(device.deviceName, 'deviceName', device.deviceName)
|
|
@@ -1686,7 +1688,7 @@ export class SwitchBotPlatform implements DynamicPlatformPlugin {
|
|
|
1686
1688
|
accessory.context.device = device
|
|
1687
1689
|
accessory.context.deviceId = device.deviceId
|
|
1688
1690
|
accessory.context.deviceType = device.deviceType
|
|
1689
|
-
accessory.context.model = device.deviceType === 'Smart Lock Pro' ? SwitchBotModel.LockPro : SwitchBotModel.Lock
|
|
1691
|
+
accessory.context.model = device.deviceType === 'Smart Lock Pro' ? SwitchBotModel.LockPro : (device.deviceType === 'Smart Lock Ultra' || device.deviceType === 'Lock Ultra') ? SwitchBotModel.LockUltra : SwitchBotModel.Lock
|
|
1690
1692
|
accessory.displayName = device.configDeviceName
|
|
1691
1693
|
? await this.validateAndCleanDisplayName(device.configDeviceName, 'configDeviceName', device.configDeviceName)
|
|
1692
1694
|
: await this.validateAndCleanDisplayName(device.deviceName, 'deviceName', device.deviceName)
|
package/src/settings.ts
CHANGED
|
@@ -182,8 +182,8 @@ export interface motionConfig extends BaseDeviceConfig {
|
|
|
182
182
|
set_maxLux?: number
|
|
183
183
|
};
|
|
184
184
|
|
|
185
|
-
export interface
|
|
186
|
-
configDeviceType: '
|
|
185
|
+
export interface presenceConfig extends BaseDeviceConfig {
|
|
186
|
+
configDeviceType: 'Presence Sensor'
|
|
187
187
|
hide_lightsensor?: boolean
|
|
188
188
|
set_minLux?: number
|
|
189
189
|
set_maxLux?: number
|
|
@@ -218,7 +218,7 @@ export interface ceilingLightConfig extends BaseDeviceConfig {
|
|
|
218
218
|
};
|
|
219
219
|
|
|
220
220
|
export interface lockConfig extends BaseDeviceConfig {
|
|
221
|
-
configDeviceType: 'Smart Lock' | 'Smart Lock Pro'
|
|
221
|
+
configDeviceType: 'Smart Lock' | 'Smart Lock Pro' | 'Smart Lock Ultra' | 'Lock Ultra'
|
|
222
222
|
hide_contactsensor?: boolean
|
|
223
223
|
activate_latchbutton?: boolean
|
|
224
224
|
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"occupancy.d.ts","sourceRoot":"","sources":["../../src/device/occupancy.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAuB,iBAAiB,EAAW,MAAM,YAAY,CAAA;AACjF,OAAO,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE3I,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,gBAAgB,CAAA;AAOpE,OAAO,EAAuB,OAAO,EAAE,MAAM,MAAM,CAAA;AAGnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC;;;;GAIG;AACH,qBAAa,SAAU,SAAQ,UAAU;IAmCrC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB;IAjCtC,OAAO,CAAC,OAAO,CAKd;IAED,OAAO,CAAC,eAAe,CAItB;IAED,OAAO,CAAC,WAAW,CAAC,CAInB;IAGD,YAAY,EAAG,qBAAqB,CAAA;IAGpC,cAAc,EAAG,6BAA6B,CAAA;IAG9C,WAAW,EAAG,yBAAyB,CAAA;IAGvC,2BAA2B,EAAG,OAAO,CAAA;IACrC,iBAAiB,EAAG,OAAO,CAAC,IAAI,CAAC,CAAA;gBAGtB,QAAQ,EAAE,iBAAiB,EACpC,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,MAAM,GAAG,aAAa;IA+F1B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B/B,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IA0CnC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IASzC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAa9B,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BjC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BpC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBrC,eAAe;IAsBrB;;OAEG;IACG,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC;IAa7C,oBAAoB,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,QAAQ,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CAQtC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"occupancy.js","sourceRoot":"","sources":["../../src/device/occupancy.ts"],"names":[],"mappings":"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"}
|