Files
game-driver/readme.md
2025-03-17 10:16:15 +08:00

182 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 边缘盒子
topic 中的 `location` 指景区编码, `point` 指景区内具体点位
## 1. 接收启动
Topic: `server/${location}/${point}/play`
Payload:
```json lines
{
// 设备超时时长(s)
"timeout": 30,
// 是否需要整体电源控制
"power": true,
// 游戏中背景音乐(支持 file:// 本地文件地址、 http(s):// 远程文件地址)
"bgm": "",
// 整体设备音量(0-1)
"volume": 0.5,
// 屏幕默认打印(设备待机时展示文本)
"default-print": "",
// 文本转语音整体控制
"tts": {
// 开始播报语音
"start": "",
// 超时自动停止时播报语音
"timeout": "",
// 结束播报语音
"end": "",
// 终止播报语音
"stop": "",
// 固定节点播报语音
"timer": [
{
// 时间节点(s)
"time": 10,
// 语音文字
"value": ""
},
...
]
},
// 屏幕打印控制
"print": [
{
// 时间节点(s)
"time": 10,
// 展示文字
"text": "",
// 持续时长(s)
"duration": 10
},
...
],
// 根据具体游戏特定
"game": {}
}
```
[游戏节点报文](./game.md)
#### 例: 入口欢迎播报
```json lines
{
"volume": 1,
"tts": {
"start": "欢迎前来挑战!"
}
}
```
## 2. 事件反馈
### 状态变更
Topic: `device/${location}/${point}/status`
Payload:
```text
0
```
> 0 待机; 1 使用中; -1 状态异常
## 3. 接收指令
### 终止
Topic: `server/${location}/${point}/command`
Payload:
```text
stop
```
### 终止后台
Topic: `server/${location}/${point}/command`
Payload:
```text
stop-bg
```
### 查询状态
Topic: `server/${location}/${point}/command`
Payload:
```text
status
```
> 设备接收到该指令会立即向 `device/${location}/${point}/status` 发送一次当前状态
## 4. 待机执行
Topic: `server/${location}/${point}/wait`
Payload:
```json lines
{
// 执行的时间区间(需要系统配置正确时区)
"cron": "17:20-21:35 1-5 * *",
// 执行项
"items": [
{
// 执行的时间区间
"cron": "17:20-21:35 1-5 * *",
// 间隔时间(s), 类型>2时, 该项无效, default 0
"interval": 0,
// 持续时长(s), 待机任务执行时持续的时长。为 0 表示 音频、视频、TTS 按播放时长,继电器、网页、投影仪、激光秀持续整个时间段。 default 0
"duration": 0,
// 事件类型(0: 音频; 1: 视频; 2: TTS; 3: 继电器; 4: 网页; 5: 投影仪; 6: 激光秀;) default 0
"type": 2,
// Game 指令执行时是否暂停。default false
"pause": true,
// 待机任务执行时是否锁定设备。default false
"lock": false,
// 事件数据(TTS为文字, 继电器为端口号,激光秀为节目名,投影仪忽略该参数, 其他都为地址链接。支持 file:// 本地文件地址、 http(s):// 远程文件地址)
"data": "",
},
...
]
}
```
> 同一个类型的待机任务只能有一个,当有新的任务到达时会覆盖之前的任务
### 配置时区
```bash
sudo timedatectl set-timezone Asia/Shanghai
```
### Cron Format
The format consists of four fields separated by whitespace:
```
time dow dom month
```
Where:
- `time`: Time range in 24-hour format (HH:MM[:SS]-HH:MM[:SS]) or * for all day. Seconds are optional.
- `dow`: Day of week (0-6, where 0=Sunday)
- `dom`: Day of month (1-31)
- `month`: Month (1-12)
Multiple rules can be combined using semicolons (;).
Each field (except time) supports:
- Single values: "5"
- Lists: "1,3,5"
- Ranges: "1-5"
- Asterisk: "*" for any/all values