import { UnifiedTpLinkApi } from '../../src/unified-api'; import { KasaLightState } from '../../src/lightstate/kasa-lightstate'; import { DeviceProtocol } from '../../src/unified-device-factory'; export const testKasaDevice = async (host: string) => { console.log(`Testing Kasa device at ${host}...`); const api = new UnifiedTpLinkApi(); try { // Create a test device object const device = { id: `kasa_${host.replace(/\./g, '_')}`, name: 'Test Kasa Device', host, protocol: DeviceProtocol.KASA, deviceType: 'bulb', model: 'Unknown', }; // Get device info console.log('Getting device info...'); const info = await api.getDeviceInfo(device.id); console.log('Device info:', info); // Test power control console.log('Testing power control...'); await api.turnOn(device.id); console.log('Device turned on'); await new Promise((resolve) => setTimeout(resolve, 2000)); await api.turnOff(device.id); console.log('Device turned off'); await new Promise((resolve) => setTimeout(resolve, 2000)); await api.turnOn(device.id); console.log('Device turned back on'); // Test brightness and color (if it's a bulb) if (device.deviceType === 'bulb') { console.log('Testing brightness control...'); await api.setBrightness(device.id, 50); console.log('Brightness set to 50%'); await new Promise((resolve) => setTimeout(resolve, 2000)); console.log('Testing color control...'); await api.setRgb(device.id, 255, 0, 0); // Red console.log('Color changed to red'); await new Promise((resolve) => setTimeout(resolve, 2000)); await api.setRgb(device.id, 0, 255, 0); // Green console.log('Color changed to green'); } // Test energy monitoring (if supported) try { const energy = await api.getEnergyUsage(device.id); console.log('Energy reading:', energy); } catch { console.log('Energy monitoring not supported'); } return true; } catch (error) { console.error('Kasa device test failed:', error); return false; } };