-
DTU版本默认上电是透传模式还是非透传模式,两个模式间如何转换?
答:默认只配置了串口115200,8位数据模式,1个停止位,无校验,通道默认关闭。
-
是否有可能让在第一次去连接server时上报自己ID(可以自定义)功能?
答:支持自定义,详见“配置保存指令”的register字段。
-
在非透传模式报文也是发的AT命令格式吗?
答:不用AT,非透传模式参考指令“多通道通信报文
-
恢复默认设置有条件吗?比如低电平保持多长时间?上电前拉低?
答:拉低25mS以上即可,不需要上电前拉低。使用云参数的话,基本上不会用到这个脚
-
心跳包是否支持自定义,有没有长度限制?
答:心跳包支持自定义,默认是字符串“ping”,长度最大1460字节
-
是否可以指定透传模式下每次上报添加ID
答: 支持,详见“配置保存指令”的plate字段。
-
MCU配置是否有保存命令?保存以后需要命令重启还是立刻生效?
答:发送保存指令后,模块自动重启并立刻生效。
-
如果连上server后MCU如何知道已经连上?会不会有字符串提示?
答:连上server后,透传模式下相当于一条网线,不会有字符提示,MCU不用去维护DTU的状态。
-
可否设置如果一定时间内收不到server的心跳包,dtu自动掉电重连?
答:内部有自动重连,开关飞行模式,重启模式,线程守护来保证DTU的网络链接正常,用户不需要干预。
-
是否支持定时采集功能?
答:支持,以后升级会逐渐支持更多的RTU的功能,比如定时采集,定时任务预置指令采集等。
-
如何知道是SIM卡是否欠费,是否连上服务器?
答:有两个办法: 1 看指示灯,心跳灯(100ms亮,1900毫秒灭表示脸上服务器),快闪通常表示卡不良或欠费,慢闪表示GSM正常但是网络附着不成功。 2 读取RDY信号(net ready信号),高电平是服务器链接成功,低电平是未连接。
-
串口是否支持流量控制?
答:支持,在保存参数配置的“flow"参数设置每分钟最大流量值,如果流量超过,则数据丢弃。
-
是否支持短信或电话配置参数或更新?
答:支持,客户预定义电话,短信,短信内容,指定电话打电话或者发短信内容为指定内容即可远程更新参数。
-
是否发送完成返回标志给MCU?
答:支持,在MCU控制模式的时候,发送数据成功后会返回"SEND_OK"给MCU,方便MCU关闭模块。
-
网络是否连接能不能通知MCU?
答:支持 AIR202U的RDY信号--第6脚(GPIO_3)上电输出低电平,网络链接成功后输出高电平。 AIR720 的RDY信号--第5脚(GPIO_65)上电输出低电平,网络链接成功后输出高电平。
-
定时采集功能支持透传和非透传模式吗?
答:定时采集功能只有透传模式才能支持,支持串口1和2单独设置。
AIR202U 是上海合宙出品的一款功能强大使用极其简单的DTU模块,借助不到10条交互指令,就可以实现绝大部分物联网的通讯需求,极大简化用户开发物联网产品的步骤,大幅度减少开发时间
- 支持 MQTT/TCP/UDP 双通道透传(串口1和串口2分别对应两个透传通道)
- 支持 MQTT/TCP/UDP 透传模式添加 IMEI 设备识别码(15个字节)
- 支持 MQTT/TCP/UDP 多通道传输模式(非透传模式)
- 支持 数据中心服务器设置,最多支持7个通道,每个通道可以任意指定串口(1,2)和协议
- 支持 单片机初始化设置配置,实现免上位机配置软件配置DTU
- 支持 Luat云批量初始化配置,实现全自动无人操作自动配置DTU
- 支持 Luat云远程升级固件,也就是FOAT功能,可以满足用户在某些新增功能需求的时候免现场维护
- 支持 透传/非透传 模式软件恢复出厂默认值
- 支持 硬件恢复出厂默认值
- 支持 NET 指示灯,方便用户显示各种工作状态
- 支持 VSIM虚拟卡,极大简化用户成本
- 支持 登陆上传DTU模块状态,方便用户获得模块信息以及登陆鉴权
- 支持 DTU配置程序读取
- 支持 HTTP 的GET 和 POST 请求方法
- 支持 获取网络时间
- 支持 获取基站定位返回的当前模块坐标
- 支持 串口1和串口2 配置参数,非透传模式下,随时可以配置DTU
- 注意:所有串口指令返回结果都带"\r\n"
- 网络守护逻辑:
- 开机2分钟内不能联网重启,
- 联网成功后2分钟内不能连接服务器开关飞行模式。
- 网络正常,服务器连接失败5分钟重启。
- 网络断开5分钟不能恢复重启。
- demo:"config,8,1,115200,8,2,0"
字段 | 值 | 含义 |
---|---|---|
config | config | 配置指令标识 |
id | 8 | 通道编号8表示设置串口配置参数 |
uartid | 1-2 | 串口id,1是串口2是串口2 |
baud | 1200-921600 | 1200,2400,4800,9600,14400,19200,28800,38400,57600,115200,230400,460800,921600 |
datbits | 7-8 | 数据位,支持7或8,默认是8 |
parity | 0-1-2 | 校验位,0是uart.PAR_EVEN,1是uart.PAR_ODD,2是uart.PAR_NONE |
stopbits | 0-2 | 停止位,0是1个停止位,2是2个停止位 |
485DIR | pio0-pio128, | 可选p0-p128,disable禁止485DIR,默认空,使用默认的485方向脚 |
- demo :"config,9,13211111111,10,SMS_UPDATE"
字段 | 值 | 含义 |
---|---|---|
config | config | 配置指令标识 |
id | 9 | 通道编号9表示设置用户预置号码参数 |
number | 电话 | 用户预置的电话号码白名单 |
delay | 1-100 | 白名单的振铃延时,其他电话立刻挂断 |
smsword | string | 短信更新参数的预定义字符串,默认是"SMS_UPDATE" |
- demo : "config,a,cmiot,,"
字段 | 值 | 含义 |
---|---|---|
config | config | 配置指令标识 |
id | a | 通道编号a表示设置用户手工设置APN |
name | cmiot | APN 名称 |
user | string | 用户名,没有留空 |
password | string | 密码,没有留空 |
- 提示:HEX指令和function函数可以同时配置比如cmd1是HEX指令,cmd2就是function指令
- demo : "config,b,1000,01 03 00 2A 3B 00 2C FF,01 03 00 2A 3B 00 2C FF"
字段 | 值 | 含义 |
---|---|---|
config | config | 配置指令标识 |
id | b | 通道编号b表示配置自动采集任务 |
waitRevc | 1-2000 | 单位ms,发送指令后最长等待设备超时 |
cmd1 | 指令|函数 | HexString 指令,例如 01 03 00 2A 3B 00 2C FF |
cmdN | 指令|函数 | HexString 指令,例如 01 03 00 2A 3B 00 2C FF |
- demo: "config,b,1000,function return "200,ad0,ad," .. create.getADC(0) end"
字段 | 值 | 含义 |
---|---|---|
config | config | 配置指令标识 |
id | b | 通道编号b表示配置自动采集任务 |
waitRevc | 1-2000 | 单位ms,发送指令后最长等待设备超时 |
fun1 | 用户函数 | function return "200,ad0,ad," .. create.getADC(0) end |
funN | 用户函数 | function return "402," .. create.getLat() .. "" .. create.getLng() end |
- 提示:
- 函数需要用function 开头,用end结尾,用来区别HEX指令。用串口写入该配置参数的时候,注意函数中的分号要转义处理。
- 函数结尾return返回的数据会被发往用户配置的服务器,用户可以自定义通信报文协议。
- 如果函数需要写入数据到串口,直接调在函数调用“uart.write(uid,str)” 类似的Luat-API。
在总参数中插入数据流代码,串口写入代码很麻烦,暂时先不支持,建议大家用云端参数配置,等我想到比较好的解决办法,再更新手册。 upprot是上传通道关键字,值是个数组,数组下标1-7代表1-7通道。 dwprot是下发通道关键字, 值的含义同上。
"upprot": ["function \n local str = ...\n local dat, result, errinfo = json.decode(str)\n local tmp = {}\n for i = 1, #t.sta do\n tmp[\"val\" .. i] = dat.sta[i]\n end\n return json.encode(tmp)\nend", "", "", "", "", "", ""],
"dwprot": ["", "", "", "", "", "", ""],
#### 系统保留GPIO
- demo: "config,pins,pio33,pio3,pio29"
字段 | 值 | 含义 |
---|---|---|
config | config | 配置指令标识 |
id | pins | 通道编号pins表示配置GPIO |
netled | pio0-pio128 | 网络指示灯GPIO编号,例如GPIO_33 就填pio33,默认空,下同 |
netdrdy | pio0-pio128 | 网络是否准备好GPIO编号 |
RSTCNF | pio0-pio128 | 复位DTU参数的GPIO编号 |
-
GPS功能目前支持Air530/800 /801/868 以及相应的开发板。
-
启用GPS功能会占用1个串口,另外一个串口依旧可以配置DTU的各种功能
-
GPS 报文JSON定义
- 信息 = [是否有效,时间戳,经度,纬度,海拔,方位角,速度,载噪比,定位卫星]
- 设备 = [是否打开,震动,开锁,点火,充电,剪线,外电电压,电池电压,GPRS信号值]
{"msg":[true,1547272725,1136037366,348581216,114,354,1,43,4]} {"sta":[true,false,false,false,false,false,65535,4101,11]}
-
GPS报文HEX定义(报文长度固定大端)
-
msg报文0xAA开头,设备信息报文0x55开头
- [信息 | 是否有效|时间戳|经度|纬度|海拔|方位角|速度|载噪比|定位卫星]
- [1B | 1B| 4B | 4B| 4B |2B | 2B | 1B | 1B | 1B ] = 21 Byte
[AA 01 5C399812 43B68DF6 14C6ED60 0016 001E 0F 32 0E]
- [设备 |是否打开|震动|开锁|点火|充电|剪线|外电电压|电池电压|GPRS信号值]
- [ 1B | 1B | 1B | 1B| 1B | 1B| 1B |4B |2B |1B ] = 13 byte
[55 00 00 00 00 00 00 00006A10 1011 15]
- demo: "config, gps, pio, pio8 ,pio9, pio10, 0, 16"
字段 | 值 | 含义 |
---|---|---|
config | config | 配置指令标识 |
id | gps | 通道编号gps表示配置gps |
type | pio | GPS 的配置 GPIO 的标志位 |
netdrdy | pio0-pio128 | GPS 定位成功指示灯 GPIO 编号,例如 GPIO_3 就填 pio3,下同 |
vib | pio0-pio128 | 振动传感器信号输入GPIO编号 |
acc | pio0-pio128 | ACC开锁信号输入GPIO编号注意ACC信号电压很高要用分压电阻 |
chg | pio0-pio128 | 内置锂电池充电状态输入GPIO编号,可为空 |
adc | 0 or 1 | 检测VCC的ADC通道编号,默认0 |
ratio | 1-50 | VCC/1.8V + 1的值,是值ADC采集电压和VCC实际电压的比值 |
-- demo: "config, gps, fun, 2, 115200, 0, 5, 1, json, 100, ; ,60"
字段 | 值 | 含义 |
---|---|---|
config | config | 配置指令标识 |
id | gps | 通道编号gps表示配置gps |
type | fun | GPS 的配置 fun参数 的标志位 |
uid | 1 or 2 | GPS 启用的串口波特率,注意不要和socket通道同时启用 |
buad | 115200 | 9600-115200,注意和模块的GPS实际波特率一致 |
功耗模式 | 0 or 2 or 8 | GPS工作模式: 正常,低功耗,低功耗跟踪模式 |
采集间隔 | 1-600 | 单位秒,多久采集并记录一次GPS报文 |
采集方式 | 0 or 1 | 0 布防采集(触发上报),1持续采集 |
报文格式 | json or hex | 设备信息和GPS定位信息上报的报文格式,支持JSON和HEX |
缓冲发送 | 0 - 1000 | 0 表示不缓冲,采集后立刻上报,其他表示先加入缓冲区,然后1次上报 |
分隔符 | 除,外的可见字符 | 启用缓冲发送,用来分割报文的标记 |
状态间隔 | 0-1440 | 单位分钟,设备信息报文上报频率,0为不上报 |
- demo:"config,1,tcp,ping,300,180.97.81.180,57826,1"
字段 | 值 | 含义 |
---|---|---|
config | config | 配置指令标识 |
id | 1-7 | 通道编号1-7,表示创建通信的通道 |
prot | tcp-udp | TCP协议或UDP协议 |
ping | 字符串 | 用户自定义的心跳包,只支持数字和字母,建议2-4个字节 |
keepAlive | 60-600 | 链接超时最大时间单位秒,默认300秒 |
address | 地址或域名 | socket的地址或域名 |
port | 1-65536 | socket服务器的端口号 |
uid | 1-2 | TCP通道捆绑的串口ID |
gap | 1-65535 | 自动采集间隔时长,单位秒。不用该功能填0或空 |
samp | 1-15 | 自动采集采样时长,单位秒。不用该功能填0或空 |
taskTimer | 60-2147483647 | 自动定时采集任务间隔时间,单位秒。不用就填空 |
SSL | ssl | 启用填ssl,不启用留空 |
- code:"config,1,mqtt,30,1800,180.97.80.55,1883,,,1,/company/service/,/company/device/,0,1,1"
字段 | 值 | 含义 |
---|---|---|
config | config | 配置指令标识 |
id | 1-7 | 通道编号1-7,表示创建通信的通道 |
mqtt | mqtt | 表示MQTT协议 |
keepAlive | 300 | MQTT心跳包的间隔单位秒,默认300 |
taskTimer | 60-2147483647 | 自动定时采集任务间隔时间,单位秒。,默认1800秒 |
address | IP地址或域名 | MQTT的地址或域名 |
port | 1-65536 | socket服务器的端口号 |
usr | login | MQTT的登陆账号默认"" |
pwd | login | MQTT的登陆密码默认"" |
cleanSession | 0-1 | MQTT是否保存会话标志位,0持久会话,1离线自动销毁 |
sub | /company/service/ | 订阅消息主题, |
pub | /company/device/ | 发布消息主题, |
qos | 0-2 | MQTT的QOS级别,默认0 |
retain | 0-1 | MQTT的publish参数retain,默认0 |
uid | 1-2 | MQTT通道捆绑的串口ID |
clentID | string | 自定义客户端ID,使用IMEI做客户端ID此处留空 |
samp | "" or 1 | 留空主题自动添加IMEI, 1为不添加IMEI |
transport | tcp | tcp_ssl | 传输模式,可选tcp或者tcp_ssl |
will | 字符串 | 遗嘱的主题 |
- MQTT订阅主题说明:
- 单个订阅主题 -- /company/device
- 单个订阅主题带QOS -- /company/device;1
- 多个订阅主题带QOS -- /company/device;0;/company/imcp;1
- MQTT主题的IMEI说明:
- samp 为 “” 或者nil(空) 时(参数意义见上表):
- 默认添加/IMEI为主题结尾,格式为 “用户主题/imei“
- 发布主题和订阅主题都会自动添加/IMEI,系统会自动替换为15位的IMEI字符串
- samp 为 1 时(参数意义见上表):
- 发布和订阅主题自动替换主题中的/imei/ 为模块的实际imei
- 如果主题中不包含/imei/则不替换
- 订阅主题带QOS(包括多个订阅), 自动替换主题中的/imei/ 为模块的实际imei,与samp的值无关
- samp 为 “” 或者nil(空) 时(参数意义见上表):
- demo: "config,1,onenet,dtu,ping,60,183.230.40.40,1811,RD7hbCxD6pr3t0vj,200652,sample,1"
字段 | 值 | 含义 |
---|---|---|
config | config | 配置指令标识 |
id | 1-7 | 通道编号1-7,表示创建通信的通道 |
prot | onenet | OneNET 云名称 |
subprot | dtu | 子协议 |
ping | 0x0000 | 用户自定义的心跳包,只支持数字和字母,建议2-4个字节 |
keepAlive | 60-600 | 链接超时最大时间单位秒,默认300秒 |
address | dtu.heclouds.com | OneNET的DTU模式的地址或域名 |
port | 1811 | OneNET的DTU模式的服务器的端口号 |
code | RD7hbCxD6pr3t0vj | OneNET产品下设备i的正式环境注册码 |
pid | 200652 | OneNET 产品ID |
script | sample | OneNET 数据流解析脚本 |
uid | 1-2 | TCP通道捆绑的串口ID |
- demo: "config,1,onenet,mqtt,300,300,mqtt.heclouds.com,6002,WWNqBU2EztYUlj2a,200032,3,1,0,0,1"
字段 | 值 | 含义 |
---|---|---|
config | config | 配置指令标识 |
id | 1-7 | 通道编号1-7,表示创建通信的通道 |
prot | onenet | OneNET 云名称 |
subprot | mqtt | 子协议 |
keepAlive | 60-600 | 链接超时最大时间单位秒,默认300秒 |
taskTimer | 60-2147483647 | 自动定时采集任务间隔时间,单位秒。默认1800秒 |
address | mqtt.heclouds.com | OneNET的MQTT服务器地址或域名 |
port | 6002 | OneNET的MQTT服务器的端口号 |
code | RD7hbCxD6pr3t0vj | OneNET产品下设备i的正式环境注册码 |
pid | 200652 | OneNET 产品ID |
mode | 1,3,4 | OneNET 数据流解析格式,只支持1,3,4 |
cleanSession | 0-1 | MQTT是否保存会话标志位,0持久会话,1离线自动销毁 |
qos | 0-2 | MQTT的QOS级别,默认0 |
retain | 0-1 | MQTT的publish参数retain,默认0 |
uid | 1-2 | TCP通道捆绑的串口ID |
- demo : "config,1,onenet,modbus,120,hU6avtHWfytfxO=i7C269OPs6K8=,200652,1"
字段 | 值 | 含义 |
---|---|---|
config | config | 配置指令标识 |
id | 1-7 | 通道编号1-7,表示创建通信的通道 |
prot | onenet | OneNET 云名称 |
subprot | modbus | 子协议 |
keepAlive | 60-600 | 链接超时最大时间单位秒,默认300秒 |
key | hU6avtHWfytfxO=i7C269OPs6K8= | 产品的Master-APIkey |
pid | 200652 | OneNET 产品ID |
uid | 1-2 | TCP通道捆绑的串口ID |
-
阿里云自定义主题说明:
-
自定义主题格式(可以直接从阿里云主题类列表):
/a1aWLNgJ395/${deviceName}/get /a1aWLNgJ395/deviceName/get /productKey/${deviceName}/get /productKey/deviceName/get
-
订阅主题支持多个主题
- 格式为topic;qos;topic;qos;topic;qos
-
发布主题只支持单个主题
-
demo: "config,1,aliyun,otok,300,300,cn-shanghai,ProductKey,AccessKeyID ,AccessKeySecret,basic,0,0,1"
字段 | 值 | 含义 |
---|---|---|
config | config | 配置指令标识 |
id | 1-7 | 通道编号1-7,表示创建通信的通道 |
prot | aliyun | 阿里云IOT的名称 |
type | atuo | 自动注册,自动登陆,自动激活设备(一键阿里云) |
keepAlive | 60-600 | 链接超时最大时间单位秒,默认300秒 |
taskTimer | 60-2147483647 | 自动定时采集任务间隔时间,单位秒。默认1800秒 |
地域代码 | cn-shanghai | RegionID,阿里云提供的地域代码值 |
ProductKey | 字符串 | 阿里云产品项目ID |
AccessKey ID | 字符串 | 阿里云API安全密钥ID(可用子密钥) |
Access Key Secret | 字符串 | 阿里云API安全密钥Secret(可用子密钥) |
产品版本类型 | basic | 可选basic(基础班),plus(高级版) |
cleanSession | 0-1 | MQTT 保存会话标志位 |
QOS | 0-1-2 | MQTT 的 QOS 级别 : |
UID | 1-2 | MQTT 通道捆绑的串口 ID: |
subTopic | topic|多个"主题;qos" | 订阅主题或订阅多个主题;qos |
pubTopic | topic | 发布的主题 |
demo:"config,1,aliyun,otok,300,300,cn-shanghai,ProductKey,ProductSecret,basic,0,0,1"
字段 | 值 | 含义 |
---|---|---|
config | config | 配置指令标识 |
id | 1-7 | 通道编号1-7,表示创建通信的通道 |
prot | aliyun | 阿里云IOT的名称 |
type | atuo | 自动注册,自动登陆,自动激活设备(一键阿里云) |
keepAlive | 60-600 | 链接超时最大时间单位秒,默认300秒 |
taskTimer | 60-2147483647 | 自动定时采集任务间隔时间,单位秒。默认1800秒 |
地域代码 | cn-shanghai | RegionID,阿里云提供的地域代码值 |
ProductKey | 字符串 | 阿里云产品项目ID |
ProductSecret | 字符串 | 阿里云产品项目密钥 |
产品版本类型 | basic | 可选basic(基础班),plus(高级版) |
cleanSession | 0-1 | MQTT 保存会话标志位 |
QOS | 0-1-2 | MQTT 的 QOS 级别 : |
UID | 1-2 | MQTT 通道捆绑的串口 ID: |
subTopic | topic|多个"主题;qos" | 订阅主题或订阅多个主题;qos |
pubTopic | topic | 发布的主题 |
demo:"config,1,aliyun,otok,300,300,cn-shanghai,ProductKey,DeviceSecret,DeviceName,basic,0,0,1"
字段 | 值 | 含义 |
---|---|---|
config | config | 配置指令标识 |
id | 1-7 | 通道编号1-7,表示创建通信的通道 |
prot | aliyun | 阿里云IOT的名称 |
type | atuo | 自动注册,自动登陆,自动激活设备(一键阿里云) |
keepAlive | 60-60 | 链接超时最大时间单位秒,默认300秒 |
taskTimer | 60-2147483647 | 自动定时采集任务间隔时间,单位秒。默认1800秒 |
地域代码 | cn-shanghai | RegionID,阿里云提供的地域代码值 |
ProductKey | 字符串 | 阿里云产品项目ID |
DeviceSecret | 字符串 | 阿里云设备密钥 |
DeviceName | 字符串 | 阿里云设备名称 |
产品版本类型 | basic | 可选basic(基础班),plus(高级版) |
cleanSession | 0-1 | MQTT 保存会话标志位 |
QOS | 0-1-2 | MQTT 的 QOS 级别 : |
UID | 1-2 | MQTT 通道捆绑的串口 ID: |
subTopic | topic|多个"主题;qos" | 订阅主题或订阅多个主题;qos |
pubTopic | topic | 发布的主题 |
demo: "config,1,bdiot,devicetype,300,300,gz,aaaa,bbbb,cccc,1,0,1,tcp"
字段 | 值 | 含义 |
---|---|---|
config | config | 配置指令标识 |
id | 1-7 | 通道编号1-7,表示创建通信的通道 |
prot | bdiot | 百度天工物联的名称 |
type | devicetype | 注册设备型项目并自动激活 |
keepAlive | 60-600 | 链接超时最大时间单位秒,默认300秒 |
taskTimer | 60-2147483647 | 自动定时采集任务间隔时间,单位秒。默认1800秒 |
地域代码 | cn-shanghai | 百度云提供的区域代码,如gz,bj |
schemaID | 字符串 | 百度云的设备型物模型的uid(不知道的看视频教程) |
AccessKey ID | 字符串 | 百度云API安全密钥ID(可用子密钥) |
Access Key Secret | 字符串 | 云API安全密钥Secret(可用子密钥) |
cleanSession | 0-1 | MQTT 保存会话标志位 |
QOS | 0-1-2 | MQTT 的 QOS 级别 : |
UID | 1-2 | MQTT 通道捆绑的串口 ID: |
transport | tcp | tcp_ssl | 传输模式,可选tcp或者tcp_ssl |
demo:"config,1,bdiot,datatype,300,300,gz,bbbb,cccc,xxxx,yyyy,1,0,1,tcp_ssl,/will"
字段 | 值 | 含义 |
---|---|---|
config | config | 配置指令标识 |
id | 1-7 | 通道编号1-7,表示创建通信的通道 |
prot | bdiot | 百度天工物联的名称 |
type | datatype | 数据型项目接入标志位 |
keepAlive | 60-600 | 链接超时最大时间单位秒,默认300秒 |
taskTimer | 60-2147483647 | 自动定时采集任务间隔时间,单位秒。默认1800秒 |
地域代码 | cn-shanghai | 百度云提供的区域代码,如gz,bj |
AccessKey ID | 字符串 | 百度云API安全密钥ID(可用子密钥) |
Access Key Secret | 字符串 | 百度云API安全密钥ID(可用子密钥) |
产品版本类型 | basic | 数据型设备捆绑的身份名称 |
身份密码 | 字符串 | 数据型设备捆绑的身份密码 |
cleanSession | 0-1 | MQTT 保存会话标志位 |
QOS | 0-1-2 | MQTT 的 QOS 级别 : |
UID | 1-2 | MQTT 通道捆绑的串口 ID: |
transport | tcp | tcp_ssl | 传输模式,可选tcp或者tcp_ssl |
will | 字符串 | 遗嘱的主题 |
- code:"config,0,1,0,0,0,100,0,1,500,normal,1234567890"
字段 | 值 | 含义 |
---|---|---|
config | config | 配置文件标识 |
id | 0 | 通道编号0表示存储配置 |
passon | 0-1 | 1表示透传,0单片机控制(发送完成返回"SEND_OK") |
plate | 0-1 | 透传模式下是否加设备识别码imei,0表示不加,1表示加 |
convert | 0-1 | 是否将下发和上传的报文进行转换(bin <--> hex),0不转换,1转换 |
register | 0-2,string | 是否发送注册报文,0不发送,1发送JSON注册报文{"csq":rssi,"imei":imei,"iccid":iccid,"ver":Version},2发送HEX报文"131234512345",填字符串为用户自定义注册包 |
paramver | 1-n | 参数版本号,如果启用远程参数,注意本地配置和远程配置的版本号要一致 |
flow | 0-n | 每分钟最大串口流量(Byte),超过设定字节关闭串口,0为不启用 |
fota | 0-1 | 是否启用FOTA自动更新,1是启用,0是禁用。默认0 |
overtime | 10-2000 | 单位ms,默认25ms,串口接收数据最大等待超时时长 |
pwrmod | normal | 电源模式切换,"normal"为正常功耗,"energy"为低功耗模式(外设关闭,降频联网) |
password | string | 用户读写配置的密码,默认无密码。约定字符为数字,字母,_ |
-
demo:"+++"
-
重启模块并恢复出厂默认值
-
当串口配置错误的时候,可以用另外一个串口配置,也可以云端配置
- AIR202 拉低模块的PIN12(GPIO_29)脚为低电平,DTU重启并恢复出厂默认值
- AIR720 拉低模块的PIN4 (GPIO_68)脚为低电平,DTU重启并恢复出厂默认值
- demo:"config,readconfig"
- demo : "config,readconfig,1234567890"
- demo: "config,writeconfig,{ "fota": 0, "uartReadTime": 25, "flow": "", "paramver": 1, "pwrmod": "normal", "password": "", "passon": 1, "plate": 0, "reg": 0, "convert": 0, "uconf": [ [1, "115200", 8, 2, 0], [] ], "conf": [ ["mqtt", 300, 1800, "180.97.80.55", "1883", "", "", 1, "/server", "/device", 0, 0, 1, "", "1"], [], [], [], [], [], [] ], "preset": { "number": "", "delay": "", "smsword": "" }, "apn": ["", "", ""], "cmds": [ ["1000", "00 AA BB CC DD EE FF 11 22 33 44 55 00", "00 AA BB CC DD EE FF 11 22 33 44 55 11", "00 AA BB CC DD EE FF 11 22 33 44 55 22", "00 AA BB CC DD EE FF 11 22 33 44 55 33", "00 AA BB CC DD EE FF 11 22 33 44 55 44", "00 AA BB CC DD EE FF 11 22 33 44 55 55", "00 AA BB CC DD EE FF 11 22 33 44 55 66", "00 AA BB CC DD EE FF 11 22 33 44 55 77"], [] ], "param_ver": 20, "source": "web" }"
- 直接发送即可,串口1对应通道ID1,串口2对应通道ID2
-
cmd :"send,id,data"
-
code:"send,1,data"
字段 | 值 | 含义 |
---|---|---|
send | send | 发送数据的标志位 |
id | 1-7 | 通信使用的通道ID,串口通道会自动和对应的通道捆绑 |
data | string | 要上传的串口数据 |
-
cmd:"http,method,url,timeout,body,type,basic"
-
code:"http,get,www.openluat.com,30"
字段 | 值 | 含义 |
---|---|---|
http | http | 通信方式http |
method | get-post | 提交请求的方法 |
url | 域名/参数 | HTTP请求的地址和参数,参数需要自己urlencode处理 |
timeou | 30 | HTTP请求最长等待时间,超过这个时间,HTTP将返回 |
body | string | get或者post提交的body内容,只能是字符串 |
type | 1,2,3 | body的提交类型,1是urlencode,2是json,3是stream |
basic | usr:pwd | HTTP的BASIC验证,注意账号密码之间用:连接 |
- 发送:"rrpc,getlocation"
- 返回:"rrpc,getlocation,lat,lng"
- 失败: ”ERROR"
- 发送:"rrpc,getreallocation"
- 返回:"rrpc,getreallocation,lat,lng"
- 失败: ”rrpc,getreallocation,error"
此功能远程不可用
- 发送: "rrpc,gettime"
- 返回: "rrpc,nettime,year,month,day,hour,min,sec"
- 失败: “rrpc,nettime,error"
- 发送: "rrpc,getimei"
- 返回: "rrpc,getimei,123456789012345"
- 失败: "ERROR"
- 发送: "rrpc,geticcid"
- 返回: "rrpc,geticcid,1234567890123456789"
- 失败: "ERROR"
- 发送: "rrpc,getcsq"
- 返回: "rrpc,getcsq,17"
- 失败: "ERROR"
- 发送: "rrpc,getadc,id"
- 例子: "rrpc,getadc,0"
- 返回: "rrpc,getadc,1848"
- 失败: "ERROR"
- 发送: "rrpc,getpio,pin"
- 例子: "rrpc,getpio,8"
- 返回: "rrpc,getpio8,1"
- 失败: "ERROR"
- 可用 GPIO 见手册底部GPIO列表
- 发送: "rrpc,setpio,pin,val"
- 例子: "rrpc,setpio,8,1"
- 返回: "OK"
- 失败: "ERROR"
- 可用 GPIO 见手册底部GPIO列表
- 发送: "rrpc,function,cmdString"
- 例子: "rrpc,function,print(1) return 'ok'"
- 返回: "rrpc,function,'ok"
- 失败: 返回错误代码
- 发送: "rrpc,getSensor,addr"
- 例子: "rrpc,getam2320" 或 "rrpc,getam2320,0x5C"
- 例子: "rrpc,getsht" 或 "rrpc,getsht,0x40"
- 返回: "rrpc,getam2320,25.3,64.1"
- 发送: "rrpc,gps_wakeup"
- 返回: "rrpc,gps_wakeup,OK"
-
发送: "rrpc,gps_getsta,format"
-
例子: "rrpc,gps_getsta,json" 或 "rrpc,gps_getsta,hex"
-
返回: "rrpc,gps_getsta,{"sta":[true,false,false,false,false,false,65535,4113,15]}"
- 发送: "rrpc,getSensor,format"
- 例子: "rrpc,gps_getmsg,json" 或 "rrpc,gps_getmsg,hex"
- 返回: "rrpc, gps_getmsg, {"msg":[true,1547272715,1136036500,348579350,133,42,1,43,4]}"
- 发送: "rrpc,reboot"
- 发送: "rrpc,upconfig"
- 返回: "rrpc,upconfig,OK"
- 发送: "rrpc,getver"
- 返回: "rrpc,getver,1.5.3"
- 发送: "rrpc,getproject"
- 返回: "rrpc,getproject,DTU-AIR720-MODUL"
- 发送: "rrpc,getvbatt"
- 返回: "rrpc,getvbatt,4200"
- local lat,lng = create.getRealLocation()
- local lat = create.getLat()
- local lng = create.getLng()
- local val = create.getADC(adcid)
- local str = tracker.locateMessage(format)
- format 为“json” or "hex"
- local str = tracker.deviceMessage(format)
- format 为“json” or "hex"
-
借助Luat云可以实现远程FOTA和自动参数配置,用户无需用上位机配置程序来逐个配置DTU,此方式可以极大减少人工费用和时间。使用远程固件更新和远程参数下发需要用户注册Luat云,用户注册自己的IMEI到云端,指定不同的IMEI到对应的参数版本,DTU模块自动请求参数并保存到到DTU模块中存储。
-
远程固件更新
-
远程参数下发
-
看门狗:
- WDI —— 10脚 ( GPIO_31 )
- RWD —— 11脚 ( GPIO_30 )
-
NET_LED:
- NET_LED —— 13脚 ( GPIO_33 )
-
重置参数:
- RSP —— 12 脚(GPIO_29)
-
网络连接通知:
- RDY —— 6脚(GPIO_3)
RXD —— 9脚 (GPIO_0)
TXD —— 8脚 (GPIO_1)
DIR —— 7脚 (GPIO_2)
-
NET_LED:
- NET_LED —— PIN6 ( GPIO_64 )
-
重置参数:
- RSP —— PIN4(GPIO_68)
-
网络连接通知:
- RDY —— PIN5 (GPIO_65)
UART1_RXD —— PIN11 (GPIO_51)
UART1_TXD —— PIN12 (GPIO_52)
UART2_RXD —— PIN68 (GPIO_57)
UART2_TXD —— PIN67 (GPIO_58)
UART1_DIR —— PIN13 (GPIO_23)
UART2_DIR —— PIN64 (GPIO_59)
100ms 闪烁 —— 注册GSM
500ms 闪烁 —— 附着GPRS
100ms 亮, 1900ms 灭 —— 已连接到服务器
PIN | GPIO | PIN | GPIO |
---|---|---|---|
29 | GPIO_6 | 5 | GPIO_12 |
30 | GPIO_7 | 11 | GPIO_30 |
3 | GPIO_8 | 10 | GPIO_31 |
2 | GPIO_10 | 4 | GPIO_11 |
PIN | GPIO | PIN | GPIO |
---|---|---|---|
4 | GPIO_6 | 21 | GPIO_11 |
3 | GPIO_7 | 22 | GPIO_12 |
19 | GPIO_8 | 28 | GPIO_31 |
20 | GPIO_10 | 27 | GPIO_30 |
18 | GPIO_9 | 29 | GPIO_29 |
17 | GPIO_13 | 41 | GPIO_18 |
37 | GPIO_14 | 47 | GPIO_34 |
38 | GPIO_15 | 40 | GPIO_17 |
39 | GPIO_16 |
PIN | GPIO | PIN | GPIO |
---|---|---|---|
26 | pio26 | 23 | pio70 |
25 | pio27 | 29 | pio71 |
24 | pio28 | 28 | pio72 |
39 | pio33 | 33 | pio73 |
40 | pio34 | 32 | pio74 |
38 | pio35 | 30 | pio75 |
37 | pio36 | 31 | pio76 |
65 | pio55 | 66 | pio77 |
62 | pio56 | 63 | pio78 |
1 | pio62 | 61 | pio79 |
2 | pio63 | 113 | pio80 |
115 | pio69 | 114 | pio81 |