Files

46 lines
2.0 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ESPHomeRGBWWPlatform = void 0;
const accessory_1 = require("./accessory");
class ESPHomeRGBWWPlatform {
constructor(log, config, api) {
this.log = log;
this.config = config;
this.api = api;
this.Service = this.api.hap.Service;
this.Characteristic = this.api.hap.Characteristic;
this.accessories = [];
this.log.debug('Finished initializing platform:', this.config.name);
this.api.on('didFinishLaunching', () => {
this.discoverDevices();
});
}
configureAccessory(accessory) {
this.log.info('Loading accessory from cache:', accessory.displayName);
this.accessories.push(accessory);
}
discoverDevices() {
const devices = this.config.lights || [];
for (const device of devices) {
const uuid = this.api.hap.uuid.generate(device.id);
const existingAccessory = this.accessories.find(accessory => accessory.UUID === uuid);
if (existingAccessory) {
this.log.info('Restoring existing accessory from cache:', existingAccessory.displayName);
if (existingAccessory.displayName !== device.name) {
existingAccessory.displayName = device.name;
this.api.updatePlatformAccessories([existingAccessory]);
}
new accessory_1.ESPHomeRGBWWAccessory(this, existingAccessory, device);
}
else {
this.log.info('Adding new accessory:', device.name);
const accessory = new this.api.platformAccessory(device.name, uuid);
accessory.context.device = device;
new accessory_1.ESPHomeRGBWWAccessory(this, accessory, device);
this.api.registerPlatformAccessories('homebridge-esphome-rgbww', 'ESPHomeRGBWW', [accessory]);
}
}
}
}
exports.ESPHomeRGBWWPlatform = ESPHomeRGBWWPlatform;
//# sourceMappingURL=platform.js.map