專案

一般

配置概況

動作

後端功能 #11528

進行中

後端功能 #11091: Omni IoT Server

場景管理 (Scenes)

由 Sam Wang 於 8 天 前加入. 於 6 天 前更新.

狀態:
新建立
優先權:
正常速度
被分派者:
開始日期:
2026/03/10
完成日期:
完成百分比:

0%

預估工時:
使用工時:

概述

提供場景的建立、查詢、更新、刪除與執行功能。

Method Uri 說明
GET /api/Scenes 取得所有場景設定
GET /api/Scenes/{id} 取得特定場景設定
POST /api/Scenes 新增場景
PUT /api/Scenes 批量修改場景 (全覆蓋)
PUT /api/Scenes/{id} 修改特定場景設定
DELETE /api/Scenes 刪除所有場景
DELETE /api/Scenes/{id} 刪除特定場景

◉ 場景參數說明

參數 類型 說明
name 字串 場景名稱
mode 整數 執行策略
0: (預設) 若執行中再次觸發則忽略
1: 中斷並重新執行 (Restart)
2: 僅中斷目前執行 (Stop Only)
actions 陣列 動作列表。每個項目為物件:
- id: (字串) 指令,如 `MODBUS

◉ 控制場景 (API / MQTT) [POST]

場景(以及排程、智慧邏輯、設備)的觸發與控制皆透過統一的指令介面。
指令格式:Sys|scenes|{scene_id}|{狀態}

  • 狀態 1: 啟動場景
  • 狀態 0: 停止運行中的場景
  • 狀態 2: 切換場景 (Toggle)

1. 透過 REST API 控制

POST /api/Status發送統一控制命令 (可同時觸發多筆)

{
  "actions": [
    "Sys|scenes|{scene_id}}|1",
    "Sys|scenes|{scene_id}|1"
  ]
}

2. 透過 MQTT 控制
發布 (Publish) 控制訊息至伺服器的命令 Topic (例如:omni/{ServerID}):

{
    "cmd": "device.control",
    "cid": "CID_123400",
    "timestamp": 1773129540945,
    "payload": {
        "actions": [
            "Sys|scenes|1|1"
        ]
    }
}

◉ 取得所有場景 [GET]

GET /api/Scenes取得系統中所有場景設定

Response ✅ 成功 (200 OK)
{
    "payload": {
        "1": {
            "id": "1",
            "name": "會議室燈光_ON",
            "mode": 1,
            "actions": [
                {
                    "id": "MODULE|1|point_01-1|0",
                    "delay": 0
                },
                {
                    "id": "MODULE|1|point_01-2|0",
                    "delay": 0
                },
                {
                    "id": "MODULE|1|point_01-3|0",
                    "delay": 0
                },
                {
                    "id": "MODULE|1|point_01-4|0",
                    "delay": 0
                },
                {
                    "id": "MODULE|1|point_02-1|0",
                    "delay": 0
                },
                {
                    "id": "MODULE|1|point_02-2|0",
                    "delay": 0
                },
                {
                    "id": "MODULE|1|point_02-3|0",
                    "delay": 0
                },
                {
                    "id": "MODULE|1|point_02-4|0",
                    "delay": 0
                }
            ]
        },
        "ver": 2
    },
    "code": 0,
    "message": "",
    "timestamp": 1773127011473
}

◉ 新增場景 [POST]

POST /api/Scenes手動新增一筆場景設定

Request
{
  "name": "會議室燈光_OFF",
  "mode": 1,
  "actions": [
            {
                "id": "MODULE|1|point_01-1|0",
                "delay": 0
            },
            {
                "id": "MODULE|1|point_01-2|0",
                "delay": 0
            }
  ]
}
Response ✅ 成功 (201 Created)
{
  "code": 0,
  "message": "",
  "timestamp": 1773127011473,
  "payload": {
    "id": "2",
    "name": "會議室燈光_OFF",
    "mode": 1,
    "actions": [
            {
                "id": "MODULE|1|point_01-1|0",
                "delay": 0
            },
            {
                "id": "MODULE|1|point_01-2|0",
                "delay": 0
            }
    ]
  }
}

◉ 修改場景 [PUT]

PUT /api/Scenes/{id}修改指定 ID 之場景內容

Request
{
  "name": "會議室燈光_OFF",
  "mode": 1,
  "actions": [
            {
                "id": "MODULE|1|point_01-1|0",
                "delay": 0
            },
            {
                "id": "MODULE|1|point_01-2|0",
                "delay": 0
            }
  ]
}
Response ✅ 成功 (200 OK)
{
    "code": 0,
    "message": "",
    "timestamp": 1773127233478
}

◉ 刪除場景 [DELETE]

DELETE /api/Scenes/{id}刪除指定 ID 之場景

Response ✅ 成功 (200 OK)
{
  "code": 0,
  "message": "",
  "timestamp": 1773127011473,
  "payload": null
}

由 Sam Wang 於 8 天 前更新

由 Sam Wang 於 6 天 前更新

場景持久化遷移(資料表方式)

動作

匯出至 Atom PDF