Set Plejd time only hourly when explicityly requesting
This commit is contained in:
parent
12ec9a1b7c
commit
74716557c8
1 changed files with 20 additions and 18 deletions
|
|
@ -220,7 +220,7 @@ class PlejBLEHandler extends EventEmitter {
|
||||||
this.emit('connected');
|
this.emit('connected');
|
||||||
|
|
||||||
// Connected and authenticated, request current time and start ping
|
// Connected and authenticated, request current time and start ping
|
||||||
this.requestCurrentPlejdTime();
|
this._requestCurrentPlejdTime();
|
||||||
this.startPing();
|
this.startPing();
|
||||||
this.startWriteQueue();
|
this.startWriteQueue();
|
||||||
|
|
||||||
|
|
@ -667,7 +667,7 @@ class PlejBLEHandler extends EventEmitter {
|
||||||
await this.onWriteSuccess();
|
await this.onWriteSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
async requestCurrentPlejdTime() {
|
async _requestCurrentPlejdTime() {
|
||||||
logger.info('Requesting current Plejd time...');
|
logger.info('Requesting current Plejd time...');
|
||||||
|
|
||||||
// Eg: 0b0102001b: 0b: id, 0102: read, 001b: time
|
// Eg: 0b0102001b: 0b: id, 0102: read, 001b: time
|
||||||
|
|
@ -683,7 +683,7 @@ class PlejBLEHandler extends EventEmitter {
|
||||||
shouldRetry: true,
|
shouldRetry: true,
|
||||||
payload,
|
payload,
|
||||||
});
|
});
|
||||||
setTimeout(() => this.requestCurrentPlejdTime(), 1000 * 3600); // Once per hour
|
setTimeout(() => this._requestCurrentPlejdTime(), 1000 * 3600); // Once per hour
|
||||||
}
|
}
|
||||||
|
|
||||||
startWriteQueue() {
|
startWriteQueue() {
|
||||||
|
|
@ -946,22 +946,24 @@ class PlejBLEHandler extends EventEmitter {
|
||||||
logger.debug(`Plejd time update ${plejdTime.toString()}, diff ${diffSeconds} seconds`);
|
logger.debug(`Plejd time update ${plejdTime.toString()}, diff ${diffSeconds} seconds`);
|
||||||
if (Math.abs(diffSeconds) > 60) {
|
if (Math.abs(diffSeconds) > 60) {
|
||||||
logger.warn(
|
logger.warn(
|
||||||
`Plejd time off by more than 1 minute. Reported time: ${plejdTime.toString()}, diff ${diffSeconds} seconds`,
|
`Plejd time off by more than 1 minute. Reported time: ${plejdTime.toString()}, diff ${diffSeconds} seconds. Time will be set hourly.`,
|
||||||
);
|
);
|
||||||
const newLocalTimestamp = now.getTime() / 1000 - offsetSecondsGuess;
|
if (this.connectedDevice && deviceId === this.connectedDevice.id) {
|
||||||
logger.info(`Setting time to ${now.toString()}`);
|
const newLocalTimestamp = (now.getTime() - offsetSecondsGuess) / 1000;
|
||||||
const payload = Buffer.alloc(10);
|
logger.info(`Setting time to ${now.toString()}`);
|
||||||
// E.g: 00 0110 001b 38df2360 00
|
const payload = Buffer.alloc(10);
|
||||||
// 00: set?, 0110: don't respond, 001b: time command, 38df236000: the time
|
// E.g: 00 0110 001b 38df2360 00
|
||||||
payload.write('000110001b', 0, 'hex');
|
// 00: set?, 0110: don't respond, 001b: time command, 38df236000: the time
|
||||||
payload.writeInt32LE(Math.trunc(newLocalTimestamp), 5);
|
payload.write('000110001b', 0, 'hex');
|
||||||
payload.write('00', 9, 'hex');
|
payload.writeInt32LE(Math.trunc(newLocalTimestamp), 5);
|
||||||
this.writeQueue.unshift({
|
payload.write('00', 9, 'hex');
|
||||||
deviceId: this.connectedDevice.id,
|
this.writeQueue.unshift({
|
||||||
log: 'SetTime',
|
deviceId: this.connectedDevice.id,
|
||||||
shouldRetry: true,
|
log: 'SetTime',
|
||||||
payload,
|
shouldRetry: true,
|
||||||
});
|
payload,
|
||||||
|
});
|
||||||
|
}
|
||||||
} else if (deviceId !== BLE_BROADCAST_DEVICE_ID) {
|
} else if (deviceId !== BLE_BROADCAST_DEVICE_ID) {
|
||||||
logger.info('Got time response. Plejd time in sync with Home Assistant time');
|
logger.info('Got time response. Plejd time in sync with Home Assistant time');
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue