UNPKG

homebridge-panasonic-bluray-players

Version:

Get status of Panasonic Blu-ray players

55 lines 2.44 kB
import { PanasonicPlatformAccessory } from './platformAccessory.js'; import { PLATFORM_NAME, PLUGIN_NAME } from './settings.js'; export class PanaBridgePlatform { log; config; api; accessories = new Map(); discoveredCacheUUIDs = []; constructor(log, config, api) { this.log = log; this.config = config; this.api = api; this.log.debug('Finished initializing platform:', this.config.name); this.api.on('didFinishLaunching', () => { this.log.debug('Executed didFinishLaunching callback'); this.discoverDevices(); }); } configureAccessory(accessory) { this.log.info('Loading accessory from cache:', accessory.displayName); this.accessories.set(accessory.UUID, accessory); } discoverDevices() { // If a host is provided in the platform config, register that device. if (this.config.host) { const device = { uniqueId: this.config.host, // using the host as a unique ID displayName: 'Panasonic Blu-ray player', host: this.config.host, }; const uuid = this.api.hap.uuid.generate(device.uniqueId); const existingAccessory = this.accessories.get(uuid); if (existingAccessory) { this.log.info('Restoring existing accessory from cache:', existingAccessory.displayName); new PanasonicPlatformAccessory(this, existingAccessory); } else { this.log.info('Adding new accessory:', device.displayName); const accessory = new this.api.platformAccessory(device.displayName, uuid); accessory.context.device = device; new PanasonicPlatformAccessory(this, accessory); this.api.registerPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [accessory]); } this.discoveredCacheUUIDs.push(uuid); } // Remove accessories from cache that are no longer present. for (const [uuid, accessory] of this.accessories) { if (!this.discoveredCacheUUIDs.includes(uuid)) { this.log.info('Removing existing accessory from cache:', accessory.displayName); this.api.unregisterPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [accessory]); } } } } //# sourceMappingURL=platform.js.map