@switchbot/homebridge-switchbot 0.2.0-alpha.2 → 1.0.1-beta.2

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.
Files changed (99) hide show
  1. package/.github/workflows/nodejs-beta.yml +1 -1
  2. package/.github/workflows/nodejs.yml +1 -1
  3. package/.github/workflows/{prerelease.js → prerelease-beta.js} +0 -0
  4. package/CHANGELOG.md +1 -1
  5. package/README.md +9 -5
  6. package/config.schema.json +370 -142
  7. package/dist/devices/bots.d.ts +18 -34
  8. package/dist/devices/bots.d.ts.map +1 -1
  9. package/dist/devices/bots.js +166 -171
  10. package/dist/devices/bots.js.map +1 -1
  11. package/dist/devices/{bulb.d.ts → colorbulb.d.ts} +12 -19
  12. package/dist/devices/colorbulb.d.ts.map +1 -0
  13. package/dist/devices/{bulb.js → colorbulb.js} +34 -32
  14. package/dist/devices/colorbulb.js.map +1 -0
  15. package/dist/devices/contact.d.ts +18 -16
  16. package/dist/devices/contact.d.ts.map +1 -1
  17. package/dist/devices/contact.js +101 -44
  18. package/dist/devices/contact.js.map +1 -1
  19. package/dist/devices/curtains.d.ts +17 -51
  20. package/dist/devices/curtains.d.ts.map +1 -1
  21. package/dist/devices/curtains.js +170 -248
  22. package/dist/devices/curtains.js.map +1 -1
  23. package/dist/devices/humidifiers.d.ts +13 -4
  24. package/dist/devices/humidifiers.d.ts.map +1 -1
  25. package/dist/devices/humidifiers.js +81 -8
  26. package/dist/devices/humidifiers.js.map +1 -1
  27. package/dist/devices/indoorcam.d.ts +6 -13
  28. package/dist/devices/indoorcam.d.ts.map +1 -1
  29. package/dist/devices/indoorcam.js.map +1 -1
  30. package/dist/devices/meters.d.ts +12 -15
  31. package/dist/devices/meters.d.ts.map +1 -1
  32. package/dist/devices/meters.js +38 -44
  33. package/dist/devices/meters.js.map +1 -1
  34. package/dist/devices/motion.d.ts +17 -15
  35. package/dist/devices/motion.d.ts.map +1 -1
  36. package/dist/devices/motion.js +87 -40
  37. package/dist/devices/motion.js.map +1 -1
  38. package/dist/devices/plugs.d.ts +6 -13
  39. package/dist/devices/plugs.d.ts.map +1 -1
  40. package/dist/devices/plugs.js.map +1 -1
  41. package/dist/irdevices/airconditioners.d.ts +10 -10
  42. package/dist/irdevices/airconditioners.d.ts.map +1 -1
  43. package/dist/irdevices/airconditioners.js +29 -9
  44. package/dist/irdevices/airconditioners.js.map +1 -1
  45. package/dist/irdevices/airpurifiers.d.ts +11 -11
  46. package/dist/irdevices/airpurifiers.d.ts.map +1 -1
  47. package/dist/irdevices/airpurifiers.js.map +1 -1
  48. package/dist/irdevices/cameras.d.ts +3 -3
  49. package/dist/irdevices/cameras.d.ts.map +1 -1
  50. package/dist/irdevices/cameras.js.map +1 -1
  51. package/dist/irdevices/fans.d.ts +6 -6
  52. package/dist/irdevices/fans.d.ts.map +1 -1
  53. package/dist/irdevices/fans.js +10 -10
  54. package/dist/irdevices/fans.js.map +1 -1
  55. package/dist/irdevices/lights.d.ts +3 -3
  56. package/dist/irdevices/lights.d.ts.map +1 -1
  57. package/dist/irdevices/lights.js.map +1 -1
  58. package/dist/irdevices/others.d.ts +3 -3
  59. package/dist/irdevices/others.d.ts.map +1 -1
  60. package/dist/irdevices/others.js.map +1 -1
  61. package/dist/irdevices/tvs.d.ts +3 -3
  62. package/dist/irdevices/tvs.d.ts.map +1 -1
  63. package/dist/irdevices/tvs.js +7 -5
  64. package/dist/irdevices/tvs.js.map +1 -1
  65. package/dist/irdevices/vacuumcleaners.d.ts +3 -3
  66. package/dist/irdevices/vacuumcleaners.d.ts.map +1 -1
  67. package/dist/irdevices/vacuumcleaners.js.map +1 -1
  68. package/dist/irdevices/waterheaters.d.ts +3 -3
  69. package/dist/irdevices/waterheaters.d.ts.map +1 -1
  70. package/dist/irdevices/waterheaters.js.map +1 -1
  71. package/dist/platform.d.ts +3 -2
  72. package/dist/platform.d.ts.map +1 -1
  73. package/dist/platform.js +136 -46
  74. package/dist/platform.js.map +1 -1
  75. package/dist/settings.d.ts +51 -8
  76. package/dist/settings.d.ts.map +1 -1
  77. package/package.json +65 -65
  78. package/src/devices/bots.ts +188 -193
  79. package/src/devices/{bulb.ts → colorbulb.ts} +46 -51
  80. package/src/devices/contact.ts +124 -68
  81. package/src/devices/curtains.ts +192 -300
  82. package/src/devices/humidifiers.ts +97 -14
  83. package/src/devices/indoorcam.ts +10 -20
  84. package/src/devices/meters.ts +57 -69
  85. package/src/devices/motion.ts +108 -62
  86. package/src/devices/plugs.ts +8 -19
  87. package/src/irdevices/airconditioners.ts +43 -20
  88. package/src/irdevices/airpurifiers.ts +15 -11
  89. package/src/irdevices/cameras.ts +5 -3
  90. package/src/irdevices/fans.ts +22 -16
  91. package/src/irdevices/lights.ts +5 -3
  92. package/src/irdevices/others.ts +5 -3
  93. package/src/irdevices/tvs.ts +13 -7
  94. package/src/irdevices/vacuumcleaners.ts +5 -3
  95. package/src/irdevices/waterheaters.ts +5 -3
  96. package/src/platform.ts +148 -49
  97. package/src/settings.ts +80 -8
  98. package/dist/devices/bulb.d.ts.map +0 -1
  99. package/dist/devices/bulb.js.map +0 -1
@@ -1,12 +1,13 @@
1
- import { Service, PlatformAccessory, CharacteristicValue, MacAddress } from 'homebridge';
1
+ import { Service, PlatformAccessory, CharacteristicValue } from 'homebridge';
2
2
  import { SwitchBotPlatform } from '../platform';
3
- import { device, devicesConfig } from '../settings';
3
+ import { Subject } from 'rxjs';
4
+ import { device, devicesConfig, switchbot, deviceStatusResponse } from '../settings';
4
5
  /**
5
6
  * Platform Accessory
6
7
  * An instance of this class is created for each accessory your platform registers
7
8
  * Each accessory may expose multiple services of different service types.
8
9
  */
9
- export declare class Bulb {
10
+ export declare class ColorBulb {
10
11
  private readonly platform;
11
12
  private accessory;
12
13
  device: device & devicesConfig;
@@ -14,19 +15,11 @@ export declare class Bulb {
14
15
  On: CharacteristicValue;
15
16
  Brightness: CharacteristicValue;
16
17
  ColorTemperature: CharacteristicValue;
17
- deviceStatus: any;
18
- switchbot: {
19
- discover: (arg0: {
20
- duration: any;
21
- model: string;
22
- quick: boolean;
23
- id: MacAddress;
24
- }) => Promise<any>;
25
- wait: (arg0: number) => any;
26
- };
27
- bulbUpdateInProgress: boolean;
28
- doBulbUpdate: any;
29
- set_minStep: any;
18
+ deviceStatus: deviceStatusResponse;
19
+ switchbot: switchbot;
20
+ set_minStep?: number;
21
+ colorBulbUpdateInProgress: boolean;
22
+ doColorBulbUpdate: Subject<void>;
30
23
  constructor(platform: SwitchBotPlatform, accessory: PlatformAccessory, device: device & devicesConfig);
31
24
  private minStep;
32
25
  parseStatus(): void;
@@ -34,8 +27,8 @@ export declare class Bulb {
34
27
  /**
35
28
  * Pushes the requested changes to the SwitchBot API
36
29
  * deviceType commandType Command command parameter Description
37
- * Bulb - "command" "turnOff" "default" = set to OFF state
38
- * Bulb - "command" "turnOn" "default" = set to ON state
30
+ * Color Bulb - "command" "turnOff" "default" = set to OFF state
31
+ * Color Bulb - "command" "turnOn" "default" = set to ON state
39
32
  */
40
33
  pushChanges(): Promise<void>;
41
34
  updateHomeKitCharacteristics(): void;
@@ -54,4 +47,4 @@ export declare class Bulb {
54
47
  */
55
48
  ColorTemperatureSet(value: CharacteristicValue): void;
56
49
  }
57
- //# sourceMappingURL=bulb.d.ts.map
50
+ //# sourceMappingURL=colorbulb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorbulb.d.ts","sourceRoot":"","sources":["../../src/devices/colorbulb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAY,OAAO,EAAE,MAAM,MAAM,CAAC;AAEzC,OAAO,EAAa,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGhG;;;;GAIG;AACH,qBAAa,SAAS;IAuBlB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,SAAS;IACV,MAAM,EAAE,MAAM,GAAG,aAAa;IAvBvC,OAAO,EAAG,OAAO,CAAC;IAGlB,EAAE,EAAG,mBAAmB,CAAC;IACzB,UAAU,EAAG,mBAAmB,CAAC;IACjC,gBAAgB,EAAG,mBAAmB,CAAC;IAGvC,YAAY,EAAG,oBAAoB,CAAC;IAGpC,SAAS,EAAG,SAAS,CAAC;IAGtB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,yBAAyB,EAAG,OAAO,CAAC;IACpC,iBAAiB,EAAG,OAAO,CAAC,IAAI,CAAC,CAAC;gBAGf,QAAQ,EAAE,iBAAiB,EACpC,SAAS,EAAE,iBAAiB,EAC7B,MAAM,EAAE,MAAM,GAAG,aAAa;IA4GvC,OAAO,CAAC,OAAO;IASf,WAAW;IAaL,aAAa;IAcnB;;;;;KAKC;IACK,WAAW;IA8BjB,4BAA4B;IAqBrB,QAAQ,CAAC,CAAC,EAAE,GAAG;IAOtB,OAAO,CAAC,UAAU;IA8BlB;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,mBAAmB;IAOhC;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,mBAAmB;IAOxC;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,mBAAmB;CAM/C"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Bulb = void 0;
3
+ exports.ColorBulb = void 0;
4
4
  const rxjs_1 = require("rxjs");
5
5
  const operators_1 = require("rxjs/operators");
6
6
  const settings_1 = require("../settings");
@@ -9,11 +9,13 @@ const settings_1 = require("../settings");
9
9
  * An instance of this class is created for each accessory your platform registers
10
10
  * Each accessory may expose multiple services of different service types.
11
11
  */
12
- class Bulb {
12
+ class ColorBulb {
13
13
  constructor(platform, accessory, device) {
14
14
  this.platform = platform;
15
15
  this.accessory = accessory;
16
16
  this.device = device;
17
+ // ColorBulb Config
18
+ this.platform.device(`[ColorBulb Config] ble: ${device.ble}, set_minStep: ${device.colorbulb?.set_minStep}`);
17
19
  // default placeholders
18
20
  this.On = false;
19
21
  this.Brightness = 0;
@@ -27,15 +29,15 @@ class Bulb {
27
29
  this.platform.device(this.device.bleMac.toLowerCase());
28
30
  }
29
31
  // this is subject we use to track when we need to POST changes to the SwitchBot API
30
- this.doBulbUpdate = new rxjs_1.Subject();
31
- this.bulbUpdateInProgress = false;
32
+ this.doColorBulbUpdate = new rxjs_1.Subject();
33
+ this.colorBulbUpdateInProgress = false;
32
34
  // Retrieve initial values and updateHomekit
33
35
  this.refreshStatus();
34
36
  // set accessory information
35
37
  accessory
36
38
  .getService(this.platform.Service.AccessoryInformation)
37
39
  .setCharacteristic(this.platform.Characteristic.Manufacturer, 'SwitchBot')
38
- .setCharacteristic(this.platform.Characteristic.Model, 'SWITCHBOT-BULB-W1401400')
40
+ .setCharacteristic(this.platform.Characteristic.Model, 'SWITCHBOT-COLORBULB-W1401400')
39
41
  .setCharacteristic(this.platform.Characteristic.SerialNumber, device.deviceId);
40
42
  // get the Television service if it exists, otherwise create a new Television service
41
43
  // you can create multiple services for each accessory
@@ -79,15 +81,15 @@ class Bulb {
79
81
  this.updateHomeKitCharacteristics();
80
82
  // Start an update interval
81
83
  (0, rxjs_1.interval)(this.platform.config.options.refreshRate * 1000)
82
- .pipe((0, operators_1.skipWhile)(() => this.bulbUpdateInProgress))
84
+ .pipe((0, operators_1.skipWhile)(() => this.colorBulbUpdateInProgress))
83
85
  .subscribe(() => {
84
86
  this.refreshStatus();
85
87
  });
86
88
  // Watch for Bulb change events
87
89
  // We put in a debounce of 100ms so we don't make duplicate calls
88
- this.doBulbUpdate
90
+ this.doColorBulbUpdate
89
91
  .pipe((0, operators_1.tap)(() => {
90
- this.bulbUpdateInProgress = true;
92
+ this.colorBulbUpdateInProgress = true;
91
93
  }), (0, operators_1.debounceTime)(this.platform.config.options.pushRate * 1000))
92
94
  .subscribe(async () => {
93
95
  try {
@@ -95,15 +97,15 @@ class Bulb {
95
97
  }
96
98
  catch (e) {
97
99
  this.platform.log.error(JSON.stringify(e.message));
98
- this.platform.debug(`Bulb ${accessory.displayName} - ${JSON.stringify(e)}`);
100
+ this.platform.debug(`Color Bulb ${accessory.displayName} - ${JSON.stringify(e)}`);
99
101
  this.apiError(e);
100
102
  }
101
- this.bulbUpdateInProgress = false;
103
+ this.colorBulbUpdateInProgress = false;
102
104
  });
103
105
  }
104
106
  minStep() {
105
- if (this.device.bulb?.set_minStep) {
106
- this.set_minStep = this.device.bulb?.set_minStep;
107
+ if (this.device.colorbulb?.set_minStep) {
108
+ this.set_minStep = this.device.colorbulb?.set_minStep;
107
109
  }
108
110
  else {
109
111
  this.set_minStep = 1;
@@ -118,29 +120,29 @@ class Bulb {
118
120
  default:
119
121
  this.On = false;
120
122
  }
121
- this.platform.debug(`Bulb ${this.accessory.displayName} On: ${this.On}`);
123
+ this.platform.debug(`Color Bulb ${this.accessory.displayName} On: ${this.On}`);
122
124
  this.deviceStatus.body.brightness = Number(this.Brightness);
123
125
  this.deviceStatus.body.colorTemperature = Number(this.ColorTemperature);
124
126
  }
125
127
  async refreshStatus() {
126
128
  try {
127
- this.platform.debug('Bulb - Reading', `${settings_1.DeviceURL}/${this.device.deviceId}/status`);
129
+ this.platform.debug('Color Bulb - Reading', `${settings_1.DeviceURL}/${this.device.deviceId}/status`);
128
130
  this.deviceStatus = (await this.platform.axios.get(`${settings_1.DeviceURL}/${this.device.deviceId}/status`)).data;
129
- this.platform.device(`Bulb ${this.accessory.displayName} refreshStatus: ${JSON.stringify(this.deviceStatus)}`);
131
+ this.platform.device(`Color Bulb ${this.accessory.displayName} refreshStatus: ${JSON.stringify(this.deviceStatus)}`);
130
132
  this.parseStatus();
131
133
  this.updateHomeKitCharacteristics();
132
134
  }
133
135
  catch (e) {
134
- this.platform.log.error(`Bulb ${this.accessory.displayName} failed to refresh status, Error Message ${JSON.stringify(e.message)}`);
135
- this.platform.debug(`Bulb ${this.accessory.displayName}, Error: ${JSON.stringify(e)}`);
136
+ this.platform.log.error(`Color Bulb ${this.accessory.displayName} failed to refresh status, Error Message ${JSON.stringify(e.message)}`);
137
+ this.platform.debug(`Color Bulb ${this.accessory.displayName}, Error: ${JSON.stringify(e)}`);
136
138
  this.apiError(e);
137
139
  }
138
140
  }
139
141
  /**
140
142
  * Pushes the requested changes to the SwitchBot API
141
143
  * deviceType commandType Command command parameter Description
142
- * Bulb - "command" "turnOff" "default" = set to OFF state
143
- * Bulb - "command" "turnOn" "default" = set to ON state
144
+ * Color Bulb - "command" "turnOff" "default" = set to OFF state
145
+ * Color Bulb - "command" "turnOn" "default" = set to ON state
144
146
  */
145
147
  async pushChanges() {
146
148
  const payload = {
@@ -154,33 +156,33 @@ class Bulb {
154
156
  payload.command = 'turnOff';
155
157
  }
156
158
  this.platform.log.info('Sending request for', this.accessory.displayName, 'to SwitchBot API. command:', payload.command, 'parameter:', payload.parameter, 'commandType:', payload.commandType);
157
- this.platform.debug(`Bulb ${this.accessory.displayName} pushchanges: ${JSON.stringify(payload)}`);
159
+ this.platform.debug(`Color Bulb ${this.accessory.displayName} pushchanges: ${JSON.stringify(payload)}`);
158
160
  // Make the API request
159
161
  const push = (await this.platform.axios.post(`${settings_1.DeviceURL}/${this.device.deviceId}/commands`, payload));
160
- this.platform.debug(`Bulb ${this.accessory.displayName} Changes pushed: ${JSON.stringify(push.data)}`);
162
+ this.platform.debug(`Color Bulb ${this.accessory.displayName} Changes pushed: ${JSON.stringify(push.data)}`);
161
163
  this.statusCode(push);
162
164
  }
163
165
  updateHomeKitCharacteristics() {
164
166
  if (this.On === undefined) {
165
- this.platform.debug(`Bulb ${this.accessory.displayName} On: ${this.On}`);
167
+ this.platform.debug(`Color Bulb ${this.accessory.displayName} On: ${this.On}`);
166
168
  }
167
169
  else {
168
170
  this.service.updateCharacteristic(this.platform.Characteristic.On, this.On);
169
- this.platform.device(`Bulb ${this.accessory.displayName} updateCharacteristic On: ${this.On}`);
171
+ this.platform.device(`Color Bulb ${this.accessory.displayName} updateCharacteristic On: ${this.On}`);
170
172
  }
171
173
  if (this.Brightness === undefined) {
172
- this.platform.debug(`Bulb ${this.accessory.displayName} Brightness: ${this.Brightness}`);
174
+ this.platform.debug(`Color Bulb ${this.accessory.displayName} Brightness: ${this.Brightness}`);
173
175
  }
174
176
  else {
175
177
  this.service.updateCharacteristic(this.platform.Characteristic.Brightness, this.Brightness);
176
- this.platform.device(`Bulb ${this.accessory.displayName} updateCharacteristic Brightness: ${this.Brightness}`);
178
+ this.platform.device(`Color Bulb ${this.accessory.displayName} updateCharacteristic Brightness: ${this.Brightness}`);
177
179
  }
178
180
  if (this.ColorTemperature === undefined) {
179
- this.platform.debug(`Bulb ${this.accessory.displayName} ColorTemperature: ${this.ColorTemperature}`);
181
+ this.platform.debug(`Color Bulb ${this.accessory.displayName} ColorTemperature: ${this.ColorTemperature}`);
180
182
  }
181
183
  else {
182
184
  this.service.updateCharacteristic(this.platform.Characteristic.Brightness, this.ColorTemperature);
183
- this.platform.debug(`Bulb ${this.accessory.displayName} updateCharacteristic ColorTemperature: ${this.ColorTemperature}`);
185
+ this.platform.debug(`Color Bulb ${this.accessory.displayName} updateCharacteristic ColorTemperature: ${this.ColorTemperature}`);
184
186
  }
185
187
  }
186
188
  apiError(e) {
@@ -223,7 +225,7 @@ class Bulb {
223
225
  OnSet(value) {
224
226
  this.platform.debug(`${this.accessory.displayName} - Set On: ${value}`);
225
227
  this.On = value;
226
- this.doBulbUpdate.next();
228
+ this.doColorBulbUpdate.next();
227
229
  }
228
230
  /**
229
231
  * Handle requests to set the value of the "Brightness" characteristic
@@ -231,7 +233,7 @@ class Bulb {
231
233
  BrightnessSet(value) {
232
234
  this.platform.debug(`${this.accessory.displayName} - Set On: ${value}`);
233
235
  this.Brightness = value;
234
- this.doBulbUpdate.next();
236
+ this.doColorBulbUpdate.next();
235
237
  }
236
238
  /**
237
239
  * Handle requests to set the value of the "ColorTemperature" characteristic
@@ -239,8 +241,8 @@ class Bulb {
239
241
  ColorTemperatureSet(value) {
240
242
  this.platform.debug(`${this.accessory.displayName} - Set On: ${value}`);
241
243
  this.ColorTemperature = value;
242
- this.doBulbUpdate.next();
244
+ this.doColorBulbUpdate.next();
243
245
  }
244
246
  }
245
- exports.Bulb = Bulb;
246
- //# sourceMappingURL=bulb.js.map
247
+ exports.ColorBulb = ColorBulb;
248
+ //# sourceMappingURL=colorbulb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorbulb.js","sourceRoot":"","sources":["../../src/devices/colorbulb.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
- import { Service, PlatformAccessory, CharacteristicValue, MacAddress } from 'homebridge';
1
+ import { PlatformAccessory, CharacteristicValue } from 'homebridge';
2
2
  import { SwitchBotPlatform } from '../platform';
3
- import { device, devicesConfig } from '../settings';
3
+ import { Subject } from 'rxjs';
4
+ import { device, devicesConfig, serviceData, switchbot, deviceStatusResponse } from '../settings';
4
5
  /**
5
6
  * Platform Accessory
6
7
  * An instance of this class is created for each accessory your platform registers
@@ -11,23 +12,23 @@ export declare class Contact {
11
12
  private accessory;
12
13
  device: device & devicesConfig;
13
14
  private service;
14
- motionService: Service;
15
+ private motionService;
16
+ private lightSensorService;
17
+ private batteryService?;
15
18
  ContactSensorState: CharacteristicValue;
16
19
  MotionDetected: CharacteristicValue;
17
- deviceStatus: any;
18
- BLEmotion: boolean;
19
- BLEstate: boolean;
20
- switchbot: {
21
- discover: (arg0: {
22
- duration: any;
23
- model: string;
24
- quick: boolean;
25
- id: MacAddress;
26
- }) => Promise<any>;
27
- wait: (arg0: number) => any;
28
- };
20
+ CurrentAmbientLightLevel: CharacteristicValue;
21
+ BatteryLevel: CharacteristicValue;
22
+ StatusLowBattery: CharacteristicValue;
23
+ deviceStatus: deviceStatusResponse;
24
+ switchbot: switchbot;
25
+ serviceData: serviceData;
26
+ battery: serviceData['battery'];
27
+ movement: serviceData['movement'];
28
+ doorState: serviceData['doorState'];
29
+ lightLevel: serviceData['lightLevel'];
29
30
  contactUbpdateInProgress: boolean;
30
- doContactUpdate: any;
31
+ doContactUpdate: Subject<void>;
31
32
  constructor(platform: SwitchBotPlatform, accessory: PlatformAccessory, device: device & devicesConfig);
32
33
  /**
33
34
  * Parse the device status from the SwitchBot api
@@ -39,6 +40,7 @@ export declare class Contact {
39
40
  * Asks the SwitchBot API for the latest device information
40
41
  */
41
42
  refreshStatus(): Promise<void>;
43
+ private connectBLE;
42
44
  private BLERefreshStatus;
43
45
  private openAPIRefreshStatus;
44
46
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"contact.d.ts","sourceRoot":"","sources":["../../src/devices/contact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,EAAa,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE/D;;;;GAIG;AACH,qBAAa,OAAO;IAiChB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,SAAS;IACV,MAAM,EAAE,MAAM,GAAG,aAAa;IAjCvC,OAAO,CAAC,OAAO,CAAU;IACzB,aAAa,EAAE,OAAO,CAAC;IAGvB,kBAAkB,EAAG,mBAAmB,CAAC;IACzC,cAAc,EAAG,mBAAmB,CAAC;IAGrC,YAAY,EAAG,GAAG,CAAC;IACnB,SAAS,EAAG,OAAO,CAAC;IACpB,QAAQ,EAAG,OAAO,CAAC;IACnB,SAAS,EAAG;QACV,QAAQ,EAAE,CACR,IAAI,EACF;YACE,QAAQ,EAAE,GAAG,CAAC;YACd,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,OAAO,CAAC;YACf,EAAE,EAAE,UAAU,CAAC;SAChB,KACA,OAAO,CAAC,GAAG,CAAC,CAAC;QAClB,IAAI,EAAE,CACJ,IAAI,EAAE,MAAM,KACT,GAAG,CAAC;KACV,CAAC;IAGF,wBAAwB,EAAG,OAAO,CAAC;IACnC,eAAe,MAAC;gBAGG,QAAQ,EAAE,iBAAiB,EACpC,SAAS,EAAE,iBAAiB,EAC7B,MAAM,EAAE,MAAM,GAAG,aAAa;IA+DvC;;OAEG;IACG,WAAW;YAUH,cAAc;YAOd,kBAAkB;IAehC;;OAEG;IACG,aAAa;YAUL,gBAAgB;YAoDhB,oBAAoB;IAalC;;OAEG;IACH,4BAA4B;IAerB,QAAQ,CAAC,CAAC,EAAE,GAAG;CAIvB"}
1
+ {"version":3,"file":"contact.d.ts","sourceRoot":"","sources":["../../src/devices/contact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAY,OAAO,EAAE,MAAM,MAAM,CAAC;AAEzC,OAAO,EAAa,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAE7G;;;;GAIG;AACH,qBAAa,OAAO;IA8BhB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,SAAS;IACV,MAAM,EAAE,MAAM,GAAG,aAAa;IA9BvC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,cAAc,CAAC,CAAU;IAGjC,kBAAkB,EAAG,mBAAmB,CAAC;IACzC,cAAc,EAAG,mBAAmB,CAAC;IACrC,wBAAwB,EAAG,mBAAmB,CAAC;IAC/C,YAAY,EAAG,mBAAmB,CAAC;IACnC,gBAAgB,EAAG,mBAAmB,CAAC;IAGvC,YAAY,EAAG,oBAAoB,CAAC;IAGpC,SAAS,EAAG,SAAS,CAAC;IACtB,WAAW,EAAG,WAAW,CAAC;IAC1B,OAAO,EAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACjC,QAAQ,EAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IACnC,SAAS,EAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IACrC,UAAU,EAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IAGvC,wBAAwB,EAAG,OAAO,CAAC;IACnC,eAAe,EAAG,OAAO,CAAC,IAAI,CAAC,CAAC;gBAGb,QAAQ,EAAE,iBAAiB,EACpC,SAAS,EAAE,iBAAiB,EAC7B,MAAM,EAAE,MAAM,GAAG,aAAa;IA6EvC;;OAEG;IACG,WAAW;YAUH,cAAc;YAsCd,kBAAkB;IAehC;;OAEG;IACG,aAAa;IAUnB,OAAO,CAAC,UAAU;YAWJ,gBAAgB;YAkChB,oBAAoB;IAalC;;OAEG;IACH,4BAA4B;IAiCrB,QAAQ,CAAC,CAAC,EAAE,GAAG;CAOvB"}
@@ -37,7 +37,7 @@ class Contact {
37
37
  .setCharacteristic(this.platform.Characteristic.Manufacturer, 'SwitchBot')
38
38
  .setCharacteristic(this.platform.Characteristic.Model, 'SWITCHBOT-WOCONTACT-W1201500')
39
39
  .setCharacteristic(this.platform.Characteristic.SerialNumber, device.deviceId);
40
- // get the Battery service if it exists, otherwise create a new Contact service
40
+ // get the Contact service if it exists, otherwise create a new Contact service
41
41
  // you can create multiple services for each accessory
42
42
  (this.service =
43
43
  accessory.getService(this.platform.Service.ContactSensor) ||
@@ -54,6 +54,16 @@ class Contact {
54
54
  accessory.getService(this.platform.Service.MotionSensor) ||
55
55
  accessory.addService(this.platform.Service.MotionSensor)), `${accessory.displayName} Motion Sensor`;
56
56
  this.motionService.setCharacteristic(this.platform.Characteristic.Name, `${accessory.displayName} Motion Sensor`);
57
+ (this.lightSensorService =
58
+ accessory.getService(this.platform.Service.LightSensor) ||
59
+ accessory.addService(this.platform.Service.LightSensor)), `${accessory.displayName} Light Sensor`;
60
+ this.lightSensorService.setCharacteristic(this.platform.Characteristic.Name, `${accessory.displayName} Light Sensor`);
61
+ if (device.ble) {
62
+ (this.batteryService =
63
+ accessory.getService(this.platform.Service.Battery) ||
64
+ accessory.addService(this.platform.Service.Battery)), `${accessory.displayName} Battery`;
65
+ this.batteryService.setCharacteristic(this.platform.Characteristic.Name, `${accessory.displayName} Battery`);
66
+ }
57
67
  // Retrieve initial values and updateHomekit
58
68
  this.updateHomeKitCharacteristics();
59
69
  // Start an update interval
@@ -77,10 +87,41 @@ class Contact {
77
87
  }
78
88
  }
79
89
  async BLEparseStatus() {
80
- this.MotionDetected = Boolean(this.BLEmotion);
81
- this.ContactSensorState = Boolean(this.BLEstate);
82
- this.platform.debug(`${this.accessory.displayName}
83
- , ContactSensorState: ${this.ContactSensorState}, MotionDetected: ${this.MotionDetected}`);
90
+ this.platform.debug('Contact BLE Device parseStatus');
91
+ // Movement
92
+ this.MotionDetected = Boolean(this.movement);
93
+ // Door State
94
+ switch (this.doorState) {
95
+ case 'open':
96
+ case 1:
97
+ this.ContactSensorState = this.platform.Characteristic.ContactSensorState.CONTACT_NOT_DETECTED;
98
+ break;
99
+ case 'close':
100
+ case 0:
101
+ this.ContactSensorState = this.platform.Characteristic.ContactSensorState.CONTACT_DETECTED;
102
+ break;
103
+ default:
104
+ this.platform.log.error('timeout no closed');
105
+ }
106
+ // Light Level
107
+ switch (this.lightLevel) {
108
+ case 'dark':
109
+ case 0:
110
+ this.CurrentAmbientLightLevel = 0.0001;
111
+ break;
112
+ default:
113
+ this.CurrentAmbientLightLevel = 100000;
114
+ }
115
+ // Battery
116
+ this.BatteryLevel = Number(this.battery);
117
+ if (this.BatteryLevel < 10) {
118
+ this.StatusLowBattery = this.platform.Characteristic.StatusLowBattery.BATTERY_LEVEL_LOW;
119
+ }
120
+ else {
121
+ this.StatusLowBattery = this.platform.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL;
122
+ }
123
+ this.platform.debug(`${this.accessory.displayName}, ContactSensorState: ${this.ContactSensorState}, MotionDetected: ${this.MotionDetected}`
124
+ + `CurrentAmbientLightLevel: ${this.CurrentAmbientLightLevel}, BatteryLevel: ${this.BatteryLevel}`);
84
125
  }
85
126
  async openAPIparseStatus() {
86
127
  if (this.deviceStatus.body.openState === 'open') {
@@ -111,8 +152,7 @@ class Contact {
111
152
  await this.openAPIRefreshStatus();
112
153
  }
113
154
  }
114
- async BLERefreshStatus() {
115
- this.platform.debug('Contact BLE Device RefreshStatus');
155
+ connectBLE() {
116
156
  // eslint-disable-next-line @typescript-eslint/no-var-requires
117
157
  const Switchbot = require('node-switchbot');
118
158
  const switchbot = new Switchbot();
@@ -120,47 +160,40 @@ class Contact {
120
160
  const bleMac = colon.join(':'); //returns 1A:23:B4:56:78:9A;
121
161
  this.device.bleMac = bleMac.toLowerCase();
122
162
  this.platform.device(this.device.bleMac);
123
- switchbot.onadvertisement = (ad) => {
124
- this.platform.log.info(JSON.stringify(ad, null, ' '));
125
- this.platform.device('ad:', JSON.stringify(ad));
126
- this.BLEmotion = ad.serviceData.motion;
127
- this.BLEstate = ad.serviceData.state;
128
- };
129
- switchbot
130
- .startScan({
163
+ return switchbot;
164
+ }
165
+ async BLERefreshStatus() {
166
+ this.platform.debug('Contact BLE Device RefreshStatus');
167
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
168
+ const switchbot = this.connectBLE();
169
+ // Start to monitor advertisement packets
170
+ switchbot.startScan({
171
+ model: 'd',
131
172
  id: this.device.bleMac,
132
- })
133
- .then(() => {
134
- return switchbot.wait(this.platform.config.options.refreshRate * 1000);
135
- })
136
- .then(() => {
173
+ }).then(() => {
174
+ // Set an event hander
175
+ switchbot.onadvertisement = (ad) => {
176
+ this.serviceData = ad.serviceData;
177
+ this.platform.device(`${this.device.bleMac}: ${JSON.stringify(ad.serviceData)}`);
178
+ this.movement = ad.serviceData.movement;
179
+ this.doorState = ad.serviceData.doorState;
180
+ this.lightLevel = ad.serviceData.lightLevel;
181
+ this.battery = ad.serviceData.battery;
182
+ this.platform.device(`${this.accessory.displayName}, Movement: ${ad.serviceData.movement}, Door State: ${ad.serviceData.doorState},`
183
+ + ` Light Level: ${ad.serviceData.lightLevel}, Battery: ${ad.serviceData.battery}`);
184
+ };
185
+ // Wait 10 seconds
186
+ return switchbot.wait(10000);
187
+ }).then(() => {
188
+ // Stop to monitor
137
189
  switchbot.stopScan();
138
- })
139
- .catch(async (error) => {
140
- this.platform.log.error(error);
141
- await this.openAPIRefreshStatus();
142
- });
143
- setInterval(() => {
144
- this.platform.log.info('Start scan ' + this.device.deviceName + '(' + this.device.bleMac + ')');
145
- switchbot
146
- .startScan({
147
- mode: 'D',
148
- id: bleMac,
149
- })
150
- .then(() => {
151
- return switchbot.wait(this.platform.config.options.refreshRate * 1000);
152
- })
153
- .then(() => {
154
- switchbot.stopScan();
155
- this.platform.log.info('Stop scan ' + this.device.deviceName + '(' + this.device.bleMac + ')');
156
- })
157
- .catch(async (error) => {
158
- this.platform.log.error(error);
159
- await this.openAPIRefreshStatus();
160
- });
161
190
  this.parseStatus();
162
191
  this.updateHomeKitCharacteristics();
163
- }, this.platform.config.options.refreshRate * 60000);
192
+ }).catch(async (e) => {
193
+ this.platform.log.error(`BLE Connection Failed: ${e.message}`);
194
+ this.platform.log.warn('Using OpenAPI Connection');
195
+ await this.openAPIRefreshStatus();
196
+ });
164
197
  }
165
198
  async openAPIRefreshStatus() {
166
199
  try {
@@ -193,10 +226,34 @@ class Contact {
193
226
  this.motionService.updateCharacteristic(this.platform.Characteristic.MotionDetected, this.MotionDetected);
194
227
  this.platform.device(`Contact ${this.accessory.displayName} updateCharacteristic MotionDetected: ${this.MotionDetected}`);
195
228
  }
229
+ if (this.CurrentAmbientLightLevel === undefined) {
230
+ this.platform.debug(`Contact ${this.accessory.displayName} CurrentAmbientLightLevel: ${this.CurrentAmbientLightLevel}`);
231
+ }
232
+ else {
233
+ this.lightSensorService.updateCharacteristic(this.platform.Characteristic.CurrentAmbientLightLevel, this.CurrentAmbientLightLevel);
234
+ this.platform.device(`Contact ${this.accessory.displayName} updateCharacteristic CurrentAmbientLightLevel: ${this.CurrentAmbientLightLevel}`);
235
+ }
236
+ if (this.BatteryLevel === undefined) {
237
+ this.platform.debug(`Contact ${this.accessory.displayName} BatteryLevel: ${this.BatteryLevel}`);
238
+ }
239
+ else {
240
+ this.batteryService?.updateCharacteristic(this.platform.Characteristic.BatteryLevel, this.BatteryLevel);
241
+ this.platform.device(`Contact ${this.accessory.displayName} updateCharacteristic BatteryLevel: ${this.BatteryLevel}`);
242
+ }
243
+ if (this.StatusLowBattery === undefined) {
244
+ this.platform.debug(`Contact ${this.accessory.displayName} StatusLowBattery: ${this.StatusLowBattery}`);
245
+ }
246
+ else {
247
+ this.batteryService?.updateCharacteristic(this.platform.Characteristic.StatusLowBattery, this.StatusLowBattery);
248
+ this.platform.device(`Contact ${this.accessory.displayName} updateCharacteristic StatusLowBattery: ${this.StatusLowBattery}`);
249
+ }
196
250
  }
197
251
  apiError(e) {
198
252
  this.service.updateCharacteristic(this.platform.Characteristic.ContactSensorState, e);
199
253
  this.motionService.updateCharacteristic(this.platform.Characteristic.MotionDetected, e);
254
+ this.lightSensorService.updateCharacteristic(this.platform.Characteristic.CurrentAmbientLightLevel, e);
255
+ this.batteryService?.updateCharacteristic(this.platform.Characteristic.BatteryLevel, e);
256
+ this.batteryService?.updateCharacteristic(this.platform.Characteristic.StatusLowBattery, e);
200
257
  }
201
258
  }
202
259
  exports.Contact = Contact;
@@ -1 +1 @@
1
- {"version":3,"file":"contact.js","sourceRoot":"","sources":["../../src/devices/contact.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contact.js","sourceRoot":"","sources":["../../src/devices/contact.ts"],"names":[],"mappings":";;;AAEA,+BAAyC;AACzC,8CAA2C;AAC3C,0CAA6G;AAE7G;;;;GAIG;AACH,MAAa,OAAO;IA6BlB,YACmB,QAA2B,EACpC,SAA4B,EAC7B,MAA8B;QAFpB,aAAQ,GAAR,QAAQ,CAAmB;QACpC,cAAS,GAAT,SAAS,CAAmB;QAC7B,WAAM,GAAN,MAAM,CAAwB;QAErC,uBAAuB;QACvB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,gBAAgB,CAAC;QAE3F,iBAAiB;QACjB,IAAI,MAAM,CAAC,GAAG,EAAE;YACd,8DAA8D;YAC9D,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAC5C,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,KAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,4BAA4B;YAC7D,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;SACxD;QAED,oFAAoF;QACpF,IAAI,CAAC,eAAe,GAAG,IAAI,cAAO,EAAE,CAAC;QACrC,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;QAEtC,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,8BAA8B,CAAC;aACrF,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC,QAAS,CAAC,CAAC;QAElF,+EAA+E;QAC/E,sDAAsD;QACtD,CAAC,IAAI,CAAC,OAAO;YACX,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC;gBACzD,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,WAAW,iBAAiB,CAAC;QAExG,+HAA+H;QAC/H,2HAA2H;QAC3H,uHAAuH;QAEvH,sFAAsF;QACtF,8GAA8G;QAC9G,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;QAEzF,mGAAmG;QACnG,8DAA8D;QAC9D,CAAC,IAAI,CAAC,aAAa;YACjB,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;gBACxD,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,WAAW,gBAAgB,CAAC;QAEtG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,WAAW,gBAAgB,CAAC,CAAC;QAElH,CAAC,IAAI,CAAC,kBAAkB;YACtB,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC;gBACvD,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,WAAW,eAAe,CAAC;QAEpG,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,WAAW,eAAe,CAAC,CAAC;QAEtH,IAAI,MAAM,CAAC,GAAG,EAAE;YACd,CAAC,IAAI,CAAC,cAAc;gBAClB,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;oBACnD,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,WAAW,UAAU,CAAC;YAE3F,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,WAAW,UAAU,CAAC,CAAC;SAC9G;QAED,4CAA4C;QAC5C,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAEpC,2BAA2B;QAC3B,IAAA,eAAQ,EAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAQ,CAAC,WAAY,GAAG,IAAI,CAAC;aACxD,IAAI,CAAC,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;aACpD,SAAS,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;SAC7B;aAAM;YACL,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;SACjC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc;QAC1B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACtD,WAAW;QACX,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,aAAa;QACb,QAAQ,IAAI,CAAC,SAAS,EAAE;YACtB,KAAK,MAAM,CAAC;YACZ,KAAK,CAAC;gBACJ,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,oBAAoB,CAAC;gBAC/F,MAAM;YACR,KAAK,OAAO,CAAC;YACb,KAAK,CAAC;gBACJ,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,gBAAgB,CAAC;gBAC3F,MAAM;YACR;gBACE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;SAChD;QACD,cAAc;QACd,QAAQ,IAAI,CAAC,UAAU,EAAE;YACvB,KAAK,MAAM,CAAC;YACZ,KAAK,CAAC;gBACJ,IAAI,CAAC,wBAAwB,GAAG,MAAM,CAAC;gBACvC,MAAM;YACR;gBACE,IAAI,CAAC,wBAAwB,GAAG,MAAM,CAAC;SAC1C;QACD,UAAU;QACV,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,YAAY,GAAG,EAAE,EAAE;YAC1B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;SACzF;aAAM;YACL,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,oBAAoB,CAAC;SAC5F;QAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,yBAAyB,IAAI,CAAC,kBAAkB,qBAAqB,IAAI,CAAC,cAAc,EAAE;cACvI,6BAA6B,IAAI,CAAC,wBAAwB,mBAAmB,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACxG,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC9B,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE;YAC/C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,oBAAoB,CAAC;YAC/F,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;SAC7F;aAAM,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE;YACvD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,gBAAgB,CAAC;YAC3F,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;SAC3F;aAAM;YACL,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;SAC3F;QACD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW;4BACzB,IAAI,CAAC,kBAAkB,qBAAqB,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IAC7F,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC/B;aAAM;YACL,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAChC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;SACnC;IACH,CAAC;IAEO,UAAU;QAChB,8DAA8D;QAC9D,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,KAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,4BAA4B;QAC7D,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACxD,8DAA8D;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACpC,yCAAyC;QACzC,SAAS,CAAC,SAAS,CAAC;YAClB,KAAK,EAAE,GAAG;YACV,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;SACvB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,sBAAsB;YACtB,SAAS,CAAC,eAAe,GAAG,CAAC,EAAO,EAAE,EAAE;gBACtC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBACjF,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC;gBACxC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC;gBAC1C,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC;gBAC5C,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC;gBACtC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,eAAe,EAAE,CAAC,WAAW,CAAC,QAAQ,iBAAiB,EAAE,CAAC,WAAW,CAAC,SAAS,GAAG;sBAChI,iBAAiB,EAAE,CAAC,WAAW,CAAC,UAAU,cAAc,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACxF,CAAC,CAAC;YACF,kBAAkB;YAClB,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,kBAAkB;YAClB,SAAS,CAAC,QAAQ,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACtC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAM,EAAE,EAAE;YACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACnD,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,oBAAoB;QAChC,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,KAAK,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,WAAW,mBAAmB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACjH,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,4BAA4B,EAAE,CAAC;SACrC;QAAC,OAAO,CAAM,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,WAAW,6CAA6C,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACvI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,WAAW,YAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC1F,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;SAClB;IACH,CAAC;IAED;;OAEG;IACH,4BAA4B;QAC1B,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,EAAE;YACzC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,WAAW,wBAAwB,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;SAC7G;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC5G,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,WAAW,6CAA6C,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;SACnI;QACD,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE;YACrC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,WAAW,oBAAoB,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;SACrG;aAAM;YACL,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YAC1G,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,WAAW,yCAAyC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;SAC3H;QACD,IAAI,IAAI,CAAC,wBAAwB,KAAK,SAAS,EAAE;YAC/C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,WAAW,8BAA8B,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC;SACzH;aAAM;YACL,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,wBAAwB,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACnI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,WAAW,mDAAmD,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC;SAC/I;QACD,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;YACnC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,WAAW,kBAAkB,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;SACjG;aAAM;YACL,IAAI,CAAC,cAAc,EAAE,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACxG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,WAAW,uCAAuC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;SACvH;QACD,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE;YACvC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,WAAW,sBAAsB,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;SACzG;aAAM;YACL,IAAI,CAAC,cAAc,EAAE,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAChH,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,WAAW,2CAA2C,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;SAC/H;IACH,CAAC;IAEM,QAAQ,CAAC,CAAM;QACpB,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC;QACvG,IAAI,CAAC,cAAc,EAAE,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,cAAc,EAAE,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAC9F,CAAC;CACF;AAjSD,0BAiSC"}