获取所有连接设备

函数功能:

获取所有连接设备
在 Total Control 6.9.0 及以后版本添加可选参数 "type=number" 只有在专业版的多控中心适用。

对应JS API:
Device.searchObject(sigmaConst.DevAll)
请求方式:GET
//第一种请求URL
http://IP:8090/TotalControl/v1/devices?q=all&token=:token
//第二种请求URL
http://IP:8090/TotalControl/v1/devices?q=all&type=number&token=:token
参数说明:
参数名 类型 必选 描述
IP string Y 访问 Total Control 服务器的 IP 地址
token string Y Total Control TOKEN
q string Y 固定值:all
type string N 固定值:number,type=number 是可选参数:
添加这个参数,返回设备序号。例如:1,2,3
省略这个参数,返回设备字符串。例如:"device@1116106541"
响应参数:

Total Control 提供的 REST API 响应格式都是 JSON ,该 API 返回值的关键字是 "ids"。

执行接口成功的返回字段说明:

(一)当请求URL为:http://IP:8090/TotalControl/v1/devices?q=all&token=:token,返回字段说明:

字段 类型 描述
ids string TC id


返回示例:

{
    "ids":[
        "device@795844152",
        "device@795812215"
    ]
}


(二)当请求URL为:http://IP:8090/TotalControl/v1/devices?q=all&type=number&token=:token,返回字段说明:

字段 类型 描述
ids int 设备序号,注意只有在专业版的多控中心,才返回设备序号,不在多控中心,返回的 ids 值始终为 0.


返回示例:

{
    "ids":[
        1,
        2,
        3
    ]
}
请求示例:
//示例一
http://127.0.0.1:8090/TotalControl/v1/devices?q=all&token=270eq7lXQK8bXYsJ

//示例二
http://127.0.0.1:8090/TotalControl/v1/devices?q=all&type=number&token=270eq7lXQK8bXYsJ
示例:获取所有连接设备

注意:下列示例是通过本机访问 Total Control 服务器,所以 IP 都是用的 "localhost"。

RingoJS 请求示例:

可以复制下面的代码,在 Total Control 的脚本终端中执行,也可以保存为后缀为 js 的文件, 例如:example.js,在Total Control 执行器中执行。

//导入一些 ringoJS 的包
var {request} = require('ringo/httpclient');
var base64 = require('ringo/base64');
//将用户名密码编码,'sigma:3D391497'是用户名和密码,在Total Control系统设置里面可以看到
var userpass = base64.encode('sigma:3D391497');

//第一步:获取 Total Control 脚本开发所用的开发 token
var gettoken = request({
    method: 'GET',
    url: 'http://localhost:8090/TotalControl/v1/login',
    headers: {'Authorization': userpass}
	});
//将获取的响应内容转换成json对象
var ret_token = eval('(' + gettoken.content + ')'); 
var token = ret_token.value.token; 
print("//获取 token 的值为:" + token);

//第二步:获取所有连接设备
print("//请求URL:http://IP:8090/TotalControl/v1/devices?q=all&token=:token");
var getdevice = request({
    method: 'GET',
    url: 'http://localhost:8090/TotalControl/v1/devices',
    data: {
	'token': token,
	'q': 'all'
	}
	});
print(getdevice.content);

print("//请求URL:http://IP:8090/TotalControl/v1/devices?q=all&type=number&token=:token");
var getdevice = request({
    method: 'GET',
    url: 'http://localhost:8090/TotalControl/v1/devices',
    data: {
	'token': token,
	'q': 'all',
	'type':'number'
	}
	});
print(getdevice.content);
温馨提示:
获取 Total Control 脚本开发所用的开发 token 请看这里

RingoJS 示例运行结果:

成功,则返回:

//获取 token 的值为:m195zZEgY91PMcbo
//请求URL:http://IP:8090/TotalControl/v1/devices?q=all&token=:token
{
"ids":[
"device@795844152",
"device@795812215"
]
}
//请求URL:http://IP:8090/TotalControl/v1/devices?q=all&type=number&token=:token
{
 "ids":[
 1,
 2,
 3
 ]
}
易语言请求示例:

温馨提示,关于易语言的更多信息,请看:
如何安装易语言
学写第一个易语言程序
如何使用易语言控制一台设备
如何使用易语言控制多台设备


.版本 2

.程序集 窗口程序集_启动窗口

.子程序 __启动窗口_创建完毕
.局部变量 base64, 文本型
.局部变量 token, 文本型
.局部变量 device, 文本型
.局部变量 j_token, 类_json, , , 用来解析获取 token 的 json
.局部变量 j_dev, 类_json, , , 用来解析获取设备ID 值的 json
.局部变量 j_ret, 类_json, , , 用来解析 REST API 接口的json
.局部变量 bool, 逻辑型
.局部变量 bool_dev, 逻辑型


base64 = 到文本 (编码_BASE64编码 (到字节集 (“sigma:3D391497”)))
输出调试文本 (“将用户名和密码组装成 sigma:3D391497 进行 base64 编码生成的字符串为: ” + base64)
bool = j_token.解析 (到文本 (网页_访问_对象 (“http://localhost:8090/TotalControl/v1/login”, 0, , , , “Authorization:” + base64, , , , , , , , , )))
.如果 (bool)
    输出调试文本 (“第一步,获取 token,返回值为:” + j_token.取数据文本 ())
    token = j_token.取通用属性 (“['value'].token”)
    输出调试文本 (“获取的 token 值为: ” + token)
    输出调试文本 (“//请求URL:http://IP:8090/TotalControl/v1/devices?q=all&token=:token”)
    bool_dev = j_dev.解析 (编码_utf8到gb2312 (到文本 (网页_访问_对象 (“http://localhost:8090/TotalControl/v1/devices?q=all&token=” + token, 0))))
    .如果 (bool_dev)
        输出调试文本 (“第二步,获取所有设备 ID 值,返回值为:” + j_dev.取数据文本 ())
        device = j_dev.取通用属性 (“['ids']”)
        输出调试文本 (“获取的设备 ID 值为: ” + device)

    .否则
        输出调试文本 (“获取设备 ID 值失败”)
    .如果结束

    输出调试文本 (“//请求URL:http://IP:8090/TotalControl/v1/devices?q=all&type=number&token=:token”)
    bool_dev = j_dev.解析 (编码_utf8到gb2312 (到文本 (网页_访问_对象 (“http://localhost:8090/TotalControl/v1/devices?q=all&type=number&token=” + token, 0))))
    .如果 (bool_dev)
        输出调试文本 (“第三步,获取所有设备 ID 值,返回值为:” + j_dev.取数据文本 ())
        device = j_dev.取通用属性 (“['ids']”)
        输出调试文本 (“获取的设备 ID 值为: ” + device)

    .否则
        输出调试文本 (“获取设备 ID 值失败”)
    .如果结束



.否则
    输出调试文本 (“获取 token 失败”)
.如果结束


易语言代码运行结果:

成功,则返回:

* 将用户名和密码组装成 sigma:3D391497 进行 base64 编码生成的字符串为: c2lnbWE6M0QzOTE0OTc=
* 第一步,获取 token,返回值为:{"status":true,"value":{"token":"U56adwI779838M6F"}}
* 获取的 token 值为: U56adwI779838M6F
* //请求URL:http://IP:8090/TotalControl/v1/devices?q=all&token=:token
* 第二步,获取所有设备 ID 值,返回值为:{"ids":["device@33254183","device@230441652"]}
* 获取的设备 ID 值为: device@33254183,device@230441652
* //请求URL:http://IP:8090/TotalControl/v1/devices?q=all&type=number&token=:token
* 第三步,获取所有设备 ID 值,返回值为:{"ids":[1,2]}
* 获取的设备 ID 值为: 1,2