homebridge-plejd 1.3.8 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +10 -2
- package/config.schema.json +2 -2
- package/dist/{plejdPlatformAccessory.d.ts → PlejdHbAccessory.d.ts} +5 -5
- package/dist/{plejdPlatformAccessory.js → PlejdHbAccessory.js} +8 -27
- package/dist/PlejdHbAccessory.js.map +1 -0
- package/dist/{plejdPlatform.d.ts → PlejdHbPlatform.d.ts} +9 -9
- package/dist/{plejdPlatform.js → PlejdHbPlatform.js} +30 -43
- package/dist/PlejdHbPlatform.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/plejdApi.d.ts +4 -8
- package/dist/plejdApi.js +70 -118
- package/dist/plejdApi.js.map +1 -1
- package/dist/plejdService.d.ts +20 -17
- package/dist/plejdService.js +140 -199
- package/dist/plejdService.js.map +1 -1
- package/dist/plejdUtils.js +8 -8
- package/dist/settings.d.ts +2 -1
- package/dist/settings.js +2 -1
- package/dist/settings.js.map +1 -1
- package/dist/utils.d.ts +1 -0
- package/dist/utils.js +2 -0
- package/dist/utils.js.map +1 -0
- package/package.json +3 -6
- package/dist/plejdPlatform.js.map +0 -1
- package/dist/plejdPlatformAccessory.js.map +0 -1
package/dist/plejdApi.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"plejdApi.js","sourceRoot":"","sources":["../src/plejdApi.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"plejdApi.js","sourceRoot":"","sources":["../src/plejdApi.ts"],"names":[],"mappings":"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"}
|
package/dist/plejdService.d.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
import { Logger } from
|
2
|
-
import { UserInputConfig } from
|
1
|
+
import { Logger } from 'homebridge';
|
2
|
+
import { UserInputConfig } from './model/userInputConfig.js';
|
3
3
|
export declare class PlejdService {
|
4
4
|
private readonly config;
|
5
5
|
readonly log: Logger;
|
@@ -7,22 +7,25 @@ export declare class PlejdService {
|
|
7
7
|
private connectedPeripheral;
|
8
8
|
private addressBuffer;
|
9
9
|
private dataCharacteristic;
|
10
|
-
private pingTimer;
|
11
|
-
private queueTimer;
|
12
10
|
private sendQueue;
|
13
11
|
constructor(config: UserInputConfig, log: Logger, onUpdate: (identifier: number, isOn: boolean, dim?: number) => void);
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
12
|
+
/**
|
13
|
+
*
|
14
|
+
* Update the state of a device
|
15
|
+
*
|
16
|
+
* @param identifier: The device identifier
|
17
|
+
* @param isOn: The new state of the device
|
18
|
+
* @param brightness: The new brightness of the device between 0-100
|
19
|
+
*/
|
20
|
+
updateState: (identifier: number, isOn: boolean, brightness: number | null) => Promise<void>;
|
21
|
+
private onDiscover;
|
22
|
+
private discoverCaracteristics;
|
23
|
+
private setupDevice;
|
24
|
+
private sendToDeviceQueued;
|
25
|
+
private handleQueuedMessages;
|
23
26
|
private startPlejdPing;
|
24
|
-
private
|
25
|
-
private
|
26
|
-
private
|
27
|
-
private
|
27
|
+
private handleNotification;
|
28
|
+
private startScanning;
|
29
|
+
private setupCommunication;
|
30
|
+
private authenticate;
|
28
31
|
}
|
package/dist/plejdService.js
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
-
import { plejdChalResp as plejdCharResp, plejdEncodeDecode, reverseBuffer, } from
|
2
|
-
import { randomBytes } from
|
3
|
-
import noble from
|
4
|
-
import { PLEJD_WRITE_TIMEOUT } from
|
5
|
-
|
1
|
+
import { plejdChalResp as plejdCharResp, plejdEncodeDecode, reverseBuffer, } from './plejdUtils.js';
|
2
|
+
import { randomBytes } from 'crypto';
|
3
|
+
import noble from '@abandonware/noble';
|
4
|
+
import { PLEJD_PING_TIMEOUT, PLEJD_WRITE_TIMEOUT } from './settings.js';
|
5
|
+
import { delay } from './utils.js';
|
6
|
+
const NOBLE_IS_POWER_ON = 'poweredOn';
|
6
7
|
/**
|
7
8
|
* Plejd BLE UUIDs
|
8
9
|
*/
|
@@ -17,15 +18,15 @@ var PlejdCharacteristics;
|
|
17
18
|
})(PlejdCharacteristics || (PlejdCharacteristics = {}));
|
18
19
|
var PlejdCommand;
|
19
20
|
(function (PlejdCommand) {
|
20
|
-
PlejdCommand["
|
21
|
-
PlejdCommand["StateBrightness"] = "
|
22
|
-
PlejdCommand["Brightness"] = "
|
23
|
-
PlejdCommand["
|
24
|
-
PlejdCommand["
|
25
|
-
PlejdCommand["RequestResponse"] = "
|
26
|
-
PlejdCommand["RequestNoResponse"] = "
|
27
|
-
PlejdCommand["RequestReadValue"] = "
|
28
|
-
PlejdCommand["ButtonClick"] = "
|
21
|
+
PlejdCommand["OnOffState"] = "0097";
|
22
|
+
PlejdCommand["StateBrightness"] = "00c8";
|
23
|
+
PlejdCommand["Brightness"] = "0098";
|
24
|
+
PlejdCommand["Scene"] = "0021";
|
25
|
+
PlejdCommand["Time"] = "001b";
|
26
|
+
PlejdCommand["RequestResponse"] = "0102";
|
27
|
+
PlejdCommand["RequestNoResponse"] = "0110";
|
28
|
+
PlejdCommand["RequestReadValue"] = "0103";
|
29
|
+
PlejdCommand["ButtonClick"] = "0006";
|
29
30
|
})(PlejdCommand || (PlejdCommand = {}));
|
30
31
|
export class PlejdService {
|
31
32
|
config;
|
@@ -34,8 +35,6 @@ export class PlejdService {
|
|
34
35
|
connectedPeripheral;
|
35
36
|
addressBuffer;
|
36
37
|
dataCharacteristic;
|
37
|
-
pingTimer;
|
38
|
-
queueTimer;
|
39
38
|
sendQueue;
|
40
39
|
constructor(config, log, onUpdate) {
|
41
40
|
this.config = config;
|
@@ -45,245 +44,170 @@ export class PlejdService {
|
|
45
44
|
this.dataCharacteristic = null;
|
46
45
|
this.connectedPeripheral = null;
|
47
46
|
this.sendQueue = [];
|
48
|
-
noble.on(
|
49
|
-
|
50
|
-
this.log.debug("Noble warning: ", msg);
|
47
|
+
noble.on('stateChange', async (state) => {
|
48
|
+
await this.startScanning(state);
|
51
49
|
});
|
50
|
+
noble.on('warning', (msg) => {
|
51
|
+
this.log.warn('Noble warning: ', msg);
|
52
|
+
});
|
53
|
+
noble.on('discover', async (peripheral) => await this.onDiscover(peripheral));
|
52
54
|
}
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
55
|
+
/**
|
56
|
+
*
|
57
|
+
* Update the state of a device
|
58
|
+
*
|
59
|
+
* @param identifier: The device identifier
|
60
|
+
* @param isOn: The new state of the device
|
61
|
+
* @param brightness: The new brightness of the device between 0-100
|
62
|
+
*/
|
63
|
+
updateState = async (identifier, isOn, brightness) => {
|
64
|
+
if (!this.connectedPeripheral || !this.dataCharacteristic || !this.addressBuffer) {
|
65
|
+
await this.startScanning();
|
57
66
|
return;
|
58
67
|
}
|
59
|
-
const
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
payload = Buffer.concat([
|
70
|
-
payload,
|
71
|
-
Buffer.from(dim.toString(16).padStart(4, "0"), "hex"),
|
72
|
-
]);
|
73
|
-
}
|
74
|
-
this.log.debug("UpdateState:", this.config.cryptoKey, this.addressBuffer, payload);
|
68
|
+
const payload = Buffer.from(!brightness || brightness === 0 ?
|
69
|
+
(identifier.toString(16).padStart(2, '0') +
|
70
|
+
PlejdCommand.RequestNoResponse +
|
71
|
+
PlejdCommand.OnOffState +
|
72
|
+
(isOn ? '01' : '00')) :
|
73
|
+
(identifier.toString(16).padStart(2, '0') +
|
74
|
+
PlejdCommand.RequestNoResponse +
|
75
|
+
PlejdCommand.Brightness +
|
76
|
+
'01' +
|
77
|
+
Math.round(2.55 * brightness).toString(16).padStart(4, '0')), 'hex');
|
75
78
|
const data = plejdEncodeDecode(this.config.cryptoKey, this.addressBuffer, payload);
|
76
|
-
this.
|
79
|
+
this.sendToDeviceQueued(data);
|
77
80
|
};
|
78
81
|
// -------------- Private -------------- \\
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
this.log.debug("stateChange | Started | " + state);
|
85
|
-
this.startConnection();
|
86
|
-
};
|
87
|
-
startConnection = () => {
|
88
|
-
if (this.connectedPeripheral === null || noble._state !== "poweredOn") {
|
89
|
-
noble.startScanning([PlejdCharacteristics.Service], false, (e) => {
|
90
|
-
if (e) {
|
91
|
-
this.log.error("Unable to start scanning", e);
|
92
|
-
}
|
93
|
-
});
|
94
|
-
noble.once("discover", (peripheral) => this.discover(peripheral));
|
82
|
+
onDiscover = async (peripheral) => {
|
83
|
+
this.log.debug(`Discovered | ${peripheral.advertisement.localName} | addr: ${peripheral.address} | RSSI: ${peripheral.rssi} dB`);
|
84
|
+
await noble.stopScanningAsync();
|
85
|
+
try {
|
86
|
+
await peripheral.connectAsync();
|
95
87
|
}
|
96
|
-
|
97
|
-
this.
|
98
|
-
|
99
|
-
this.log.error("Unable to reconnect", e);
|
100
|
-
});
|
88
|
+
catch (error) {
|
89
|
+
this.log.error(`Connecting failed | ${peripheral.advertisement.localName} | addr: ${peripheral.address}) - err: ${error}`);
|
90
|
+
return;
|
101
91
|
}
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
return;
|
111
|
-
}
|
112
|
-
this.connectToPeripheral(peripheral);
|
92
|
+
this.connectedPeripheral = peripheral;
|
93
|
+
peripheral.once('disconnect', async () => {
|
94
|
+
this.connectedPeripheral?.removeAllListeners();
|
95
|
+
this.connectedPeripheral = null;
|
96
|
+
this.addressBuffer = null;
|
97
|
+
this.dataCharacteristic = null;
|
98
|
+
this.log.info('Disconnected from mesh');
|
99
|
+
await this.startScanning();
|
113
100
|
});
|
101
|
+
const characteristics = await this.discoverCaracteristics(peripheral);
|
102
|
+
if (!characteristics) {
|
103
|
+
this.log.error('Failed to discover characteristics, disconnecting...');
|
104
|
+
await peripheral.disconnectAsync();
|
105
|
+
return;
|
106
|
+
}
|
107
|
+
await this.setupDevice(peripheral, characteristics);
|
114
108
|
};
|
115
|
-
|
109
|
+
discoverCaracteristics = async (peripheral) => {
|
116
110
|
const addr = peripheral.address;
|
117
|
-
this.log.info(`Connected | ${peripheral.advertisement.localName} (addr: ${addr})`);
|
118
|
-
this.
|
119
|
-
this.addressBuffer = reverseBuffer(Buffer.from(String(addr).replace(/:/g, ""), "hex"));
|
111
|
+
this.log.info(`Connected to mesh | ${peripheral.advertisement.localName} (addr: ${addr})`);
|
112
|
+
this.addressBuffer = reverseBuffer(Buffer.from(String(addr).replace(/:/g, ''), 'hex'));
|
120
113
|
const services = [PlejdCharacteristics.Service];
|
121
|
-
const
|
114
|
+
const characteristicIds = [
|
122
115
|
PlejdCharacteristics.Data,
|
123
116
|
PlejdCharacteristics.LastData,
|
124
117
|
PlejdCharacteristics.Auth,
|
125
118
|
PlejdCharacteristics.Ping,
|
126
119
|
];
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
}
|
132
|
-
|
133
|
-
}
|
134
|
-
peripheral.once("disconnect", () => {
|
135
|
-
this.log.info("Peripheral disconnected");
|
136
|
-
});
|
120
|
+
try {
|
121
|
+
return (await peripheral.discoverSomeServicesAndCharacteristicsAsync(services, characteristicIds)).characteristics;
|
122
|
+
}
|
123
|
+
catch (error) {
|
124
|
+
this.log.error(`Failed to setup device | ${peripheral.advertisement.localName} (addr: ${addr}) - err: ${error}`);
|
125
|
+
return;
|
126
|
+
}
|
137
127
|
};
|
138
|
-
|
139
|
-
characteristics.forEach((c) => this.log.info("Characteristic: ", c.uuid));
|
128
|
+
setupDevice = async (peripheral, characteristics) => {
|
140
129
|
const authChar = characteristics.find((char) => char.uuid === PlejdCharacteristics.Auth);
|
141
130
|
const lastDataChar = characteristics.find((char) => char.uuid === PlejdCharacteristics.LastData);
|
142
131
|
const pingChar = characteristics.find((char) => char.uuid === PlejdCharacteristics.Ping);
|
143
132
|
this.dataCharacteristic =
|
144
133
|
peripheral?.services[0]?.characteristics?.find((char) => char.uuid === PlejdCharacteristics.Data) ?? null;
|
145
134
|
if (!authChar || !lastDataChar || !pingChar) {
|
146
|
-
this.log.error(
|
135
|
+
this.log.error('Unable to extract characteristic during discovery', authChar, lastDataChar, pingChar);
|
147
136
|
return;
|
148
137
|
}
|
149
|
-
this.
|
150
|
-
|
151
|
-
this.startPlejdQueue();
|
152
|
-
lastDataChar.subscribe((error) => {
|
153
|
-
if (error) {
|
154
|
-
this.log.error("Error subscribing | " + error);
|
155
|
-
return;
|
156
|
-
}
|
157
|
-
lastDataChar.on("data", (data, isNotification) => this.gotData(data, isNotification));
|
158
|
-
});
|
159
|
-
});
|
138
|
+
await this.authenticate(authChar);
|
139
|
+
await this.setupCommunication(pingChar, lastDataChar);
|
160
140
|
};
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
return;
|
166
|
-
}
|
167
|
-
authChar.read((error, data) => {
|
168
|
-
if (error) {
|
169
|
-
this.log.error("Error reading auth | " + error);
|
170
|
-
return;
|
171
|
-
}
|
172
|
-
authChar.write(plejdCharResp(this.config.cryptoKey, data), false, (error) => {
|
173
|
-
if (error) {
|
174
|
-
this.log.error("Error writing auth char | " + error);
|
175
|
-
return;
|
176
|
-
}
|
177
|
-
callback();
|
178
|
-
});
|
179
|
-
});
|
180
|
-
});
|
181
|
-
};
|
182
|
-
startPlejdQueue = () => {
|
183
|
-
if (this.queueTimer) {
|
184
|
-
clearInterval(this.queueTimer);
|
185
|
-
}
|
186
|
-
this.queueTimer = setTimeout(() => this.writePlejdQueueItems(), PLEJD_WRITE_TIMEOUT);
|
187
|
-
};
|
188
|
-
writePlejdQueueItems = () => {
|
189
|
-
const data = this.sendQueue.pop();
|
190
|
-
if (this.dataCharacteristic && data) {
|
191
|
-
this.plejdWrite(this.dataCharacteristic, data);
|
192
|
-
this.queueTimer = setTimeout(() => this.startPlejdQueue(), PLEJD_WRITE_TIMEOUT / 2);
|
193
|
-
}
|
194
|
-
else {
|
195
|
-
this.queueTimer = setTimeout(() => this.startPlejdQueue(), PLEJD_WRITE_TIMEOUT);
|
141
|
+
sendToDeviceQueued = async (data) => {
|
142
|
+
this.sendQueue.unshift(data);
|
143
|
+
if (this.sendQueue.length === 1) {
|
144
|
+
await this.handleQueuedMessages();
|
196
145
|
}
|
197
146
|
};
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
if (this.connectedPeripheral) {
|
204
|
-
this.plejdPing(pingChar, (pingOk) => {
|
205
|
-
if (!pingOk) {
|
206
|
-
this.disconnect(() => {
|
207
|
-
this.startConnection();
|
208
|
-
});
|
209
|
-
}
|
210
|
-
});
|
147
|
+
handleQueuedMessages = async () => {
|
148
|
+
while (this.sendQueue.length > 0 && this.connectedPeripheral && this.dataCharacteristic) {
|
149
|
+
const data = this.sendQueue.pop();
|
150
|
+
if (!data) {
|
151
|
+
return;
|
211
152
|
}
|
212
|
-
|
153
|
+
this.log.debug(`BLE command sent to ${this.addressBuffer?.toString('hex') ?? 'Unknown'} | ${data.length} bytes | ${data.toString('hex')}`);
|
154
|
+
await this.dataCharacteristic.writeAsync(data, false);
|
155
|
+
await delay(PLEJD_WRITE_TIMEOUT);
|
156
|
+
}
|
213
157
|
};
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
}
|
221
|
-
pingChar.read((error, pong) => {
|
222
|
-
if (error) {
|
223
|
-
this.log.error("Error reading pong | " + error);
|
224
|
-
return callback(false);
|
225
|
-
}
|
158
|
+
startPlejdPing = async (pingChar) => {
|
159
|
+
while (this.connectedPeripheral && pingChar) {
|
160
|
+
try {
|
161
|
+
const ping = randomBytes(1);
|
162
|
+
pingChar.writeAsync(ping, false);
|
163
|
+
const pong = await pingChar.readAsync();
|
226
164
|
if (((ping[0] + 1) & 0xff) !== pong[0]) {
|
227
|
-
this.log.error(
|
228
|
-
callback(false);
|
229
|
-
}
|
230
|
-
else {
|
231
|
-
this.log.debug(`Ping success: ${ping[0]} ${pong[0]}`);
|
232
|
-
callback(true);
|
165
|
+
this.log.error('Ping pong communication failed, missing pong response');
|
233
166
|
}
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
}
|
241
|
-
clearInterval(this.pingTimer);
|
242
|
-
if (this.connectedPeripheral) {
|
243
|
-
this.log.info("Disconnecting peripheral");
|
244
|
-
this.connectedPeripheral.disconnect();
|
245
|
-
}
|
246
|
-
if (callback) {
|
247
|
-
callback();
|
167
|
+
await delay(PLEJD_PING_TIMEOUT);
|
168
|
+
}
|
169
|
+
catch (error) {
|
170
|
+
this.log.warn('Ping failed, device disconnected, will retry to connect to mesh: ', error);
|
171
|
+
await this.startScanning();
|
172
|
+
}
|
248
173
|
}
|
249
174
|
};
|
250
|
-
|
251
|
-
if (!this.addressBuffer || this.addressBuffer?.byteLength === 0) {
|
175
|
+
handleNotification = async (data, isNotification) => {
|
176
|
+
if (!this.connectedPeripheral || !this.addressBuffer || this.addressBuffer?.byteLength === 0) {
|
252
177
|
return;
|
253
178
|
}
|
254
|
-
this.log.debug("GotData:", this.config.cryptoKey, this.addressBuffer, data);
|
255
179
|
const decodedData = plejdEncodeDecode(this.config.cryptoKey, this.addressBuffer, data);
|
256
180
|
const id = parseInt(decodedData[0].toString(), 10);
|
257
|
-
const command = decodedData.toString(
|
258
|
-
const isOn = parseInt(decodedData.toString(
|
181
|
+
const command = decodedData.toString('hex', 3, 5);
|
182
|
+
const isOn = parseInt(decodedData.toString('hex', 5, 6), 10) === 1;
|
259
183
|
const commandType = Object.values(PlejdCommand).find((x) => x.toString() === command) ??
|
260
|
-
|
184
|
+
'Unknown';
|
261
185
|
const d = {
|
262
186
|
id: id,
|
263
187
|
command: command,
|
264
188
|
commandType: commandType,
|
265
189
|
on: isOn,
|
266
190
|
Notification: isNotification,
|
267
|
-
payload: decodedData.toString(
|
191
|
+
payload: decodedData.toString('hex'),
|
268
192
|
};
|
269
|
-
this.log.debug(
|
193
|
+
this.log.debug('Handle BLE notification', d);
|
270
194
|
switch (command) {
|
271
195
|
case PlejdCommand.Time: {
|
272
|
-
const arg = parseInt(reverseBuffer(decodedData.subarray(5, 9)).toString(
|
196
|
+
const arg = parseInt(reverseBuffer(decodedData.subarray(5, 9)).toString('hex'), 16);
|
273
197
|
const date = new Date(arg * 1000);
|
274
|
-
this.log.debug(
|
198
|
+
this.log.debug('Time sync: ' + date.toString());
|
275
199
|
break;
|
276
200
|
}
|
277
201
|
case PlejdCommand.Brightness:
|
278
202
|
case PlejdCommand.StateBrightness: {
|
279
|
-
const dim = parseInt(decodedData.toString(
|
203
|
+
const dim = parseInt(decodedData.toString('hex', 7, 8), 16);
|
280
204
|
// Convert to Homebridge 1-100
|
281
205
|
const converted = dim === 0 ? 1 : (100 / 255) * dim;
|
282
206
|
this.onUpdate(id, isOn, converted);
|
283
207
|
break;
|
284
208
|
}
|
285
209
|
case PlejdCommand.Scene:
|
286
|
-
case PlejdCommand.
|
210
|
+
case PlejdCommand.OnOffState:
|
287
211
|
case PlejdCommand.ButtonClick:
|
288
212
|
case PlejdCommand.RequestResponse:
|
289
213
|
case PlejdCommand.RequestNoResponse:
|
@@ -293,17 +217,34 @@ export class PlejdService {
|
|
293
217
|
}
|
294
218
|
default: {
|
295
219
|
this.onUpdate(id, isOn);
|
296
|
-
this.log.
|
220
|
+
this.log.warn(`Unknown | command: ${command} | id: ${id} | ${decodedData.toString('hex')}`);
|
297
221
|
}
|
298
222
|
}
|
299
223
|
};
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
224
|
+
startScanning = async (state = undefined) => {
|
225
|
+
if (!state) {
|
226
|
+
state = noble._state;
|
227
|
+
}
|
228
|
+
if (state === NOBLE_IS_POWER_ON) {
|
229
|
+
this.log.debug('Scanning for Plejd devices');
|
230
|
+
await noble.startScanningAsync([PlejdCharacteristics.Service], false);
|
231
|
+
}
|
232
|
+
};
|
233
|
+
setupCommunication = async (pingChar, lastDataChar) => {
|
234
|
+
this.startPlejdPing(pingChar);
|
235
|
+
await lastDataChar.subscribeAsync();
|
236
|
+
lastDataChar.on('data', async (data, isNotification) => {
|
237
|
+
if (!lastDataChar || !this.connectedPeripheral) {
|
238
|
+
await lastDataChar.unsubscribeAsync();
|
304
239
|
return;
|
305
240
|
}
|
241
|
+
await this.handleNotification(data, isNotification);
|
306
242
|
});
|
307
243
|
};
|
244
|
+
authenticate = async (authChar) => {
|
245
|
+
await authChar.writeAsync(Buffer.from([0x00]), false);
|
246
|
+
const data = await authChar.readAsync();
|
247
|
+
await authChar.writeAsync(plejdCharResp(this.config.cryptoKey, data), false);
|
248
|
+
};
|
308
249
|
}
|
309
250
|
//# sourceMappingURL=plejdService.js.map
|
package/dist/plejdService.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"plejdService.js","sourceRoot":"","sources":["../src/plejdService.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"plejdService.js","sourceRoot":"","sources":["../src/plejdService.ts"],"names":[],"mappings":"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"}
|
package/dist/plejdUtils.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
import { createCipheriv, createHash } from
|
1
|
+
import { createCipheriv, createHash } from 'crypto';
|
2
2
|
export const plejdChalResp = (key, chal) => {
|
3
|
-
const intermediate = createHash(
|
3
|
+
const intermediate = createHash('sha256').update(xor(key, chal)).digest();
|
4
4
|
const part1 = intermediate.slice(0, 16);
|
5
5
|
const part2 = intermediate.slice(16);
|
6
6
|
return xor(part1, part2);
|
@@ -11,16 +11,16 @@ export const plejdEncodeDecode = (key, addressBuffer, data) => {
|
|
11
11
|
addressBuffer,
|
12
12
|
addressBuffer.subarray(0, 4),
|
13
13
|
]);
|
14
|
-
const cipher = createCipheriv(
|
14
|
+
const cipher = createCipheriv('aes-128-ecb', key, '');
|
15
15
|
cipher.setAutoPadding(false);
|
16
|
-
let ct = cipher.update(buf).toString(
|
17
|
-
ct += cipher.final().toString(
|
18
|
-
const ctBuff = Buffer.from(ct,
|
19
|
-
let output =
|
16
|
+
let ct = cipher.update(buf).toString('hex');
|
17
|
+
ct += cipher.final().toString('hex');
|
18
|
+
const ctBuff = Buffer.from(ct, 'hex');
|
19
|
+
let output = '';
|
20
20
|
for (let i = 0, length = data.length; i < length; i++) {
|
21
21
|
output += String.fromCharCode(data[i] ^ ctBuff[i % 16]);
|
22
22
|
}
|
23
|
-
return Buffer.from(output,
|
23
|
+
return Buffer.from(output, 'ascii');
|
24
24
|
};
|
25
25
|
export const reverseBuffer = (src) => {
|
26
26
|
const buffer = Buffer.allocUnsafe(src.length);
|
package/dist/settings.d.ts
CHANGED
@@ -6,7 +6,8 @@ export declare const PLATFORM_NAME = "Plejd";
|
|
6
6
|
* This must match the name of your plugin as defined the package.json
|
7
7
|
*/
|
8
8
|
export declare const PLUGIN_NAME = "homebridge-plejd";
|
9
|
-
export declare const PLEJD_WRITE_TIMEOUT =
|
9
|
+
export declare const PLEJD_WRITE_TIMEOUT = 50;
|
10
|
+
export declare const PLEJD_PING_TIMEOUT = 3000;
|
10
11
|
/**
|
11
12
|
* Lights and switches from Plejd
|
12
13
|
*/
|
package/dist/settings.js
CHANGED
@@ -6,7 +6,8 @@ export const PLATFORM_NAME = 'Plejd';
|
|
6
6
|
* This must match the name of your plugin as defined the package.json
|
7
7
|
*/
|
8
8
|
export const PLUGIN_NAME = 'homebridge-plejd';
|
9
|
-
export const PLEJD_WRITE_TIMEOUT =
|
9
|
+
export const PLEJD_WRITE_TIMEOUT = 50;
|
10
|
+
export const PLEJD_PING_TIMEOUT = 3000;
|
10
11
|
/**
|
11
12
|
* Lights and switches from Plejd
|
12
13
|
*/
|
package/dist/settings.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC;AAErC;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,kBAAkB,CAAC;AAE9C,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,QAAQ;CACT,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,QAAQ;CACT,CAAC;AACF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;CACT,CAAC"}
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC;AAErC;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,kBAAkB,CAAC;AAE9C,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AACtC,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AACvC;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,QAAQ;CACT,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,QAAQ;CACT,CAAC;AACF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;CACT,CAAC"}
|
package/dist/utils.d.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export declare const delay: (ms: number) => Promise<unknown>;
|
package/dist/utils.js
ADDED