protected async onSession(session: AppSession, sessionId: string, userId: string): Promise<void> {
const caps = session.capabilities;
if (!caps) return;
if (caps.hasLight) {
const light = caps.light!;
session.logger.info(`Device has ${light.count || 0} LEDs`);
// Check specific LED types
if (light.lights) {
light.lights.forEach((led, index) => {
const ledType = led.isFullColor ? 'RGB' : led.color || 'unknown';
const purpose = led.purpose || 'general';
session.logger.info(`LED ${index}: ${purpose} (${ledType})`);
});
}
// Adapt LED usage based on available types
const hasRGB = light.lights?.some(led => led.isFullColor);
const hasWhite = light.lights?.some(led => !led.isFullColor && led.color === 'white');
if (hasRGB) {
// Can use all colors
await session.led.turnOn({ color: 'blue', ontime: 1000 });
} else if (hasWhite) {
// Only white LED available
await session.led.turnOn({ color: 'white', ontime: 1000 });
}
} else {
// No LEDs - use alternative feedback methods
session.logger.info("No LED support - using display/audio feedback");
session.layouts.showTextWall("💡 Notification");
}
}