@switchbot/homebridge-switchbot 1.12.7-beta.5 → 1.12.7
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 +12 -0
- package/config.schema.json +6 -6
- package/dist/device/bot.js +2 -2
- package/dist/device/bot.js.map +1 -1
- package/dist/device/colorbulb.d.ts +0 -6
- package/dist/device/colorbulb.d.ts.map +1 -1
- package/dist/device/colorbulb.js +74 -89
- package/dist/device/colorbulb.js.map +1 -1
- package/dist/device/curtain.js +1 -1
- package/dist/device/curtain.js.map +1 -1
- package/dist/device/humidifier.js +2 -2
- package/dist/device/humidifier.js.map +1 -1
- package/dist/device/lock.d.ts.map +1 -1
- package/dist/device/lock.js +1 -21
- package/dist/device/lock.js.map +1 -1
- package/dist/device/meter.d.ts +0 -1
- package/dist/device/meter.d.ts.map +1 -1
- package/dist/device/meter.js +1 -14
- package/dist/device/meter.js.map +1 -1
- package/dist/device/meterplus.d.ts +76 -0
- package/dist/device/meterplus.d.ts.map +1 -0
- package/dist/device/meterplus.js +464 -0
- package/dist/device/meterplus.js.map +1 -0
- package/dist/device/plug.js +1 -1
- package/dist/device/plug.js.map +1 -1
- package/dist/device/striplight.d.ts +90 -0
- package/dist/device/striplight.d.ts.map +1 -0
- package/dist/device/striplight.js +487 -0
- package/dist/device/striplight.js.map +1 -0
- package/dist/platform.d.ts +2 -0
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +119 -9
- package/dist/platform.js.map +1 -1
- package/package.json +76 -76
- package/src/device/bot.ts +2 -2
- package/src/device/colorbulb.ts +74 -89
- package/src/device/curtain.ts +1 -1
- package/src/device/humidifier.ts +2 -2
- package/src/device/lock.ts +1 -21
- package/src/device/meter.ts +1 -13
- package/src/device/meterplus.ts +518 -0
- package/src/device/plug.ts +1 -1
- package/src/device/striplight.ts +583 -0
- package/src/platform.ts +127 -9
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { AxiosResponse } from 'axios';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { SwitchBotPlatform } from '../platform';
|
|
4
|
+
import { Service, PlatformAccessory, CharacteristicValue, ControllerConstructor, Controller, ControllerServiceMap } from 'homebridge';
|
|
5
|
+
import { device, devicesConfig, switchbot, deviceStatusResponse, deviceStatus } from '../settings';
|
|
6
|
+
/**
|
|
7
|
+
* Platform Accessory
|
|
8
|
+
* An instance of this class is created for each accessory your platform registers
|
|
9
|
+
* Each accessory may expose multiple services of different service types.
|
|
10
|
+
*/
|
|
11
|
+
export declare class StripLight {
|
|
12
|
+
private readonly platform;
|
|
13
|
+
private accessory;
|
|
14
|
+
device: device & devicesConfig;
|
|
15
|
+
lightBulbService: Service;
|
|
16
|
+
On: CharacteristicValue;
|
|
17
|
+
OnCached: CharacteristicValue;
|
|
18
|
+
Hue: CharacteristicValue;
|
|
19
|
+
HueCached: CharacteristicValue;
|
|
20
|
+
Saturation: CharacteristicValue;
|
|
21
|
+
SaturationCached: CharacteristicValue;
|
|
22
|
+
Brightness: CharacteristicValue;
|
|
23
|
+
BrightnessCached: CharacteristicValue;
|
|
24
|
+
power: deviceStatus['power'];
|
|
25
|
+
color: deviceStatus['color'];
|
|
26
|
+
brightness: deviceStatus['brightness'];
|
|
27
|
+
deviceStatus: deviceStatusResponse;
|
|
28
|
+
switchbot: switchbot;
|
|
29
|
+
set_minStep?: number;
|
|
30
|
+
deviceLogging: string;
|
|
31
|
+
deviceRefreshRate: number;
|
|
32
|
+
adaptiveLightingShift?: number;
|
|
33
|
+
AdaptiveLightingController?: ControllerConstructor | Controller<ControllerServiceMap>;
|
|
34
|
+
minKelvin: number;
|
|
35
|
+
maxKelvin: number;
|
|
36
|
+
cacheKelvin: number;
|
|
37
|
+
colorBulbUpdateInProgress: boolean;
|
|
38
|
+
doColorBulbUpdate: Subject<void>;
|
|
39
|
+
constructor(platform: SwitchBotPlatform, accessory: PlatformAccessory, device: device & devicesConfig);
|
|
40
|
+
parseStatus(): Promise<void>;
|
|
41
|
+
refreshStatus(): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Pushes the requested changes to the SwitchBot API
|
|
44
|
+
* deviceType commandType Command command parameter Description
|
|
45
|
+
* Strip Light - "command" "turnOn" "default" = set to ON state |
|
|
46
|
+
* Strip Light - "command" "turnOff" "default" = set to OFF state |
|
|
47
|
+
* Strip Light - "command" "toggle" "default" = toggle state |
|
|
48
|
+
* Strip Light - "command" "setBrightness" "`{1-100}`" = set brightness |
|
|
49
|
+
* Strip Light - "command" "setColor" "`"{0-255}:{0-255}:{0-255}"`" = set RGB color value |
|
|
50
|
+
*
|
|
51
|
+
*/
|
|
52
|
+
pushChanges(): Promise<void>;
|
|
53
|
+
pushHueSaturationChanges(): Promise<void>;
|
|
54
|
+
pushBrightnessChanges(): Promise<void>;
|
|
55
|
+
updateHomeKitCharacteristics(): Promise<void>;
|
|
56
|
+
apiError(e: any): void;
|
|
57
|
+
statusCode(push: AxiosResponse<{
|
|
58
|
+
statusCode: number;
|
|
59
|
+
}>): void;
|
|
60
|
+
offlineOff(): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Handle requests to set the value of the "On" characteristic
|
|
63
|
+
*/
|
|
64
|
+
OnSet(value: CharacteristicValue): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Handle requests to set the value of the "Brightness" characteristic
|
|
67
|
+
*/
|
|
68
|
+
BrightnessSet(value: CharacteristicValue): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Handle requests to set the value of the "Hue" characteristic
|
|
71
|
+
*/
|
|
72
|
+
HueSet(value: CharacteristicValue): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Handle requests to set the value of the "Saturation" characteristic
|
|
75
|
+
*/
|
|
76
|
+
SaturationSet(value: CharacteristicValue): Promise<void>;
|
|
77
|
+
config(device: device & devicesConfig): Promise<void>;
|
|
78
|
+
refreshRate(device: device & devicesConfig): Promise<void>;
|
|
79
|
+
logs(device: device & devicesConfig): Promise<void>;
|
|
80
|
+
minStep(device: device & devicesConfig): number;
|
|
81
|
+
/**
|
|
82
|
+
* Logging for Device
|
|
83
|
+
*/
|
|
84
|
+
infoLog(...log: any[]): void;
|
|
85
|
+
warnLog(...log: any[]): void;
|
|
86
|
+
errorLog(...log: any[]): void;
|
|
87
|
+
debugLog(...log: any[]): void;
|
|
88
|
+
enablingDeviceLogging(): boolean;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=striplight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"striplight.d.ts","sourceRoot":"","sources":["../../src/device/striplight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAY,OAAO,EAAE,MAAM,MAAM,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACtI,OAAO,EAAa,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,oBAAoB,EAA2B,YAAY,EAAE,MAAM,aAAa,CAAC;AAEvI;;;;GAIG;AACH,qBAAa,UAAU;IAyCT,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAAqB,OAAO,CAAC,SAAS;IAA4B,MAAM,EAAE,MAAM,GAAG,aAAa;IAvCrI,gBAAgB,EAAG,OAAO,CAAC;IAG3B,EAAE,EAAG,mBAAmB,CAAC;IACzB,QAAQ,EAAG,mBAAmB,CAAC;IAC/B,GAAG,EAAG,mBAAmB,CAAC;IAC1B,SAAS,EAAG,mBAAmB,CAAC;IAChC,UAAU,EAAG,mBAAmB,CAAC;IACjC,gBAAgB,EAAG,mBAAmB,CAAC;IACvC,UAAU,EAAG,mBAAmB,CAAC;IACjC,gBAAgB,EAAG,mBAAmB,CAAC;IAGvC,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IAC7B,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IAC7B,UAAU,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC;IACvC,YAAY,EAAG,oBAAoB,CAAC;IAGpC,SAAS,EAAG,SAAS,CAAC;IAGtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAG,MAAM,CAAC;IACvB,iBAAiB,EAAG,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAG/B,0BAA0B,CAAC,EAAE,qBAAqB,GAAG,UAAU,CAAC,oBAAoB,CAAC,CAAC;IACtF,SAAS,EAAG,MAAM,CAAC;IACnB,SAAS,EAAG,MAAM,CAAC;IAGnB,WAAW,EAAG,MAAM,CAAC;IAGrB,yBAAyB,EAAG,OAAO,CAAC;IACpC,iBAAiB,EAAG,OAAO,CAAC,IAAI,CAAC,CAAC;gBAEL,QAAQ,EAAE,iBAAiB,EAAU,SAAS,EAAE,iBAAiB,EAAS,MAAM,EAAE,MAAM,GAAG,aAAa;IAsH/H,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAqC5B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBpC;;;;;;;;;OASG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAgD5B,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IA4CzC,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAqCtC,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC;IA2BnD,QAAQ,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI;IAQtB,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;IAqCvD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjC;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtD;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9D;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvD;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBrD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAU1D,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBzD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM;IAS/C;;OAEG;IACH,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAM5B,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAM5B,QAAQ,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAM7B,QAAQ,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAU7B,qBAAqB,IAAI,OAAO;CAGjC"}
|
|
@@ -0,0 +1,487 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StripLight = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
const operators_1 = require("rxjs/operators");
|
|
6
|
+
const settings_1 = require("../settings");
|
|
7
|
+
/**
|
|
8
|
+
* Platform Accessory
|
|
9
|
+
* An instance of this class is created for each accessory your platform registers
|
|
10
|
+
* Each accessory may expose multiple services of different service types.
|
|
11
|
+
*/
|
|
12
|
+
class StripLight {
|
|
13
|
+
constructor(platform, accessory, device) {
|
|
14
|
+
this.platform = platform;
|
|
15
|
+
this.accessory = accessory;
|
|
16
|
+
this.device = device;
|
|
17
|
+
// default placeholders
|
|
18
|
+
this.logs(device);
|
|
19
|
+
this.refreshRate(device);
|
|
20
|
+
this.config(device);
|
|
21
|
+
if (this.On === undefined) {
|
|
22
|
+
this.On = false;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
this.On = this.accessory.context.On;
|
|
26
|
+
}
|
|
27
|
+
this.Hue = 0;
|
|
28
|
+
this.Brightness = 0;
|
|
29
|
+
this.Saturation = 0;
|
|
30
|
+
this.minKelvin = 2000;
|
|
31
|
+
this.maxKelvin = 9000;
|
|
32
|
+
// this is subject we use to track when we need to POST changes to the SwitchBot API
|
|
33
|
+
this.doColorBulbUpdate = new rxjs_1.Subject();
|
|
34
|
+
this.colorBulbUpdateInProgress = false;
|
|
35
|
+
// Retrieve initial values and updateHomekit
|
|
36
|
+
this.refreshStatus();
|
|
37
|
+
// set accessory information
|
|
38
|
+
accessory
|
|
39
|
+
.getService(this.platform.Service.AccessoryInformation)
|
|
40
|
+
.setCharacteristic(this.platform.Characteristic.Manufacturer, 'SwitchBot')
|
|
41
|
+
.setCharacteristic(this.platform.Characteristic.Model, 'W1701100')
|
|
42
|
+
.setCharacteristic(this.platform.Characteristic.SerialNumber, device.deviceId);
|
|
43
|
+
// get the Lightbulb service if it exists, otherwise create a new Lightbulb service
|
|
44
|
+
// you can create multiple services for each accessory
|
|
45
|
+
(this.lightBulbService = accessory.getService(this.platform.Service.Lightbulb) || accessory.addService(this.platform.Service.Lightbulb)),
|
|
46
|
+
`${accessory.displayName} Strip Light`;
|
|
47
|
+
// To avoid "Cannot add a Service with the same UUID another Service without also defining a unique 'subtype' property." error,
|
|
48
|
+
// when creating multiple services of the same type, you need to use the following syntax to specify a name and subtype id:
|
|
49
|
+
// accessory.getService('NAME') ?? accessory.addService(this.platform.Service.Outlet, 'NAME', 'USER_DEFINED_SUBTYPE');
|
|
50
|
+
// set the service name, this is what is displayed as the default name on the Home app
|
|
51
|
+
// in this example we are using the name we stored in the `accessory.context` in the `discoverDevices` method.
|
|
52
|
+
this.lightBulbService.setCharacteristic(this.platform.Characteristic.Name, accessory.displayName);
|
|
53
|
+
// handle on / off events using the On characteristic
|
|
54
|
+
this.lightBulbService.getCharacteristic(this.platform.Characteristic.On).onSet(this.OnSet.bind(this));
|
|
55
|
+
// handle Brightness events using the Brightness characteristic
|
|
56
|
+
this.lightBulbService
|
|
57
|
+
.getCharacteristic(this.platform.Characteristic.Brightness)
|
|
58
|
+
.setProps({
|
|
59
|
+
minStep: this.minStep(device),
|
|
60
|
+
minValue: 0,
|
|
61
|
+
maxValue: 100,
|
|
62
|
+
validValueRanges: [0, 100],
|
|
63
|
+
})
|
|
64
|
+
.onGet(() => {
|
|
65
|
+
return this.Brightness;
|
|
66
|
+
})
|
|
67
|
+
.onSet(this.BrightnessSet.bind(this));
|
|
68
|
+
// handle Hue events using the Hue characteristic
|
|
69
|
+
this.lightBulbService
|
|
70
|
+
.getCharacteristic(this.platform.Characteristic.Hue)
|
|
71
|
+
.setProps({
|
|
72
|
+
minValue: 0,
|
|
73
|
+
maxValue: 360,
|
|
74
|
+
validValueRanges: [0, 360],
|
|
75
|
+
})
|
|
76
|
+
.onGet(() => {
|
|
77
|
+
return this.Hue;
|
|
78
|
+
})
|
|
79
|
+
.onSet(this.HueSet.bind(this));
|
|
80
|
+
// handle Hue events using the Hue characteristic
|
|
81
|
+
this.lightBulbService
|
|
82
|
+
.getCharacteristic(this.platform.Characteristic.Saturation)
|
|
83
|
+
.setProps({
|
|
84
|
+
minValue: 0,
|
|
85
|
+
maxValue: 100,
|
|
86
|
+
validValueRanges: [0, 100],
|
|
87
|
+
})
|
|
88
|
+
.onGet(() => {
|
|
89
|
+
return this.Saturation;
|
|
90
|
+
})
|
|
91
|
+
.onSet(this.SaturationSet.bind(this));
|
|
92
|
+
// Update Homekit
|
|
93
|
+
this.updateHomeKitCharacteristics();
|
|
94
|
+
// Start an update interval
|
|
95
|
+
(0, rxjs_1.interval)(this.deviceRefreshRate * 1000)
|
|
96
|
+
.pipe((0, operators_1.skipWhile)(() => this.colorBulbUpdateInProgress))
|
|
97
|
+
.subscribe(async () => {
|
|
98
|
+
await this.refreshStatus();
|
|
99
|
+
});
|
|
100
|
+
// Watch for Bulb change events
|
|
101
|
+
// We put in a debounce of 100ms so we don't make duplicate calls
|
|
102
|
+
this.doColorBulbUpdate
|
|
103
|
+
.pipe((0, operators_1.tap)(() => {
|
|
104
|
+
this.colorBulbUpdateInProgress = true;
|
|
105
|
+
}), (0, operators_1.debounceTime)(this.platform.config.options.pushRate * 1000))
|
|
106
|
+
.subscribe(async () => {
|
|
107
|
+
try {
|
|
108
|
+
await this.pushChanges();
|
|
109
|
+
}
|
|
110
|
+
catch (e) {
|
|
111
|
+
this.errorLog(`Strip Light: ${this.accessory.displayName} failed pushChanges`);
|
|
112
|
+
if (this.deviceLogging.includes('debug')) {
|
|
113
|
+
this.errorLog(`Strip Light: ${this.accessory.displayName} failed pushChanges,` + ` Error Message: ${JSON.stringify(e.message)}`);
|
|
114
|
+
}
|
|
115
|
+
this.apiError(e);
|
|
116
|
+
}
|
|
117
|
+
this.colorBulbUpdateInProgress = false;
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
async parseStatus() {
|
|
121
|
+
switch (this.power) {
|
|
122
|
+
case 'on':
|
|
123
|
+
this.On = true;
|
|
124
|
+
break;
|
|
125
|
+
default:
|
|
126
|
+
this.On = false;
|
|
127
|
+
}
|
|
128
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} On: ${this.On}`);
|
|
129
|
+
// Brightness
|
|
130
|
+
this.Brightness = Number(this.brightness);
|
|
131
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} Brightness: ${this.Brightness}`);
|
|
132
|
+
// Color, Hue & Brightness
|
|
133
|
+
if (this.color) {
|
|
134
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} color: ${JSON.stringify(this.color)}`);
|
|
135
|
+
const [red, green, blue] = this.color.split(':');
|
|
136
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} red: ${JSON.stringify(red)}`);
|
|
137
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} green: ${JSON.stringify(green)}`);
|
|
138
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} blue: ${JSON.stringify(blue)}`);
|
|
139
|
+
const [hue, saturation] = (0, settings_1.rgb2hs)(Number(red), Number(green), Number(blue));
|
|
140
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} hs: ${JSON.stringify((0, settings_1.rgb2hs)(Number(red), Number(green), Number(blue)))}`);
|
|
141
|
+
// Hue
|
|
142
|
+
this.Hue = hue;
|
|
143
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} Hue: ${this.Hue}`);
|
|
144
|
+
// Saturation
|
|
145
|
+
this.Saturation = saturation;
|
|
146
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} Saturation: ${this.Saturation}`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
async refreshStatus() {
|
|
150
|
+
try {
|
|
151
|
+
this.deviceStatus = (await this.platform.axios.get(`${settings_1.DeviceURL}/${this.device.deviceId}/status`)).data;
|
|
152
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} refreshStatus: ${JSON.stringify(this.deviceStatus)}`);
|
|
153
|
+
this.power = this.deviceStatus.body.power;
|
|
154
|
+
this.color = this.deviceStatus.body.color;
|
|
155
|
+
this.brightness = this.deviceStatus.body.brightness;
|
|
156
|
+
this.parseStatus();
|
|
157
|
+
this.updateHomeKitCharacteristics();
|
|
158
|
+
}
|
|
159
|
+
catch (e) {
|
|
160
|
+
this.errorLog(`Strip Light: ${this.accessory.displayName} failed refreshStatus with OpenAPI Connection`);
|
|
161
|
+
if (this.deviceLogging.includes('debug')) {
|
|
162
|
+
this.errorLog(`Strip Light: ${this.accessory.displayName} failed refreshStatus with OpenAPI Connection,` +
|
|
163
|
+
` Error Message: ${JSON.stringify(e.message)}`);
|
|
164
|
+
}
|
|
165
|
+
this.apiError(e);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Pushes the requested changes to the SwitchBot API
|
|
170
|
+
* deviceType commandType Command command parameter Description
|
|
171
|
+
* Strip Light - "command" "turnOn" "default" = set to ON state |
|
|
172
|
+
* Strip Light - "command" "turnOff" "default" = set to OFF state |
|
|
173
|
+
* Strip Light - "command" "toggle" "default" = toggle state |
|
|
174
|
+
* Strip Light - "command" "setBrightness" "`{1-100}`" = set brightness |
|
|
175
|
+
* Strip Light - "command" "setColor" "`"{0-255}:{0-255}:{0-255}"`" = set RGB color value |
|
|
176
|
+
*
|
|
177
|
+
*/
|
|
178
|
+
async pushChanges() {
|
|
179
|
+
try {
|
|
180
|
+
if (this.On !== this.OnCached) {
|
|
181
|
+
// Push On Update
|
|
182
|
+
const payload = {
|
|
183
|
+
commandType: 'command',
|
|
184
|
+
parameter: 'default',
|
|
185
|
+
};
|
|
186
|
+
if (this.On) {
|
|
187
|
+
payload.command = 'turnOn';
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
payload.command = 'turnOff';
|
|
191
|
+
}
|
|
192
|
+
this.infoLog(`Strip Light: ${this.accessory.displayName} Sending request to SwitchBot API. command: ${payload.command},` +
|
|
193
|
+
` parameter: ${payload.parameter}, commandType: ${payload.commandType}`);
|
|
194
|
+
// Make the API request
|
|
195
|
+
const push = await this.platform.axios.post(`${settings_1.DeviceURL}/${this.device.deviceId}/commands`, payload);
|
|
196
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} pushChanges: ${JSON.stringify(push.data)}`);
|
|
197
|
+
this.statusCode(push);
|
|
198
|
+
this.OnCached = this.On;
|
|
199
|
+
this.accessory.context.On = this.OnCached;
|
|
200
|
+
}
|
|
201
|
+
// Push Brightness Update
|
|
202
|
+
if (this.On) {
|
|
203
|
+
await this.pushBrightnessChanges();
|
|
204
|
+
}
|
|
205
|
+
// Push Hue & Saturation Update
|
|
206
|
+
if (this.On) {
|
|
207
|
+
await this.pushHueSaturationChanges();
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
catch (e) {
|
|
211
|
+
this.errorLog(`Strip Light: ${this.accessory.displayName} failed pushChanges with OpenAPI Connection`);
|
|
212
|
+
if (this.deviceLogging.includes('debug')) {
|
|
213
|
+
this.errorLog(`Strip Light: ${this.accessory.displayName} failed pushChanges with OpenAPI Connection,` +
|
|
214
|
+
` Error Message: ${JSON.stringify(e.message)}`);
|
|
215
|
+
}
|
|
216
|
+
this.apiError(e);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
async pushHueSaturationChanges() {
|
|
220
|
+
try {
|
|
221
|
+
if (this.Hue !== this.HueCached || this.Saturation !== this.SaturationCached) {
|
|
222
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} Hue: ${JSON.stringify(this.Hue)}`);
|
|
223
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} Saturation: ${JSON.stringify(this.Saturation)}`);
|
|
224
|
+
const [red, green, blue] = (0, settings_1.hs2rgb)(Number(this.Hue), Number(this.Saturation));
|
|
225
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} rgb: ${JSON.stringify([red, green, blue])}`);
|
|
226
|
+
const payload = {
|
|
227
|
+
commandType: 'command',
|
|
228
|
+
command: 'setColor',
|
|
229
|
+
parameter: `${red}:${green}:${blue}`,
|
|
230
|
+
};
|
|
231
|
+
this.infoLog(`Strip Light: ${this.accessory.displayName} Sending request to SwitchBot API. command: ${payload.command},` +
|
|
232
|
+
` parameter: ${payload.parameter}, commandType: ${payload.commandType}`);
|
|
233
|
+
// Make the API request
|
|
234
|
+
const push = await this.platform.axios.post(`${settings_1.DeviceURL}/${this.device.deviceId}/commands`, payload);
|
|
235
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} pushChanges: ${JSON.stringify(push.data)}`);
|
|
236
|
+
this.statusCode(push);
|
|
237
|
+
this.HueCached = this.Hue;
|
|
238
|
+
this.SaturationCached = this.Saturation;
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} No Changes.` +
|
|
242
|
+
`Hue: ${this.Hue}, HueCached: ${this.HueCached}, Saturation: ${this.Saturation}, SaturationCached: ${this.SaturationCached}`);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
catch (e) {
|
|
246
|
+
this.errorLog(`Strip Light: ${this.accessory.displayName} failed pushChanges with OpenAPI Connection`);
|
|
247
|
+
if (this.deviceLogging.includes('debug')) {
|
|
248
|
+
this.errorLog(`Strip Light: ${this.accessory.displayName} failed pushChanges with OpenAPI Connection,` +
|
|
249
|
+
` Error Message: ${JSON.stringify(e.message)}`);
|
|
250
|
+
}
|
|
251
|
+
this.apiError(e);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
async pushBrightnessChanges() {
|
|
255
|
+
try {
|
|
256
|
+
if (this.Brightness !== this.BrightnessCached) {
|
|
257
|
+
const payload = {
|
|
258
|
+
commandType: 'command',
|
|
259
|
+
command: 'setBrightness',
|
|
260
|
+
parameter: `${this.Brightness}`,
|
|
261
|
+
};
|
|
262
|
+
this.infoLog(`Strip Light: ${this.accessory.displayName} Sending request to SwitchBot API. command: ${payload.command},` +
|
|
263
|
+
` parameter: ${payload.parameter}, commandType: ${payload.commandType}`);
|
|
264
|
+
// Make the API request
|
|
265
|
+
const push = await this.platform.axios.post(`${settings_1.DeviceURL}/${this.device.deviceId}/commands`, payload);
|
|
266
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} pushChanges: ${JSON.stringify(push.data)}`);
|
|
267
|
+
this.statusCode(push);
|
|
268
|
+
this.BrightnessCached = this.Brightness;
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} No Changes.` +
|
|
272
|
+
`Brightness: ${this.Brightness}, BrightnessCached: ${this.BrightnessCached}`);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
catch (e) {
|
|
276
|
+
this.errorLog(`Strip Light: ${this.accessory.displayName} failed pushChanges with OpenAPI Connection`);
|
|
277
|
+
if (this.deviceLogging.includes('debug')) {
|
|
278
|
+
this.errorLog(`Strip Light: ${this.accessory.displayName} failed pushChanges with OpenAPI Connection,` +
|
|
279
|
+
` Error Message: ${JSON.stringify(e.message)}`);
|
|
280
|
+
}
|
|
281
|
+
this.apiError(e);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
async updateHomeKitCharacteristics() {
|
|
285
|
+
if (this.On === undefined) {
|
|
286
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} On: ${this.On}`);
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
this.lightBulbService.updateCharacteristic(this.platform.Characteristic.On, this.On);
|
|
290
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} updateCharacteristic On: ${this.On}`);
|
|
291
|
+
}
|
|
292
|
+
if (this.Brightness === undefined) {
|
|
293
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} Brightness: ${this.Brightness}`);
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
this.lightBulbService.updateCharacteristic(this.platform.Characteristic.Brightness, this.Brightness);
|
|
297
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} updateCharacteristic Brightness: ${this.Brightness}`);
|
|
298
|
+
}
|
|
299
|
+
if (this.Hue === undefined) {
|
|
300
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} Hue: ${this.Hue}`);
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
this.lightBulbService.updateCharacteristic(this.platform.Characteristic.Hue, this.Hue);
|
|
304
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} updateCharacteristic Hue: ${this.Hue}`);
|
|
305
|
+
}
|
|
306
|
+
if (this.Saturation === undefined) {
|
|
307
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} Saturation: ${this.Saturation}`);
|
|
308
|
+
}
|
|
309
|
+
else {
|
|
310
|
+
this.lightBulbService.updateCharacteristic(this.platform.Characteristic.Saturation, this.Saturation);
|
|
311
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} updateCharacteristic Saturation: ${this.Saturation}`);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
apiError(e) {
|
|
315
|
+
this.lightBulbService.updateCharacteristic(this.platform.Characteristic.On, e);
|
|
316
|
+
this.lightBulbService.updateCharacteristic(this.platform.Characteristic.Hue, e);
|
|
317
|
+
this.lightBulbService.updateCharacteristic(this.platform.Characteristic.Brightness, e);
|
|
318
|
+
this.lightBulbService.updateCharacteristic(this.platform.Characteristic.Saturation, e);
|
|
319
|
+
//throw new this.platform.api.hap.HapStatusError(HAPStatus.SERVICE_COMMUNICATION_FAILURE);
|
|
320
|
+
}
|
|
321
|
+
statusCode(push) {
|
|
322
|
+
switch (push.data.statusCode) {
|
|
323
|
+
case 151:
|
|
324
|
+
this.errorLog(`Strip Light: ${this.accessory.displayName} Command not supported by this device type.`);
|
|
325
|
+
break;
|
|
326
|
+
case 152:
|
|
327
|
+
this.errorLog(`Strip Light: ${this.accessory.displayName} Device not found.`);
|
|
328
|
+
break;
|
|
329
|
+
case 160:
|
|
330
|
+
this.errorLog(`Strip Light: ${this.accessory.displayName} Command is not supported.`);
|
|
331
|
+
break;
|
|
332
|
+
case 161:
|
|
333
|
+
this.errorLog(`Strip Light: ${this.accessory.displayName} Device is offline.`);
|
|
334
|
+
this.offlineOff();
|
|
335
|
+
break;
|
|
336
|
+
case 171:
|
|
337
|
+
this.errorLog(`Strip Light: ${this.accessory.displayName} is offline. Hub: ${this.device.hubDeviceId}`);
|
|
338
|
+
this.offlineOff();
|
|
339
|
+
break;
|
|
340
|
+
case 190:
|
|
341
|
+
this.errorLog(`Strip Light: ${this.accessory.displayName} Device internal error due to device states not synchronized with server,` +
|
|
342
|
+
` Or command: ${JSON.stringify(push.data)} format is invalid`);
|
|
343
|
+
break;
|
|
344
|
+
case 100:
|
|
345
|
+
if (this.platform.debugMode) {
|
|
346
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} Command successfully sent.`);
|
|
347
|
+
}
|
|
348
|
+
break;
|
|
349
|
+
default:
|
|
350
|
+
if (this.platform.debugMode) {
|
|
351
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} Unknown statusCode.`);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
async offlineOff() {
|
|
356
|
+
if (this.device.offline) {
|
|
357
|
+
this.On = false;
|
|
358
|
+
this.lightBulbService.getCharacteristic(this.platform.Characteristic.On).updateValue(this.On);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Handle requests to set the value of the "On" characteristic
|
|
363
|
+
*/
|
|
364
|
+
async OnSet(value) {
|
|
365
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} On: ${value}`);
|
|
366
|
+
this.On = value;
|
|
367
|
+
this.doColorBulbUpdate.next();
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Handle requests to set the value of the "Brightness" characteristic
|
|
371
|
+
*/
|
|
372
|
+
async BrightnessSet(value) {
|
|
373
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} Brightness: ${value}`);
|
|
374
|
+
this.Brightness = value;
|
|
375
|
+
this.doColorBulbUpdate.next();
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Handle requests to set the value of the "Hue" characteristic
|
|
379
|
+
*/
|
|
380
|
+
async HueSet(value) {
|
|
381
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} Hue: ${value}`);
|
|
382
|
+
this.Hue = value;
|
|
383
|
+
this.doColorBulbUpdate.next();
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Handle requests to set the value of the "Saturation" characteristic
|
|
387
|
+
*/
|
|
388
|
+
async SaturationSet(value) {
|
|
389
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} Saturation: ${value}`);
|
|
390
|
+
this.Saturation = value;
|
|
391
|
+
this.doColorBulbUpdate.next();
|
|
392
|
+
}
|
|
393
|
+
async config(device) {
|
|
394
|
+
let config = {};
|
|
395
|
+
if (device.colorbulb) {
|
|
396
|
+
config = device.colorbulb;
|
|
397
|
+
}
|
|
398
|
+
if (device.ble) {
|
|
399
|
+
config['ble'] = device.ble;
|
|
400
|
+
}
|
|
401
|
+
if (device.logging !== undefined) {
|
|
402
|
+
config['logging'] = device.logging;
|
|
403
|
+
}
|
|
404
|
+
if (device.refreshRate !== undefined) {
|
|
405
|
+
config['refreshRate'] = device.refreshRate;
|
|
406
|
+
}
|
|
407
|
+
if (device.scanDuration !== undefined) {
|
|
408
|
+
config['scanDuration'] = device.scanDuration;
|
|
409
|
+
}
|
|
410
|
+
if (device.offline !== undefined) {
|
|
411
|
+
config['offline'] = device.offline;
|
|
412
|
+
}
|
|
413
|
+
if (Object.entries(config).length !== 0) {
|
|
414
|
+
this.infoLog(`Strip Light: ${this.accessory.displayName} Config: ${JSON.stringify(config)}`);
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
async refreshRate(device) {
|
|
418
|
+
if (device.refreshRate) {
|
|
419
|
+
this.deviceRefreshRate = this.accessory.context.refreshRate = device.refreshRate;
|
|
420
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} Using Device Config refreshRate: ${this.deviceRefreshRate}`);
|
|
421
|
+
}
|
|
422
|
+
else if (this.platform.config.options.refreshRate) {
|
|
423
|
+
this.deviceRefreshRate = this.accessory.context.refreshRate = this.platform.config.options.refreshRate;
|
|
424
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} Using Platform Config refreshRate: ${this.deviceRefreshRate}`);
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
async logs(device) {
|
|
428
|
+
if (this.platform.debugMode) {
|
|
429
|
+
this.deviceLogging = this.accessory.context.logging = 'debugMode';
|
|
430
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} Using Debug Mode Logging: ${this.deviceLogging}`);
|
|
431
|
+
}
|
|
432
|
+
else if (device.logging) {
|
|
433
|
+
this.deviceLogging = this.accessory.context.logging = device.logging;
|
|
434
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} Using Device Config Logging: ${this.deviceLogging}`);
|
|
435
|
+
}
|
|
436
|
+
else if (this.platform.config.options?.logging) {
|
|
437
|
+
this.deviceLogging = this.accessory.context.logging = this.platform.config.options?.logging;
|
|
438
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} Using Platform Config Logging: ${this.deviceLogging}`);
|
|
439
|
+
}
|
|
440
|
+
else {
|
|
441
|
+
this.deviceLogging = this.accessory.context.logging = 'standard';
|
|
442
|
+
this.debugLog(`Strip Light: ${this.accessory.displayName} Logging Not Set, Using: ${this.deviceLogging}`);
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
minStep(device) {
|
|
446
|
+
if (device.colorbulb?.set_minStep) {
|
|
447
|
+
this.set_minStep = device.colorbulb?.set_minStep;
|
|
448
|
+
}
|
|
449
|
+
else {
|
|
450
|
+
this.set_minStep = 1;
|
|
451
|
+
}
|
|
452
|
+
return this.set_minStep;
|
|
453
|
+
}
|
|
454
|
+
/**
|
|
455
|
+
* Logging for Device
|
|
456
|
+
*/
|
|
457
|
+
infoLog(...log) {
|
|
458
|
+
if (this.enablingDeviceLogging()) {
|
|
459
|
+
this.platform.log.info(String(...log));
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
warnLog(...log) {
|
|
463
|
+
if (this.enablingDeviceLogging()) {
|
|
464
|
+
this.platform.log.warn(String(...log));
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
errorLog(...log) {
|
|
468
|
+
if (this.enablingDeviceLogging()) {
|
|
469
|
+
this.platform.log.error(String(...log));
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
debugLog(...log) {
|
|
473
|
+
if (this.enablingDeviceLogging()) {
|
|
474
|
+
if (this.deviceLogging === 'debug') {
|
|
475
|
+
this.platform.log.info('[DEBUG]', String(...log));
|
|
476
|
+
}
|
|
477
|
+
else {
|
|
478
|
+
this.platform.log.debug(String(...log));
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
enablingDeviceLogging() {
|
|
483
|
+
return this.deviceLogging.includes('debug') || this.deviceLogging === 'standard';
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
exports.StripLight = StripLight;
|
|
487
|
+
//# sourceMappingURL=striplight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"striplight.js","sourceRoot":"","sources":["../../src/device/striplight.ts"],"names":[],"mappings":";;;AACA,+BAAyC;AAEzC,8CAA8D;AAE9D,0CAAuI;AAEvI;;;;GAIG;AACH,MAAa,UAAU;IAyCrB,YAA6B,QAA2B,EAAU,SAA4B,EAAS,MAA8B;QAAxG,aAAQ,GAAR,QAAQ,CAAmB;QAAU,cAAS,GAAT,SAAS,CAAmB;QAAS,WAAM,GAAN,MAAM,CAAwB;QACnI,uBAAuB;QACvB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpB,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE;YACzB,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;SACjB;aAAM;YACL,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;SACrC;QACD,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,oFAAoF;QACpF,IAAI,CAAC,iBAAiB,GAAG,IAAI,cAAO,EAAE,CAAC;QACvC,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;QAEvC,4CAA4C;QAC5C,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,4BAA4B;QAC5B,SAAS;aACN,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAE;aACvD,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,WAAW,CAAC;aACzE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,CAAC;aACjE,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC,QAAS,CAAC,CAAC;QAElF,mFAAmF;QACnF,sDAAsD;QACtD,CAAC,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACxI,GAAG,SAAS,CAAC,WAAW,cAAc,CAAC;QAEvC,+HAA+H;QAC/H,2HAA2H;QAC3H,sHAAsH;QAEtH,sFAAsF;QACtF,8GAA8G;QAC9G,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;QAElG,qDAAqD;QACrD,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEtG,+DAA+D;QAC/D,IAAI,CAAC,gBAAgB;aAClB,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC;aAC1D,QAAQ,CAAC;YACR,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAC7B,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,GAAG;YACb,gBAAgB,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;SAC3B,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC,CAAC;aACD,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAExC,iDAAiD;QACjD,IAAI,CAAC,gBAAgB;aAClB,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC;aACnD,QAAQ,CAAC;YACR,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,GAAG;YACb,gBAAgB,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;SAC3B,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,OAAO,IAAI,CAAC,GAAG,CAAC;QAClB,CAAC,CAAC;aACD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEjC,iDAAiD;QACjD,IAAI,CAAC,gBAAgB;aAClB,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC;aAC1D,QAAQ,CAAC;YACR,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,GAAG;YACb,gBAAgB,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;SAC3B,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC,CAAC;aACD,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAExC,iBAAiB;QACjB,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAEpC,2BAA2B;QAC3B,IAAA,eAAQ,EAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;aACpC,IAAI,CAAC,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;aACrD,SAAS,CAAC,KAAK,IAAI,EAAE;YACpB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEL,+BAA+B;QAC/B,iEAAiE;QACjE,IAAI,CAAC,iBAAiB;aACnB,IAAI,CACH,IAAA,eAAG,EAAC,GAAG,EAAE;YACP,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACxC,CAAC,CAAC,EACF,IAAA,wBAAY,EAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAQ,CAAC,QAAS,GAAG,IAAI,CAAC,CAC7D;aACA,SAAS,CAAC,KAAK,IAAI,EAAE;YACpB,IAAI;gBACF,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;aAC1B;YAAC,OAAO,CAAM,EAAE;gBACf,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,qBAAqB,CAAC,CAAC;gBAC/E,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;oBACxC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,sBAAsB,GAAG,mBAAmB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;iBAClI;gBACD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aAClB;YACD,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;QACzC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,WAAW;QACf,QAAQ,IAAI,CAAC,KAAK,EAAE;YAClB,KAAK,IAAI;gBACP,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;gBACf,MAAM;YACR;gBACE,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;SACnB;QACD,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,QAAQ,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAE3E,aAAa;QACb,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,gBAAgB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAE3F,0BAA0B;QAC1B,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjG,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClD,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACxF,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,WAAW,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC5F,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,UAAU,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAE1F,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,IAAA,iBAAM,EAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3E,IAAI,CAAC,QAAQ,CACX,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAA,iBAAM,EAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACrH,CAAC;YAEF,MAAM;YACN,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAE7E,aAAa;YACb,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAC7B,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,gBAAgB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SAC5F;IACH,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,IAAI;YACF,IAAI,CAAC,YAAY,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,oBAAS,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;YACxG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,mBAAmB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAChH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;YAEpD,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,4BAA4B,EAAE,CAAC;SACrC;QAAC,OAAO,CAAM,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,+CAA+C,CAAC,CAAC;YACzG,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;gBACxC,IAAI,CAAC,QAAQ,CACX,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,gDAAgD;oBACxF,mBAAmB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CACjD,CAAC;aACH;YACD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;SAClB;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,WAAW;QACf,IAAI;YACF,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE;gBAC7B,iBAAiB;gBACjB,MAAM,OAAO,GAAG;oBACd,WAAW,EAAE,SAAS;oBACtB,SAAS,EAAE,SAAS;iBACV,CAAC;gBAEb,IAAI,IAAI,CAAC,EAAE,EAAE;oBACX,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC;iBAC5B;qBAAM;oBACL,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;iBAC7B;gBAED,IAAI,CAAC,OAAO,CACV,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,+CAA+C,OAAO,CAAC,OAAO,GAAG;oBACzG,eAAe,OAAO,CAAC,SAAS,kBAAkB,OAAO,CAAC,WAAW,EAAE,CAC1E,CAAC;gBAEF,uBAAuB;gBACvB,MAAM,IAAI,GAAQ,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,oBAAS,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,WAAW,EAAE,OAAO,CAAC,CAAC;gBAC3G,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,iBAAiB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACtG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC;gBACxB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;aAC3C;YACD,yBAAyB;YACzB,IAAI,IAAI,CAAC,EAAE,EAAE;gBACX,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;aACpC;YAED,+BAA+B;YAC/B,IAAI,IAAI,CAAC,EAAE,EAAE;gBACX,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;aACvC;SACF;QAAC,OAAO,CAAM,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,6CAA6C,CAAC,CAAC;YACvG,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;gBACxC,IAAI,CAAC,QAAQ,CACX,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,8CAA8C;oBACtF,mBAAmB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CACjD,CAAC;aACH;YACD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;SAClB;IACH,CAAC;IAED,KAAK,CAAC,wBAAwB;QAC5B,IAAI;YACF,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,gBAAgB,EAAE;gBAC5E,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC7F,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBAE3G,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,IAAA,iBAAM,EAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;gBAC7E,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,SAAS,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBAEvG,MAAM,OAAO,GAAG;oBACd,WAAW,EAAE,SAAS;oBACtB,OAAO,EAAE,UAAU;oBACnB,SAAS,EAAE,GAAG,GAAG,IAAI,KAAK,IAAI,IAAI,EAAE;iBAC1B,CAAC;gBAEb,IAAI,CAAC,OAAO,CACV,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,+CAA+C,OAAO,CAAC,OAAO,GAAG;oBACzG,eAAe,OAAO,CAAC,SAAS,kBAAkB,OAAO,CAAC,WAAW,EAAE,CAC1E,CAAC;gBAEF,uBAAuB;gBACvB,MAAM,IAAI,GAAQ,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,oBAAS,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,WAAW,EAAE,OAAO,CAAC,CAAC;gBAC3G,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,iBAAiB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACtG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;gBAC1B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC;aACzC;iBAAM;gBACL,IAAI,CAAC,QAAQ,CACX,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,cAAc;oBACtD,QAAQ,IAAI,CAAC,GAAG,gBAAgB,IAAI,CAAC,SAAS,iBAAiB,IAAI,CAAC,UAAU,uBAAuB,IAAI,CAAC,gBAAgB,EAAE,CAC/H,CAAC;aACH;SACF;QAAC,OAAO,CAAM,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,6CAA6C,CAAC,CAAC;YACvG,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;gBACxC,IAAI,CAAC,QAAQ,CACX,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,8CAA8C;oBACtF,mBAAmB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CACjD,CAAC;aACH;YACD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;SAClB;IACH,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,IAAI;YACF,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,gBAAgB,EAAE;gBAC7C,MAAM,OAAO,GAAG;oBACd,WAAW,EAAE,SAAS;oBACtB,OAAO,EAAE,eAAe;oBACxB,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;iBACrB,CAAC;gBAEb,IAAI,CAAC,OAAO,CACV,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,+CAA+C,OAAO,CAAC,OAAO,GAAG;oBACzG,eAAe,OAAO,CAAC,SAAS,kBAAkB,OAAO,CAAC,WAAW,EAAE,CAC1E,CAAC;gBAEF,uBAAuB;gBACvB,MAAM,IAAI,GAAQ,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,oBAAS,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,WAAW,EAAE,OAAO,CAAC,CAAC;gBAC3G,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,iBAAiB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACtG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACtB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC;aACzC;iBAAM;gBACL,IAAI,CAAC,QAAQ,CACX,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,cAAc;oBACtD,eAAe,IAAI,CAAC,UAAU,uBAAuB,IAAI,CAAC,gBAAgB,EAAE,CAC/E,CAAC;aACH;SACF;QAAC,OAAO,CAAM,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,6CAA6C,CAAC,CAAC;YACvG,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;gBACxC,IAAI,CAAC,QAAQ,CACX,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,8CAA8C;oBACtF,mBAAmB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CACjD,CAAC;aACH;YACD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;SAClB;IACH,CAAC;IAED,KAAK,CAAC,4BAA4B;QAChC,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE;YACzB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,QAAQ,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;SAC5E;aAAM;YACL,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YACrF,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,6BAA6B,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;SACjG;QACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;YACjC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,gBAAgB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SAC5F;aAAM;YACL,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACrG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,qCAAqC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SACjH;QACD,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;YAC1B,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;SAC9E;aAAM;YACL,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACvF,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,8BAA8B,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;SACnG;QACD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;YACjC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,gBAAgB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SAC5F;aAAM;YACL,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACrG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,qCAAqC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SACjH;IACH,CAAC;IAED,QAAQ,CAAC,CAAM;QACb,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/E,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACvF,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACvF,0FAA0F;IAC5F,CAAC;IAED,UAAU,CAAC,IAA2C;QACpD,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAC5B,KAAK,GAAG;gBACN,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,6CAA6C,CAAC,CAAC;gBACvG,MAAM;YACR,KAAK,GAAG;gBACN,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,oBAAoB,CAAC,CAAC;gBAC9E,MAAM;YACR,KAAK,GAAG;gBACN,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,4BAA4B,CAAC,CAAC;gBACtF,MAAM;YACR,KAAK,GAAG;gBACN,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,qBAAqB,CAAC,CAAC;gBAC/E,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,MAAM;YACR,KAAK,GAAG;gBACN,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,qBAAqB,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;gBACxG,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,MAAM;YACR,KAAK,GAAG;gBACN,IAAI,CAAC,QAAQ,CACX,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,2EAA2E;oBACnH,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAChE,CAAC;gBACF,MAAM;YACR,KAAK,GAAG;gBACN,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;oBAC3B,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,6BAA6B,CAAC,CAAC;iBACxF;gBACD,MAAM;YACR;gBACE,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;oBAC3B,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,sBAAsB,CAAC,CAAC;iBACjF;SACJ;IACH,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACvB,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;YAChB,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC/F;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,KAA0B;QACpC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,QAAQ,KAAK,EAAE,CAAC,CAAC;QAEzE,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;QAChB,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,KAA0B;QAC5C,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,gBAAgB,KAAK,EAAE,CAAC,CAAC;QAEjF,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,KAA0B;QACrC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,SAAS,KAAK,EAAE,CAAC,CAAC;QAE1E,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;QACjB,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,KAA0B;QAC5C,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,gBAAgB,KAAK,EAAE,CAAC,CAAC;QAEjF,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAA8B;QACzC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,CAAC,SAAS,EAAE;YACpB,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;SAC3B;QACD,IAAI,MAAM,CAAC,GAAG,EAAE;YACd,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;SAC5B;QACD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE;YAChC,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;SACpC;QACD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE;YACpC,MAAM,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;SAC5C;QACD,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE;YACrC,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;SAC9C;QACD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE;YAChC,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;SACpC;QACD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YACvC,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SAC9F;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAA8B;QAC9C,IAAI,MAAM,CAAC,WAAW,EAAE;YACtB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;YACjF,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,qCAAqC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;SACxH;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAQ,CAAC,WAAW,EAAE;YACpD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAQ,CAAC,WAAW,CAAC;YACxG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,uCAAuC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;SAC1H;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAA8B;QACvC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,GAAG,WAAW,CAAC;YAClE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,8BAA8B,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAC7G;aAAM,IAAI,MAAM,CAAC,OAAO,EAAE;YACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YACrE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,iCAAiC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAChH;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE;YAChD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC;YAC5F,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,mCAAmC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAClH;aAAM;YACL,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,GAAG,UAAU,CAAC;YACjE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,WAAW,4BAA4B,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAC3G;IACH,CAAC;IAED,OAAO,CAAC,MAA8B;QACpC,IAAI,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE;YACjC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC;SAClD;aAAM;YACL,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;SACtB;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,GAAG,GAAU;QACnB,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;YAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;SACxC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,GAAU;QACnB,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;YAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;SACxC;IACH,CAAC;IAED,QAAQ,CAAC,GAAG,GAAU;QACpB,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;YAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;SACzC;IACH,CAAC;IAED,QAAQ,CAAC,GAAG,GAAU;QACpB,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;YAChC,IAAI,IAAI,CAAC,aAAa,KAAK,OAAO,EAAE;gBAClC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;aACnD;iBAAM;gBACL,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;aACzC;SACF;IACH,CAAC;IAED,qBAAqB;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,KAAK,UAAU,CAAC;IACnF,CAAC;CACF;AA1jBD,gCA0jBC"}
|
package/dist/platform.d.ts
CHANGED
|
@@ -41,6 +41,7 @@ export declare class SwitchBotPlatform implements DynamicPlatformPlugin {
|
|
|
41
41
|
private createHumidifier;
|
|
42
42
|
private createBot;
|
|
43
43
|
private createMeter;
|
|
44
|
+
private createMeterPlus;
|
|
44
45
|
private createMotion;
|
|
45
46
|
private createContact;
|
|
46
47
|
private createCurtain;
|
|
@@ -48,6 +49,7 @@ export declare class SwitchBotPlatform implements DynamicPlatformPlugin {
|
|
|
48
49
|
private createPlug;
|
|
49
50
|
private createLock;
|
|
50
51
|
private createColorBulb;
|
|
52
|
+
private createStripLight;
|
|
51
53
|
private createTV;
|
|
52
54
|
private createFan;
|
|
53
55
|
private createLight;
|
package/dist/platform.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAoBA,OAAc,EAAE,aAAa,EAAsB,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5G,OAAO,EAAyC,QAAQ,EAAE,MAAM,EAAE,uBAAuB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE9I;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,qBAAqB;aAiBjC,GAAG,EAAE,MAAM;aAAkB,MAAM,EAAE,uBAAuB;aAAkB,GAAG,EAAE,GAAG;IAhBlH,SAAgB,OAAO,EAAE,OAAO,OAAO,CAAwB;IAC/D,SAAgB,cAAc,EAAE,OAAO,cAAc,CAA+B;IAGpF,SAAgB,WAAW,EAAE,iBAAiB,EAAE,CAAM;IAE/C,KAAK,EAAE,aAAa,CAExB;IAEH,OAAO,MAAsC;IAC7C,YAAY,EAAG,eAAe,CAAC;IAC/B,iBAAiB,EAAG,OAAO,CAAC;IAC5B,SAAS,EAAG,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;gBAEG,GAAG,EAAE,MAAM,EAAkB,MAAM,EAAE,uBAAuB,EAAkB,GAAG,EAAE,GAAG;IAkDlH,IAAI;IAoBJ;;;OAGG;IACH,kBAAkB,CAAC,SAAS,EAAE,iBAAiB;IAO/C;;OAEG;IACH,YAAY;IAgFZ;;OAEG;IACG,eAAe;IA0GrB,WAAW,CAAC,CAAC,EAAE,GAAG;IA0ClB,OAAO,CAAC,YAAY;IAqEpB,OAAO,CAAC,cAAc;IA+DtB,OAAO,CAAC,cAAc;YAiBR,gBAAgB;YAwDhB,SAAS;YA4DT,WAAW;YAuDX,eAAe;YAuDf,YAAY;YAuDZ,aAAa;YAuDb,aAAa;IAkE3B,OAAO,CAAC,gBAAgB;YAeV,UAAU;YAuDV,UAAU;YAuDV,eAAe;YAuDf,gBAAgB;YAuDhB,QAAQ;YAsDR,SAAS;YAwDT,WAAW;YAuDX,oBAAoB;YAuDpB,iBAAiB;YAuDjB,iBAAiB;YAuDjB,mBAAmB;YAuDnB,YAAY;YAuDZ,YAAY;IAuDb,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,SAAS,EAAE,iBAAiB;IAQvF,+BAA+B,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,iBAAiB,EAAE,iBAAiB;IAQpG,4BAA4B,CAAC,SAAS,EAAE,iBAAiB;IAIzD,iCAAiC,CAAC,iBAAiB,EAAE,iBAAiB;IAI5E,6BAA6B,CAAC,iBAAiB,EAAE,iBAAiB;IAMlE,cAAc,CAAC,OAAO,EAAE,eAAe;IAMjC,UAAU,CAAC,MAAM,EAAE,CAAC,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,GAAG,aAAa,CAAC;IAcrF,UAAU;IAaV;;;OAGG;IACH,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAM5B,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAM5B,QAAQ,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAM7B,QAAQ,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAU7B,uBAAuB,IAAI,OAAO;CAGnC"}
|