homebridge-wideq
Version:
WideQ for Homebridge
91 lines (90 loc) • 4.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AccessoryParser = void 0;
var AccessoryParser = /** @class */ (function () {
function AccessoryParser(platform, accessoryType) {
this.platform = platform;
this.accessoryType = accessoryType;
}
AccessoryParser.prototype.getAccessoryUUID = function (deviceSid, accessoryType) {
switch (arguments.length) {
case 1:
return this.platform.UUIDGen.generate(deviceSid + this.accessoryType);
case 2:
return this.platform.UUIDGen.generate(deviceSid + accessoryType);
default:
return null;
}
};
AccessoryParser.prototype.getAccessoryCategory = function (device) {
throw new Error('Not implemented.');
};
AccessoryParser.prototype.getAccessoryInformation = function (device) {
return {
'Manufacturer': 'LG',
'Model': device.modelId,
'SerialNumber': device.id,
};
};
AccessoryParser.prototype.getCreateAccessories = function (device) {
var _this = this;
var deviceInfo = device.device;
var uuid = this.getAccessoryUUID(deviceInfo.id);
var accessory = this.platform.AccessoryUtil.getByUUID(uuid);
if (null == accessory) {
accessory = new this.platform.PlatformAccessory(deviceInfo.name, uuid, this.getAccessoryCategory(deviceInfo));
var accessoryInformation = this.getAccessoryInformation(deviceInfo);
accessory.getService(this.platform.Service.AccessoryInformation)
.setCharacteristic(this.platform.Characteristic.Manufacturer, accessoryInformation['Manufacturer'] || 'Undefined')
.setCharacteristic(this.platform.Characteristic.Model, accessoryInformation['Model'] || 'Undefined')
.setCharacteristic(this.platform.Characteristic.SerialNumber, accessoryInformation['SerialNumber'] || 'Undefined');
this.parserAccessories(device);
accessory.reachable = true;
accessory.on('identify', function (paired, callback) {
_this.platform.log.debug(accessory.displayName + ' Identify!!!');
if (callback) { // callback may not exist
callback();
}
});
return accessory;
}
return null;
};
AccessoryParser.prototype.parserAccessories = function (device, status) {
var uuid = this.getAccessoryUUID(device.device.id);
var accessory = this.platform.AccessoryUtil.getByUUID(uuid);
if (!accessory)
return;
return this.updateAccessoryStatuses(device, accessory, status);
};
AccessoryParser.prototype.updateAccessoryStatuses = function (device, accessory, status) {
throw new Error('Not implemented.');
};
AccessoryParser.prototype.createOrUpdateService = function (accessory, name, serviceType, map) {
var service = accessory.getService(name);
if (!service) {
service = accessory.addService(serviceType, name, name);
}
map.forEach(function (item) {
var characteristic = service.getCharacteristic(item.characteristic);
if (item.options) {
characteristic.setProps(item.options);
}
if (item.setter && characteristic.listeners('set').length === 0) {
characteristic.on('set', function (value, callback) {
return item.setter && item.setter(value)
.then(function () { return characteristic.updateValue(value); })
.catch(function (err) { return callback(err); });
});
}
if (item.getter) {
var currentValue = item.getter();
if (null != currentValue) {
characteristic.updateValue(currentValue);
}
}
});
};
return AccessoryParser;
}());
exports.AccessoryParser = AccessoryParser;