@switchbot/homebridge-switchbot 4.0.0-beta.4 → 4.0.0
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 +11 -4
- package/config.schema.json +10304 -3106
- package/dist/device/device.d.ts.map +1 -1
- package/dist/device/device.js +27 -4
- package/dist/device/device.js.map +1 -1
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +29 -7
- package/dist/platform.js.map +1 -1
- package/dist/settings.d.ts +11 -5
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +1 -0
- package/dist/settings.js.map +1 -1
- package/package.json +4 -4
- package/src/device/device.ts +28 -5
- package/src/platform.ts +33 -7
- package/src/settings.ts +10 -5
- package/.github/npm-version-script.cjs +0 -81
package/dist/settings.d.ts
CHANGED
|
@@ -27,6 +27,9 @@ export interface options {
|
|
|
27
27
|
[deviceType: string]: devicesConfig;
|
|
28
28
|
};
|
|
29
29
|
irdevices?: irDevicesConfig[];
|
|
30
|
+
irdeviceConfig?: {
|
|
31
|
+
[remoteType: string]: irDevicesConfig;
|
|
32
|
+
};
|
|
30
33
|
allowInvalidCharacters?: boolean;
|
|
31
34
|
mqttURL?: string;
|
|
32
35
|
mqttOptions?: IClientOptions;
|
|
@@ -43,7 +46,7 @@ export interface options {
|
|
|
43
46
|
pushRate?: number;
|
|
44
47
|
logging?: string;
|
|
45
48
|
}
|
|
46
|
-
export type devicesConfig = botConfig | meterConfig | indoorOutdoorSensorConfig | humidifierConfig | curtainConfig | blindTiltConfig | contactConfig | motionConfig | waterDetectorConfig | colorBulbConfig | stripLightConfig | ceilingLightConfig | lockConfig | hubConfig;
|
|
49
|
+
export type devicesConfig = botConfig | meterConfig | indoorOutdoorSensorConfig | humidifierConfig | curtainConfig | blindTiltConfig | contactConfig | motionConfig | waterDetectorConfig | plugConfig | colorBulbConfig | stripLightConfig | ceilingLightConfig | lockConfig | hubConfig;
|
|
47
50
|
export interface BaseDeviceConfig extends device {
|
|
48
51
|
bleMac?: string;
|
|
49
52
|
model: string;
|
|
@@ -90,7 +93,7 @@ export interface meterConfig extends BaseDeviceConfig {
|
|
|
90
93
|
hide_humidity?: boolean;
|
|
91
94
|
}
|
|
92
95
|
export interface indoorOutdoorSensorConfig extends BaseDeviceConfig {
|
|
93
|
-
configDeviceType: '
|
|
96
|
+
configDeviceType: 'WoIOSensor';
|
|
94
97
|
hide_temperature?: boolean;
|
|
95
98
|
convertUnitTo?: string;
|
|
96
99
|
hide_humidity?: boolean;
|
|
@@ -102,7 +105,7 @@ export interface humidifierConfig extends BaseDeviceConfig {
|
|
|
102
105
|
set_minStep?: number;
|
|
103
106
|
}
|
|
104
107
|
export interface curtainConfig extends BaseDeviceConfig {
|
|
105
|
-
configDeviceType: 'Curtain' | 'Curtain3';
|
|
108
|
+
configDeviceType: 'Curtain' | 'Curtain3' | 'WoRollerShade' | 'Roller Shade';
|
|
106
109
|
disable_group?: boolean;
|
|
107
110
|
hide_lightsensor?: boolean;
|
|
108
111
|
set_minLux?: number;
|
|
@@ -146,6 +149,9 @@ export interface waterDetectorConfig extends BaseDeviceConfig {
|
|
|
146
149
|
hide_leak?: boolean;
|
|
147
150
|
dry?: boolean;
|
|
148
151
|
}
|
|
152
|
+
export interface plugConfig extends BaseDeviceConfig {
|
|
153
|
+
configDeviceType: 'Plug' | 'Plug Mini (US)' | 'Plug Mini (JP)';
|
|
154
|
+
}
|
|
149
155
|
export interface colorBulbConfig extends BaseDeviceConfig {
|
|
150
156
|
configDeviceType: 'Color Bulb';
|
|
151
157
|
set_minStep?: number;
|
|
@@ -162,12 +168,12 @@ export interface ceilingLightConfig extends BaseDeviceConfig {
|
|
|
162
168
|
adaptiveLightingShift?: number;
|
|
163
169
|
}
|
|
164
170
|
export interface lockConfig extends BaseDeviceConfig {
|
|
165
|
-
configDeviceType: 'Lock' | 'Lock Pro';
|
|
171
|
+
configDeviceType: 'Smart Lock' | 'Smart Lock Pro';
|
|
166
172
|
hide_contactsensor?: boolean;
|
|
167
173
|
activate_latchbutton?: boolean;
|
|
168
174
|
}
|
|
169
175
|
export interface hubConfig extends BaseDeviceConfig {
|
|
170
|
-
configDeviceType: '
|
|
176
|
+
configDeviceType: 'Hub 2';
|
|
171
177
|
hide_temperature?: boolean;
|
|
172
178
|
convertUnitTo?: string;
|
|
173
179
|
hide_humidity?: boolean;
|
package/dist/settings.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAKhD,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAC/H;;GAEG;AACH,eAAO,MAAM,aAAa,cAAc,CAAA;AAExC;;GAEG;AACH,eAAO,MAAM,WAAW,oCAAoC,CAAA;AAG5D,MAAM,WAAW,uBAAwB,SAAQ,cAAc;IAC7D,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,YAAY,CAAC,EAAE;QAAE,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CAAA;KAAE,CAAA;CACvD;AACD,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,OAAO,CAAC,EAAE,aAAa,EAAE,CAAA;IACzB,YAAY,CAAC,EAAE;QAAE,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CAAA;KAAE,CAAA;IACtD,SAAS,CAAC,EAAE,eAAe,EAAE,CAAA;IAC7B,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,cAAc,CAAA;IAC5B,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,yBAAyB,GAAG,gBAAgB,GAAG,aAAa,GAAG,eAAe,GAAG,aAAa,GAAG,YAAY,GAAG,mBAAmB,GAAG,eAAe,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,UAAU,GAAG,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
|
package/dist/settings.js
CHANGED
package/dist/settings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAA;AAExC;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,iCAAiC,CAAA;
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAA;AAExC;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,iCAAiC,CAAA;AAkC3D,CAAC;AA2CD,CAAC;AAOD,CAAC;AAOD,CAAC;AAOD,CAAC;AAcD,CAAC;AAeD,CAAC;AAQD,CAAC;AAOD,CAAC;AAMD,CAAC;AAID,CAAC;AAMD,CAAC;AAMD,CAAC;AAMD,CAAC;AAMD,CAAC;AAUD,CAAC;AA6BD,CAAC;AAKD,CAAC;AAYD,CAAC;AAKD,CAAC"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@switchbot/homebridge-switchbot",
|
|
3
3
|
"displayName": "SwitchBot",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "4.0.0
|
|
5
|
+
"version": "4.0.0",
|
|
6
6
|
"description": "The SwitchBot plugin allows you to access your SwitchBot device(s) from HomeKit.",
|
|
7
7
|
"author": "SwitchBot <support@wondertechlabs.com> (https://github.com/SwitchBot)",
|
|
8
8
|
"contributors": [
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"async-mqtt": "^2.6.3",
|
|
82
82
|
"fakegato-history": "^0.6.5",
|
|
83
83
|
"homebridge-lib": "^7.0.9",
|
|
84
|
-
"node-switchbot": "^3.
|
|
84
|
+
"node-switchbot": "^3.1.1",
|
|
85
85
|
"rxjs": "^7.8.1"
|
|
86
86
|
},
|
|
87
87
|
"devDependencies": {
|
|
@@ -97,12 +97,12 @@
|
|
|
97
97
|
"eslint": "^9.12.0",
|
|
98
98
|
"eslint-plugin-format": "^0.1.2",
|
|
99
99
|
"homebridge": "^1.8.4",
|
|
100
|
-
"homebridge-config-ui-x": "4.
|
|
100
|
+
"homebridge-config-ui-x": "4.61.0",
|
|
101
101
|
"nodemon": "^3.1.7",
|
|
102
102
|
"npm-check-updates": "^17.1.3",
|
|
103
103
|
"shx": "^0.3.4",
|
|
104
104
|
"ts-node": "^10.9.2",
|
|
105
|
-
"typedoc": "^0.26.
|
|
105
|
+
"typedoc": "^0.26.9",
|
|
106
106
|
"typescript": "^5.6.3",
|
|
107
107
|
"vitest": "^2.1.2"
|
|
108
108
|
},
|
package/src/device/device.ts
CHANGED
|
@@ -8,7 +8,7 @@ import type { MqttClient } from 'mqtt'
|
|
|
8
8
|
import type { ad, bodyChange, device, deviceStatus, deviceStatusRequest, pushResponse } from 'node-switchbot'
|
|
9
9
|
|
|
10
10
|
import type { SwitchBotPlatform } from '../platform.js'
|
|
11
|
-
import type { blindTiltConfig, botConfig, ceilingLightConfig, colorBulbConfig, contactConfig, curtainConfig, devicesConfig, hubConfig, humidifierConfig, indoorOutdoorSensorConfig, lockConfig, meterConfig, motionConfig, stripLightConfig, SwitchBotPlatformConfig, waterDetectorConfig } from '../settings.js'
|
|
11
|
+
import type { blindTiltConfig, botConfig, ceilingLightConfig, colorBulbConfig, contactConfig, curtainConfig, devicesConfig, hubConfig, humidifierConfig, indoorOutdoorSensorConfig, lockConfig, meterConfig, motionConfig, plugConfig, stripLightConfig, SwitchBotPlatformConfig, waterDetectorConfig } from '../settings.js'
|
|
12
12
|
|
|
13
13
|
import { hostname } from 'node:os'
|
|
14
14
|
|
|
@@ -188,7 +188,7 @@ export abstract class deviceBase {
|
|
|
188
188
|
case 'MeterPlus':
|
|
189
189
|
deviceSpecificConfig = device as meterConfig
|
|
190
190
|
break
|
|
191
|
-
case '
|
|
191
|
+
case 'WoIOSensor':
|
|
192
192
|
deviceSpecificConfig = device as indoorOutdoorSensorConfig
|
|
193
193
|
break
|
|
194
194
|
case 'Humidifier':
|
|
@@ -210,6 +210,11 @@ export abstract class deviceBase {
|
|
|
210
210
|
case 'Water Detector':
|
|
211
211
|
deviceSpecificConfig = device as waterDetectorConfig
|
|
212
212
|
break
|
|
213
|
+
case 'Plug':
|
|
214
|
+
case 'Plug Mini (US)':
|
|
215
|
+
case 'Plug Mini (JP)':
|
|
216
|
+
deviceSpecificConfig = device as plugConfig
|
|
217
|
+
break
|
|
213
218
|
case 'Color Bulb':
|
|
214
219
|
deviceSpecificConfig = device as colorBulbConfig
|
|
215
220
|
break
|
|
@@ -220,11 +225,11 @@ export abstract class deviceBase {
|
|
|
220
225
|
case 'Ceiling Light Pro':
|
|
221
226
|
deviceSpecificConfig = device as ceilingLightConfig
|
|
222
227
|
break
|
|
223
|
-
case 'Lock':
|
|
224
|
-
case 'Lock Pro':
|
|
228
|
+
case 'Smart Lock':
|
|
229
|
+
case 'Smart Lock Pro':
|
|
225
230
|
deviceSpecificConfig = device as lockConfig
|
|
226
231
|
break
|
|
227
|
-
case '
|
|
232
|
+
case 'Hub 2':
|
|
228
233
|
deviceSpecificConfig = device as hubConfig
|
|
229
234
|
break
|
|
230
235
|
default:
|
|
@@ -512,6 +517,18 @@ export abstract class deviceBase {
|
|
|
512
517
|
bleModelName: SwitchBotBLEModelName.Curtain3,
|
|
513
518
|
bleModelFriendlyName: SwitchBotBLEModelFriendlyName.Curtain3,
|
|
514
519
|
},
|
|
520
|
+
'WoRollerShade': {
|
|
521
|
+
model: SwitchBotModel.Curtain3,
|
|
522
|
+
bleModel: SwitchBotBLEModel.Curtain3,
|
|
523
|
+
bleModelName: SwitchBotBLEModelName.Curtain3,
|
|
524
|
+
bleModelFriendlyName: SwitchBotBLEModelFriendlyName.Curtain3,
|
|
525
|
+
},
|
|
526
|
+
'Roller Shade': {
|
|
527
|
+
model: SwitchBotModel.Curtain3,
|
|
528
|
+
bleModel: SwitchBotBLEModel.Curtain3,
|
|
529
|
+
bleModelName: SwitchBotBLEModelName.Curtain3,
|
|
530
|
+
bleModelFriendlyName: SwitchBotBLEModelFriendlyName.Curtain3,
|
|
531
|
+
},
|
|
515
532
|
'Blind Tilt': {
|
|
516
533
|
model: SwitchBotModel.BlindTilt,
|
|
517
534
|
bleModel: SwitchBotBLEModel.BlindTilt,
|
|
@@ -560,6 +577,12 @@ export abstract class deviceBase {
|
|
|
560
577
|
bleModelName: SwitchBotBLEModelName.Unknown,
|
|
561
578
|
bleModelFriendlyName: SwitchBotBLEModelFriendlyName.Unknown,
|
|
562
579
|
},
|
|
580
|
+
'K10+ Pro': {
|
|
581
|
+
model: SwitchBotModel.K10Pro,
|
|
582
|
+
bleModel: SwitchBotBLEModel.Unknown,
|
|
583
|
+
bleModelName: SwitchBotBLEModelName.Unknown,
|
|
584
|
+
bleModelFriendlyName: SwitchBotBLEModelFriendlyName.Unknown,
|
|
585
|
+
},
|
|
563
586
|
'WoSweeper': {
|
|
564
587
|
model: SwitchBotModel.WoSweeper,
|
|
565
588
|
bleModel: SwitchBotBLEModel.Unknown,
|
package/src/platform.ts
CHANGED
|
@@ -511,7 +511,7 @@ export class SwitchBotPlatform implements DynamicPlatformPlugin {
|
|
|
511
511
|
}
|
|
512
512
|
|
|
513
513
|
private async handleDevices(deviceLists: any[]) {
|
|
514
|
-
if (!this.config.options?.devices) {
|
|
514
|
+
if (!this.config.options?.devices && !this.config.options?.deviceConfig) {
|
|
515
515
|
await this.debugLog(`SwitchBot Device Config Not Set: ${JSON.stringify(this.config.options?.devices)}`)
|
|
516
516
|
if (deviceLists.length === 0) {
|
|
517
517
|
await this.debugLog('SwitchBot API Has No Devices With Cloud Services Enabled')
|
|
@@ -525,7 +525,7 @@ export class SwitchBotPlatform implements DynamicPlatformPlugin {
|
|
|
525
525
|
}
|
|
526
526
|
}
|
|
527
527
|
}
|
|
528
|
-
} else {
|
|
528
|
+
} else if (this.config.options?.devices || this.config.options?.deviceConfig) {
|
|
529
529
|
await this.debugLog(`SwitchBot Device Config Set: ${JSON.stringify(this.config.options?.devices)}`)
|
|
530
530
|
|
|
531
531
|
// Step 1: Check and assign configDeviceType to deviceType if deviceType is not present
|
|
@@ -546,7 +546,7 @@ export class SwitchBotPlatform implements DynamicPlatformPlugin {
|
|
|
546
546
|
// Wait for all promises to resolve
|
|
547
547
|
const devicesWithTypeConfig = (await Promise.all(devicesWithTypeConfigPromises)).filter(device => device !== null) // Filter out skipped devices
|
|
548
548
|
|
|
549
|
-
const devices = this.mergeByDeviceId(this.config.options.devices, devicesWithTypeConfig)
|
|
549
|
+
const devices = this.mergeByDeviceId(this.config.options.devices ?? [], devicesWithTypeConfig ?? [])
|
|
550
550
|
|
|
551
551
|
await this.debugLog(`SwitchBot Devices: ${JSON.stringify(devices)}`)
|
|
552
552
|
|
|
@@ -564,19 +564,44 @@ export class SwitchBotPlatform implements DynamicPlatformPlugin {
|
|
|
564
564
|
}
|
|
565
565
|
|
|
566
566
|
private async handleIRDevices(irDeviceLists: any[]) {
|
|
567
|
-
if (!this.config.options?.irdevices) {
|
|
567
|
+
if (!this.config.options?.irdevices && !this.config.options?.irdeviceConfig) {
|
|
568
568
|
await this.debugLog(`IR Device Config Not Set: ${JSON.stringify(this.config.options?.irdevices)}`)
|
|
569
569
|
for (const device of irDeviceLists) {
|
|
570
570
|
if (device.remoteType) {
|
|
571
571
|
await this.createIRDevice(device)
|
|
572
572
|
}
|
|
573
573
|
}
|
|
574
|
-
} else {
|
|
574
|
+
} else if (this.config.options?.irdevices || this.config.options?.irdeviceConfig) {
|
|
575
575
|
await this.debugLog(`IR Device Config Set: ${JSON.stringify(this.config.options?.irdevices)}`)
|
|
576
|
-
|
|
576
|
+
|
|
577
|
+
// Step 1: Check and assign configRemoteType to remoteType if remoteType is not present
|
|
578
|
+
const devicesWithTypeConfigPromises = irDeviceLists.map(async (device) => {
|
|
579
|
+
if (!device.remoteType && device.configRemoteType) {
|
|
580
|
+
device.remoteType = device.configRemoteType
|
|
581
|
+
await this.warnLog(`API is displaying no remoteType: ${device.remoteType}, So using configRemoteType: ${device.configRemoteType}`)
|
|
582
|
+
} else if (!device.remoteType && !device.configDeviceName) {
|
|
583
|
+
await this.errorLog('No remoteType or configRemoteType for device. No device will be created.')
|
|
584
|
+
return null // Skip this device
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
// Retrieve remoteTypeConfig for each device and merge it
|
|
588
|
+
const remoteTypeConfig = this.config.options?.irdeviceConfig?.[device.remoteType] || {}
|
|
589
|
+
return Object.assign({}, device, remoteTypeConfig)
|
|
590
|
+
})
|
|
591
|
+
// Wait for all promises to resolve
|
|
592
|
+
const devicesWithRemoteTypeConfig = (await Promise.all(devicesWithTypeConfigPromises)).filter(device => device !== null) // Filter out skipped devices
|
|
593
|
+
|
|
594
|
+
const devices = this.mergeByDeviceId(this.config.options.irdevices ?? [], devicesWithRemoteTypeConfig ?? [])
|
|
595
|
+
|
|
577
596
|
await this.debugLog(`IR Devices: ${JSON.stringify(devices)}`)
|
|
578
597
|
for (const device of devices) {
|
|
579
|
-
|
|
598
|
+
const irdeviceIdConfig = this.config.options?.irdevices?.[device.deviceId] || {}
|
|
599
|
+
const irdeviceWithConfig = Object.assign({}, device, irdeviceIdConfig)
|
|
600
|
+
|
|
601
|
+
if (device.configDeviceName) {
|
|
602
|
+
device.deviceName = device.configDeviceName
|
|
603
|
+
}
|
|
604
|
+
await this.createIRDevice(irdeviceWithConfig)
|
|
580
605
|
}
|
|
581
606
|
}
|
|
582
607
|
}
|
|
@@ -621,6 +646,7 @@ export class SwitchBotPlatform implements DynamicPlatformPlugin {
|
|
|
621
646
|
'Smart Lock Pro': this.createLock.bind(this),
|
|
622
647
|
'Color Bulb': this.createColorBulb.bind(this),
|
|
623
648
|
'K10+': this.createRobotVacuumCleaner.bind(this),
|
|
649
|
+
'K10+ Pro': this.createRobotVacuumCleaner.bind(this),
|
|
624
650
|
'WoSweeper': this.createRobotVacuumCleaner.bind(this),
|
|
625
651
|
'WoSweeperMini': this.createRobotVacuumCleaner.bind(this),
|
|
626
652
|
'Robot Vacuum Cleaner S1': this.createRobotVacuumCleaner.bind(this),
|
package/src/settings.ts
CHANGED
|
@@ -35,6 +35,7 @@ export interface options {
|
|
|
35
35
|
devices?: devicesConfig[]
|
|
36
36
|
deviceConfig?: { [deviceType: string]: devicesConfig }
|
|
37
37
|
irdevices?: irDevicesConfig[]
|
|
38
|
+
irdeviceConfig?: { [remoteType: string]: irDevicesConfig }
|
|
38
39
|
allowInvalidCharacters?: boolean
|
|
39
40
|
mqttURL?: string
|
|
40
41
|
mqttOptions?: IClientOptions
|
|
@@ -52,7 +53,7 @@ export interface options {
|
|
|
52
53
|
logging?: string
|
|
53
54
|
};
|
|
54
55
|
|
|
55
|
-
export type devicesConfig = botConfig | meterConfig | indoorOutdoorSensorConfig | humidifierConfig | curtainConfig | blindTiltConfig | contactConfig | motionConfig | waterDetectorConfig | colorBulbConfig | stripLightConfig | ceilingLightConfig | lockConfig | hubConfig
|
|
56
|
+
export type devicesConfig = botConfig | meterConfig | indoorOutdoorSensorConfig | humidifierConfig | curtainConfig | blindTiltConfig | contactConfig | motionConfig | waterDetectorConfig | plugConfig | colorBulbConfig | stripLightConfig | ceilingLightConfig | lockConfig | hubConfig
|
|
56
57
|
|
|
57
58
|
export interface BaseDeviceConfig extends device {
|
|
58
59
|
bleMac?: string
|
|
@@ -103,7 +104,7 @@ export interface meterConfig extends BaseDeviceConfig {
|
|
|
103
104
|
};
|
|
104
105
|
|
|
105
106
|
export interface indoorOutdoorSensorConfig extends BaseDeviceConfig {
|
|
106
|
-
configDeviceType: '
|
|
107
|
+
configDeviceType: 'WoIOSensor'
|
|
107
108
|
hide_temperature?: boolean
|
|
108
109
|
convertUnitTo?: string
|
|
109
110
|
hide_humidity?: boolean
|
|
@@ -117,7 +118,7 @@ export interface humidifierConfig extends BaseDeviceConfig {
|
|
|
117
118
|
};
|
|
118
119
|
|
|
119
120
|
export interface curtainConfig extends BaseDeviceConfig {
|
|
120
|
-
configDeviceType: 'Curtain' | 'Curtain3'
|
|
121
|
+
configDeviceType: 'Curtain' | 'Curtain3' | 'WoRollerShade' | 'Roller Shade'
|
|
121
122
|
disable_group?: boolean
|
|
122
123
|
hide_lightsensor?: boolean
|
|
123
124
|
set_minLux?: number
|
|
@@ -166,6 +167,10 @@ export interface waterDetectorConfig extends BaseDeviceConfig {
|
|
|
166
167
|
dry?: boolean
|
|
167
168
|
};
|
|
168
169
|
|
|
170
|
+
export interface plugConfig extends BaseDeviceConfig {
|
|
171
|
+
configDeviceType: 'Plug' | 'Plug Mini (US)' | 'Plug Mini (JP)'
|
|
172
|
+
};
|
|
173
|
+
|
|
169
174
|
export interface colorBulbConfig extends BaseDeviceConfig {
|
|
170
175
|
configDeviceType: 'Color Bulb'
|
|
171
176
|
set_minStep?: number
|
|
@@ -185,13 +190,13 @@ export interface ceilingLightConfig extends BaseDeviceConfig {
|
|
|
185
190
|
};
|
|
186
191
|
|
|
187
192
|
export interface lockConfig extends BaseDeviceConfig {
|
|
188
|
-
configDeviceType: 'Lock' | 'Lock Pro'
|
|
193
|
+
configDeviceType: 'Smart Lock' | 'Smart Lock Pro'
|
|
189
194
|
hide_contactsensor?: boolean
|
|
190
195
|
activate_latchbutton?: boolean
|
|
191
196
|
};
|
|
192
197
|
|
|
193
198
|
export interface hubConfig extends BaseDeviceConfig {
|
|
194
|
-
configDeviceType: '
|
|
199
|
+
configDeviceType: 'Hub 2'
|
|
195
200
|
hide_temperature?: boolean
|
|
196
201
|
convertUnitTo?: string
|
|
197
202
|
hide_humidity?: boolean
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
#!/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* This scripts queries the npm registry to pull out the latest version for a given tag.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
const fs = require("fs");
|
|
8
|
-
const semver = require("semver");
|
|
9
|
-
const child_process = require("child_process");
|
|
10
|
-
const assert = require("assert");
|
|
11
|
-
|
|
12
|
-
const BRANCH_VERSION_PATTERN = /^([A-Za-z]*)-(\d+.\d+.\d+)$/
|
|
13
|
-
|
|
14
|
-
// Load the contents of the package.json file
|
|
15
|
-
const packageJSON = JSON.parse(fs.readFileSync("package.json", "utf8"));
|
|
16
|
-
|
|
17
|
-
let refArgument = process.argv[2];
|
|
18
|
-
let tagArgument = process.argv[3] || "latest";
|
|
19
|
-
|
|
20
|
-
if (refArgument == null) {
|
|
21
|
-
console.error("ref argument is missing");
|
|
22
|
-
console.error("Usage: npm-version-script.cjs <ref> [tag]");
|
|
23
|
-
process.exit(1);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Queries the NPM registry for the latest version for the provided tag.
|
|
28
|
-
* @param tag The tag to query for.
|
|
29
|
-
* @returns {string} Returns the version.
|
|
30
|
-
*/
|
|
31
|
-
function getTagVersionFromNpm(tag) {
|
|
32
|
-
try {
|
|
33
|
-
return child_process.execSync(`npm info ${packageJSON.name} version --tag="${tag}"`).toString("utf8").trim();
|
|
34
|
-
} catch (e) {
|
|
35
|
-
throw e;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
function desiredTargetVersion(ref) {
|
|
40
|
-
// ref is a GitHub action ref string
|
|
41
|
-
if (ref.startsWith("refs/pull/")) {
|
|
42
|
-
throw Error("The version script was executed inside a PR!");
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
assert(ref.startsWith("refs/heads/"))
|
|
46
|
-
let branchName = ref.slice("refs/heads/".length);
|
|
47
|
-
|
|
48
|
-
let results = branchName.match(BRANCH_VERSION_PATTERN);
|
|
49
|
-
if (results != null) {
|
|
50
|
-
if (results[1] !== tagArgument) {
|
|
51
|
-
console.warn(`The base branch name (${results[1]}) differs from the tag name ${tagArgument}`);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return results[2];
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// legacy mode were we use the `betaVersion` property in the package.json
|
|
58
|
-
if (branchName === "beta" && packageJSON.betaVersion) {
|
|
59
|
-
return packageJSON.betaVersion
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
throw new Error("Malformed branch name for ref: " + ref + ". Can't derive the base version. Use a branch name like: beta-x.x.x!");
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// derive the base version from the branch ref
|
|
66
|
-
const baseVersion = desiredTargetVersion(refArgument);
|
|
67
|
-
|
|
68
|
-
// query the npm registry for the latest version of the provided tag name
|
|
69
|
-
const latestReleasedVersion = getTagVersionFromNpm(tagArgument); // e.g. 0.7.0-beta.12
|
|
70
|
-
const latestReleaseBase = semver.inc(latestReleasedVersion, "patch"); // will produce 0.7.0 (removing the preid, needed for the equality check below)
|
|
71
|
-
|
|
72
|
-
let publishTag;
|
|
73
|
-
if (semver.eq(baseVersion, latestReleaseBase)) { // check if we are releasing another version for the latest beta
|
|
74
|
-
publishTag = latestReleasedVersion; // set the current latest beta to be incremented
|
|
75
|
-
} else {
|
|
76
|
-
publishTag = baseVersion; // start of with a new beta version
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
// save the package.json
|
|
80
|
-
packageJSON.version = publishTag;
|
|
81
|
-
fs.writeFileSync("package.json", JSON.stringify(packageJSON, null, 2));
|