自动生成灯光场景On-App AI

功能介绍

AI 生成式灯光场景模块通过 On-App AI 端侧能力,结合房间空间及灯光设备能力,为用户自动生成可用、可执行的灯光氛围方案。系统会推荐 9 组灯光场景,并支持替换、预览与保存,无需专业配置即可快速打造灯光环境。

该模块适用于家庭照明、酒店公寓、商业空间等多种灯光场景需求,提升用户创建灯光氛围的效率与体验。

功能说明

1. 自动生成灯光场景

  • 系统基于房间信息与灯光能力,智能生成 9 个候选灯光场景,每个场景包含:

  • 场景名称

  • 颜色/亮度/色温方案

  • 灯光控制动作(action list)

用户可直接点击预览或保存。

2. 替换灯光方案

  • 支持替换单个场景

  • 支持批量替换未被选中的场景

  • AI 将重新生成灯光配置

用于获得更符合喜好的灯光效果。

3. 灯光场景预览

  • 点击卡片即可实时预览:

  • 灯光立即变化

  • 不影响设备持久配置

  • 退出可回退

提升体验确定性。

4. 多选保存到云端场景

  • 用户可勾选喜爱的灯光方案

  • 保存后可在 App 内长期调用执行。

非管理员账号会被拦截保存操作

交互流程

sequenceDiagram
    participant U as 用户
    participant UI as 前端页面
    participant Room as 房间数据服务
    participant AI as AI灯光引擎
    participant Dev as 灯光设备
    participant Cloud as 云端场景库

    U->>UI: 进入 AI 灯光页面
    UI->>Room: 获取家庭/房间信息
    Room-->>UI: 返回 roomId

    UI->>Cloud: 获取可用灯光风格数据
    Cloud-->>UI: 返回样式列表
    UI->>UI: 抽样生成 9 个候选

    UI->>AI: predictLightScenes(9项)
    AI-->>UI: 返回灯光动作配置
    UI->>U: 展示推荐灯光场景


    U->>UI: 点击预览
    UI->>Dev: 发送灯光 actions
    Dev-->>U: 实时灯光效果


    U->>UI: 点击刷新(单个/全部)
    UI->>AI: 重新生成动作配置
    AI-->>UI: 返回方案
    UI->>U: 展示新灯光卡片


    U->>UI: 选择多个场景
    U->>UI: 点击保存
    UI->>Cloud: 批量 saveScene
    Cloud-->>UI: 返回成功/失败
    UI->>U: 提示状态

动态数据集

flowchart LR
    subgraph BD[业务定义]
        A[灯光风格库] --> B[房间属性]
        B --> C[设备能力模型]
    end

    subgraph AI[AI灯光生成模型]
        C --> D[风格匹配]
        D --> E[灯光参数推理]
        E --> F[设备动作生成]
    end

    subgraph DS[场景数据集]
        F --> G["灯光场景数据集\n(名称+参数+Action)"]
    end

灯光场景数据生成流程说明:

  • 灯光风格库:预设氛围风格(如阅读、影院、派对)

  • 房间属性:区域 ID / 灯组信息

  • 设备能力:亮度 / 色温 / RGB / 可控属性

  • 风格匹配:筛选适用灯光策略

  • 参数推理:生成目标灯光效果

  • 动作生成:输出设备控制指令

模块工作原理

模块核心基于以下逻辑:

1. 进入页面时获取房间信息

const homeId = await getAppHomeId();
const { roomId } = await getRoomList();

2. 获取灯光场景候选集

const list = await getSceneDataList(homeId, roomId);

3. 进行 AI 灯光预测

predictLightScenes({
  roomId,
  generateSceneStyles: list,
  sceneType,
})

4. 支持单卡刷新 / 批量刷新

refresh(item)
refreshAll()

5. 预览灯效

previewScene({
  actions,
  parentRegionId: roomId
})

6. 批量保存

await Promise.all(selectedList.map(saveScene));