From b1ecc7786bf34561e5beb8ab1b704c761431a310 Mon Sep 17 00:00:00 2001 From: lzh Date: Thu, 22 Jan 2026 09:58:01 +0800 Subject: [PATCH] =?UTF-8?q?feat(iot-gateway):=20JT808=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=20instruction=5Fconfig=20=E6=9C=8D=E5=8A=A1=E5=B9=B6=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3=20TTS=20=E6=A0=87=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 新增 instruction_config 服务 - 用于下发服务指令配置(如 #2014*SET*TTS0:...#) - 使用 0x01 标志位(静默执行),设备解析后不发声 - 通过文本信息下发 (0x8300) 发送 2. 修正 TTS 服务默认标志 - 默认 tts_flag 从 4 改为 0x08(普通通知) - 日志输出改为十六进制格式 (0x08, 0x09) JT808 播报标志规范: - 0x01: 静默执行(配置指令) - 0x08: TTS 普通通知 - 0x09: TTS 紧急通知 Co-Authored-By: Claude Opus 4.5 --- .../codec/jt808/IotJt808DeviceMessageCodec.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/viewsh-module-iot/viewsh-module-iot-gateway/src/main/java/com/viewsh/module/iot/gateway/codec/jt808/IotJt808DeviceMessageCodec.java b/viewsh-module-iot/viewsh-module-iot-gateway/src/main/java/com/viewsh/module/iot/gateway/codec/jt808/IotJt808DeviceMessageCodec.java index 5129ae3..e01c9fd 100644 --- a/viewsh-module-iot/viewsh-module-iot-gateway/src/main/java/com/viewsh/module/iot/gateway/codec/jt808/IotJt808DeviceMessageCodec.java +++ b/viewsh-module-iot/viewsh-module-iot-gateway/src/main/java/com/viewsh/module/iot/gateway/codec/jt808/IotJt808DeviceMessageCodec.java @@ -443,12 +443,20 @@ public class IotJt808DeviceMessageCodec implements IotDeviceMessageCodec { case "TTS" -> { // 语音播报服务 -> JT808 文本信息下发 (0x8300) String ttsText = (String) serviceParams.getOrDefault("tts_text", ""); - int ttsFlag = ((Number) serviceParams.getOrDefault("tts_flag", 4)).intValue(); // 默认 4-TTS 播读 - - log.info("[encodeServiceInvoke][TTS 语音播报] phone={}, flag={}, text={}", phone, ttsFlag, ttsText); + int ttsFlag = ((Number) serviceParams.getOrDefault("tts_flag", 0x08)).intValue(); + log.info("[encodeServiceInvoke][TTS 语音播报] phone={}, flag=0x{}, text={}", + phone, Integer.toHexString(ttsFlag), ttsText); yield encoder.encodeTextInfoDown(phone, (byte) ttsFlag, ttsText, flowId); } + case "instruction_config" -> { + // 服务指令配置 -> JT808 文本信息下发 (0x8300), 静默执行 + // 异步调用,设备收到后解析指令,修改参数,回复 0x0001,但不发声 + String config = (String) serviceParams.getOrDefault("config", ""); + log.info("[encodeServiceInvoke][服务指令配置] phone={}, config={}", phone, config); + yield encoder.encodeTextInfoDown(phone, (byte) 0x01, config, flowId); + } + case "locationQuery" -> { // 位置查询服务 -> JT808 位置信息查询 (0x8201) log.info("[encodeServiceInvoke][位置查询] phone={}", phone);