Create your Gitee Account
Explore and code with more than 5 million developers,Free private repositories !:)
Sign up
Clone or download
DTU - JSON 格式数据协议解释.md 7.97 KB
Copy Edit Web IDE Raw Blame History

DTU - JSON 格式数据协议解释

一、JSON 源码

{
	"fota": 1,
	"uartReadTime": 25,
	"flow": "",
	"param_ver": "100",
	"pwrmod": "normal",
	"password": "",
	"netReadTime": 0,
	"passon": 1,
	"nolog": "1",
	"plate": 0,
	"reg": 0,
	"convert": 0,
	"uconf": [
		[1, "9600", 8, 2, 0, ""],
		[]
	],
	"conf": [
		["tcp", "ping", "180", "47.93.118.70", "9009", 1, "", "", "", ""],
		[],
		[],
		[],
		[],
		[],
		[]
	],
	"preset": {
		"number": "13283863803",
		"delay": "10",
		"smsword": "update"
	},
	"apn": ["", "", ""],
	"cmds": [
		[],
		[]
	],
	"pins": [],
	"gps": {
		"pio": ["pio3", "pio6", "pio7", "pio13", 0, "1"],
		"fun": [1, "115200", 0, "10", 0, "json", "0", "|", "10", "1"]
	},
	"upprot": ["", "", "", "", "", "", ""],
	"dwprot": ["", "", "", "", "", "", ""],
	"warn": {
		"adc0": [],
		"adc1": [],
		"vbatt": [],
		"gpio": []
	}
}

二、JSON 格式说明

  • 这里不做更详细的字段解释,更详细的请参考《iRTU 参考手册V3.2 》
  • JSON不支持注释,以下用lua的注释符 -- 表示注释
  • JSON的key-value序列无顺序

1、最外层:

  • {} 是根目录,对应源码的 local dtu = { ... } 变量

2、第一层是 “配置保存" 指令 对应的参数

  • 这里本来因为历史原因要兼容最早的版本故没使用数组或JSON对象。
字段 功能 可选值
fota 远程升级开关 0 (关闭)| 1 (开启)
uartReadTime 帧超时打包时长 25 (大于5的number)
flow 流控设置 ”“ (关闭)|("" 或 number)
param_ver 参数版本号 “100” (数字字符串)
pwrmod 功耗模式 "normal" | "energy"
password 密码模式 “”(或字符串和字母组合)
netReadTime 往串口发送的打包超时 0(number)
passon 传递标志位 0(非透传) | 1(透传)
nolog 日志标志位 0(关闭)| 1(打印)
plate 识别码标志位 0(关闭)| 1 (帧头添加IMEI)
reg 注册报文 0不发送,1发送JSON注册报文
{"csq":rssi,"imei":imei,"iccid":iccid,"ver":Version},2发送HEX报
文"131234512345",填字符串为用户自定义注册包
convert 报文HEX转换 0(关闭)| 1 (转换)

3、串口配置

  • 字段key: uconf
  • 字段value : 数组
  • 数组下标代表串口 1 - 2
	"uconf": [
		[
			1,			-- 串口ID号,注意要和数组下标对应
        	"9600", 	 -- 串口波特率
        	8, 			-- 串口数据位
        	2, 			-- 串口parity
        	0, 			-- 串口stopbits
        	""			-- 485 GPIO 号
        ], 
		[] 	-- 关闭串口2配置
	],

4、通道配置

  • 字段key: conf
  • 字段value : 数组
  • 数组下标代表通道ID 1 - 7
  • 数组有字段顺序,下面举例TCP和阿里云自动注册,其他同手册字段顺序
	"conf": [
		[					-- 数组下标代表通道ID号
			"tcp", 			-- 协议 TCP | UDP | MQTT | 
			"ping", 		-- 心跳包内容
			"180", 			-- 心跳包间隔
			"47.93.118.70",  -- HOST 地址
			"9009", 		-- HOST 端口
			1, 				-- 通道透传捆绑的串口ID
			"", 			-- 保持为""
			"", 			-- 保持为""
			"",				-- 自动采集任务间隔
           	 ""				 -- SSL 标志位	可选"ssl"
         ],
		[], -- 表示通道关闭
		[
			"aliyun", 		-- 公有云配置 如:"aliyun"
			"auto", 		-- 自动注册
			300, 			-- MQTT 保活时长
			1800, 			-- 自动采集任务间隔	
			"cn-shanghai", 	 -- 阿里云地域代码
			"ProductKey:",   -- 阿里云项目key
			"AccessKey ID:", -- 阿里云AccessKey
			"Access Key Secret:",  -- 阿里云 AccessKey 的 Secret
			"plus", 		-- 阿里云产品版本类型(阿里云只有高级版了)	
			1, 				-- MQTT CleanSession
			0, 				-- MQTT QOS 
			1, 				-- MQTT 通道捆绑串口ID
			"", 			-- 订阅主题,支持多主题参考《iRTU参考手册》
			""				-- 发布主题,支持多主题参考《iRTU参考手册》
		],
		[],
		[],
		[],
		[]
	],

5、预置信息

  • 字段key: preset
  • 字段value : 对象
  • 对应《iRTU参考手册》用户预定义电话和短信
	"preset": {
		"number": "13999999999", -- 白名单 允许呼入呼出的电话号码
		"delay": "10",			-- 振铃时长
		"smsword": "update"		-- 短信更新参数定义的字符串	
	},

6、设置APN

  • 字段key: apn
  • 字段value : 数组
  • 对应《iRTU参考手册》设置APN
  • 注意:这个指令只适合配置和使用不是同一张卡的场景
"apn": ["", "", ""],

7、自动任务采集

  • 字段key: cmds
  • 字段value : 数组
  • 对应《iRTU参考手册》自动采集任务
  • 注意:这个指令要配合通道的自动采集任务使用
"cmds": [
	[			-- 串口1的自动采集任务
		"100",   -- 一次下发采集指令之间的间隔(主意和通道配置的采集间隔不是一个意思)
        "11 22 33 44 55 66 77 88 ",  -- 下发给串口1的采集指令(会自动转成数字bin)
        "11 22 33 44 55 66 77 88 "   -- 同上
    ],
	[] -- 串口2的自动采集任务关闭
],

8、自定义IRTU预定义的GPIO

  • 不必要的情况下不建议修改这个设置

  • 字段key: pins

  • 字段value : 数组

    未配置的情况:

"pins": [],

​ 配置情况:

"pins":[
	"pio2",	-- 网路指示灯的GPIO
	"pio4", -- 与服务器脸上后通知GPIO
	"pio4"  -- 重置DTU参数的GPIO
	],

9、GPS 部分

  • 字段key:gps
  • 字段value: 对象
  • GPS 的配置略复杂,特别是Air800和Air530的波特率不同,强烈建议看手册和视频后再操作
	"gps": {
		"pio": ["pio3", "pio6", "pio7", "pio13", 0, "1"],
		"fun": [1, "115200", 0, "10", 0, "json", "0", "|", "10", "1"]
	},

10、数据流模版

  • 字段key:upport
  • 字段value: 数组,下标代表1-7 通道
  • 字段key: dwprot
  • 字段value:数组, 下标代表1-7通道
  • 数据流模版实现报文协议的转换,比如上行 Modbus 转 JSON,下行 JSON 转 Modbus
  • 数据流模版使用 Lua 脚本,故都是字符串。
  • 主意:使用JSON Encode 类 API 的时候会自动序列化字符串,如果是自己拼接,请注意序列化字符串。
	"upprot": ["", "", "", "", "", "", ""],
	"dwprot": ["", "", "", "", "", "", ""],

11、预警配置部分

  • 字段key:warn
  • 字段value: 对象
	"warn": {
		"adc0": [	
					1, 				-- 启用欠压报警
					"1000", 	 	-- 欠压下限 1000mV
					1, 			 	-- 启用过压报警	
					"3000", 	 	-- 过压报警上限 3000mV	
					"300", 		 	-- 报警电压回差(防止临界值反复报警)
					"ADC0 waring!",  -- 报警内容
					"1", 			-- 网路报警上报通道ID
					"10", 			-- 检测频率
					"100", 			-- 上报频率(防止报警没接触一直上报)
					1, 				-- 启用互联网上报
					1, 				-- 启用短信上报
					0                -- 不启用电话通知
				],
		"adc1": [],
		"vbatt": [],
		"gpio": [
			[
				"pio7", 			-- 按键GPIO
				 1, 				-- 启用按下报警(下降沿触发)
				 0, 				-- 不启用松开报警(上升沿触发)
				 "GPIO 7 is keyprees!", -- 报警内容
				 "1", 				-- 网路报警上报通道ID	
				 1, 				-- 启用网路报警
				 0, 				-- 不启用短信报警	
				 0					-- 不启用电话通知
			]
		]
	}

Comment ( 0 )

Sign in for post a comment