nubli
Version:
Nuki Bluetooth Library
54 lines (53 loc) • 2.87 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const SmartLockCommand_1 = require("./SmartLockCommand");
const states_1 = require("../states");
const smartLock_1 = require("../smartLock");
class RequestConfigCommand extends SmartLockCommand_1.SmartLockCommand {
constructor() {
super(...arguments);
this.requiresChallenge = true;
}
requestData(config) {
return smartLock_1.SmartLock.prepareCommand(states_1.Command.REQUEST_CONFIG, this.challenge);
}
handleData(command, payload) {
this._response.data.nukiId = payload.readUInt32LE(0);
this._response.data.name = payload.slice(4, 36).toString('utf8').replace(/\0/g, '');
this._response.data.latitude = payload.readFloatLE(36);
this._response.data.longitude = payload.readFloatLE(40);
this._response.data.autoUnlatch = payload.readUInt8(44) == 1;
this._response.data.pairingEnabled = payload.readUInt8(45) == 1;
this._response.data.buttonEnabled = payload.readUInt8(46) == 1;
this._response.data.ledEnabled = payload.readUInt8(47) == 1;
this._response.data.ledBrightness = payload.readUInt8(48);
let year = payload.readUInt16LE(49);
let month = payload.readUInt8(51) - 1;
let day = payload.readUInt8(52);
let hour = payload.readUInt8(53);
let minute = payload.readUInt8(54);
let second = payload.readUInt8(55);
let timeOffset = payload.readInt16LE(56);
let date = new Date(Date.UTC(year, month, day, hour, minute, second) + timeOffset * 1000);
this._response.data.currentTime = date;
this._response.data.dstMode = payload.readUInt8(58);
this._response.data.hasFob = payload.readUInt8(59) == 1;
this._response.data.fobAction1 = payload.readUInt8(60);
this._response.data.fobAction2 = payload.readUInt8(61);
this._response.data.fobAction3 = payload.readUInt8(62);
this._response.data.singleLock = payload.readUInt8(63) == 1;
this._response.data.advertisingMode = payload.readUInt8(64);
this._response.data.hasKeyPad = payload.readUInt8(65) == 1;
let majorVersion = payload.readUInt8(66);
let minorVersion = payload.readUInt8(67);
let patchVersion = payload.readUInt8(68);
this._response.data.firmwareVersion = majorVersion + "." + minorVersion + "." + patchVersion;
let hardwareMajorVersion = payload.readUInt8(69);
let hardwareMinorVersion = payload.readUInt8(70);
this._response.data.hardwareRevision = hardwareMajorVersion + "." + hardwareMinorVersion;
this._response.data.homeKitStatus = payload.readUInt8(71);
this._response.data.timeZoneId = payload.readUInt16LE(72);
this._complete = true;
}
}
exports.RequestConfigCommand = RequestConfigCommand;