ms-vite-plugin 1.4.29 → 1.4.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build.js +6 -0
- package/docs/api/cloud.md +169 -0
- package/docs/api/global.md +2 -2
- package/docs/api/ui.md +4 -2
- package/docs/apicn/cloud.md +169 -0
- package/docs/apicn/global.md +2 -2
- package/docs/apicn/ui.md +4 -2
- package/docs/apipython/cloud.md +190 -0
- package/docs/apipython/overview.md +1 -1
- package/docs/apipython/ui.md +4 -2
- package/docs/httpapi/api.md +39 -12
- package/package.json +1 -1
package/dist/build.js
CHANGED
|
@@ -220,6 +220,12 @@ const buildAll = async (isDev = true, workspacePath) => {
|
|
|
220
220
|
disableConsoleOutput: false,
|
|
221
221
|
domainLock: [],
|
|
222
222
|
selfDefending: false,
|
|
223
|
+
// 注入到引擎的全局对象与方法(如 paddleOcr.recognizeAbs、ms、ui、http…)
|
|
224
|
+
// 由原生侧按“名称字符串”绑定,一旦被改名原生就找不到对应实现。
|
|
225
|
+
// 这里强制关闭全局名 / 属性名改写,避免任何 obfuscator.json 误开导致注入 API 被混淆。
|
|
226
|
+
// 如确需对自有属性做重命名,请改用 renamePropertiesMode + reservedNames 白名单。
|
|
227
|
+
renameGlobals: false,
|
|
228
|
+
renameProperties: false,
|
|
223
229
|
},
|
|
224
230
|
}),
|
|
225
231
|
]),
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# 云控模块 (Cloud)
|
|
2
|
+
|
|
3
|
+
云控模块用于在主脚本中使用内置云控 WebSocket 连接。脚本可以主动连接云控服务器、判断连接状态、断开连接、上报事件数据,并监听服务器事件数据。
|
|
4
|
+
|
|
5
|
+
## 注意事项
|
|
6
|
+
|
|
7
|
+
- `cloud` 只在主脚本上下文注册,不支持在线程脚本里调用。
|
|
8
|
+
- 服务器事件只有一个主脚本监听槽位,多次调用 `onEvent` 会覆盖旧监听。
|
|
9
|
+
|
|
10
|
+
## 协议
|
|
11
|
+
|
|
12
|
+
脚本上报数据时发送 JSON 文本帧:
|
|
13
|
+
|
|
14
|
+
```json
|
|
15
|
+
{
|
|
16
|
+
"type": "scriptReport",
|
|
17
|
+
"event": "eventName",
|
|
18
|
+
"data": {}
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
服务器下发脚本事件时发送 JSON 文本帧:
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"type": "scriptEvent",
|
|
27
|
+
"event": "eventName",
|
|
28
|
+
"data": {}
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
`event` 是脚本和服务器约定的自定义事件名。`data` 在 JS 中是普通 Object,必须能被 JSON 序列化。
|
|
33
|
+
设备总览自定义字段读取最新一次 `cloud:status` 上报数据;上报时事件名固定为 `cloud:status`,`data` 是 key-value 对象。
|
|
34
|
+
|
|
35
|
+
## API 参考
|
|
36
|
+
|
|
37
|
+
### connect - 连接云控服务器
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
function connect(url: string, deviceNo?: string): boolean;
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**参数**
|
|
44
|
+
|
|
45
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
46
|
+
| ---------- | ------ | -------- | -------------- | ---- |
|
|
47
|
+
| `url` | string | 是 | - | 完整 `ws://` 或 `wss://` 云控地址 |
|
|
48
|
+
| `deviceNo` | string | 否 | 已保存设备编号 | 连接时追加到 query 的设备编号 |
|
|
49
|
+
|
|
50
|
+
**返回值**
|
|
51
|
+
|
|
52
|
+
| 类型 | 描述 |
|
|
53
|
+
| ------- | ---- |
|
|
54
|
+
| boolean | URL 校验通过且连接请求已提交时返回 true |
|
|
55
|
+
|
|
56
|
+
**说明**
|
|
57
|
+
|
|
58
|
+
- `connect` 只能在主脚本上下文调用。
|
|
59
|
+
- `connect` 只影响当前运行期云控连接,不会写入设置页的持久化云控配置。
|
|
60
|
+
|
|
61
|
+
**示例**
|
|
62
|
+
|
|
63
|
+
```javascript
|
|
64
|
+
const accepted = cloud.connect("wss://example.com/control", "device-001");
|
|
65
|
+
logi("云控连接请求:", accepted);
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### isConnected - 判断是否已连接
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
function isConnected(): boolean;
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**返回值**
|
|
75
|
+
|
|
76
|
+
| 类型 | 描述 |
|
|
77
|
+
| ------- | ---- |
|
|
78
|
+
| boolean | WebSocket 已连接时返回 true |
|
|
79
|
+
|
|
80
|
+
**示例**
|
|
81
|
+
|
|
82
|
+
```javascript
|
|
83
|
+
if (cloud.isConnected()) {
|
|
84
|
+
cloud.report("status", { value: "ready" });
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### disconnect - 断开连接
|
|
89
|
+
|
|
90
|
+
```typescript
|
|
91
|
+
function disconnect(): void;
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
断开云控 WebSocket 并停止自动重连。
|
|
95
|
+
|
|
96
|
+
**示例**
|
|
97
|
+
|
|
98
|
+
```javascript
|
|
99
|
+
cloud.disconnect();
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### report - 上报数据
|
|
103
|
+
|
|
104
|
+
```typescript
|
|
105
|
+
function report(event: string, data: Record<string, any>): boolean;
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**参数**
|
|
109
|
+
|
|
110
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
111
|
+
| ------- | --------- | -------- | ------ | ---- |
|
|
112
|
+
| `event` | string | 是 | - | 自定义事件名 |
|
|
113
|
+
| `data` | Record<string, any> | 是 | - | 要上报的普通 Object 参数 |
|
|
114
|
+
|
|
115
|
+
**返回值**
|
|
116
|
+
|
|
117
|
+
| 类型 | 描述 |
|
|
118
|
+
| ------- | ---- |
|
|
119
|
+
| boolean | 已连接且 JSON 文本帧已提交写出时返回 true |
|
|
120
|
+
|
|
121
|
+
**示例**
|
|
122
|
+
|
|
123
|
+
```javascript
|
|
124
|
+
const ok = cloud.report("taskFinished", {
|
|
125
|
+
taskId: "A-1001",
|
|
126
|
+
success: true,
|
|
127
|
+
costMs: 1280,
|
|
128
|
+
});
|
|
129
|
+
logi("上报结果:", ok);
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**上报云控状态**
|
|
133
|
+
|
|
134
|
+
设备总览自定义字段读取设备最新 `cloud:status` 上报数据。服务端按设备只保存最新一份状态;同一设备再次上报会覆盖前一次状态。
|
|
135
|
+
|
|
136
|
+
`data` 的 key 必须使用云控端已经配置好的设备总览自定义字段名。上报了云控端未配置的多余字段时,协议仍可发送,但云控端设备总览不会显示这些字段。
|
|
137
|
+
|
|
138
|
+
```javascript
|
|
139
|
+
cloud.report("cloud:status", {
|
|
140
|
+
taskName: "巡检任务",
|
|
141
|
+
progress: 80,
|
|
142
|
+
online: true,
|
|
143
|
+
});
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### onEvent - 监听服务器事件
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
function onEvent(callback: ((event: string, data: Record<string, any>) => void) | null): void;
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
监听服务器发送的 `scriptEvent` 协议帧。传入 `null` 会取消主脚本监听。
|
|
153
|
+
此回调注册接口只能在主线程调用,不能在线程脚本中调用。
|
|
154
|
+
|
|
155
|
+
**参数**
|
|
156
|
+
|
|
157
|
+
| 参数名 | 类型 | 是否必填 | 描述 |
|
|
158
|
+
| ---------- | ----------------------------- | -------- | ---- |
|
|
159
|
+
| `callback` | `(event, data) => void` 或 `null` | 是 | 事件处理函数,或传 `null` 取消监听 |
|
|
160
|
+
|
|
161
|
+
**示例**
|
|
162
|
+
|
|
163
|
+
```javascript
|
|
164
|
+
cloud.onEvent((event, data) => {
|
|
165
|
+
if (event === "startTask") {
|
|
166
|
+
logi("任务参数:", data);
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
```
|
package/docs/api/global.md
CHANGED
|
@@ -456,7 +456,7 @@ logi(`CPU 限流延迟: ${delay.minMs}~${delay.maxMs}ms`);
|
|
|
456
456
|
|
|
457
457
|
### setStopCallback
|
|
458
458
|
|
|
459
|
-
|
|
459
|
+
设置停止回调函数。此回调注册接口只能在主线程调用,不能在线程脚本中调用。
|
|
460
460
|
|
|
461
461
|
```typescript
|
|
462
462
|
function setStopCallback(callback: () => void): void;
|
|
@@ -483,7 +483,7 @@ setStopCallback(() => {
|
|
|
483
483
|
|
|
484
484
|
### setExceptionCallback
|
|
485
485
|
|
|
486
|
-
|
|
486
|
+
设置异常停止回调函数。此回调注册接口只能在主线程调用,不能在线程脚本中调用。
|
|
487
487
|
|
|
488
488
|
```typescript
|
|
489
489
|
function setExceptionCallback(callback: () => void): void;
|
package/docs/api/ui.md
CHANGED
|
@@ -74,15 +74,17 @@ UI 模块提供了 WebView 相关功能,支持事件通信和 JavaScript 交
|
|
|
74
74
|
|
|
75
75
|
```typescript
|
|
76
76
|
function onEvent(
|
|
77
|
-
onEvent: (event: string, data: Record<string, any>) => void
|
|
77
|
+
onEvent: ((event: string, data: Record<string, any>) => void) | null
|
|
78
78
|
): void;
|
|
79
79
|
```
|
|
80
80
|
|
|
81
|
+
此回调注册接口只能在主线程调用,不能在线程脚本中调用。传入 `null` 会取消监听。
|
|
82
|
+
|
|
81
83
|
**参数:**
|
|
82
84
|
|
|
83
85
|
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
84
86
|
| --------- | -------------------------------------------------- | -------- | ------ | ------------------------------------ |
|
|
85
|
-
| `onEvent` | (event: string, data: Record<string, any>) => void | 是
|
|
87
|
+
| `onEvent` | ((event: string, data: Record<string, any>) => void) 或 null | 是 | | 事件回调函数,用于处理来自网页的事件,传 `null` 取消监听 |
|
|
86
88
|
|
|
87
89
|
**示例:**
|
|
88
90
|
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# 云控模块 ($云控)
|
|
2
|
+
|
|
3
|
+
云控模块用于在主脚本中使用内置云控 WebSocket 连接。脚本可以连接服务器、判断连接状态、断开连接、上报事件数据,并监听服务器事件数据。
|
|
4
|
+
|
|
5
|
+
## 注意事项
|
|
6
|
+
|
|
7
|
+
- `$云控` 只在主脚本上下文注册,不支持在线程脚本里调用。
|
|
8
|
+
- 服务器事件只有一个主脚本监听槽位,多次调用 `监听事件回调` 会覆盖旧监听。
|
|
9
|
+
|
|
10
|
+
## 协议
|
|
11
|
+
|
|
12
|
+
脚本上报数据时发送 JSON 文本帧:
|
|
13
|
+
|
|
14
|
+
```json
|
|
15
|
+
{
|
|
16
|
+
"type": "scriptReport",
|
|
17
|
+
"event": "eventName",
|
|
18
|
+
"data": {}
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
服务器下发脚本事件时发送 JSON 文本帧:
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"type": "scriptEvent",
|
|
27
|
+
"event": "eventName",
|
|
28
|
+
"data": {}
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
`event` 是脚本和服务器约定的自定义事件名。`data` 在 JS 中是普通 Object,必须能被 JSON 序列化。
|
|
33
|
+
设备总览自定义字段读取最新一次 `cloud:status` 上报数据;上报时事件名固定为 `cloud:status`,`data` 是 key-value 对象。
|
|
34
|
+
|
|
35
|
+
## API 参考
|
|
36
|
+
|
|
37
|
+
### 连接
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
function 连接(地址: 字符串, 设备编号?: 字符串): 布尔值;
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**参数**
|
|
44
|
+
|
|
45
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
46
|
+
| ---------- | ------ | -------- | -------------- | ---- |
|
|
47
|
+
| `地址` | 字符串 | 是 | - | 完整 `ws://` 或 `wss://` 云控地址 |
|
|
48
|
+
| `设备编号` | 字符串 | 否 | 已保存设备编号 | 连接时追加到 query 的设备编号 |
|
|
49
|
+
|
|
50
|
+
**返回值**
|
|
51
|
+
|
|
52
|
+
| 类型 | 描述 |
|
|
53
|
+
| ------ | ---- |
|
|
54
|
+
| 布尔值 | URL 校验通过且连接请求已提交时返回 true |
|
|
55
|
+
|
|
56
|
+
**说明**
|
|
57
|
+
|
|
58
|
+
- `连接` 只能在主脚本上下文调用。
|
|
59
|
+
- `连接` 只影响当前运行期云控连接,不会写入设置页的持久化云控配置。
|
|
60
|
+
|
|
61
|
+
**示例**
|
|
62
|
+
|
|
63
|
+
```javascript
|
|
64
|
+
const 已提交 = $云控.连接("wss://example.com/control", "device-001");
|
|
65
|
+
$打印信息日志("云控连接请求:", 已提交);
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### 是否已连接
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
function 是否已连接(): 布尔值;
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**返回值**
|
|
75
|
+
|
|
76
|
+
| 类型 | 描述 |
|
|
77
|
+
| ------ | ---- |
|
|
78
|
+
| 布尔值 | WebSocket 已连接时返回 true |
|
|
79
|
+
|
|
80
|
+
**示例**
|
|
81
|
+
|
|
82
|
+
```javascript
|
|
83
|
+
if ($云控.是否已连接()) {
|
|
84
|
+
$云控.上报数据("status", { value: "ready" });
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 断开连接
|
|
89
|
+
|
|
90
|
+
```typescript
|
|
91
|
+
function 断开连接(): 无返回值;
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
断开云控 WebSocket 并停止自动重连。
|
|
95
|
+
|
|
96
|
+
**示例**
|
|
97
|
+
|
|
98
|
+
```javascript
|
|
99
|
+
$云控.断开连接();
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### 上报数据
|
|
103
|
+
|
|
104
|
+
```typescript
|
|
105
|
+
function 上报数据(事件: 字符串, 数据: 字典<任意类型>): 布尔值;
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**参数**
|
|
109
|
+
|
|
110
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
111
|
+
| ------ | -------- | -------- | ------ | ---- |
|
|
112
|
+
| `事件` | 字符串 | 是 | - | 自定义事件名 |
|
|
113
|
+
| `数据` | 字典<任意类型> | 是 | - | 要上报的普通 Object 参数 |
|
|
114
|
+
|
|
115
|
+
**返回值**
|
|
116
|
+
|
|
117
|
+
| 类型 | 描述 |
|
|
118
|
+
| ------ | ---- |
|
|
119
|
+
| 布尔值 | 已连接且 JSON 文本帧已提交写出时返回 true |
|
|
120
|
+
|
|
121
|
+
**示例**
|
|
122
|
+
|
|
123
|
+
```javascript
|
|
124
|
+
const 成功 = $云控.上报数据("taskFinished", {
|
|
125
|
+
taskId: "A-1001",
|
|
126
|
+
success: true,
|
|
127
|
+
costMs: 1280,
|
|
128
|
+
});
|
|
129
|
+
$打印信息日志("上报结果:", 成功);
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**上报云控状态**
|
|
133
|
+
|
|
134
|
+
设备总览自定义字段读取设备最新 `cloud:status` 上报数据。服务端按设备只保存最新一份状态;同一设备再次上报会覆盖前一次状态。
|
|
135
|
+
|
|
136
|
+
`数据` 的 key 必须使用云控端已经配置好的设备总览自定义字段名。上报了云控端未配置的多余字段时,协议仍可发送,但云控端设备总览不会显示这些字段。
|
|
137
|
+
|
|
138
|
+
```javascript
|
|
139
|
+
$云控.上报数据("cloud:status", {
|
|
140
|
+
taskName: "巡检任务",
|
|
141
|
+
progress: 80,
|
|
142
|
+
online: true,
|
|
143
|
+
});
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### 监听事件回调
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
function 监听事件回调(回调: ((事件: 字符串, 数据: 字典<任意类型>) => 无返回值) | null): 无返回值;
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
监听服务器发送的 `scriptEvent` 协议帧。传入 `null` 会取消主脚本监听。
|
|
153
|
+
该回调注册接口只能在主线程调用,不能在线程脚本中调用。
|
|
154
|
+
|
|
155
|
+
**参数**
|
|
156
|
+
|
|
157
|
+
| 参数名 | 类型 | 是否必填 | 描述 |
|
|
158
|
+
| ------ | ----------------------- | -------- | ---- |
|
|
159
|
+
| `回调` | `(事件, 数据) => 无返回值` 或 `null` | 是 | 事件处理函数,或传 `null` 取消监听 |
|
|
160
|
+
|
|
161
|
+
**示例**
|
|
162
|
+
|
|
163
|
+
```javascript
|
|
164
|
+
$云控.监听事件回调((事件, 数据) => {
|
|
165
|
+
if (事件 === "startTask") {
|
|
166
|
+
$打印信息日志("任务参数:", 数据);
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
```
|
package/docs/apicn/global.md
CHANGED
|
@@ -457,7 +457,7 @@ $打印信息日志(`CPU 限流延迟: ${延迟.minMs}~${延迟.maxMs}ms`);
|
|
|
457
457
|
|
|
458
458
|
### $设置停止回调
|
|
459
459
|
|
|
460
|
-
|
|
460
|
+
设置停止回调函数。该回调注册接口只能在主线程调用,不能在线程脚本中调用。
|
|
461
461
|
|
|
462
462
|
```typescript
|
|
463
463
|
declare const $设置停止回调: (回调: () => 无返回值) => 无返回值;
|
|
@@ -484,7 +484,7 @@ $设置停止回调(() => {
|
|
|
484
484
|
|
|
485
485
|
### $设置异常停止回调
|
|
486
486
|
|
|
487
|
-
|
|
487
|
+
设置异常停止回调函数。该回调注册接口只能在主线程调用,不能在线程脚本中调用。
|
|
488
488
|
|
|
489
489
|
```typescript
|
|
490
490
|
declare const $设置异常停止回调: (回调: () => 无返回值) => 无返回值;
|
package/docs/apicn/ui.md
CHANGED
|
@@ -62,15 +62,17 @@ UI 模块提供了 WebView 相关功能,支持事件通信和 JavaScript 交
|
|
|
62
62
|
|
|
63
63
|
```typescript
|
|
64
64
|
function 监听事件回调(
|
|
65
|
-
回调函数: (事件名称: 字符串, 数据: 字典<任意类型>) => 无返回值
|
|
65
|
+
回调函数: ((事件名称: 字符串, 数据: 字典<任意类型>) => 无返回值) | null
|
|
66
66
|
): 无返回值;
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
+
该回调注册接口只能在主线程调用,不能在线程脚本中调用。传入 `null` 会取消监听。
|
|
70
|
+
|
|
69
71
|
**参数:**
|
|
70
72
|
|
|
71
73
|
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
72
74
|
| ---------- | ---------------------------------------------------- | -------- | ------ | ------------------------------------ |
|
|
73
|
-
| `回调函数` | (事件名称: 字符串, 数据: 字典<任意类型>) => 无返回值 | 是
|
|
75
|
+
| `回调函数` | ((事件名称: 字符串, 数据: 字典<任意类型>) => 无返回值) 或 null | 是 | | 事件回调函数,用于处理来自网页的事件,传 `null` 取消监听 |
|
|
74
76
|
|
|
75
77
|
**示例:**
|
|
76
78
|
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# 云控模块 (Cloud)
|
|
2
|
+
|
|
3
|
+
云控模块用于在 Python 主脚本中使用内置云控 WebSocket 连接。脚本可以连接云控服务器、判断连接状态、断开连接、上报事件数据,并监听服务器事件数据。
|
|
4
|
+
|
|
5
|
+
## 注意事项
|
|
6
|
+
|
|
7
|
+
- Python 云控模块只支持英文方法,不提供中文方法。
|
|
8
|
+
- `cloud` 只能在主脚本中调用,不支持在线程脚本里调用。
|
|
9
|
+
- 服务器事件只有一个主脚本监听槽位,多次调用 `onEvent` 会覆盖旧监听。
|
|
10
|
+
|
|
11
|
+
## 协议
|
|
12
|
+
|
|
13
|
+
脚本上报数据时发送 JSON 文本帧:
|
|
14
|
+
|
|
15
|
+
```json
|
|
16
|
+
{
|
|
17
|
+
"type": "scriptReport",
|
|
18
|
+
"event": "eventName",
|
|
19
|
+
"data": {}
|
|
20
|
+
}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
服务器下发脚本事件时发送 JSON 文本帧:
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"type": "scriptEvent",
|
|
28
|
+
"event": "eventName",
|
|
29
|
+
"data": {}
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
`event` 是脚本和服务器约定的自定义事件名。`data` 在 Python 中是普通 `dict`,必须能被 JSON 序列化。
|
|
34
|
+
设备总览自定义字段读取最新一次 `cloud:status` 上报数据;上报时事件名固定为 `cloud:status`,`data` 是 key-value 字典。
|
|
35
|
+
|
|
36
|
+
## API 参考
|
|
37
|
+
|
|
38
|
+
### connect - 连接云控服务器
|
|
39
|
+
|
|
40
|
+
```python
|
|
41
|
+
def connect(url: str, deviceNo: str | None = None) -> bool
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**参数**
|
|
45
|
+
|
|
46
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
47
|
+
| ---------- | ------------ | -------- | -------------- | ---- |
|
|
48
|
+
| `url` | str | 是 | - | 完整 `ws://` 或 `wss://` 云控地址 |
|
|
49
|
+
| `deviceNo` | str 或 `None` | 否 | 已保存设备编号 | 连接时追加到 query 的设备编号 |
|
|
50
|
+
|
|
51
|
+
**返回值**
|
|
52
|
+
|
|
53
|
+
| 类型 | 描述 |
|
|
54
|
+
| ---- | ---- |
|
|
55
|
+
| bool | URL 校验通过且连接请求已提交时返回 `True` |
|
|
56
|
+
|
|
57
|
+
**说明**
|
|
58
|
+
|
|
59
|
+
- `connect` 只能在主脚本中调用。
|
|
60
|
+
- `connect` 只影响当前运行期云控连接,不会写入设置页的持久化云控配置。
|
|
61
|
+
|
|
62
|
+
**示例**
|
|
63
|
+
|
|
64
|
+
```python
|
|
65
|
+
from kuaijs import cloud, logger
|
|
66
|
+
|
|
67
|
+
accepted = cloud.connect("wss://example.com/control", "device-001")
|
|
68
|
+
logger.info(f"云控连接请求: {accepted}")
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### isConnected - 判断是否已连接
|
|
72
|
+
|
|
73
|
+
```python
|
|
74
|
+
def isConnected() -> bool
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**返回值**
|
|
78
|
+
|
|
79
|
+
| 类型 | 描述 |
|
|
80
|
+
| ---- | ---- |
|
|
81
|
+
| bool | WebSocket 已连接时返回 `True` |
|
|
82
|
+
|
|
83
|
+
**示例**
|
|
84
|
+
|
|
85
|
+
```python
|
|
86
|
+
from kuaijs import cloud
|
|
87
|
+
|
|
88
|
+
if cloud.isConnected():
|
|
89
|
+
cloud.report("status", {"value": "ready"})
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### disconnect - 断开连接
|
|
93
|
+
|
|
94
|
+
```python
|
|
95
|
+
def disconnect() -> None
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
断开云控 WebSocket 并停止自动重连。
|
|
99
|
+
|
|
100
|
+
**示例**
|
|
101
|
+
|
|
102
|
+
```python
|
|
103
|
+
from kuaijs import cloud
|
|
104
|
+
|
|
105
|
+
cloud.disconnect()
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### report - 上报数据
|
|
109
|
+
|
|
110
|
+
```python
|
|
111
|
+
from typing import Any, Dict
|
|
112
|
+
|
|
113
|
+
def report(event: str, data: Dict[str, Any]) -> bool
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**参数**
|
|
117
|
+
|
|
118
|
+
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
119
|
+
| ------- | ---------------- | -------- | ------ | ---- |
|
|
120
|
+
| `event` | str | 是 | - | 自定义事件名 |
|
|
121
|
+
| `data` | `Dict[str, Any]` | 是 | - | 要上报的普通 dict 参数 |
|
|
122
|
+
|
|
123
|
+
**返回值**
|
|
124
|
+
|
|
125
|
+
| 类型 | 描述 |
|
|
126
|
+
| ---- | ---- |
|
|
127
|
+
| bool | 已连接且 JSON 文本帧已提交写出时返回 `True` |
|
|
128
|
+
|
|
129
|
+
**示例**
|
|
130
|
+
|
|
131
|
+
```python
|
|
132
|
+
from kuaijs import cloud, logger
|
|
133
|
+
|
|
134
|
+
ok = cloud.report("taskFinished", {
|
|
135
|
+
"taskId": "A-1001",
|
|
136
|
+
"success": True,
|
|
137
|
+
"costMs": 1280,
|
|
138
|
+
})
|
|
139
|
+
logger.info(f"上报结果: {ok}")
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**上报云控状态**
|
|
143
|
+
|
|
144
|
+
设备总览自定义字段读取设备最新 `cloud:status` 上报数据。服务端按设备只保存最新一份状态;同一设备再次上报会覆盖前一次状态。
|
|
145
|
+
|
|
146
|
+
`data` 的 key 必须使用云控端已经配置好的设备总览自定义字段名。上报了云控端未配置的多余字段时,协议仍可发送,但云控端设备总览不会显示这些字段。
|
|
147
|
+
|
|
148
|
+
```python
|
|
149
|
+
cloud.report("cloud:status", {
|
|
150
|
+
"taskName": "巡检任务",
|
|
151
|
+
"progress": 80,
|
|
152
|
+
"online": True,
|
|
153
|
+
})
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### onEvent - 监听服务器事件
|
|
157
|
+
|
|
158
|
+
```python
|
|
159
|
+
from typing import Any, Callable, Dict
|
|
160
|
+
|
|
161
|
+
def onEvent(callback: Callable[[str, Dict[str, Any]], None] | None) -> None
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
监听服务器发送的 `scriptEvent` 协议帧。传入 `None` 会取消主脚本监听。
|
|
165
|
+
该回调注册接口只能在 Python 主脚本中调用,不能在线程脚本中调用。
|
|
166
|
+
|
|
167
|
+
**参数**
|
|
168
|
+
|
|
169
|
+
| 参数名 | 类型 | 是否必填 | 描述 |
|
|
170
|
+
| ---------- | --------------------------------- | -------- | ---- |
|
|
171
|
+
| `callback` | `Callable[[str, Dict[str, Any]], None]` 或 `None` | 是 | 事件处理函数,或传 `None` 取消监听 |
|
|
172
|
+
|
|
173
|
+
事件处理函数参数:
|
|
174
|
+
|
|
175
|
+
| 字段 | 类型 | 描述 |
|
|
176
|
+
| ---- | ---- | ---- |
|
|
177
|
+
| `event` | str | 自定义事件名称 |
|
|
178
|
+
| `data` | dict | 服务端事件数据,普通 `dict` |
|
|
179
|
+
|
|
180
|
+
**示例**
|
|
181
|
+
|
|
182
|
+
```python
|
|
183
|
+
from kuaijs import cloud, logger
|
|
184
|
+
|
|
185
|
+
def handle_event(event: str, data: dict):
|
|
186
|
+
if event == "startTask":
|
|
187
|
+
logger.info(f"任务参数: {data}")
|
|
188
|
+
|
|
189
|
+
cloud.onEvent(handle_event)
|
|
190
|
+
```
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
- 导入方式:
|
|
6
6
|
|
|
7
7
|
```python
|
|
8
|
-
from kuaijs import action, hid, image, appleocr, paddleocr, yolo, yolocls, system, device, file, mysql, netcard, ime, media, hotupdate, tomatoocr, tts, ui, utils, node, pip, logger
|
|
8
|
+
from kuaijs import action, cloud, hid, image, appleocr, paddleocr, yolo, yolocls, system, device, file, mysql, netcard, ime, media, hotupdate, tomatoocr, tts, ui, utils, node, pip, logger
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
## 下载资源
|
package/docs/apipython/ui.md
CHANGED
|
@@ -75,14 +75,16 @@ UI 模块提供 WebView 相关功能,支持事件通信与 JavaScript 交互
|
|
|
75
75
|
```python
|
|
76
76
|
from typing import Callable, Any
|
|
77
77
|
|
|
78
|
-
def onEvent(callback: Callable[[str, Any], None]) -> None
|
|
78
|
+
def onEvent(callback: Callable[[str, Any], None] | None) -> None
|
|
79
79
|
```
|
|
80
80
|
|
|
81
|
+
该回调注册接口只能在 Python 主脚本中调用,不能在线程脚本中调用。传入 `None` 会取消监听。
|
|
82
|
+
|
|
81
83
|
**参数:**
|
|
82
84
|
|
|
83
85
|
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|
|
84
86
|
| ---------- | ---------------------------- | -------- | ------ | ------------------------------------ |
|
|
85
|
-
| `callback` | `Callable[[str, Any], None]` | 是
|
|
87
|
+
| `callback` | `Callable[[str, Any], None]` 或 `None` | 是 | | 事件回调函数,用于处理来自网页的事件,传 `None` 取消监听 |
|
|
86
88
|
|
|
87
89
|
**示例:**
|
|
88
90
|
|
package/docs/httpapi/api.md
CHANGED
|
@@ -541,6 +541,7 @@ GET /api/status
|
|
|
541
541
|
"appName": "string",
|
|
542
542
|
"appBuildNumber": 0,
|
|
543
543
|
"appBundleId": "string",
|
|
544
|
+
"appNo": "string",
|
|
544
545
|
"deviceModel": "string",
|
|
545
546
|
"agentConnected": true,
|
|
546
547
|
"isRun": true,
|
|
@@ -550,6 +551,14 @@ GET /api/status
|
|
|
550
551
|
"udid": "string",
|
|
551
552
|
"serverDeviceId": "string",
|
|
552
553
|
"orientation": "PORTRAIT",
|
|
554
|
+
"memory": {
|
|
555
|
+
"used": 0,
|
|
556
|
+
"available": 0,
|
|
557
|
+
"total": 0,
|
|
558
|
+
"systemUsed": 0,
|
|
559
|
+
"usagePercentage": 0
|
|
560
|
+
},
|
|
561
|
+
"cpuUsage": 0,
|
|
553
562
|
"osVersion": "string",
|
|
554
563
|
"ecid": "string",
|
|
555
564
|
"isVolumeControlEnabled": true,
|
|
@@ -592,6 +601,7 @@ GET /api/status
|
|
|
592
601
|
| »» appName | string | true | none | app名称 | none |
|
|
593
602
|
| »» appBuildNumber | integer | true | none | app构建号 | none |
|
|
594
603
|
| »» appBundleId | string | true | none | app 包名 | none |
|
|
604
|
+
| »» appNo | string | true | none | 当前软件编号 | 未加载软件时为空字符串 |
|
|
595
605
|
| »» deviceModel | string | true | none | 设备型号 | none |
|
|
596
606
|
| »» agentConnected | boolean | true | none | agent是否连接 | none |
|
|
597
607
|
| »» isRun | boolean | true | none | 脚本是否启动 | none |
|
|
@@ -601,6 +611,13 @@ GET /api/status
|
|
|
601
611
|
| »» udid | string | true | none | 设备唯一 UDID | none |
|
|
602
612
|
| »» serverDeviceId | string | true | none | 服务器设备ID | none |
|
|
603
613
|
| »» orientation | string | true | none | 屏幕方向 | none |
|
|
614
|
+
| »» memory | object | true | none | 内存状态 | 单位为 MB,字段与系统模块内存信息一致 |
|
|
615
|
+
| »»» used | number | true | none | 应用已用内存 | 当前应用内存占用,单位 MB |
|
|
616
|
+
| »»» available | number | true | none | 系统可用内存 | 系统可用内存,单位 MB |
|
|
617
|
+
| »»» total | number | true | none | 系统总内存 | 物理内存总量,单位 MB |
|
|
618
|
+
| »»» systemUsed | number | true | none | 系统已用内存 | 系统已用内存,单位 MB |
|
|
619
|
+
| »»» usagePercentage | integer | true | none | 系统内存使用率 | 系统已用内存占总内存百分比 |
|
|
620
|
+
| »» cpuUsage | number | true | none | CPU 使用率 | 当前应用 CPU 使用率百分比 |
|
|
604
621
|
| »» osVersion | string | true | none | 系统版本 | none |
|
|
605
622
|
| »» ecid | string | true | none | 设备唯一 ECID | none |
|
|
606
623
|
| »» isVolumeControlEnabled | boolean | true | none | 是否开启了音量键启停 | none |
|
|
@@ -764,9 +781,9 @@ POST /api/setConfig
|
|
|
764
781
|
| --------- | ------- | ---- | ---- | -------- | ---- |
|
|
765
782
|
| » success | boolean | true | none | 是否成功 | none |
|
|
766
783
|
|
|
767
|
-
##
|
|
784
|
+
## WebSocket 实时屏幕画面流
|
|
768
785
|
|
|
769
|
-
|
|
786
|
+
WebSocket Upgrade /mirror/ws
|
|
770
787
|
|
|
771
788
|
### 请求参数
|
|
772
789
|
|
|
@@ -774,18 +791,11 @@ GET /mirror/image
|
|
|
774
791
|
| ------------- | ----- | ------- | ---- | ------ | ---------------------------- |
|
|
775
792
|
| fps | query | integer | 否 | | 帧率,默认 10,范围 1-30 |
|
|
776
793
|
| quality | query | number | 否 | | 质量,默认 0.25,范围 0.1-1.0 |
|
|
794
|
+
| scalingFactor | query | number | 否 | | 缩放比例,默认 1.0,范围 0.1-1.0 |
|
|
777
795
|
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
> 200 Response
|
|
781
|
-
|
|
782
|
-
### 返回结果
|
|
783
|
-
|
|
784
|
-
| 状态码 | 状态码含义 | 说明 | 数据模型 |
|
|
785
|
-
| ------ | ------------------------------------------------------- | ---- | -------- |
|
|
786
|
-
| 200 | [OK](https://tools.ietf.org/html/rfc7231#section-6.3.1) | none | Inline |
|
|
796
|
+
### 返回数据
|
|
787
797
|
|
|
788
|
-
|
|
798
|
+
连接成功后服务端持续发送 JPEG 二进制 WebSocket frame;客户端不需要发送业务消息。
|
|
789
799
|
|
|
790
800
|
## POST 执行脚本(仅支持JS脚本)
|
|
791
801
|
|
|
@@ -2954,6 +2964,7 @@ GET /api/file/download
|
|
|
2954
2964
|
"appName": "string",
|
|
2955
2965
|
"appBuildNumber": 0,
|
|
2956
2966
|
"appBundleId": "string",
|
|
2967
|
+
"appNo": "string",
|
|
2957
2968
|
"deviceModel": "string",
|
|
2958
2969
|
"agentConnected": true,
|
|
2959
2970
|
"isRun": true,
|
|
@@ -2963,6 +2974,14 @@ GET /api/file/download
|
|
|
2963
2974
|
"udid": "string",
|
|
2964
2975
|
"serverDeviceId": "string",
|
|
2965
2976
|
"orientation": "PORTRAIT",
|
|
2977
|
+
"memory": {
|
|
2978
|
+
"used": 0,
|
|
2979
|
+
"available": 0,
|
|
2980
|
+
"total": 0,
|
|
2981
|
+
"systemUsed": 0,
|
|
2982
|
+
"usagePercentage": 0
|
|
2983
|
+
},
|
|
2984
|
+
"cpuUsage": 0,
|
|
2966
2985
|
"osVersion": "string",
|
|
2967
2986
|
"ecid": "string",
|
|
2968
2987
|
"isVolumeControlEnabled": true,
|
|
@@ -2994,6 +3013,7 @@ GET /api/file/download
|
|
|
2994
3013
|
| appName | string | true | none | app名称 | none |
|
|
2995
3014
|
| appBuildNumber | integer | true | none | app构建号 | none |
|
|
2996
3015
|
| appBundleId | string | true | none | app 包名 | none |
|
|
3016
|
+
| appNo | string | true | none | 当前软件编号 | 未加载软件时为空字符串 |
|
|
2997
3017
|
| deviceModel | string | true | none | 设备型号 | none |
|
|
2998
3018
|
| agentConnected | boolean | true | none | agent是否连接 | none |
|
|
2999
3019
|
| isRun | boolean | true | none | 脚本是否启动 | none |
|
|
@@ -3003,6 +3023,13 @@ GET /api/file/download
|
|
|
3003
3023
|
| udid | string | true | none | 设备唯一 UDID | none |
|
|
3004
3024
|
| serverDeviceId | string | true | none | 服务器设备ID | none |
|
|
3005
3025
|
| orientation | string | true | none | 屏幕方向 | none |
|
|
3026
|
+
| memory | object | true | none | 内存状态 | 单位为 MB,字段与系统模块内存信息一致 |
|
|
3027
|
+
| » used | number | true | none | 应用已用内存 | 当前应用内存占用,单位 MB |
|
|
3028
|
+
| » available | number | true | none | 系统可用内存 | 系统可用内存,单位 MB |
|
|
3029
|
+
| » total | number | true | none | 系统总内存 | 物理内存总量,单位 MB |
|
|
3030
|
+
| » systemUsed | number | true | none | 系统已用内存 | 系统已用内存,单位 MB |
|
|
3031
|
+
| » usagePercentage | integer | true | none | 系统内存使用率 | 系统已用内存占总内存百分比 |
|
|
3032
|
+
| cpuUsage | number | true | none | CPU 使用率 | 当前应用 CPU 使用率百分比 |
|
|
3006
3033
|
| osVersion | string | true | none | 系统版本 | none |
|
|
3007
3034
|
| ecid | string | true | none | 设备唯一 ECID | none |
|
|
3008
3035
|
| isVolumeControlEnabled | boolean | true | none | 是否开启了音量键启停 | none |
|