@switchbot/homebridge-switchbot 4.0.1-beta.5 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,15 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. This project uses [Semantic Versioning](https://semver.org/)
4
4
 
5
+ ## [4.1.0](https://github.com/OpenWonderLabs/homebridge-switchbot/releases/tag/v4.1.0) (2024-10-21)
6
+
7
+ ### What's Changed
8
+ - Add `Meter Pro` deviceType Support
9
+ - Fix `node-switchbot` noble issue.
10
+ - Housekeeping and updated dependencies.
11
+
12
+ **Full Changelog**: https://github.com/OpenWonderLabs/homebridge-switchbot/compare/v4.0.0...v4.1.0
13
+
5
14
  ## [4.0.0](https://github.com/OpenWonderLabs/homebridge-switchbot/releases/tag/v4.0.0) (2024-10-11)
6
15
 
7
16
  ### What's Changed
@@ -0,0 +1,42 @@
1
+ import type { PlatformAccessory } from 'homebridge';
2
+ import type { device, meterProServiceData, meterProStatus, meterProWebhookContext } from 'node-switchbot';
3
+ import type { SwitchBotPlatform } from '../platform.js';
4
+ import type { devicesConfig } from '../settings.js';
5
+ import { Subject } from 'rxjs';
6
+ import { deviceBase } from './device.js';
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
+ export declare class MeterPro extends deviceBase {
13
+ readonly platform: SwitchBotPlatform;
14
+ private Battery;
15
+ private HumiditySensor?;
16
+ private TemperatureSensor?;
17
+ deviceStatus: meterProStatus;
18
+ webhookContext: meterProWebhookContext;
19
+ serviceData: meterProServiceData;
20
+ meterUpdateInProgress: boolean;
21
+ doMeterUpdate: Subject<void>;
22
+ constructor(platform: SwitchBotPlatform, accessory: PlatformAccessory, device: device & devicesConfig);
23
+ BLEparseStatus(): Promise<void>;
24
+ openAPIparseStatus(): Promise<void>;
25
+ parseStatusWebhook(): Promise<void>;
26
+ /**
27
+ * Asks the SwitchBot API for the latest device information
28
+ */
29
+ refreshStatus(): Promise<void>;
30
+ BLERefreshStatus(): Promise<void>;
31
+ registerPlatformBLE(): Promise<void>;
32
+ openAPIRefreshStatus(): Promise<void>;
33
+ registerWebhook(): Promise<void>;
34
+ /**
35
+ * Updates the status for each of the HomeKit Characteristics
36
+ */
37
+ updateHomeKitCharacteristics(): Promise<void>;
38
+ BLERefreshConnection(switchbot: any): Promise<void>;
39
+ offlineOff(): Promise<void>;
40
+ apiError(e: any): Promise<void>;
41
+ }
42
+ //# sourceMappingURL=meterpro.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meterpro.d.ts","sourceRoot":"","sources":["../../src/device/meterpro.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAuB,iBAAiB,EAAW,MAAM,YAAY,CAAA;AACjF,OAAO,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AAEzG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,gBAAgB,CAAA;AAQhE,OAAO,EAAuB,OAAO,EAAE,MAAM,MAAM,CAAA;AAGnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,UAAU;IAmCpC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB;IAjCtC,OAAO,CAAC,OAAO,CAKd;IAED,OAAO,CAAC,cAAc,CAAC,CAItB;IAED,OAAO,CAAC,iBAAiB,CAAC,CAIzB;IAGD,YAAY,EAAG,cAAc,CAAA;IAG7B,cAAc,EAAG,sBAAsB,CAAA;IAGvC,WAAW,EAAG,mBAAmB,CAAA;IAGjC,qBAAqB,EAAG,OAAO,CAAA;IAC/B,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;gBAGjB,QAAQ,EAAE,iBAAiB,EACpC,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,MAAM,GAAG,aAAa;IAgH1B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB/B,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IA0CnC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBzC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAa9B,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBjC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BpC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBrC,eAAe;IAkBrB;;OAEG;IACG,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC;IAe7C,oBAAoB,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAa3B,QAAQ,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CAUtC"}
@@ -0,0 +1,369 @@
1
+ /*
2
+ * For Testing Locally:
3
+ * import { SwitchBotBLEModel, SwitchBotBLEModelName } from '/Users/Shared/GitHub/OpenWonderLabs/node-switchbot/dist/index.js';
4
+ */
5
+ import { SwitchBotBLEModel, SwitchBotBLEModelName } from 'node-switchbot';
6
+ import { interval, skipWhile, Subject } from 'rxjs';
7
+ import { convertUnits, formatDeviceIdAsMac, validHumidity } from '../utils.js';
8
+ import { deviceBase } from './device.js';
9
+ /**
10
+ * Platform Accessory
11
+ * An instance of this class is created for each accessory your platform registers
12
+ * Each accessory may expose multiple services of different service types.
13
+ */
14
+ export class MeterPro extends deviceBase {
15
+ platform;
16
+ // Services
17
+ Battery;
18
+ HumiditySensor;
19
+ TemperatureSensor;
20
+ // OpenAPI
21
+ deviceStatus;
22
+ // Webhook
23
+ webhookContext;
24
+ // BLE
25
+ serviceData;
26
+ // Updates
27
+ meterUpdateInProgress;
28
+ doMeterUpdate;
29
+ constructor(platform, accessory, device) {
30
+ super(platform, accessory, device);
31
+ this.platform = platform;
32
+ // Set category
33
+ accessory.category = 10 /* this.hap.Categories.SENSOR */;
34
+ // this is subject we use to track when we need to POST changes to the SwitchBot API
35
+ this.doMeterUpdate = new Subject();
36
+ this.meterUpdateInProgress = false;
37
+ // Initialize Battery Service
38
+ accessory.context.Battery = accessory.context.Battery ?? {};
39
+ this.Battery = {
40
+ Name: `${accessory.displayName} Battery`,
41
+ Service: accessory.getService(this.hap.Service.Battery) ?? accessory.addService(this.hap.Service.Battery),
42
+ BatteryLevel: accessory.context.BatteryLevel ?? 100,
43
+ StatusLowBattery: accessory.context.StatusLowBattery ?? this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL,
44
+ };
45
+ accessory.context.Battery = this.Battery;
46
+ // Initialize Battery Characteristics
47
+ this.Battery.Service.setCharacteristic(this.hap.Characteristic.Name, this.Battery.Name).setCharacteristic(this.hap.Characteristic.ChargingState, this.hap.Characteristic.ChargingState.NOT_CHARGEABLE).getCharacteristic(this.hap.Characteristic.BatteryLevel).onGet(() => {
48
+ return this.Battery.BatteryLevel;
49
+ });
50
+ this.Battery.Service.getCharacteristic(this.hap.Characteristic.StatusLowBattery).onGet(() => {
51
+ return this.Battery.StatusLowBattery;
52
+ });
53
+ // Initialize Temperature Sensor Service
54
+ if (device.hide_temperature) {
55
+ if (this.TemperatureSensor) {
56
+ this.debugLog('Removing Temperature Sensor Service');
57
+ this.TemperatureSensor.Service = this.accessory.getService(this.hap.Service.TemperatureSensor);
58
+ accessory.removeService(this.TemperatureSensor.Service);
59
+ }
60
+ }
61
+ else {
62
+ accessory.context.TemperatureSensor = accessory.context.TemperatureSensor ?? {};
63
+ this.TemperatureSensor = {
64
+ Name: `${accessory.displayName} Temperature Sensor`,
65
+ Service: accessory.getService(this.hap.Service.TemperatureSensor) ?? this.accessory.addService(this.hap.Service.TemperatureSensor),
66
+ CurrentTemperature: accessory.context.CurrentTemperature ?? 30,
67
+ };
68
+ accessory.context.TemperatureSensor = this.TemperatureSensor;
69
+ // Initialize Temperature Sensor Characteristics
70
+ this.TemperatureSensor.Service.setCharacteristic(this.hap.Characteristic.Name, this.TemperatureSensor.Name).getCharacteristic(this.hap.Characteristic.CurrentTemperature).setProps({
71
+ unit: "celsius" /* Units.CELSIUS */,
72
+ validValueRanges: [-273.15, 100],
73
+ minValue: -273.15,
74
+ maxValue: 100,
75
+ minStep: 0.1,
76
+ }).onGet(() => {
77
+ return this.TemperatureSensor.CurrentTemperature;
78
+ });
79
+ }
80
+ // Initialize Humidity Sensor Service
81
+ if (device.hide_humidity) {
82
+ if (this.HumiditySensor) {
83
+ this.debugLog('Removing Humidity Sensor Service');
84
+ this.HumiditySensor.Service = this.accessory.getService(this.hap.Service.HumiditySensor);
85
+ accessory.removeService(this.HumiditySensor.Service);
86
+ }
87
+ }
88
+ else {
89
+ accessory.context.HumiditySensor = accessory.context.HumiditySensor ?? {};
90
+ this.HumiditySensor = {
91
+ Name: `${accessory.displayName} Humidity Sensor`,
92
+ Service: accessory.getService(this.hap.Service.HumiditySensor) ?? this.accessory.addService(this.hap.Service.HumiditySensor),
93
+ CurrentRelativeHumidity: accessory.context.CurrentRelativeHumidity ?? 50,
94
+ };
95
+ accessory.context.HumiditySensor = this.HumiditySensor;
96
+ // Initialize Humidity Sensor Characteristics
97
+ this.HumiditySensor.Service.setCharacteristic(this.hap.Characteristic.Name, this.HumiditySensor.Name).getCharacteristic(this.hap.Characteristic.CurrentRelativeHumidity).setProps({
98
+ minStep: 0.1,
99
+ }).onGet(() => {
100
+ return this.HumiditySensor.CurrentRelativeHumidity;
101
+ });
102
+ }
103
+ // Retrieve initial values and updateHomekit
104
+ try {
105
+ this.debugLog('Retrieve initial values and update Homekit');
106
+ this.refreshStatus();
107
+ }
108
+ catch (e) {
109
+ this.errorLog(`failed to retrieve initial values and update Homekit, Error: ${e.message ?? e}`);
110
+ }
111
+ // regisiter webhook event handler if enabled
112
+ try {
113
+ this.debugLog('Registering Webhook Event Handler');
114
+ this.registerWebhook();
115
+ }
116
+ catch (e) {
117
+ this.errorLog(`failed to registerWebhook, Error: ${e.message ?? e}`);
118
+ }
119
+ // regisiter platform BLE event handler if enabled
120
+ try {
121
+ this.debugLog('Registering Platform BLE Event Handler');
122
+ this.registerPlatformBLE();
123
+ }
124
+ catch (e) {
125
+ this.errorLog(`failed to registerPlatformBLE, Error: ${e.message ?? e}`);
126
+ }
127
+ // Start an update interval
128
+ interval(this.deviceRefreshRate * 1000)
129
+ .pipe(skipWhile(() => this.meterUpdateInProgress))
130
+ .subscribe(async () => {
131
+ await this.refreshStatus();
132
+ });
133
+ }
134
+ async BLEparseStatus() {
135
+ await this.debugLog('BLEparseStatus');
136
+ await this.debugLog(`(temperature, humidity) = BLE:(${this.serviceData.celsius}, ${this.serviceData.humidity}), current:(${this.TemperatureSensor?.CurrentTemperature}, ${this.HumiditySensor?.CurrentRelativeHumidity})`);
137
+ // CurrentRelativeHumidity
138
+ if (!this.device.hide_humidity && this.HumiditySensor?.Service) {
139
+ this.HumiditySensor.CurrentRelativeHumidity = validHumidity(this.serviceData.humidity, 0, 100);
140
+ await this.debugLog(`CurrentRelativeHumidity: ${this.HumiditySensor.CurrentRelativeHumidity}%`);
141
+ }
142
+ // Current Temperature
143
+ if (!this.device.hide_temperature && this.TemperatureSensor?.Service) {
144
+ const CELSIUS = this.serviceData.celsius < 0 ? 0 : this.serviceData.celsius > 100 ? 100 : this.serviceData.celsius;
145
+ this.TemperatureSensor.CurrentTemperature = CELSIUS;
146
+ await this.debugLog(`CurrentTemperature: ${this.TemperatureSensor.CurrentTemperature}°c`);
147
+ }
148
+ // BatteryLevel
149
+ this.Battery.BatteryLevel = this.serviceData.battery;
150
+ await this.debugLog(`BatteryLevel: ${this.Battery.BatteryLevel}`);
151
+ // StatusLowBattery
152
+ this.Battery.StatusLowBattery = this.Battery.BatteryLevel < 10
153
+ ? this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_LOW
154
+ : this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL;
155
+ await this.debugLog(`StatusLowBattery: ${this.Battery.StatusLowBattery}`);
156
+ }
157
+ async openAPIparseStatus() {
158
+ await this.debugLog('openAPIparseStatus');
159
+ await this.debugLog(`(temperature, humidity) = OpenAPI:(${this.deviceStatus.temperature}, ${this.deviceStatus.humidity}), current:(${this.TemperatureSensor?.CurrentTemperature}, ${this.HumiditySensor?.CurrentRelativeHumidity})`);
160
+ // CurrentRelativeHumidity
161
+ if (!this.device.hide_humidity && this.HumiditySensor?.Service) {
162
+ this.HumiditySensor.CurrentRelativeHumidity = this.deviceStatus.humidity;
163
+ await this.debugLog(`CurrentRelativeHumidity: ${this.HumiditySensor.CurrentRelativeHumidity}%`);
164
+ }
165
+ // CurrentTemperature
166
+ if (!this.device.hide_temperature && this.TemperatureSensor?.Service) {
167
+ this.TemperatureSensor.CurrentTemperature = this.deviceStatus.temperature;
168
+ await this.debugLog(`CurrentTemperature: ${this.TemperatureSensor.CurrentTemperature}°c`);
169
+ }
170
+ // BatteryLevel
171
+ this.Battery.BatteryLevel = this.deviceStatus.battery;
172
+ await this.debugLog(`BatteryLevel: ${this.Battery.BatteryLevel}`);
173
+ // StatusLowBattery
174
+ this.Battery.StatusLowBattery = this.Battery.BatteryLevel < 10
175
+ ? this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_LOW
176
+ : this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL;
177
+ await this.debugLog(`StatusLowBattery: ${this.Battery.StatusLowBattery}`);
178
+ // FirmwareVersion
179
+ if (this.deviceStatus.version) {
180
+ const version = this.deviceStatus.version.toString();
181
+ this.debugLog(`Firmware Version: ${version.replace(/^V|-.*$/g, '')}`);
182
+ const deviceVersion = version.replace(/^V|-.*$/g, '') ?? '0.0.0';
183
+ this.accessory
184
+ .getService(this.hap.Service.AccessoryInformation)
185
+ .setCharacteristic(this.hap.Characteristic.HardwareRevision, deviceVersion)
186
+ .setCharacteristic(this.hap.Characteristic.FirmwareRevision, deviceVersion)
187
+ .getCharacteristic(this.hap.Characteristic.FirmwareRevision)
188
+ .updateValue(deviceVersion);
189
+ this.accessory.context.version = deviceVersion;
190
+ this.debugSuccessLog(`v: ${this.accessory.context.version}`);
191
+ }
192
+ }
193
+ async parseStatusWebhook() {
194
+ await this.debugLog('parseStatusWebhook');
195
+ await this.debugLog(`(scale, temperature, humidity) = Webhook:(${this.webhookContext.scale}, ${convertUnits(this.webhookContext.temperature, this.webhookContext.scale, this.device.convertUnitTo)}, ${this.webhookContext.humidity}) current:(${this.TemperatureSensor?.CurrentTemperature}, ${this.HumiditySensor?.CurrentRelativeHumidity})`);
196
+ // Check if the scale is not CELSIUS
197
+ if (this.webhookContext.scale !== 'CELSIUS' && this.device.convertUnitTo === undefined) {
198
+ await this.warnLog(`received a non-CELSIUS Webhook scale: ${this.webhookContext.scale}, Use the *convertUnitsTo* config under Hub settings, if displaying incorrectly in HomeKit.`);
199
+ }
200
+ // CurrentRelativeHumidity
201
+ if (!this.device.hide_humidity && this.HumiditySensor?.Service) {
202
+ this.HumiditySensor.CurrentRelativeHumidity = this.webhookContext.humidity;
203
+ await this.debugLog(`CurrentRelativeHumidity: ${this.HumiditySensor.CurrentRelativeHumidity}`);
204
+ }
205
+ // CurrentTemperature
206
+ if (!this.device.hide_temperature && this.TemperatureSensor?.Service) {
207
+ this.TemperatureSensor.CurrentTemperature = convertUnits(this.webhookContext.temperature, this.webhookContext.scale, this.device.convertUnitTo);
208
+ await this.debugLog(`CurrentTemperature: ${this.TemperatureSensor.CurrentTemperature}`);
209
+ }
210
+ }
211
+ /**
212
+ * Asks the SwitchBot API for the latest device information
213
+ */
214
+ async refreshStatus() {
215
+ if (!this.device.enableCloudService && this.OpenAPI) {
216
+ await this.errorLog(`refreshStatus enableCloudService: ${this.device.enableCloudService}`);
217
+ }
218
+ else if (this.BLE) {
219
+ await this.BLERefreshStatus();
220
+ }
221
+ else if (this.OpenAPI && this.platform.config.credentials?.token) {
222
+ await this.openAPIRefreshStatus();
223
+ }
224
+ else {
225
+ await this.offlineOff();
226
+ await this.debugWarnLog(`Connection Type: ${this.device.connectionType}, refreshStatus will not happen.`);
227
+ }
228
+ }
229
+ async BLERefreshStatus() {
230
+ await this.debugLog('BLERefreshStatus');
231
+ const switchBotBLE = await this.switchbotBLE();
232
+ if (switchBotBLE === undefined) {
233
+ await this.BLERefreshConnection(switchBotBLE);
234
+ }
235
+ else {
236
+ // Start to monitor advertisement packets
237
+ (async () => {
238
+ // Start to monitor advertisement packets
239
+ const serviceData = await this.monitorAdvertisementPackets(switchBotBLE);
240
+ // Update HomeKit
241
+ if (serviceData.model === SwitchBotBLEModel.MeterPro && serviceData.modelName === SwitchBotBLEModelName.MeterPro) {
242
+ this.serviceData = serviceData;
243
+ await this.BLEparseStatus();
244
+ await this.updateHomeKitCharacteristics();
245
+ }
246
+ else {
247
+ await this.errorLog(`failed to get serviceData, serviceData: ${JSON.stringify(serviceData)}`);
248
+ await this.BLERefreshConnection(switchBotBLE);
249
+ }
250
+ })();
251
+ }
252
+ }
253
+ async registerPlatformBLE() {
254
+ await this.debugLog('registerPlatformBLE');
255
+ if (this.config.options?.BLE) {
256
+ await this.debugLog('is listening to Platform BLE.');
257
+ try {
258
+ const formattedDeviceId = formatDeviceIdAsMac(this.device.deviceId);
259
+ this.device.bleMac = formattedDeviceId;
260
+ await this.debugLog(`bleMac: ${this.device.bleMac}`);
261
+ this.platform.bleEventHandler[this.device.bleMac] = async (context) => {
262
+ try {
263
+ await this.debugLog(`received BLE: ${JSON.stringify(context)}`);
264
+ this.serviceData = context;
265
+ await this.BLEparseStatus();
266
+ await this.updateHomeKitCharacteristics();
267
+ }
268
+ catch (e) {
269
+ await this.errorLog(`failed to handle BLE. Received: ${JSON.stringify(context)} Error: ${e.message ?? e}`);
270
+ }
271
+ };
272
+ }
273
+ catch (error) {
274
+ await this.errorLog(`failed to format device ID as MAC, Error: ${error}`);
275
+ }
276
+ }
277
+ else {
278
+ await this.debugLog('is not listening to Platform BLE');
279
+ }
280
+ }
281
+ async openAPIRefreshStatus() {
282
+ await this.debugLog('openAPIRefreshStatus');
283
+ try {
284
+ const { body } = await this.deviceRefreshStatus();
285
+ const deviceStatus = await body;
286
+ await this.debugLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`);
287
+ if (await this.successfulStatusCodes(deviceStatus)) {
288
+ await this.debugSuccessLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`);
289
+ this.deviceStatus = deviceStatus.body;
290
+ await this.openAPIparseStatus();
291
+ await this.updateHomeKitCharacteristics();
292
+ }
293
+ else {
294
+ await this.debugWarnLog(`statusCode: ${deviceStatus.statusCode}, deviceStatus: ${JSON.stringify(deviceStatus)}`);
295
+ await this.debugWarnLog(deviceStatus);
296
+ }
297
+ }
298
+ catch (e) {
299
+ await this.apiError(e);
300
+ await this.errorLog(`failed openAPIRefreshStatus with ${this.device.connectionType} Connection, Error Message: ${JSON.stringify(e.message)}`);
301
+ }
302
+ }
303
+ async registerWebhook() {
304
+ if (this.device.webhook) {
305
+ await this.debugLog('is listening webhook.');
306
+ this.platform.webhookEventHandler[this.device.deviceId] = async (context) => {
307
+ try {
308
+ await this.debugLog(`received Webhook: ${JSON.stringify(context)}`);
309
+ this.webhookContext = context;
310
+ await this.parseStatusWebhook();
311
+ await this.updateHomeKitCharacteristics();
312
+ }
313
+ catch (e) {
314
+ await this.errorLog(`failed to handle webhook. Received: ${JSON.stringify(context)} Error: ${e.message ?? e}`);
315
+ }
316
+ };
317
+ }
318
+ else {
319
+ await this.debugLog('is not listening webhook.');
320
+ }
321
+ }
322
+ /**
323
+ * Updates the status for each of the HomeKit Characteristics
324
+ */
325
+ async updateHomeKitCharacteristics() {
326
+ // CurrentRelativeHumidity
327
+ if (!this.device.hide_humidity && this.HumiditySensor?.Service) {
328
+ await this.updateCharacteristic(this.HumiditySensor.Service, this.hap.Characteristic.CurrentRelativeHumidity, this.HumiditySensor.CurrentRelativeHumidity, 'CurrentRelativeHumidity');
329
+ }
330
+ // CurrentTemperature
331
+ if (!this.device.hide_temperature && this.TemperatureSensor?.Service) {
332
+ await this.updateCharacteristic(this.TemperatureSensor.Service, this.hap.Characteristic.CurrentTemperature, this.TemperatureSensor.CurrentTemperature, 'CurrentTemperature');
333
+ }
334
+ // BatteryLevel
335
+ await this.updateCharacteristic(this.Battery.Service, this.hap.Characteristic.BatteryLevel, this.Battery.BatteryLevel, 'BatteryLevel');
336
+ // StatusLowBattery
337
+ await this.updateCharacteristic(this.Battery.Service, this.hap.Characteristic.StatusLowBattery, this.Battery.StatusLowBattery, 'StatusLowBattery');
338
+ }
339
+ async BLERefreshConnection(switchbot) {
340
+ await this.errorLog(`wasn't able to establish BLE Connection, node-switchbot: ${switchbot}`);
341
+ if (this.platform.config.credentials?.token && this.device.connectionType === 'BLE/OpenAPI') {
342
+ await this.warnLog('Using OpenAPI Connection to Refresh Status');
343
+ await this.openAPIRefreshStatus();
344
+ }
345
+ }
346
+ async offlineOff() {
347
+ if (this.device.offline) {
348
+ if (!this.device.hide_humidity && this.HumiditySensor?.Service) {
349
+ this.HumiditySensor.Service.updateCharacteristic(this.hap.Characteristic.CurrentRelativeHumidity, 50);
350
+ }
351
+ if (!this.device.hide_temperature && this.TemperatureSensor?.Service) {
352
+ this.TemperatureSensor.Service.updateCharacteristic(this.hap.Characteristic.CurrentTemperature, 30);
353
+ }
354
+ this.Battery.Service.updateCharacteristic(this.hap.Characteristic.BatteryLevel, 100);
355
+ this.Battery.Service.updateCharacteristic(this.hap.Characteristic.StatusLowBattery, this.hap.Characteristic.StatusLowBattery.BATTERY_LEVEL_NORMAL);
356
+ }
357
+ }
358
+ async apiError(e) {
359
+ if (!this.device.hide_humidity && this.HumiditySensor?.Service) {
360
+ this.HumiditySensor.Service.updateCharacteristic(this.hap.Characteristic.CurrentRelativeHumidity, e);
361
+ }
362
+ if (!this.device.hide_temperature && this.TemperatureSensor?.Service) {
363
+ this.TemperatureSensor.Service.updateCharacteristic(this.hap.Characteristic.CurrentTemperature, e);
364
+ }
365
+ this.Battery.Service.updateCharacteristic(this.hap.Characteristic.BatteryLevel, e);
366
+ this.Battery.Service.updateCharacteristic(this.hap.Characteristic.StatusLowBattery, e);
367
+ }
368
+ }
369
+ //# sourceMappingURL=meterpro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meterpro.js","sourceRoot":"","sources":["../../src/device/meterpro.ts"],"names":[],"mappings":"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"}
@@ -59,6 +59,7 @@ export declare class SwitchBotPlatform implements DynamicPlatformPlugin {
59
59
  private createBot;
60
60
  private createMeter;
61
61
  private createMeterPlus;
62
+ private createMeterPro;
62
63
  private createHub2;
63
64
  private createIOSensor;
64
65
  private createWaterDetector;
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
package/dist/platform.js CHANGED
@@ -19,6 +19,7 @@ import { StripLight } from './device/lightstrip.js';
19
19
  import { Lock } from './device/lock.js';
20
20
  import { Meter } from './device/meter.js';
21
21
  import { MeterPlus } from './device/meterplus.js';
22
+ import { MeterPro } from './device/meterpro.js';
22
23
  import { Motion } from './device/motion.js';
23
24
  import { Plug } from './device/plug.js';
24
25
  import { RobotVacuumCleaner } from './device/robotvacuumcleaner.js';
@@ -579,6 +580,7 @@ export class SwitchBotPlatform {
579
580
  'Meter': this.createMeter.bind(this),
580
581
  'MeterPlus': this.createMeterPlus.bind(this),
581
582
  'Meter Plus (JP)': this.createMeterPlus.bind(this),
583
+ 'Meter Pro': this.createMeterPro.bind(this),
582
584
  'WoIOSensor': this.createIOSensor.bind(this),
583
585
  'Water Detector': this.createWaterDetector.bind(this),
584
586
  'Motion Sensor': this.createMotion.bind(this),
@@ -900,6 +902,67 @@ export class SwitchBotPlatform {
900
902
  await this.debugLog(`Device not registered: ${device.deviceName} ${device.deviceType} deviceId: ${device.deviceId}`);
901
903
  }
902
904
  }
905
+ async createMeterPro(device) {
906
+ const uuid = this.api.hap.uuid.generate(`${device.deviceId}-${device.deviceType}`);
907
+ // see if an accessory with the same uuid has already been registered and restored from
908
+ // the cached devices we stored in the `configureAccessory` method above
909
+ const existingAccessory = this.accessories.find(accessory => accessory.UUID === uuid);
910
+ if (existingAccessory) {
911
+ // the accessory already exists
912
+ if (await this.registerDevice(device)) {
913
+ // console.log("existingAccessory", existingAccessory);
914
+ // if you need to update the accessory.context then you should run `api.updatePlatformAccessories`. eg.:
915
+ existingAccessory.context.device = device;
916
+ existingAccessory.context.model = SwitchBotModel.MeterPro ?? SwitchBotModel.MeterProCO2;
917
+ existingAccessory.context.deviceId = device.deviceId;
918
+ existingAccessory.context.deviceType = device.deviceType;
919
+ existingAccessory.displayName = device.configDeviceName
920
+ ? await this.validateAndCleanDisplayName(device.configDeviceName, 'configDeviceName', device.configDeviceName)
921
+ : await this.validateAndCleanDisplayName(device.deviceName, 'deviceName', device.deviceName);
922
+ existingAccessory.context.connectionType = await this.connectionType(device);
923
+ existingAccessory.context.version = device.firmware ?? device.version ?? this.version ?? '0.0.0';
924
+ this.infoLog(`Restoring existing accessory from cache: ${existingAccessory.displayName} deviceId: ${device.deviceId}`);
925
+ this.api.updatePlatformAccessories([existingAccessory]);
926
+ // create the accessory handler for the restored accessory
927
+ // this is imported from `platformAccessory.ts`
928
+ new MeterPro(this, existingAccessory, device);
929
+ await this.debugLog(`${device.deviceType} uuid: ${device.deviceId}-${device.deviceType}, (${existingAccessory.UUID})`);
930
+ }
931
+ else {
932
+ this.unregisterPlatformAccessories(existingAccessory);
933
+ }
934
+ }
935
+ else if (await this.registerDevice(device)) {
936
+ // create a new accessory
937
+ const accessory = new this.api.platformAccessory(device.configDeviceName
938
+ ? await this.validateAndCleanDisplayName(device.configDeviceName, 'configDeviceName', device.configDeviceName)
939
+ : await this.validateAndCleanDisplayName(device.deviceName, 'deviceName', device.deviceName), uuid);
940
+ // store a copy of the device object in the `accessory.context`
941
+ // the `context` property can be used to store any data about the accessory you may need
942
+ accessory.context.device = device;
943
+ accessory.context.model = SwitchBotModel.MeterPro ?? SwitchBotModel.MeterProCO2;
944
+ accessory.context.deviceId = device.deviceId;
945
+ accessory.context.deviceType = device.deviceType;
946
+ accessory.displayName = device.configDeviceName
947
+ ? await this.validateAndCleanDisplayName(device.configDeviceName, 'configDeviceName', device.configDeviceName)
948
+ : await this.validateAndCleanDisplayName(device.deviceName, 'deviceName', device.deviceName);
949
+ accessory.context.connectionType = await this.connectionType(device);
950
+ accessory.context.connectionType = await this.connectionType(device);
951
+ accessory.context.version = device.firmware ?? device.version ?? this.version ?? '0.0.0';
952
+ const newOrExternal = !device.external ? 'Adding new' : 'Loading external';
953
+ await this.infoLog(`${newOrExternal} accessory: ${accessory.displayName} deviceId: ${device.deviceId}`);
954
+ // create the accessory handler for the newly create accessory
955
+ // this is imported from `platformAccessory.ts`
956
+ new MeterPro(this, accessory, device);
957
+ await this.debugLog(`${device.deviceType} uuid: ${device.deviceId}-${device.deviceType}, (${accessory.UUID})`);
958
+ // publish device externally or link the accessory to your platform
959
+ this.externalOrPlatform(device, accessory);
960
+ this.accessories.push(accessory);
961
+ }
962
+ else {
963
+ await this.debugLog(`Device not registered: ${device.deviceName} ${device.deviceType} deviceId: ${device.deviceId}`);
964
+ }
965
+ }
903
966
  async createHub2(device) {
904
967
  const uuid = this.api.hap.uuid.generate(`${device.deviceId}-${device.deviceType}`);
905
968
  // see if an accessory with the same uuid has already been registered and restored from