云控API接口
触摸精灵云控 API 以 WebSocket 协议开发, 连接到指定 WebSocket 服务器后, 服务器可以用以下消息和设备通信
规范说明
请求规范
{
"type": "消息类型",
"body": "消息数据"
}
返回规范:
{
"type": "消息类型",
"error": "成功时为空, 出错时为错误信息",
"body": "消息数据"
}
注: body 中若有二进制数据, 则以 Base64 格式传输
心跳规范
客户端连接后, 服务器应定时发送 ping 至客户端, 每次间隔不超过 30 秒,
如果客户端超过 30 秒未收到 ping, 将自动断开连接并重连
服务器示例代码
import WebSocket from 'ws'
const wss = new WebSocket.Server({ port: 9000 })
wss.on('connection', (ws) => {
ws.on('message', (data) => {
const json = JSON.parse(data)
if (json.error) {
console.log('错误:' + json.error)
} else {
console.log(json.body)
}
})
setInterval(() => {
ws.ping(() => {})
}, 5000)
ws.send(
JSON.stringify({
type: 'app/state',
}),
)
})
触摸精灵相关
获取应用状态
{
"type": "app/state"
}
{
"type": "app/state",
"error": "",
"body": {
"app": {
"version": "触摸精灵版本号",
"license": "到期时间"
},
"script": {
"select": "当前选择脚本",
"running": "是否运行中"
},
"system": {
"os": "ios或android",
"name": "设备名称",
"sn": "设备串号",
"ip": "设备IP地址",
"battery": "设备电量",
"log": "最后一条日志"
}
}
}
注册
{
"type": "app/register",
"body": {
"code": "16位注册码"
}
}
{
"type": "app/register",
"error": ""
}
脚本相关
获取脚本列表
{
"type": "script/list"
}
{
"type": "script/list",
"error": "",
"body": ["脚本1", "脚本2"]
}
运行脚本
{
"type": "script/run",
"body": {
"name": "a.lua"
}
}
{
"type": "script/run",
"error": ""
}
停止脚本
{
"type": "script/stop"
}
{
"type": "script/stop",
"error": ""
}
加密脚本
{
"type": "script/encrypt",
"body": {
"name": "a.lua"
}
}
{
"type": "script/encrypt",
"error": ""
}
获取脚本
{
"type": "script/get",
"body": {
"name": "a.lua"
}
}
{
"type": "script/get",
"error": "",
"body": "Base64格式数据"
}
更新脚本
{
"type": "script/put",
"body": {
"name": "a.lua",
"data": "Base64格式数据"
}
}
{
"type": "script/put",
"error": ""
}
删除脚本
{
"type": "script/delete",
"body": {
"name": "a.lua"
}
}
{
"type": "script/delete",
"error": ""
}
系统相关
获取日志
{
"type": "system/log/get",
"body": {
"last": 5
}
}
{
"type": "system/log/get",
"error": "",
"body": "日志"
}
删除日志
{
"type": "system/log/delete"
}
{
"type": "system/log/delete",
"error": ""
}
重启设备
{
"type": "system/reboot"
}
{
"type": "system/reboot",
"error": ""
}
注销设备
{
"type": "system/respring"
}
{
"type": "system/respring",
"error": ""
}
屏幕相关
获取截图
{
"type": "screen/snapshot",
"body": {
"format": "png",
"scale": 100
}
}
{
"type": "screen/snapshot",
"error": "",
"body": "Base64格式数据"
}
触摸相关
手指按下
{
"type": "touch/down",
"body": {
"finger": 1,
"x": 100,
"y": 100
}
}
{
"type": "touch/down",
"error": ""
}
手指移动
{
"type": "touch/move",
"body": {
"finger": 1,
"x": 100,
"y": 100
}
}
{
"type": "touch/down",
"error": ""
}
手指抬起
{
"type": "touch/up",
"body": {
"finger": 1,
}
}
{
"type": "touch/up",
"error": ""
}
按键相关
按键按下
{
"type": "key/down",
"body": {
"code": "home",
}
}
{
"type": "key/down",
"error": ""
}
按键抬起
{
"type": "key/up",
"body": {
"code": "home",
}
}
{
"type": "key/up",
"error": ""
}
文件相关
说明: 此类 API 都必须提供一个 path 参数, 值为从/var/touchelf/目录开始的文件路径
文件列表
{
"type": "file/list",
"body": {
"path": "/scripts"
}
}
{
"type": "file/list",
"error": "",
"body": [
{ "name": "a", "type": "dir" },
{ "name": "b", "type": "file" }
]
}
下载文件
{
"type": "file/get",
"body": {
"path": "/scripts/a.e3"
}
}
{
"type": "file/get",
"error": "",
"body": "Base64格式数据"
}
上传文件
{
"type": "file/put",
"body": {
"path": "/scripts/a.e3",
"data": "Base64格式数据"
}
}
{
"type": "file/put",
"error": ""
}
创建目录
{
"type": "file/put",
"body": {
"path": "/dir",
"directory": true
}
}
{
"type": "file/put",
"error": "",
"body": {
"directory": true
}
}
删除文件或目录
{
"type": "file/delete",
"body": {
"path": "/scripts/a.lua"
}
}
{
"type": "file/delete",
"error": ""
}