UNPKG

homebridge-gira-client

Version:

Homebridge Plugin für Gira Homeserver 4 mit automatischer Geräteerkennung über IoT REST API

145 lines 4.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Timer = exports.ExtendedLogger = void 0; class ExtendedLogger { constructor(homebridgeLogger, debugMode = false) { this.homebridgeLogger = homebridgeLogger; this.debugEnabled = false; this.logBuffer = []; this.maxBufferSize = 1000; this.debugEnabled = debugMode; } info(message, ...args) { this.homebridgeLogger.info(message, ...args); this.addToBuffer('info', message, args); } warn(message, ...args) { this.homebridgeLogger.warn(message, ...args); this.addToBuffer('warn', message, args); } error(message, ...args) { this.homebridgeLogger.error(message, ...args); this.addToBuffer('error', message, args); } debug(message, ...args) { if (this.debugEnabled) { this.homebridgeLogger.debug(message, ...args); } this.addToBuffer('debug', message, args); } success(message, ...args) { this.homebridgeLogger.info(`✓ ${message}`, ...args); this.addToBuffer('success', message, args); } setDebugEnabled(enabled) { this.debugEnabled = enabled; this.debug(`Debug mode ${enabled ? 'enabled' : 'disabled'}`); } addToBuffer(level, message, args) { const entry = { timestamp: new Date(), level, message, args, }; this.logBuffer.push(entry); if (this.logBuffer.length > this.maxBufferSize) { this.logBuffer.shift(); } } getRecentLogs(count = 100) { return this.logBuffer.slice(-count); } getLogsByLevel(level) { return this.logBuffer.filter(entry => entry.level === level); } clearBuffer() { this.logBuffer = []; } logDeviceOperation(deviceName, operation, success, details) { const message = `Device ${deviceName}: ${operation}`; if (success) { this.success(message); } else { this.error(message); } if (details && this.debugEnabled) { this.debug(`Operation details: ${JSON.stringify(details, null, 2)}`); } } logConnectionEvent(event, details) { switch (event) { case 'connecting': this.info('Connecting to Gira Homeserver...'); break; case 'connected': this.success('Successfully connected to Gira Homeserver'); break; case 'disconnected': this.warn('Disconnected from Gira Homeserver'); break; case 'reconnecting': this.info('Attempting to reconnect...'); break; case 'authenticated': this.success('Successfully authenticated with Gira Homeserver'); break; case 'auth_failed': this.error('Authentication failed'); break; } if (details && this.debugEnabled) { this.debug(`Connection event details: ${JSON.stringify(details, null, 2)}`); } } logDiscoveryEvent(event, count, details) { switch (event) { case 'started': this.info('Starting device discovery...'); break; case 'completed': this.success(`Device discovery completed. Found ${count || 0} devices`); break; case 'device_found': this.info(`Found device: ${details?.name || 'Unknown'}`); break; case 'device_configured': this.success(`Configured device: ${details?.name || 'Unknown'}`); break; case 'device_error': this.error(`Error configuring device: ${details?.name || 'Unknown'}`); break; } if (details && this.debugEnabled && !details.name) { this.debug(`Discovery event details: ${JSON.stringify(details, null, 2)}`); } } logPerformanceMetric(operation, duration, success) { const message = `${operation} took ${duration}ms`; if (success) { this.debug(message); } else { this.warn(`${message} (failed)`); } } createTimer(operation) { return new Timer(operation, this); } } exports.ExtendedLogger = ExtendedLogger; class Timer { constructor(operation, logger) { this.operation = operation; this.logger = logger; this.startTime = Date.now(); } end(success = true) { const duration = Date.now() - this.startTime; this.logger.logPerformanceMetric(this.operation, duration, success); return duration; } } exports.Timer = Timer; //# sourceMappingURL=logger.js.map