# 边缘盒子 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": "", // 结束语音 "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 { // 开始时间戳(s), default 0, 0表示立即执行 "start": 1730793361, // 结束时间戳(s), default 0, 0表示无限执行 "end": 1730793368, // 执行项 "items": [ { // 开始时间戳(s), 默认根的时间戳, 只有在根执行时间内才会执行 "start": 1730793361, // 结束时间戳(s), 默认根的时间戳, 只有在根执行时间内才会执行 "end": 1730793368, // 间隔时间(s), 类型>2时, 该项无效, default 0 "interval": 0, // 事件类型(0: 音频; 1: 视频; 2: TTS; 3: 继电器; 4: 网页), default 0 "type": 2, // 事件数据(TTS为文字, 继电器为端口号, 其他都为地址链接。支持 file:// 本地文件地址、 http(s):// 远程文件地址) "data": "", }, ... ] } ``` > 同一个类型的待机任务只能有一个,当有新的任务到达时会覆盖之前的任务 ## 说明 1. linux 下播放音频 ```bash sudo apt install libasound2-dev alsa-utils ``` 2. linux 下播放视频 ```bash sudo apt install ffmpeg ``` 驱动安装 ```bash libdirectfb-dev ``` 3. 当前用户加入播放音频与视频的组中 ```bash sudo usermod -aG audio,video $USER ``` ### 关闭屏幕帧缓冲 ```bash # 关闭帧缓冲设备 echo 1 | sudo tee /sys/class/graphics/fb0/blank # 重新打开帧缓冲设备 echo 0 | sudo tee /sys/class/graphics/fb0/blank ``` ### 播放视频 ```bash ffplay -autoexit -fs -i video.mp4 ```