homebridge-eqiva-swift-bridge
Version:
Homebridge Eqiva Plugin Bridge for Swift Eqiva eQ-3 Bluetooth Lock Controller.
48 lines • 1.94 kB
JavaScript
import { PLUGIN_NAME, PLATFORM_NAME } from './settings.js';
import { SwiftBridge } from './websocket.js';
import { EqivaLockAccessory } from './eqivaLockAccessory.js';
export class HomebridgeEqivaSwiftBridgePlatform {
log;
config;
api;
Service;
Characteristic;
accessories = [];
swift;
constructor(log, config, api) {
this.log = log;
this.config = config;
this.api = api;
this.Service = api.hap.Service;
this.Characteristic = api.hap.Characteristic;
const port = this.config.wsPort ?? 9099;
this.swift = new SwiftBridge(log, port);
this.swift.on('listening', () => {
this.log.info(`WebSocket bridge started on port ${port}`);
});
// Homebridge lifecycle
this.api.on('didFinishLaunching', () => {
this.log.debug('didFinishLaunching – registering accessory');
this.addOrRestoreAccessory();
});
}
// Called for every accessory restored from cache
configureAccessory(accessory) {
this.log.info('Restoring accessory from cache:', accessory.displayName);
this.accessories.push(accessory);
}
// --------------------------------------------------------------------------
addOrRestoreAccessory() {
const uuid = this.api.hap.uuid.generate('eqiva-lock-accessory');
let accessory = this.accessories.find(acc => acc.UUID === uuid);
if (!accessory) {
this.log.info('Adding new accessory');
accessory = new this.api.platformAccessory(this.config.accessoryName, uuid);
this.api.registerPlatformAccessories(PLUGIN_NAME, PLATFORM_NAME, [accessory]);
this.accessories.push(accessory);
}
// Instantiate our wrapper (this does idempotent service creation).
new EqivaLockAccessory(this, accessory, this.swift);
}
}
//# sourceMappingURL=platform.js.map