上屏系統-接口規範-ALL In One
1.1.用途及閱讀方法
上屏API是上屏系統的後臺接口,管理平臺界面實現需要遵循本接口規範。
1.2.通信協議
客戶端和服務器通過HTTP協議通信,客戶端使用HTTP GET方法或POST方法向服務器發送請求,服務器返回json格式的業務數據或操作結果給客戶端。
盡管接口同時支持GET和POST方法,建議查詢數據時使用GET方法,修改和添加數據時使用POST方法。
1.4.接口請求
接口的請求地址是個URL地址,每個接口URL地址都包括接口位置和請求參數,例如:
http://ip/res/?action=get&token=123456
其中:
http://ip/res/ 是接口請求的URL位置,“ip”在實際請求中要替換成服務器的ip地址或域名。
其中:
action參數是在所有接口中都要有的,該參數表明了請求業務的類型。
token參數提供一個安全認證符號給服務器,服務器用token來驗證客戶端的合法性,除了登錄驗證接口之外,其他接口都需要token參數。
所有參數都可以采用GET或POST方法提交。
在使用ajax做POST提交時,應當在接口位置結尾加上反斜杠"/",以免參數提交失敗。如:http://ip/res/
有關URL地址的編碼規範,請參考HTTP 1.1規範。
1.5.接口響應
服務器在收到接口請求後,首先判斷token的正確性,如果token錯誤,則返回認證錯誤的消息給客戶端。如果token
1.6.接口安全
客戶端必須首先通過身份認證才能繼續調用接口,在一個“挑戰—>應答”模式的身份認證過程中完成身份認證,認證通過後,服務器為客戶端分配一個臨時令牌token,在後續的請求中,token作為一項必選參數提供,服務器通過token識別用戶身份和驗證請求的合法性。
在沒有接口調用時,token的有效期為30分鐘,之後客戶端再調用接口時必須重新進行身份認證,獲取新的token。
為了確保一定的安全性,客戶端應妥善保存token值。
1.7.URL編碼
當URL請求參數值中包含URL地址保留字符時,應對參數值進行URL編碼。
當請求參數包含中文字符時,應對中文字符采用UTF-8編碼。
1.8.描述約定
本文檔在描述接口的URL地址時,如果沒有特殊說明,會省略掉URL前面的相同部分。
例如,
http://ip/res/?action=get&token=123456 簡化為 res/?action=get&token=123456,或者按如下方式描述:
接口: res
參數: action=get&token=123456
在描述參數時,省略token參數的描述,在示例中也會省略。在實際調用中必須把token參數加上。
在對參數進行描述時,用【必選】表示該參數必須提供,【保留】表示該參數可以接受但尚未被使用。
1.9.返回消息結構
返回的json消息數據結構具有嚴格的一致性,客戶端可以采用一致的接收和解析方式處理返回消息。
簡單消息
簡單的返回消息包含對請求的處理結果,結構如下:
{
"code":0,
"err_desc":""
}
其中:
code 為 0 表示處理成功,其它值表示處理失敗。
err_desc是對錯誤的描述,在code為0時err_desc會被省略。
特殊情況,在用戶認證的login1和login2接口中,err_desc具有特殊用途用法,具體參見接口描述。除這兩個接口之外,err_desc都表示錯誤描述。
帶業務數據的消息
有的返回消息除了包含處理結果信息,還包含業務數據記錄集,結構如下:
{
"code":0,
"data":{
"count":1,
"items":[{
"_id": "abcdef",
"server":"g3",
"ip":"127.0.0.1",
}]
}
}
其中:
data 業務數據的根節點:
count 業務數據的條數,可能的值為0 ~ n
items 業務數據,是一個數組,數據條數由count屬性定義。當count為0時,items屬性可能為null或者不存在。
本文檔後續章節中,在描述items元素的屬性時,會省略一些屬性的描述,即實際調用接口返回的屬性在本文檔中可能會沒有描述,這種情況下請直接忽略被忽略描述的屬性值。本文檔中描述的屬性是實際返回內容的一個子集,沒有描述到的內容對集成本系統沒有影響。
帶分頁數據的消息
如果返回數據較多,服務器會對返回的數據進行分頁,客戶端可以按照頁碼請求指定範圍的數據。帶分頁信息的返回數據結構如下:
{
"code":0,
"data":{
"page":1,
"page_size":"20",
"pages":"1",
"total":"2",
"count":2,
"items":[...]
}
}
分頁數據信息在data元素下,意義如下:
page 當前頁碼
page_size 每頁數據記錄條數
pages 總共的頁數
total 總數據條數
count 當前返回頁的數據條數
如果返回的數據帶有分頁信息,則可以在調用接口時使用page參數來請求指定頁碼的數據。
1.10.主鍵和公共屬性
接口返回的業務對象(資源、用戶、設備等)數據,都包含一個_id屬性,具有全局唯一性,是數據表的主鍵。在請求更新、刪除接口時,需要傳入對象的_id屬性。接口要求在傳入主鍵時使用id作為傳入屬性名。具體見接口定義部分。
所有業務對象都具備如下公共屬性:
_id 主鍵,一個32位的字符串
ctime 創建時間,UNIX時間戳
mtime 修改時間,UNIX時間戳
state 狀態
狀態值:整數 1=正常,2=禁用
1.11.參考
[1] RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1[S].
[2] RFC 3986, Uniform Resource Identifier (URI): Generic Syntax[S].
[3] http://www.json.org/ Introducing JSON
2.註冊用戶
註冊一個新用戶。
註冊完成的用戶是否可以登錄和管理系統,由後臺邏輯約定。
2.1.註冊新用戶
- 用途
註冊新用戶。 - 接口
user/?action=regedit
參數:
name=姓名&pwd=123&[email protected]&phone=13888888888&addr=北京
name 姓名
email 郵件地址,系統要求使用註冊的郵件地址作為登錄服務器的用戶名。
pwd 用戶密碼,用於登錄系統
phone 聯系電話
addr 聯系地址 - 響應
{ "code":0, "err_desc":"" }
3.登錄認證
客戶端調用流媒體服務器接口,首先要做的是身份認證,認證通過後才可以調用流媒體服務器的接口。
服務器和客戶端通過“挑戰->應答”方式(challenge-response)進行身份認證交互,在這個過程中,客戶端需要調用兩次接口向服務器證明身份。認證過程中不需要傳遞密碼,密碼用於簽名驗證。
身份認證的過如下:
1)客戶端使用“用戶名”作為參數調用“login1”接口,向服務器發出身份認證請求
1.1)服務器確認用戶是否是有效的用戶:
1.2)若不是,則不做進一步處理,返回錯誤信息
1.3)若是,服務器產生一個“隨機數(挑戰字符串)”發送給客戶端
2)客戶端使用“用戶密碼”和“隨機數(挑戰字符串)”作為輸入,按約定的算法生成一個hash值,用該hash值作為 調用“login2”接口的參數,請求login2接口。
2.1)服務器用收到的hash值與自己的計算結果比較,若二者相同,則通過認證;否則,認證失敗
2.2)若認證通過,服務器返回“token”給客戶端,否者返回錯誤信息。
3.1.login1接口
- 用途
客戶端向服務器申請進行身份認證,服務器返回“挑戰字符串”給客戶端。 - 請求
user/?action=login1&[email protected]
email 使用註冊的郵件地址作為登錄服務器的用戶名。
- 響應
{ "code": 0, "data": { "count": 1, "items": [ { "id": "5ad55392e1382313ff021c3b", "chcode": "pum0odo40qu1tts5" } ] } }
code 等於0,表示用戶有效,items段返回挑戰數據:
?id 挑戰識別編號,原樣帶入login2接口;
?chcode 挑戰字符串。
code 不等於0,其他值表示錯誤,此時 err_desc 的內容是錯誤描述。
3.2.login2接口
- 用途
對login1接口返回“挑戰字符串”進行hash運算,將運算結果提交給服務器,進行身份合法性認證。 - 請求
user/?action=login2&id=id&hash=8c96202be3da1b23a96c4c838eb34d93
id 由接口login1返回,原樣帶入。
hash是使用用戶密碼和挑戰字符串作為輸入計算出的md5摘要值(hash),算法如下:hash=md5(md5(password)+challenge_code)
算法描述:首先計算出密碼的hash值,然後在生成的密碼hash值尾部拼接上挑戰字符串形成新的字符串,最後計算這個新字符串的hash值。
hash算法采用md5算法,生成的摘要采用16進制編碼,編碼生成的字符采用小寫字母。
例如,字符串111111的hash值是 96e79218965eb72c92a549dd5a330112 - 響應
code >0 其他值表示錯誤,此時 err_desc 的內容是錯誤描述。
code 0 表示登錄成功,在data數據段返回token和用戶信息。
{
"code": 0,
"data": {
"count": 1,
"items": [
{
"_id": "5ad4594fe1382314030eabb2",
"name": "王見",
"email": "[email protected]",
"root": "5ad4594fe1382314030eabb2",
"phone": "13888888888",
"addr": "北京",
"token": "6df901hvwqj4rqsj"
}
]
}
}
_id 用戶編號
name 用戶名
email 郵件地址
phone 聯系電話
addr 地址
token 認證令牌,用於請求後續接口
root 文檔根目錄的id,用於請求用戶資源
3.3.logout接口
- 用途
退出登錄,服務器銷毀用戶登錄信息,作廢“token”。
建議客戶端在退出系統時總是調用該接口。 - 請求
user/?action=logout&token=vvkphp5ca79c538n
- 響應
{ "code":0, }
4.添加和更新資源
4.1.添加圖片資源
-
用途
向目錄中添加一個資源。 -
請求
res/?action=addImage
參數:parent=5accb333e1382314030eaba2&name=我的圖片&img_url=&img_small=
parent 目錄編號,必選,指明向哪個目錄添加資源。
name 資源名稱。
img_url 圖片資源的URL地址。
img_small 圖片縮略圖URL地址。 - 響應
{ "code": 0, "err_desc":"5acd8c7be1382313ff021c2b" }
如果添加成功,則err_desc屬性值為添加資源的編號。
如果添加失敗,則err_desc屬性值為錯誤描述。
4.2.添加視頻資源
-
用途
向某個目錄中添加一個視頻資源。 -
請求
res/?action=addVideo
參數:parent=5accb333e1382314030eaba2&name=我的視頻&img_url=&img_small=
parent 目錄編號,必選,指明向哪個目錄添加資源。
name 資源名稱。
img_url 封面圖片URL地址。
img_small 封面圖片縮略圖URL地址。 - 響應
{ "code": 0, "err_desc":"5acd8c7be1382313ff021c2b" }
如果添加成功,則err_desc屬性值為添加資源的編號。
如果添加失敗,則err_desc屬性值為錯誤描述。
4.3.添加音頻資源
-
用途
向某個目錄中添加一個音頻資源。 -
請求
res/?action=addAudio
參數:
與添加視頻相同。 - 響應
與添加視頻相同。
4.3.添加直播資源
-
用途
向某個目錄中添加一個直播資源。 -
請求
res/?action=addLive
參數:
與添加視頻相同。 - 響應
與添加視頻相同。
4.4.添加串流資源
-
用途
向某個目錄中添加一個串流資源。 -
請求
res/?action=addStreaming
參數:parent=5accb333e1382314030eaba2&name=我的攝像頭&server_id=222&img_url=&img_small=&url=&prot=&demand=yes&video_bitrate=200&audio_bitrate=56&width=600&height=400
parent 【必選】目錄編號,指明向哪個目錄添加資源。
name 【必選】資源名稱。
img_url 封面圖片URL地址。
img_small 封面圖片縮略圖URL地址。
server_id 【必選】流媒體服務器編號,可以通過查詢流媒體服務器接口查閱。
url 【必選】串流的輸入地址。
prot 串流的輸入協議,參見概述部分支持的協議。省略該參數服務器會自動判斷,結果有可能是錯誤的。
demand yes|no 是否是按需取流,yes是,no否。
video_bitrate 如果要對視頻流重新編碼,需要設置編碼碼率,單位kbps,否者省略該參數。
width 重新編碼的畫面寬度
height 重新編碼的畫面高度
audio_bitrate 如果要對音頻流重新編碼,需要設置編碼碼率,單位kbps,否者省略該參數。
video_only 如果只有視頻,將該值設為 on
audio_only 如果只有音頻,將該值設為 on - 響應
與添加視頻相同。
4.5.刪除資源
-
用途
刪除一個資源。
使用本接口可以刪除資源,也可以刪除目錄。
如果目錄下有資源,則不允許刪除。刪除目錄時,如果目錄下有資源會返回錯誤。 -
請求
res/?action=delete&id=5accb333e1382314030eaba2
id 要刪除資源的編號。 - 響應
{ "code": 0, "err_desc":"" }
4.6.刪除多個資源
-
用途
通過一次提交多個資源編號來刪除多個資源。
使用本接口可以刪除資源,也可以刪除目錄。
如果目錄下有資源,則不允許刪除。刪除目錄時,如果目錄下有資源會返回錯誤。 -
請求
res/?action=deleteMany&id=5accb333e1382314030eaba2,5accb333e1382314030eaba0
id 要刪除資源的編號列表,多個資源的編號使用半角逗號隔開。 - 響應
{ "code": 0, "err_desc":"" }
4.7.添加資源播出地址
-
用途
視頻資源、音頻資源、直播資源和串流資源,這些類型的資源都有一個或多個播出地址,使用該接口向資源中追加播出地址。
可以通過多次調用本接口為一個資源添加多個播出地址。 -
請求
res/?action=addOutput
參數:id=5accb333e1382314030eaba2&name=&url=&prot=&bitrate=
id 資源編號。
name 播出地址的名稱。
url 播出地址。
prot 播出協議,如果省略,系統會自動探測播出協議。
bitrate 播出碼率,可選。 - 響應
{ "code": 0, "err_desc":"" }
4.8.刪除資源播出地址
-
用途
刪除某個資源的播出地址。 -
請求
res/?action=removeOutput
參數:id=5accb333e1382314030eaba2&output_id=5accb333e1382314030eaba0
id 資源編號。
output_id 播出地址的編號,該編號在查詢資源接口中返回。 - 響應
{ "code": 0, "err_desc":"" }
4.9.修改資源
-
用途
修改資源的信息。
使用本接口可以修改資源信息,也可以修改目錄的信息。
可以傳入上述添加資源接口中的一個或多個參數值,但是要根據修改的資源類型不同傳入相應的參數,例如修改目錄時只能傳入name參數,修改串流資源時可以傳入ur參數等。 -
請求
res/?action=update
參數:id=5accb333e1382314030eaba0&name=我的子目錄
id 資源編號。
可接受的修改的參數列表:
name 資源名稱。
img_url 封面圖片URL地址。
img_small 封面圖片縮略圖URL地址。
url 串流的輸入地址,僅在修改串流資源時有效。
prot 串流的輸入協議,僅在修改串流資源時有效。
user 用戶名,可選,僅在修改串流資源時有效。
pwd 密碼,可選,僅在修改串流資源時有效。
demand yes|no 是否是按需取流,yes是,no否,僅在修改串流資源時有效。 - 響應
{ "code": 0, "err_desc":"" }
4.10.添加子目錄
-
用途
向一個目錄中添加一個子目錄。 -
請求
res/?action=addFolder
參數:parent=5accb333e1382314030eaba0&name=我的子目錄
parent 上級目錄編號。
name 新增目錄的名稱。 - 響應
{ "code": 0, "err_desc":"" }
5.資源查詢接口
5.1 資源概述
-
資源類型
系統支持的資源類型包括5類: 圖片文件、音頻文件、視頻文件、直播流、監控流。
目錄也是資源,是一類特殊的資源,其基本屬性與資源相同。
目錄和資源由 ftype 屬性區分。 -
目錄
資源都存放在目錄中,一個目錄中只能存放固定類型的資源。
目錄中允許存放的資源類型由目錄的 rtype 屬性約定。在業務實現上,只能往圖片目錄中添加圖片資源,往視頻目錄中添加視頻資源,以此類推。
目錄中可以創建子目錄,子目錄的級別沒有限制。 -
根目錄
根目錄是系統中最頂級的一個目錄,一個系統只有一個根目錄。
根目錄有_id屬性,通過該屬性可以查詢根目錄下的子目錄,根目錄不可以編輯和刪除。
根目錄的_id屬性在用戶登錄後從用戶信息中獲取。(測試階段也可以預先拿到這個_id進行測試)。
根目錄下的一級子目錄由系統初始化完成,不可以通過接口增加和刪除。
一級子目錄下的子目錄和資源是我們要管理的對象,可以通過接口進行增刪改查操作。 -
資源屬性
資源屬性包括通用屬性和差異屬性。
通用屬性對所有類型資源適用,差異屬性只能用於某種類型的資源。
通用屬性:{ "_id": "5accb3a1e1382313ff021c28", "parent": "5accb333e1382314030eaba2", "ftype": 1, "rtype": 5, "name": "我的視頻1", "ctime": 1523364769, "mtime": 1523410016, "state": 1, "img": { "url": "http://img.ruiboyun.net/5accb3a1e1382313ff021c28.jpg", "small": "http://img.ruiboyun.net/5accb3a1e1382313ff021c28_s.jpg" } }
_id 資源的唯一編號
parent 資源所在目錄的編號
ftype 資源的文件類型,參見下文定義
rtype 資源的類型,參見下文定義
name 資源名稱
ctime 創建時間
mtime 修訂時間
state 狀態,參見下文定義
img 定義圖片資源的URL地址,或其它類型資源的封面圖片地址。
?url 圖片URL地址
?small 圖片縮略圖地址 -
ftype定義
?使用整數來定義:
?1 = 資源
?2 = 目錄
?3 = 鏈接【保留】 - rtype定義
?使用整數來定義:
?1 = 純文本文件【保留】;
?2 = HTML文件【保留】;
?3 = 圖片文件;
?4 = 音頻文件;
?5 = 視頻文件;
?10= 直播流;
?20= 監控流;
5.2 資源管理流程
資源管理從查詢根目錄下的子目錄開始。一個根目錄下會包含多個子目錄,用於存放不同類型的資源。
每個註冊用戶都有一個根目錄,這個根目錄的_id在用戶成功登錄後包含在返回信息中,具體參見登錄接口。
獲得根目錄的_id屬性後,先查詢到一級子目錄。然後根據業務需要管理一級子目錄下的目錄和資源。
例如:
根目錄_id為“myroot”,則可以通過查詢目錄接口查詢一級子目錄:
res/?action=folder&parent=myroot
通常會查詢到5個子目錄,名稱為:圖片、音頻、視頻、直播、監控。(也可能會有變化)
然後根據以下接口進行子目錄內的資源管理。
5.3 查詢目錄
-
用途
查詢指定目錄下的子目錄。 - 請求
res/?action=folder&parent=myroot
parent 上級目錄編號,必選,指定要查詢哪個目錄下的資源。 - 響應
{ "code": 0, "data": { "count":2, "items": [ { "_id": "5accb333e1382314030eaba0", "parent": "myroot", "ftype": 2, "rtype": 3, "name": "圖片資源", "ctime": 1523364659, "state": 1 }, { "_id": "5accb333e1382314030eaba2", "parent": "myroot", "ftype": 2, "rtype": 5, "name": "視頻資源", "ctime": 1523364659, "state": 1 } ] } }
返回一個或多個子目錄的信息。
5.4 查詢資源
-
用途
查詢指定目錄下的資源。 -
請求
res/?action=resource&parent=5accb333e1382314030eaba2
parent 上級目錄編號,必選,指定要查詢哪個目錄下的資源。 - 響應
{ "code": 0, "data": { "count": 1, "items": [ { "_id": "5accb3a1e1382313ff021c28", "parent": "5accb333e1382314030eaba2", "ftype": 1, "rtype": 5, "name": "我的視頻1", "ctime": 1523364769, "mtime": 1523410016, "state": 1, "img": { "url": "http://img.ruiboyun.net/5accb3a1e1382313ff021c28.jpg", "small": "http://img.ruiboyun.net/5accb3a1e1382313ff021c28_s.jpg" }, "output": [ { "_id": "5acd64b7e1382313ff021c2a", "name": "rtmp直播", "prot": "rtmp", "url": "rtmp://video.ruiboyun.net/live/live1", "bitrate": null } ] } ] } }
返回一個或多個資源的信息。基本屬性信息參見上文定義。
音頻資源、視頻資源、直播資源、監控資源都有output屬性,定義資源的播出地址。
一個資源可以由多個播出地址,使用播出地址的_id屬性進行區分。
output 資源的播出地址,一個資源可以包含多個播出地址。
?_id 播出地址的編號,用於唯一識別一個資源的一個播出地址。
?name 播出地址名稱
?prot 播出協議,系統支持的協議類型可以通過查詢可用協議接口獲得。。
?url 播出url地址
?bitrate 播出url多媒體流的比特率
5.5 查詢資源和目錄
- 用途
查詢指定目錄下的子目錄和資源。
使用該接口可以一次查詢到某個目錄下的子目錄和資源信息。 - 請求
res/?action=all&parent=myroot
parent 上級目錄編號,必選,指定要查詢哪個目錄下的資源。 - 響應
響應數據與以上兩個接口相同。
5.6 查詢支持的視頻流協議
- 用途
查詢系統中支持的輸入輸出協議。用於在添加串流和添加播出地址時使用。 -
請求
res/?action=protocols - 響應
{ "code": 0, "data": { "count": 1, "items": [ { "rtmp": "rtmp", "rtsp": "rtsp", "rtspt": "rtsp tcp", "rtp": "rtp", "udp": "udp", "onvif": "onvif", "hls": "hls", "http-mp4": "mp4 over http", "http-flv": "FLV over http", "mms": "mms", "mmsh": "mms-http" } ] } }
items段中包含協議屬性值和顯示名稱。
如: http-flv是屬性的值,FLV over http是在網頁上顯示的內容。
6.管理服務器
6.1.查詢服務器
-
用途
查詢服務器。 - 請求
server/?action=list - 響應
{
"code": 0,
"data": {
"count": 1,
"items": [
{
"_id": "5ad48b99e1382314006902f6",
"name": "我的服務器",
"ip": "cloud.ruiboyun.net",
"user": "admin",
"live": "live",
"vod": "vod",
"ctime": 1523878809,
"mtime": 1523951519,
}
]
}
}
_id 服務器編號
name 服務器名稱
ip 服務器ip地址
user 登錄g3的用戶名
live 使用的直播應用
vod 使用的點播應用
ctime 創建時間
mtime 修改時間
6.2.添加服務器
-
用途
添加服務器。 - 請求
server/?action=add
參數:action=add&name=我的服務器&ip=cloud.ruiboyun.net&user=admin&pwd=noveltv&live=live&vod=vod
name 名稱
ip 服務器ip地址
user 登錄g3的用戶名
pwd 登錄G3的密碼
live 使用的直播應用
vod 使用的點播應用
ctime 創建時間
mtime 修改時間 - 響應
{ "code": 0, }
6.2.修改服務器
-
用途
添加服務器。 -
請求
server/?action=update
參數:action=update&id=123&name=我的服務器&ip=cloud.ruiboyun.net&user=admin&pwd=noveltv&live=live&vod=vod
id 服務器編號
name 名稱
ip 服務器ip地址
user 登錄g3的用戶名
pwd 登錄G3的密碼
live 使用的直播應用
vod 使用的點播應用 - 響應
{ "code": 0, }
7.設備管理接口
這裏的設備是指展示視頻的大屏幕和屏幕控制主機。
7.1.查詢設備
-
用途
查詢設備。 - 請求
device/?action=list - 響應
{
"code": 0,
"data": {
"count": 1,
"items": [
{
"_id": "5add8b12e1382314011fe73d",
"name": "我的設備2",
"seq": "x1",
"pwd": "111",
"resolution": "1280x720",
"os": "Windows",
"ip": "192.168.1.23",
"ctime": 1524468498,
"mtime": 1524468554,
"state": 1,
}
]
}
}
_id 編號
name 名稱
ip p地址
seq 設備編號,登錄設備時需要配合密碼一起使用
pwd 登錄設備的密碼
resolution 屏幕分辨率
os 操作系統
ctime 創建時間
mtime 修改時間
state 設備狀態
7.2.添加設備
-
用途
添加設備。 -
請求
device/?action=add
參數:name=我的設備&ip=192.168.1.23&pwd=111&resolution=1280x720&os=Windows
_id 編號
name 名稱
ip p地址
pwd 登錄設備的密碼
resolution 屏幕分辨率
os 操作系統 - 響應
{ "code": 0, }
7.3.修改設備
-
用途
修改設備。 -
請求
device/?action=update
參數:name=我的設備&ip=192.168.1.23&pwd=111&resolution=1280x720&os=Windows&state=1
_id 編號
name 名稱
ip p地址
pwd 登錄設備的密碼
resolution 屏幕分辨率
os 操作系統
state 設備狀態,可以使用該狀態控制啟用或禁用 - 響應
{ "code": 0, }
上屏系統-接口規範-ALL In One