@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 +9 -0
- package/dist/device/meterpro.d.ts +42 -0
- package/dist/device/meterpro.d.ts.map +1 -0
- package/dist/device/meterpro.js +369 -0
- package/dist/device/meterpro.js.map +1 -0
- package/dist/platform.d.ts +1 -0
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +63 -0
- package/dist/platform.js.map +1 -1
- package/package.json +3 -3
- package/src/device/meterpro.ts +417 -0
- package/src/platform.ts +65 -0
- package/.github/npm-version-script.cjs +0 -81
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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"}
|
package/dist/platform.d.ts
CHANGED
package/dist/platform.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAEvC,OAAO,KAAK,EAAE,GAAG,EAAE,qBAAqB,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AACxF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAEtC,OAAO,KAAK,EAAkC,aAAa,EAAE,eAAe,EAAW,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAarI,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEvH,OAAO,EAAY,YAAY,EAAkB,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;
|
|
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
|