智能硬件-说明书
小体积智能控制盒-说明书
智能控制盒-说明书
智能开关-说明书
智能喇叭-说明书
智能插座转换器-说明书
棋牌门店控制器-说明书
智能电闸-说明书
智能插座-说明书
小体积智能控制盒-说明书
棋牌门店控制器-3路输出版-说明书
远程开关-说明书
测试
计量硬件-通讯协议说明书-v1
计量硬件-通讯协议说明书-v1
测试
测试
README
产品命名规则
README
readme
测试
ML307R(RTU)AT指令集 V3.54
本文档使用 MrDoc 发布
-
+
首页
ML307R(RTU)AT指令集 V3.54
ML307R(RTU)AT指令集 V3.54 ML307R(RTU)AT指令集 V3.54 一,特色功能 二,默认信息 三,主动上报 1,ML307R-DC-DTU 开机上报状态 2,SIM:READY 上报SIM卡信息 3,REGSTER:SUCCESS 上报注册信息 四,基础指令 1,ATI 查询设备版本号 2,AT+REST 设备重启 3,AT+IMEI? 查询设备IMEI号 4,AT+IMSI? 查询设备IMSI号 5,AT+ICCID? 查询设备ICCID号 6,AT+CEREG? 查询设备驻网状态 7,AT+IPCALL? 查询设备数据拨号状态 8,AT+ISLINK? 查询设备数据拨号状态 9,AT+CSQ 查询设备网路信号强度 10,AT+TIME 查询设备网路时间 11,AT+UTC? 获取设备时间戳 12,AT+NTP? 获取实时网络时间。 13,AT+FACTORYSET 设备恢复出厂设置 14,AT+NAME 修改设备名称 15,AT+LBS 获取设备基站定位信息 16,AT+CELL? 获取设备基站号 17,AT+LAC? 获取设备小区号 18,AT+DTUCON? 获取网路链接状态 19,AT+ADC 获取ADC电压值 20,AT+VBAT 获取内核电压 21,AT+NDRST 无数据复位 22,AT+NCRST 无连接复位 23,AT+APN 设置APN 24,AT+CPASS 强制透传 五,DTU任务配置 1, AT+DTUTASK 设置DTU任务 2, AT+DTUTASKS 设置DTU任务 六,TCP 通信 1,AT+TCP 设置TCP服务器 2,TCP_CONNECT 状态主动推送 LOG 3,配置 TCP 透传通信服务 七,SOCKET 通信 1,AT+SOCK 设置 SOCKET 参数 2,AT+SOCKEN 设置 SOCKET 使能 3,AT+SOCKPROT 设置 SOCKET 协议 4,AT+SOCKSTATE 获取连接状态 5,AT+SOCKMULT 设置多通道使能 6,AT+SOCKKEEP 设置 KEEPALIVE 7,SOCK_CONNECT 状态主动推送 LOG 8,SOCKSEND 多通道模式发送 9,+SOCKRECV 多通道模式接收 第 1 页 共 153 页 10,配置 TCP 透传通信服务的示例 11,配置 UDP 透传通信服务的示例 12,配置 TCP/UDP 多通道连接示例 七,MQTT 通用通信 1,AT+MQTT 设置MQTT参数 2,AT+MQTTIP 设置MQTT服务器 3,AT+MQPUB 设置发布的TOPIC 4,AT+MQSUB 设置要订阅的TOPIC 5,AT+MQTTCLEAN 设置要订阅的TOPIC 6,AT+MQTTKEEP 设置KEEPALIVE 7,AT+MQTTRETAIN 设置RETAIN 8,AT+MQTTWILL 设置遗嘱 9,MQTT_CONNECT 主动上报链接状态 10,AT+MQMULTEN 设置多通道订阅 11,AT+MQPUBM 设置多通道发布 12,AT+MQSUBM 设置多通道订阅 13,+MQRECV 多通道模式接收报文 14,MQPUB 多通道模式发布报文 15,配置MQTT通信服务的最简流程 16,配置多通道MQTT通信服务的最简流程 八,新版ONENET 通信 1,AT+ONENET 链接参数设置指令 2,AT+ONENETCLEAN 设置CLEAN选项 3,AT+ONENETKEEP 设置KEEPALIVE 4,AT+ONENETSUB 设置自动订阅 5,AT+ONENETSUBLS 查询自动订阅表 6,AT+ONENETPUBLS 查询发布topic表 7,AT+ONENETMULT 使能多通道 8,AT+ONENETSUBMODE 订阅接收设置 9,AT+ONENETPUBPASS 透传的发布通道 10,AT+ONENETSUBPASS 透传的订阅通道 11,MQPUB 主动推送topic 九,IO控制指令 1,AT+IOCFG 配置IO功能 2,AT+IOCFGALL 配置IO功能 3,AT+IOSET 控制IO 4,AT+IOSETALL 控制所有IO 5,AT+IOGET 读取IO 6,AT+IOGETALL 读取所有IO状态 7,AT+IOTIMUP 设置IO定时上报 8,AT+IOACUP 设置IO变化上报 9,AT+IOJOG IO点动触发 10,AT+IOTRGCFG IO触发器配置 11,AT+IOTRGBD 绑定任务id 十,自动组包 1,AT+PACKETCFG 配置包格式 2,AT+PACKETHEAD 设置包头 3,AT+PACKETTAIL 设置包头 4,AT+PACKETEN 使能组包功能 5,AT+PACKETTEST 测试组包功能 十,预映射 1,功能简介 2,映射支持列表 3,AT+PREMAP 配置预映射 4,AT+PREMAPH 配置预映射 十一,映射和变换 第 2 页 共 153 页1,AT+MAPEN 关闭和使能内部映射 2,AT+MAPTEST 测试映射功能 3,AT+CONVERT 字符串十六进制变换 4,映射支持列表 十二,串口 1,AT+SERIAL 修改串口参数信息 2,AT+SERIALQUE 修改串口分包信息。 3,AT+BUAD 修改串口波特率。 4,AT+SERIALID 获取串口id。 5,AT+CHANNELSET 设置通道 十三,心跳包 1,AT+HEARTSET 设置心跳包 2,AT+REGSET 设置注册包 十四,MODBUS 1,AT+MBCMD 设置查询报文 2,AT+MBANA 设置解析报文 3,AT+MBUP 设置上报报文 4,AT+MBUPH 设置上报报文 5,AT+MBLOOP 设置查询时间 6,AT+MBATRG 主动触发 7,上报报文映射格式 8,完整示例 十五,HTTP 1,AT+HTTPCFG 配置HTTP通道 2,AT+HTTPHEAD 配置Headers 3,AT+HTTPHEADH 配置Headers 4,AT+HTTPCTRL 配置返回头 5,AT+HTTPSTART 发起HTTP任务 6,AT+HTTP 临时发起HTTP 7,透传模式 十六,FILE 文件读取功能 1,AT+FILESIZE 获取文件大小 2,AT+FILEREAD 读取文件 3,AT+FILEREADALL 读取全部文件 十七,用户任务功能 1,AT+USERTASK 配置用户任务 2,AT+USERTASKH 配置用户任务 3,AT+USERTASKTIM 使能定时触发 4,AT+PUTTASK 主动触发任务 5,AT+PUTTASKNR 主动触发任务无返回 6,支持任务列表 (一) "io_wave" IO 波形绘制 (二) "update" 上报服务器 (三) "serial_write" 串口输出 7,任务配置示例 (一) 使用 IO 触发器来触发上报任务 (二) 使用定时触发器来触发IO任务 (二) 定时上报GPS任务 (三) 使用指令触发IO任务 十八,GPS 功能 1,AT+GPSEN 使能GPS 2,AT+GPS 查询GPS定位信息 3,AT+GPSRAW 查询GPS原始报文 4,AT+GPSTRG 设置GPS触发器 十九,联络我们 第 3 页 共 153 页值 115200 一,特色功能 支持注册包。 支持心跳包。 支持 TTL , RS485 双路输入输出。 支持 GPS 和 基站定位。 支持 ONENET 数据点功能。 支持多路 IO 控制,读取,主动上报。 支持MODBUS主站功能,定时查询,数据解析。 二,默认信息 默认参数 设备串口默认波特率 三,主动上报 1,ML307R-DC-DTU 开机上报状态 设备上电开机成功吼推送的指令 返回结果 ML307R-DC-DTU <edit> 参数说明 <edit> 字符串,版本号 2,SIM:READY 上报SIM卡信息 设备上电开机成功后推送的指令 返回结果 SIM:READY 3,REGSTER:SUCCESS 上报注册信息 设备上电开机成功s推送的指令 返回结果 REGSTER:SUCCESS 第 4 页 共 153 页 返回结果 +ATI="<edit>" OK 四,基础指令 1,ATI 查询设备版本号 查询设备软件版本 命令 查询指令: ATI 参数说明 <edit> 字符串,版本号。 示例: [2023-02-19 15:06:16.054]# SEND ASCII> ATI [2023-02-19 15:06:16.137]# RECV ASCII> +ATI="ML307R-DC-DTU V2.6 2024-9-9" OK 2,AT+REST 设备重启 让设备主动重启,设备开机需要时间,会暂停响应指令一段时间,直到出现开机LOG ,这条响应是固定 的。 命令 AT+REST 示例: 返回结果 +REST="1" OK [2023-02-19 15:07:47.000]# SEND ASCII> AT+REST [2023-02-19 15:07:47.081]# RECV ASCII> +REST="1" OK 第 5 页 共 153 页 3,AT+IMEI? 查询设备IMEI号 查询设备的IMEI号,每个设备拥有唯一的IMEI号。 命令 AT+IMEI[?] 返回结果 +IMEI="<imei>" OK 注:[?] 表示问号是可选可省略的。 参数说明: <imei> 字符串,设备 imei 号,长度固定 15。 示例: [2023-02-19 15:08:57.392]# SEND ASCII> AT+IMEI? [2023-02-19 15:08:57.480]# RECV ASCII> +IMEI="866769063084746" OK 4,AT+IMSI? 查询设备IMSI号 查询设备插入SIM卡的IMSI号,设备需要已经插入SIM卡且正确识别后,才可查询成功。 错误返回 +IMSI="null" ERROR 命令 返回结果 AT+IMSI[?] 参数说明: +IMSI="<imsi>" OK <imsi> 字符串,设备 imsi 号,长度固定 20。 示例: [2023-02-19 15:09:25.934]# SEND ASCII> AT+IMSI? [2023-02-19 15:09:26.021]# RECV ASCII> +IMSI="460045920200338" OK [2023-02-19 15:09:25.934]# SEND ASCII> 第 6 页 共 153 页 AT+IMSI? [2023-02-19 15:09:26.021]# RECV ASCII> +IMSI="null" OK 5,AT+ICCID? 查询设备ICCID号 查询设备插入SIM卡的ICCID号,设备需要已经插入SIM卡且正确识别后,才可查询成功。 错误返回 +ICCID="null" ERROR 命令 返回结果 AT+ICCID[?] 参数说明: +ICCID="<iccid>" OK <iccid> 字符串,设备的 iccid 号码,长度固定 20 。 示例: [2023-02-19 15:11:50.707]# SEND ASCII> AT+ICCID? [2023-02-19 15:11:50.794]# RECV ASCII> +ICCID="89860439101880980338" OK [2023-02-19 15:11:50.707]# SEND ASCII> AT+ICCID? [2023-02-19 15:11:50.794]# RECV ASCII> +ICCID="null" OK 6,AT+CEREG? 查询设备驻网状态 查询设备驻网状态 命令 AT+CEREG[?] 参数说明: <state> 整型,获取驻网状态。 返回结果 +CEREG="<state>" OK 第 7 页 共 153 页 0 1 3 5 未驻网。 驻网成功。 注册网路被拒绝。 驻网成功。 示例: [2023-02-19 15:12:21.480]# SEND ASCII> AT+CEREG? [2023-02-19 15:12:21.577]# RECV ASCII> +CEREG="1" OK 7,AT+IPCALL? 查询设备数据拨号状态 注:这是旧版指令,返回值有引号包裹参数,需要注意区分 查询设备数据拨号状态,返回拨号状态结果为"0" 或 1" ,为"1" 时,设备拨号成功。 命令 返回结果 +IPCALL="<state>" OK AT+IPCALL[?] 参数说明: <state> 整型,获取数据拨号状态。 0 1 未数据拨号。 数据拨号成功。 示例: 第 8 页 共 153 页 [2023-02-19 15:14:12.160]# SEND ASCII> AT+IPCALL? [2023-02-19 15:14:12.247]# RECV ASCII> +IPCALL="1" OK 8,AT+ISLINK? 查询设备数据拨号状态 返回结果 +ISLINK=<state> OK 命令 AT+ISLINK<?> 参数说明: <state> 整型,获取数据拨号状态。 0 1 未数据拨号。 数据拨号成功。 示例: [2023-02-19 15:14:12.160]# SEND ASCII> AT+ISLINK? [2023-02-19 15:14:12.247]# RECV ASCII> +ISLINK=1 OK 9,AT+CSQ 查询设备网路信号强度 查询设备网路信号强度 命令 AT+CSQ[?] 参数说明: 返回结果 +CSQ="<ber>","<rssi>" OK <ber> 整型,位错误率,但这个值暂时无意义。 第 9 页 共 153 页 <rssi> 整型,信号强度 0 1 -113 dBm or less -111 dBm 2..30 -109. . . -53 dBm 31 99 -51 dBm or greater 未知或无法检测 示例: [2023-02-19 15:14:46.530]# SEND ASCII> AT+CSQ? [2023-02-19 15:14:46.613]# RECV ASCII> +CSQ="99","23" OK 10,AT+TIME 查询设备网路时间 查询模块时间,这条指令返回的是模块内部的同步时钟,这个指令立刻返回。 注:如果设备未驻网,模块返回的时钟就是错误的,请在设备驻网后再查询时间。 命令 AT+TIME=[<id>] 参数说明: 返回结果 +TIME="<time>" OK <id> 整型,返回时间字符串的格式,这个参数是可选的,不填时默认为 0 。 0 1 TIME_ISO8601 例:2023-02-19T07:18:44Z TIME_STAND 例:2023-02-19 07:18:0 第 10 页 共 153 页 <time> 字符串,时间。 示例: [2023-02-19 15:18:43.903]# SEND ASCII> AT+TIME=0 [2023-02-19 15:18:44.000]# RECV ASCII> +TIME="2023-02-19T07:18:44Z" OK [2023-02-19 15:18:08.717]# SEND ASCII> AT+TIME=1 [2023-02-19 15:18:08.802]# RECV ASCII> +TIME="2023-02-19 07:18:09" OK [2023-02-19 15:18:43.903]# SEND ASCII> AT+TIME [2023-02-19 15:18:44.000]# RECV ASCII> +TIME="2023-02-19T07:18:44Z" OK 11,AT+UTC? 获取设备时间戳 注:如果设备未驻网,模块返回的时钟就是错误的,请在设备驻网后再查询时间。 返回结果 +UTC="<utc>" OK 命令 AT+UTC[?] 参数说明: <utc> 字符串,秒级时间戳。 示例: [2023-02-19 15:22:29.470]# SEND ASCII> AT+UTC? [2023-02-19 15:22:29.555]# RECV ASCII> +UTC="1725871985" OK 第 11 页 共 153 页 12,AT+NTP? 获取实时网络时间。 通过内置的NTP服务器获取实时的网络时间,响应速度较慢,这条指令需要设备驻网后才可使用,否则会 进入长时间阻塞并返回失败。 命令 AT+NTP? 参数说明: 返回结果 +NTP="<ntp_time>" OK <ntp_time> 字符串,NTP获取的时间,ISO 8601 格式。 示例: [2023-03-23 15:01:42.537]# SEND ASCII> AT+NTP? [2023-03-23 15:01:42.942]# RECV ASCII> +NTP="2024-09-09T08:53:43.173+08:00" OK 注:加上结尾时区偏移量,才是当前的正确时间,这个指令是实时获取的,执行时间略长,想要立即返 回时间可以使用 AT+TIME 指令。 13,AT+FACTORYSET 设备恢复出厂设置 会清除设备所有配置的指令,该指令响应速度较慢,执行该指令时请勿断电。 命令 AT+FACTORYSET 示例: 返回结果 +FACTORYSET="1" OK [2023-02-19 15:27:43.542]# SEND ASCII> AT+FACTORYSET [2023-02-19 15:27:52.724]# RECV ASCII> +FACTORYSET="1" OK 第 12 页 共 153 页 14,AT+NAME 修改设备名称 可以对设备名进行修改,设备名只能是简易的字符串,数字和字母的连续组合。 命令 返回结果 AT+NAME[?] 默认参数 参数说明: +NAME="<name>" OK AT+NAME="ML307R-DTU" <name> 字符串,设备名,最大长度256字节。 示例: [2023-02-19 15:30:01.972]# SEND ASCII> AT+NAME="HELLO" [2023-02-19 15:30:02.087]# RECV ASCII> +NAME="HELLO" OK [2023-02-19 15:30:05.151]# SEND ASCII> AT+NAME? [2023-02-19 15:30:05.238]# RECV ASCII> +NAME="HELLO" OK 15,AT+LBS 获取设备基站定位信息 获取设备当前的基站定位坐标信息。 命令 查询指令: AT+LBS[?] 参数说明: 返回结果 +LBS="<info>" OK 响应失败 +LBS="null" ERROR <info> 字符串,基站定位坐标,格式 "<lat>,<lon>"。 示例: 第 13 页 共 153 页 [2023-02-19 15:32:13.490]# SEND ASCII> AT+LBS? [2023-02-19 15:32:13.576]# RECV ASCII> +LBS="30.702003,104.063461" OK 16,AT+CELL? 获取设备基站号 命令 查询指令: AT+CELL<?> 参数说明: 返回结果 +CELL="<cell>" OK 响应失败 +CELL="null" ERROR <cell> 字符串,设备附着基站的基站号,格式为16进制字符串。 示例: [2023-02-19 15:35:40.421]# SEND ASCII> AT+CELL? [2023-02-19 15:35:40.503]# RECV ASCII> +CELL="53c247" OK 17,AT+LAC? 获取设备小区号 命令 查询指令: AT+LAC[?] 参数说明: 返回结果 +LAC="<lac>" OK 响应失败 +LAC="null" ERROR <lac> 字符串,设备附着基站的小区号,格式为 16 进制字符串。 示例: 第 14 页 共 153 页 [2023-02-19 15:36:19.318]# SEND ASCII> AT+LAC? [2023-02-19 15:36:19.400]# RECV ASCII> +LAC="8110" OK 18,AT+DTUCON? 获取网路链接状态 这个是一个总的获取连接状态指令,具体的状态是根据 AT+DTUTASK 配置的任务决定的。 比如 TCP 模式时返回 TCP 连接状态,MQTT 模式时返回的是 MQTT 的连接状态。 注:UDP 模式时,返回值固定为 1 命令 查询指令: AT+DTUCON[?] 参数说明: <state> 整型,网络连接状态 返回结果 +DTUCON="<state>" OK 0 1 未链接 已链接 示例: [2024-09-18 14:00:20.767]# SEND ASCII> AT+DTUCON? [2024-09-18 14:00:20.974]# RECV ASCII> +DTUCON="1" OK 19,AT+ADC 获取ADC电压值 命令 查询指令: AT+ADC=<id>[?] 参数说明: 返回结果 +ADC=<voltage> OK 第 15 页 共 153 页 <id> 整型,通道标号,范围 1~2 。 1 2 ADC 通道 1 ADC 通带 2 <voltage> 整型,电压值,单位 mv 。 示例: [2024-10-28 14:54:38.121]# SEND ASCII> AT+ADC=1 [2024-10-28 14:54:38.330]# RECV ASCII> +ADC=674 OK [2024-10-28 14:54:39.594]# SEND ASCII> AT+ADC=2 [2024-10-28 14:54:39.778]# RECV ASCII> +ADC=1200 OK [2024-10-28 14:54:41.441]# SEND ASCII> AT+ADC=1? [2024-10-28 14:54:41.630]# RECV ASCII> +ADC=671 OK [2024-10-28 14:54:45.945]# SEND ASCII> AT+ADC=2? [2024-10-28 14:54:46.123]# RECV ASCII> +ADC=1200 第 16 页 共 153 页OK 20,AT+VBAT 获取内核电压 命令 查询指令: AT+VBAT[?] 参数说明: 返回结果 +VBAT=<voltage> OK <voltage> 整型,电压值,单位 mv 。 示例: [2024-10-28 14:56:42.946]# SEND ASCII> AT+VBAT [2024-10-28 14:56:43.110]# RECV ASCII> +VBAT=4089 OK [2024-10-28 14:56:46.121]# SEND ASCII> AT+VBAT? [2024-10-28 14:56:46.313]# RECV ASCII> +VBAT=4100 OK 21,AT+NDRST 无数据复位 这个命令启动后,无论是否设置通信模式,只要没有来自服务器下发的数据,都会开始计时,超时后复 位,设备会在首次开机一分钟后再开始计时。 命令 查询: AT+NDRST? AT+NDRST=<time_s> 参数说明: 返回结果 +NDRST=<time_s> OK +NDRST=<time_s> OK 第 17 页 共 153 页 <time_s> 整型,超时时间,超过这个时间还未收到服务器下发的数据则会进行复位,单位秒,默认值 0 为不启用。 示例: [2024-12-11 10:19:58.992]# SEND ASCII> AT+NDRST? [2024-12-11 10:19:59.082]# RECV ASCII> +NDRST=0 OK [2024-12-11 10:20:01.527]# SEND ASCII> AT+NDRST=200 [2024-12-11 10:20:01.693]# RECV ASCII> +NDRST=200 OK [2024-12-11 10:20:02.983]# SEND ASCII> AT+NDRST? [2024-12-11 10:20:03.090]# RECV ASCII> +NDRST=200 OK 22,AT+NCRST 无连接复位 超过设置的时间,还未连接到服务器,就会进行复位,会限制最大复位次数,超时后复位,设备会在首 次开机一分钟后再开始计时。 命令 查询: AT+NCRST? AT+NCRST=<time_min>,[<cnt>] 参数说明: 返回结果 +NCRST=<time_min>,[<cnt>] OK +NCRST=<time_min>,[<cnt>] OK 第 18 页 共 153 页 <time_min> 整型,超时时间,范围 1~ 2880 超过这个时间还未收到服务器下发的数据则会进行复位, 单位分钟,默认值 0 为不启用。 <cnt> 整型,最大复位次数,范围 1~100, 超过这个时间还未收到服务器下发的数据则会进行复位,单 位次,默认值 1 。 示例: [2024-12-11 10:19:58.992]# SEND ASCII> AT+NDRST? [2024-12-11 10:19:59.082]# RECV ASCII> +NDRST=0 OK [2024-12-11 10:20:01.527]# SEND ASCII> AT+NDRST=200 [2024-12-11 10:20:01.693]# RECV ASCII> +NDRST=200 OK [2024-12-11 10:20:02.983]# SEND ASCII> AT+NDRST? [2024-12-11 10:20:03.090]# RECV ASCII> +NDRST=200 OK 23,AT+APN 设置APN 命令 查询: AT+APN? AT+APN=<en>,[<apn>],[<username>], [<password>] 返回结果 +APN=<en>,[<apn>],[<username>], [<password>] OK +APN=<en>,[<apn>],[<username>], [<password>] OK 第 19 页 共 153 页 参数说明: <en> 整型,使能APN设置,不使能时模块不会修改APN设置。 0 1 不使能 使能 <apn> 字符串,APN,范围 1~128,en 为 1 时,这个值必填,en为 0 时,这个值可缺省 。 <username> 字符串,APN账号,范围 1~100, 可缺省 。 <password> 字符串,APN密码,范围 1~100, 可缺省 。 示例: [2024-12-11 10:20:01.527]# SEND ASCII> AT+APN=0 [2024-12-11 10:20:01.693]# RECV ASCII> +APN=0 OK [2024-12-11 10:20:02.983]# SEND ASCII> AT+APN=1,"XXX" [2024-12-11 10:20:03.090]# RECV ASCII> +APN=1,"XXX" OK 24,AT+CPASS 强制透传 开启强制透传后,多通道模式中的分发协议不再生效,直接透传。 命令 查询: AT+CPASS? 返回结果 +CPASS=<en> OK 第 20 页 共 153 页 命令 AT+CPASS=<en> 参数说明: 返回结果 +CPASS=<en> OK <en> 整型,使能APN设置,不使能时模块不会修改APN设置。 0 1 不使能 使能 示例: [2025-03-05 16:14:13.671]# SEND ASCII> AT+CPASS? [2025-03-05 16:14:13.844]# RECV ASCII> +CPASS=1 OK [2025-03-05 16:14:14.855]# SEND ASCII> AT+CPASS=1 [2025-03-05 16:14:15.051]# RECV ASCII> +CPASS=1 OK 五,DTU任务配置 1, AT+DTUTASK 设置DTU任务 命令 查询指令: 返回结果 +DTUTASK="<reserve>","<task_id>" AT+DTUTASK="<reserve>","<task_id>" OK 参数说明: 第 21 页 共 153 页 <reserve> 整形,通道 id ,范围 1~4。 <task_id> 整型,任务 id ,默认值 0 。 0 10 20 22 30 无任务 SOCKET任务(TCP透传/UDP透传/多通道SOCK) MQTT任务(单路透传/多通道MQTT) ONENET任务(ONENET 物联网平台 MQTT 接入,属性点/数据流) HTTP 透传模式 示例: [2023-02-19 15:41:18.485]# SEND ASCII> AT+DTUTASK="0","10" [2023-02-19 15:41:18.600]# RECV ASCII> +DTUTASK="0","10" OK [2023-02-19 15:41:48.023]# SEND ASCII> AT+DTUTASK? [2023-02-19 15:41:48.108]# RECV ASCII> +DTUTASK="0","10" OK 2, AT+DTUTASKS 设置DTU任务 配置格式: 命令 AT+DTUTASKS? 返回结果 +DTUTASKS="<task_name>" OK 第 22 页 共 153 页 命令 返回结果 AT+DTUTASKS="<task_name>" +DTUTASKS="<task_name>" OK 参数说明 <task_name> 字符串,任务编号。 NULL 无任务,对应任务 id 0 TCP TCP/UDP/SOCK 透传任务,对应任务 id 10 SOCK TCP/UDP/SOCK 透传任务,对应任务 id 10 ,配置 SOCK,查询时依旧返回 TCP ,作为兼容选项。 MQTT MQTT 通用透传任务,对应任务 id 20 ONENET ONENET MQTT 属性点/数据流,对应任务 id 21 HTTP HTTP 透传模式 示例: [2024-09-30 12:49:03.963]# SEND ASCII>//配置任务 AT+DTUTASKS="ONENET" [2024-09-30 12:49:04.278]# RECV ASCII> +DTUTASKS="ONENET" OK [2024-09-30 12:49:14.912]# SEND ASCII>//查询配置 AT+DTUTASKS? [2024-09-30 12:49:15.103]# RECV ASCII> +DTUTASKS="ONENET" OK 六,TCP 通信 TCP 指令是旧版指令,只支持 TCP 协议和单通道通信,同样的功能也可以使用 SOCKET 功能实现。 第 23 页 共 153 页 TCP 功能和 SOCKET 通信功能是重合的,TCP 指令使用的是 SOCKET 功能中的通道 1,且使用此 指令时会自动把 SOCKET 通道 1 的协议设置为TCP协议。 1,AT+TCP 设置TCP服务器 这个是旧版指令,固定设置socket 通道 1 的参数,且把通道 1 修改为 TCP通道 等效为 [ AT+SOCK=1,1,"<ip>",<port>,0 ]。 如果只需要单通道 TCP 业务,则使用此指令即可。 命令 查询指令: AT+TCP? AT+TCP="<ip>","<port>" 默认配置 参数说明 返回结果 +TCP="<ip>","<port>" OK +TCP="<ip>","<port>" OK AT+TCP="tcpserver.doiot.cn","5000" <ip> 字符串,ip地址,最大长度 256。 <port> 字符串,端口号。 示例: [2023-02-19 15:43:54.417]# SEND ASCII> AT+TCP="117.176.218.6","6001" [2023-02-19 15:43:54.574]# RECV ASCII> +TCP="117.176.218.6","6001" OK [2023-02-19 15:44:39.483]# SEND ASCII> AT+TCP? [2023-02-19 15:44:39.566]# RECV ASCII> +TCP="117.176.218.6","6001" OK 2,TCP_CONNECT 状态主动推送 LOG 响应 TCP_CONNECT:<ip>:<port> 单通道TCP模式连接 TCP_DISCONNECT 单通道TCP模式连接断开 第 24 页 共 153 页 参数说明 <ip> 字符串,ip地址,最大长度 256。 <port> 字符串,端口号。 示例: [2024-09-10 13:34:09.950]# RECV ASCII> TCP_CONNECT:117.176.218.6:6010 3,配置 TCP 透传通信服务 [2024-09-10 13:33:46.934]# SEND ASCII>//指令用回车换行,可一次性发送 AT+DTUTASK="1","10" AT+TCP="117.176.218.6","6010" AT+REST [2024-09-10 13:33:47.215]# RECV ASCII> +DTUTASK="1","10" OK [2024-09-10 13:33:47.447]# RECV ASCII> +TCP="117.176.218.6","6010" OK [2024-09-10 13:33:47.448]# RECV ASCII>//复位设备 +REST="1" OK [2024-09-10 13:33:49.844]# RECV ASCII> ML307R-DC-DTU V2.6 [2024-09-10 13:33:50.972]# RECV ASCII> SIM:READY [2024-09-10 13:34:08.827]# RECV ASCII> REGSTER:SUCCESS [2024-09-10 13:34:09.950]# RECV ASCII>//TCP连接LOG TCP_CONNECT:117.176.218.6:6010 第 25 页 共 153 页 七,SOCKET 通信 支持最大4路 socket 链接,每路都可以独立选择为 udp 或者 tcp 功能,多通道功能需要独立使能且使用 特定的报文进行分发和接收。 1,AT+SOCK 设置 SOCKET 参数 socket 支持最大 4 路通道,每个通道完全独立,可分别设置参数,支持 TCP 和 UDP 。 如果没有使能多通道,则只有第一路设置会生效, AT+SOCKMULT 指令可以开启多通道。 命令 返回结果 AT+SOCK=<id>? AT+SOCK=<id>,<en>,"<ip>",<port>,<protocol> +SOCK=<id>,<en>,"<ip>",<port>,<protocol> OK +SOCK=<id>,<en>,"<ip>",<port>,<protocol> OK 参数说明: <id> 整型,socket 通道标号,范围 1~4 。 <en> 整型,socket 通道使能,默认 0 [关闭] 。 0 1 关闭 使能 <ip> 字符串,服务器地址,支持域名,范围 1-256。 <port> 整型,服务器端口号,范围是 0-65535。 <protocol> 整型,socket 通道的协议。 0 1 TCP UDP 示例: 第 26 页 共 153 页 [2024-11-19 16:18:15.897]# SEND ASCII>//配置TCP通道 AT+SOCK=1,1,"117.176.218.6",6009,0 [2024-11-19 16:18:16.101]# RECV ASCII> +SOCK=1,1,"117.176.218.6",6009,0 OK [2024-11-19 16:18:23.744]# SEND ASCII>//配置UDP通道 AT+SOCK=2,1,"117.176.218.6",6009,1 [2024-11-19 16:18:23.948]# RECV ASCII> +SOCK=2,1,"117.176.218.6",6009,1 OK 2,AT+SOCKEN 设置 SOCKET 使能 需要独立修改使能参数时可以使用这个指令 返回结果 +SOCKEN=<id>,<en> OK +SOCKEN=<id>,<en> OK 命令 查询指令: AT+SOCKEN=<id>? AT+SOCKEN=<id>,<en> 参数说明: <id> 整型,socket 通道标号,范围 1~4 。 <en> 整型,使能,默认值 0 [关闭]。 0 1 关闭 使能 示例: [2024-11-19 16:27:58.097]# SEND ASCII>//通道1使能 AT+SOCKEN=1,1 [2024-11-19 16:27:58.287]# RECV ASCII> +SOCKEN=1,1 第 27 页 共 153 页 OK [2024-11-19 16:27:59.743]# SEND ASCII>//通道1关闭 AT+SOCKEN=1,0 [2024-11-19 16:27:59.927]# RECV ASCII> +SOCKEN=1,0 OK [2024-11-19 16:28:01.266]# SEND ASCII>//查询通道1 AT+SOCKEN=1? [2024-11-19 16:28:01.368]# RECV ASCII> +SOCKEN=1,0 OK 3,AT+SOCKPROT 设置 SOCKET 协议 需要独立修改协议参数时可以使用这个指令。 命令 查询指令: 返回结果 +SOCKPROT=<id>,<prot> AT+SOCKPROT=<id>? OK AT+SOCKPROT=<id>,<prot> +SOCKPROT=<id>,<prot> OK 参数说明: <id> 整型,socket 通道标号,范围 1~4 。 <prot> 整型,socket 协议,默认 0 [TCP] 。 0 1 TCP 协议 UDP 协议 示例: [2024-11-19 16:41:43.985]# SEND ASCII> AT+SOCKPROT=1,0 第 28 页 共 153 页 [2024-11-19 16:41:44.183]# RECV ASCII> +SOCKPROT=1,0 OK [2024-11-19 16:41:45.928]# SEND ASCII> AT+SOCKPROT=1? [2024-11-19 16:41:46.034]# RECV ASCII> +SOCKPROT=1,0 OK 4,AT+SOCKSTATE 获取连接状态 这个指令是独立获取每一路的连接状态,只在 TCP 模式下有效,UDP 模式下固定返回 1 。 查询通道 1 时,等同于指令 "AT+DTUCON?" 命令 返回结果 查询指令: AT+SOCKSTATE=<id>? +SOCKSTATE=<id>,<state> OK 参数说明: <id> 整型,socket 通道标号,范围 1~4 。 <state> 整型,连接状态。 0 1 连接成功 未连接 示例: [2024-11-19 16:57:17.849]# SEND ASCII> AT+SOCKSTATE=2? [2024-11-19 16:57:17.928]# RECV ASCII> +SOCKSTATE=2,1 OK [2024-11-19 16:57:18.609]# SEND ASCII> AT+SOCKSTATE=3? 第 29 页 共 153 页 [2024-11-19 16:57:18.695]# RECV ASCII> +SOCKSTATE=3,0 OK [2024-11-19 16:57:19.240]# SEND ASCII> AT+SOCKSTATE=4? [2024-11-19 16:57:19.328]# RECV ASCII> +SOCKSTATE=4,1 OK 5,AT+SOCKMULT 设置多通道使能 需要独立修改使能参数时可以使用这个指令 命令 查询指令: AT+SOCKMULT? AT+SOCKMULT=<en> 参数说明: <en> 整型,多通道使能,默认值 0 。 返回结果 +SOCKMULT=<en> OK +SOCKMULT=<en> OK 0 1 关闭 使能 示例: [2024-11-19 17:32:52.326]# SEND ASCII> AT+SOCKMULT? [2024-11-19 17:32:52.426]# RECV ASCII> +SOCKMULT=0 OK 第 30 页 共 153 页 [2024-11-19 17:32:54.778]# SEND ASCII> AT+SOCKMULT=1 [2024-11-19 17:32:54.962]# RECV ASCII> +SOCKMULT=1 OK [2024-11-19 17:32:56.658]# SEND ASCII> AT+SOCKMULT? [2024-11-19 17:32:56.760]# RECV ASCII> +SOCKMULT=1 OK 6,AT+SOCKKEEP 设置 KEEPALIVE 设置socket 的 keepalive 参数 (UDP模式下无效)。 命令 返回结果 查询指令: AT+SOCKKEEP=<id>? +SOCKKEEP=<id>,<en> OK AT+SOCKKEEP=<id>,<en>,<keepidle>, <keepinterval>,<keepcount> +SOCKKEEP=<id>,<en>,<keepidle>, <keepinterval>,<keepcount> OK 参数说明: <id> 整型,socket 通道的 id 号,范围:1 ~ 4 。 <en> 整型,多通道使能,默认值 0 。 0 1 关闭 使能 <keepidle> 整型 ,空闲多长时间后开始发送 Keepalive 探测包,单位秒,范围 1-2,147,483,647,默认 值:60。 <keepinterval> 整型 ,发送探测包的间隔时间,单位秒,范围 1-2,147,483,647,默认值:15。 第 31 页 共 153 页 <keepcount> 整型 ,最大探测包的发送次数,单位次,范围1-2,147,483,647,默认值 3 。 示例: [2024-11-19 17:32:52.326]# SEND ASCII> AT+SOCKMULT? [2024-11-19 17:32:52.426]# RECV ASCII> +SOCKMULT=0 OK [2024-11-19 17:32:54.778]# SEND ASCII> AT+SOCKMULT=1 [2024-11-19 17:32:54.962]# RECV ASCII> +SOCKMULT=1 OK [2024-11-19 17:32:56.658]# SEND ASCII> AT+SOCKMULT? [2024-11-19 17:32:56.760]# RECV ASCII> +SOCKMULT=1 OK 7,SOCK_CONNECT 状态主动推送 LOG 注:UDP 模式,没有上下线LOG,因为 UDP 没有准确的连接状态。 响应 LOG含义 多通道使能状态 TCP_CONNECT:<ip>:<port> 单通道TCP模式连接 AT+SOCKMULT=0 时 TCP_DISCONNECT 单通道TCP模式连接断开 AT+SOCKMULT=0 时 SOCK_CONNECT:<id>,<ip>:<port> 多通道模式TCP连接 AT+SOCKMULT=1 时 SOCK_DISCONNECT:<id>,<ip>:<port> 多通道模式TCP连接断开 AT+SOCKMULT=1 时 参数说明: <id> 整型,socket 通道标号,范围 1~4 。 <ip> 字符串,服务器地址,支持域名,范围 1-256。 第 32 页 共 153 页 <port> 整型,服务器端口号,范围是 0-65535。 示例: [2024-11-19 15:52:01.167]# RECV ASCII> ML307R-DC-DTU V2.98 [2024-11-19 15:52:06.387]# RECV ASCII> SIM:READY [2024-11-19 15:52:06.450]# RECV ASCII> REGSTER:SUCCESS [2024-11-19 15:52:09.107]# RECV ASCII>//通道1连接到服务器,通道3连接到服务器 SOCK_CONNECT:1,117.176.218.6:6009 SOCK_CONNECT:3,117.176.218.6:6009 8,SOCKSEND 多通道模式发送 接收报文 例 SOCKSEND ,<id>,<data> SOCKSEND,1,123 参数说明: <id> 整型,socket 通道标号,范围 1~4 。 <data> 字节流,要发送的数据,长度范围不超过设定的单个包长。 示例: [2024-11-19 17:37:34.274]# SEND ASCII>//编码形式发送 SOCKSEND,1,123 [2024-11-19 17:37:55.612]# SEND HEX>//这里是HEX模式发送的 53 4F 43 4B 53 45 4E 44 2C 31 2C 31 32 33 00 11 22 33 44 FF 9,+SOCKRECV 多通道模式接收 接收报文 例 +SOCKRECV ,<id>,<len>,<data> +SOCKRECV,1,9,123123123 参数说明: 第 33 页 共 153 页 <id> 整型,socket 通道标号,范围 1~4 。 <len> 整型,数据包长度,不包括结尾的回车换行长度,是纯粹的 <data> 的长度。 <data> 字节流,收到的数据。 示例: [2024-11-19 17:40:18.315]# RECV ASCII> +SOCKRECV,1,9,123123123 [2024-11-19 17:41:09.473]# RECV ASCII> +SOCKRECV,1,9,123123123 [2024-11-19 17:41:10.096]# RECV ASCII> +SOCKRECV,1,9,123123123 10,配置 TCP 透传通信服务的示例 示例: [2024-11-20 13:43:30.195]# SEND ASCII> AT+DTUTASK="1","10" AT+SOCK=1,1,"117.176.218.6",6009,0 AT+REST [2024-11-20 13:43:30.382]# RECV ASCII> +DTUTASK="1","10" OK [2024-11-20 13:43:30.508]# RECV ASCII> +SOCK=1,1,"117.176.218.6",6009,0 OK +REST="1" OK [2024-11-20 13:43:33.099]# RECV ASCII> ML307R-DC-DTU V3.0 [2024-11-20 13:43:38.331]# RECV ASCII> SIM:READY REGSTER:SUCCESS 第 34 页 共 153 页 [2024-11-20 13:43:39.853]# RECV ASCII>//单通道模式的LOG TCP_CONNECT:117.176.218.6:6009 [2024-11-20 13:43:48.625]# RECV ASCII> 12312312312313123123123123 [2024-11-20 13:43:52.442]# SEND ASCII> 123123123123123123123123 11,配置 UDP 透传通信服务的示例 示例: [2024-11-20 13:47:44.969]# SEND ASCII> AT+DTUTASK="1","10" AT+SOCK=1,1,"112.125.89.8",44206,1 AT+REST [2024-11-20 13:47:45.165]# RECV ASCII> +DTUTASK="1","10" OK [2024-11-20 13:47:45.307]# RECV ASCII> +SOCK=1,1,"112.125.89.8",44206,1 OK +REST="1" OK [2024-11-20 13:47:47.892]# RECV ASCII> ML307R-DC-DTU V3.0 [2024-11-20 13:47:53.298]# RECV ASCII> SIM:READY REGSTER:SUCCESS [2024-11-20 13:48:00.823]# SEND ASCII>//UDP没有连接状态,所以没有连接LOG 123123123123123123123123123123123123123123123123123123123123123123123123 [2024-11-20 13:48:01.707]# SEND ASCII> 123123123123123123123123123123123123123123123123123123123123123123123123 [2024-11-20 13:48:09.901]# RECV ASCII> 123123123123123123123123123123123123123123123123123123123123123123123123123123123 123123123123123123123123123123123123123 第 35 页 共 153 页 [2024-11-20 13:48:13.030]# RECV ASCII> 123123123123123123123123123123123123123123123123123123123123123123123123123123123 123123123123123123123123123123123123123 12,配置 TCP/UDP 多通道连接示例 示例: [2024-11-20 13:50:33.562]# SEND ASCII> AT+DTUTASK="1","10" AT+SOCKMULT=1 AT+SOCK=1,1,"117.176.218.6",6009,0//通道1连接TCP服务器 AT+SOCK=2,1,"117.176.218.6",6009,0//通道2连接TCP服务器 AT+SOCK=3,1,"112.125.89.8",44206,1//通道3连接UDP服务器 AT+SOCK=4,1,"112.125.89.8",43803,1//通道4连接UDP服务器 AT+REST [2024-11-20 13:50:33.775]# RECV ASCII> +DTUTASK="1","10" OK [2024-11-20 13:50:33.866]# RECV ASCII> +SOCKMULT=1 OK [2024-11-20 13:50:33.960]# RECV ASCII> +SOCK=1,1,"117.176.218.6",6009,0 OK [2024-11-20 13:50:34.069]# RECV ASCII> +SOCK=2,1,"117.176.218.6",6009,0 OK [2024-11-20 13:50:34.162]# RECV ASCII> +SOCK=3,1,"112.125.89.8",44206,1 OK [2024-11-20 13:50:34.255]# RECV ASCII> +SOCK=4,1,"112.125.89.8",43803,1 OK +REST="1" OK [2024-11-20 13:50:36.843]# RECV ASCII> 第 36 页 共 153 页 ML307R-DC-DTU V3.0 [2024-11-20 13:50:42.178]# RECV ASCII> SIM:READY REGSTER:SUCCESS [2024-11-20 13:51:07.241]# RECV ASCII>//TCP服务器连接LOG SOCK_CONNECT:1,117.176.218.6:6009 [2024-11-20 13:51:07.319]# RECV ASCII>//TCP服务器连接LOG SOCK_CONNECT:2,117.176.218.6:6009 [2024-11-20 13:51:20.044]# SEND ASCII>//往SOCKET通道1发送消息 SOCKSEND,1,123456789 [2024-11-20 13:51:22.786]# SEND ASCII>//往SOCKET通道2发送消息 SOCKSEND,2,123456789 [2024-11-20 13:51:25.220]# SEND ASCII>//往SOCKET通道3发送消息 SOCKSEND,3,123456789 [2024-11-20 13:51:28.365]# SEND ASCII>//往SOCKET通道4发送消息 SOCKSEND,4,123456789 [2024-11-20 13:51:39.759]# RECV ASCII>//SOCKET1,2收到数据 +SOCKRECV,1,26,12312312312313123123123123 +SOCKRECV,2,26,12312312312313123123123123 [2024-11-20 13:51:44.909]# RECV ASCII>//SOCKET3收到数据 +SOCKRECV,3,26,12312312312313123123123123 [2024-11-20 13:51:42.734]# RECV ASCII>//SOCKET4收到数据 +SOCKRECV,4,26,12312312312313123123123123 七,MQTT 通用通信 设备支持mqtt version 3.1.1 版本的协议。 1,AT+MQTT 设置MQTT参数 配置mqtt参数信息,clientid 是必备参数,, username和 password可缺省。 第 37 页 共 153 页 返回结果 +MQTT="<clientid>",[<"username">], [<"password">] OK +MQTT="<clientid>",[<"username">], [<"password">] OK 命令 查询指令: AT+MQTT? AT+MQTT="<clientid>",[<"username">], [<"password">] 参数说明: <clientid> 字符串,客户端 id,最大长度 128 。 <username> 字符串,用户名,最大长度128。 <password>字符串,密钥,最大长度 128 。 示例: [2023-02-19 16:13:15.983]# SEND ASCII> AT+MQTT="685636741","405153","mykey" [2023-02-19 16:13:16.179]# RECV ASCII> +MQTT="685636741","405153","mykey" OK [2023-02-19 16:13:07.948]# SEND ASCII> AT+MQTT? [2023-02-19 16:13:08.045]# RECV ASCII> +MQTT="685636741","405153","mykey" OK 2,AT+MQTTIP 设置MQTT服务器 配置MQTT服务的域名和端口号。 命令 查询指令: AT+MQTTIP ? AT+MQTTIP ="<ip>","<port>" 默认配置 返回结果 +MQTTIP ="<ip>","<port>" OK +MQTTIP ="<ip>","<port>" OK 无默认配置 第 38 页 共 153 页 参数说明: <ip> 字符串,服务器 ip 地址,最大长度256,支持域名。 <port> 字符串,端口号。 示例: [2023-02-19 16:15:30.101]# SEND ASCII> AT+MQTTIP="183.230.40.39","6002" [2023-02-19 16:15:30.260]# RECV ASCII> +MQTTIP="183.230.40.39","6002" OK 3,AT+MQPUB 设置发布的TOPIC 返回结果 +MQPUB ="<en>","<qos>","<mode>",[" <topic>"] OK +MQPUB ="<en>","<qos>","<mode>",[" <topic>"] OK 命令 查询指令: AT+MQPUB ? AT+MQPUB ="<en>","<qos>","<mode>",[" <topic>"] 配置格式: <en> 整型,使能,默认值 0 [关闭] 0 1 关闭 使能 <qos> 整型,QOS等级,默认值 0 [qos0] 。 0 1 qos0 qos1 第 39 页 共 153 页 2 qos2 <mode> 整型,发布模式,默认值 0 0 1 2 3 4 使用设备的IMEI作为发布的topic 使用设备的IMSI作为发布的topic 使用设备的ICCID作为发布的topic 使用设备的NAME作为发布的topic 使用自定义topic(这时 <topic>参数有效) <topic> 字符串,自定义topic,支持特殊符号的映射,最大长度 128 。 示例: [2023-02-19 16:26:48.261]# SEND ASCII>//配置设备以自身IMEI作为发布topic。 AT+MQPUB="1","1","0" [2023-02-19 16:26:48.470]# RECV ASCII> +MQPUB="1","1","0" OK 配置设备为自定义topic [2023-02-19 16:27:06.142]# SEND ASCII> AT+MQPUB="1","1","4","/a12o68BvvHO/myDevice/user/mypub" [2023-02-19 16:27:06.371]# RECV ASCII> +MQPUB="1","1","4","/a12o68BvvHO/myDevice/user/mypub" OK 查询: 第 40 页 共 153 页[2023-02-19 16:31:05.554]# SEND ASCII> AT+MQPUB? [2023-02-19 16:31:05.653]# RECV ASCII> +MQPUB="1","1","4","/a12o68BvvHO/myDevice/user/mypub" OK 4,AT+MQSUB 设置要订阅的TOPIC 返回结果 +MQSUB ="<en>","<qos>","<mode>", ["topic"] OK +MQSUB ="<en>","<qos>","<mode>", ["topic"] OK 命令 查询指令: AT+MQSUB ? AT+MQSUB ="<en>","<qos>","<mode>", ["topic"] 参数说明: <en> 整型,使能,默认值 0 。 0 1 关闭 使能 <qos> 整型,QOS等级,默认值 0 。 0 1 2 qos0 qos1 qos2 <mode> 整型,发布模式,默认值 0 0 使用设备的IMEI作为发布的topic 第 41 页 共 153 页 1 2 3 4 使用设备的IMSI作为发布的topic 使用设备的ICCID作为发布的topic 使用设备的NAME作为发布的topic 使用自定义topic(这时 <topic>参数有效) <topic> 字符串,自定义topic,支持特殊符号的映射,最大长度 128 。 注:自定义topic的字符串,支持特殊符号的映射,例如 "<#IMEI>/PUB" 会自动把 <#IMEI> 替换成设备 IMEI,具体参考指令 AT+MAPEN 。 示例: 配置设备以自身IMEI作为发布topic。这种模式适合批量设备使用。 [2023-02-19 16:26:48.261]# SEND ASCII> AT+MQSUB="1","1","0" [2023-02-19 16:26:48.470]# RECV ASCII> +MQSUB="1","1","0" OK 配置设备为自定义topic [2023-02-19 16:30:03.478]# SEND ASCII> AT+MQSUB="1","1","4","/a12o68BvvHO/myDevice/user/mySub" [2023-02-19 16:30:03.691]# RECV ASCII> +MQSUB="1","1","4","/a12o68BvvHO/myDevice/user/mySub" OK [2023-02-19 16:31:05.554]# SEND ASCII> AT+MQSUB? [2023-02-19 16:31:05.653]# RECV ASCII> +MQSUB="1","1","4","/a12o68BvvHO/myDevice/user/mypub" OK 第 42 页 共 153 页 5,AT+MQTTCLEAN 设置要订阅的TOPIC 返回结果 +MQTTCLEAN=<en> OK +MQTTCLEAN=<en> OK 命令 查询指令: AT+MQTTCLEAN ? AT+MQTTCLEAN =<en> 参数说明: <en>整型,使能,默认值 1 示例: [2024-10-18 15:33:34.973]# SEND ASCII> AT+MQTTCLEAN=1 [2024-10-18 15:33:35.438]# RECV ASCII> +MQTTCLEAN=1 OK [2024-10-18 15:33:37.114]# SEND ASCII> AT+MQTTCLEAN? [2024-10-18 15:33:37.326]# RECV ASCII> +MQTTCLEAN=1 OK 6,AT+MQTTKEEP 设置KEEPALIVE 命令 查询指令: AT+MQTTKEEP? AT+MQTTKEEP=<time> 参数说明: 返回结果 +MQTTKEEP=<time> OK +MQTTKEEP=<time> OK <time> 整型,KeepAlive,范围 0~65535,默认值 60 。 注:如果连接公有云平台,可在官网文档查询推荐时间,通常指定了一个固定的范围,超出范围的给值 会导致链接中断。 第 43 页 共 153 页 示例: [2024-10-18 15:57:10.203]# SEND ASCII> AT+MQTTKEEP=60 [2024-10-18 15:57:10.490]# RECV ASCII> +MQTTKEEP=60 OK [2024-10-18 15:57:11.793]# SEND ASCII> AT+MQTTKEEP? [2024-10-18 15:57:11.999]# RECV ASCII> +MQTTKEEP=60 OK 7,AT+MQTTRETAIN 设置RETAIN 命令 查询指令: AT+MQTTRETAIN? AT+MQTTRETAIN=<en> 参数说明: <en> 整型,retain值,默认值 0 0 1 retain 标志设置为 false retain 标志设置为 true 示例: [2024-11-08 18:02:48.437]# SEND ASCII> AT+MQTTRETAIN=1 [2024-11-08 18:02:48.675]# RECV ASCII> +MQTTRETAIN=1 OK 返回结果 +MQTTRETAIN=<en> OK +MQTTRETAIN=<en> OK 第 44 页 共 153 页 [2024-11-08 18:02:50.150]# SEND ASCII> AT+MQTTRETAIN? [2024-11-08 18:02:50.282]# RECV ASCII> +MQTTRETAIN=1 OK 8,AT+MQTTWILL 设置遗嘱 命令 返回结果 +MQTTWILL=<will_flag>,<will_qos>, <will_retain>,<will_topic>,<will_payload> OK +MQTTWILL=<will_flag>,<will_qos>, <will_retain>,<will_topic>,<will_payload> OK AT+MQTTWILL? AT+MQTTWILL=<will_flag>,<will_qos>, <will_retain>,<will_topic>,<will_payload> 参数说明: <will_flag> 整型,遗嘱标志,默认值 0 。 0 1 关闭遗嘱 开启遗嘱 <will_qos> 整型,遗嘱 qos 等级,默认值 0 。 0 1 2 qos0 qos1 qos2 <will_retain>整型,遗嘱 retain 标志,默认值 0 。 0 遗嘱 retain 标志设置为 false 第 45 页 共 153 页 1 遗嘱 retain 标志设置为 true <will_topic>字符串,遗嘱主题,最大长度256 。 <will_payload>字符串,遗嘱内容,最大长度256 。 示例: [2024-11-08 18:08:28.727]# SEND ASCII> AT+MQTTWILL=1,1,1,"will_topic","bye" [2024-11-08 18:08:28.947]# RECV ASCII> +MQTTWILL=1,1,1,"will_topic","bye" OK [2024-11-08 18:08:31.821]# SEND ASCII> AT+MQTTWILL? [2024-11-08 18:08:31.939]# RECV ASCII> +MQTTWILL=1,1,1,"will_topic","bye" OK 9,MQTT_CONNECT 主动上报链接状态 主动上报指令 MQTT_CONNECT:<ip>:<port> 参数说明: <ip> 字符串,服务器 ip 地址 。 <port> 整型,服务器端口 。 10,AT+MQMULTEN 设置多通道订阅 命令 查询指令: AT+MQMULTEN? 返回结果 +MQMULTEN=<en> OK 第 46 页 共 153 页 命令 AT+MQMULTEN=<en> 参数说明 <en> 整型,多通道使能,默认值 0 。 返回结果 +MQMULTEN=<en> OK 0 1 关闭 使能 示例: [2024-09-30 13:08:49.158]# SEND ASCII> AT+MQMULTEN=1 [2024-09-30 13:08:49.434]# RECV ASCII> +MQMULTEN=1 OK [2024-09-30 13:08:51.468]# SEND ASCII> AT+MQMULTEN? [2024-09-30 13:08:51.685]# RECV ASCII> +MQMULTEN=1 OK 11,AT+MQPUBM 设置多通道发布 AT+MQMULTEN 使能时,对1-5 的配置才会生效,否则只有对通道 0 的配置会生效。 命令 返回结果 查询指令: AT+MQPUBM=<id>? AT+MQPUBM=<id>,<en>,<qos>,<mode>,[" <topic>"] 默认配置 +MQPUBM=<id>,<en>,<qos>,<mode>,[" <topic>"] OK +MQPUBM=<id>,<en>,<qos>,<mode>,[" <topic>"] OK AT+MQPUBM=(0-5),0,0,0 第 47 页 共 153 页 参数说明 <id> 整型,topic 通道标号,范围 0~5,对应六个 topic。 <en> 整型,使能,默认值 0 。 0 1 关闭 使能 <qos> 整型,发布qos,默认值 0 。 0 1 2 qos0 qos1 qos2 <mode> 整型,发布模式,默认值 0 0 1 2 3 4 使用设备的IMEI作为发布的topic 使用设备的IMSI作为发布的topic 使用设备的ICCID作为发布的topic 使用设备的NAME作为发布的topic 使用自定义topic <topic> 字符串,发布topic,可选参数,仅在 mode 为 4 时生效。 注:支持特殊符号的映射,例如 "<#IMEI>/PUB" 会自动把 <#IMEI> 替换成设备IMEI,具体参考指令 AT+MAPEN 。 第 48 页 共 153 页示例: [2024-09-30 13:33:48.899]# SEND ASCII> AT+MQPUBM=0,1,0,4,"PUB" [2024-09-30 13:33:49.222]# RECV ASCII> +MQPUBM=0,1,0,4,"PUB" OK [2024-09-30 13:33:52.127]# SEND ASCII> AT+MQPUBM=0? [2024-09-30 13:33:52.336]# RECV ASCII> +MQPUBM=0,1,0,4,"PUB" OK 12,AT+MQSUBM 设置多通道订阅 AT+MQMULTEN 使能时,对1-5 的配置才会生效,否则只有对通道 0 的配置会生效。 命令 返回结果 查询指令: AT+MQSUBM=<id>? AT+MQSUBM=<id>,<en>,<qos>,<mode>,[" <topic>"] 参数说明 +MQSUBM=<id>,<en>,<qos>,<mode>,[" <topic>"] OK +MQSUBM=<id>,<en>,<qos>,<mode>,[" <topic>"] OK <id> 整型,topic 通道标号,范围 0~5,对应六个 topic。 <en> 整型,使能,默认值 0 。 0 1 关闭 使能 <qos> 整型,发布qos,默认值 0 。 第 49 页 共 153 页 0 1 2 qos0 qos1 qos2 <mode> 整型,发布模式,默认值 0 0 1 2 3 4 使用设备的IMEI作为订阅的topic 使用设备的IMSI作为订阅的topic 使用设备的ICCID作为订阅的topic 使用设备的NAME作为订阅的topic 使用自定义topic <topic> 字符串,发布topic,可选参数,仅在 mode 为 4 时生效。 注:支持特殊符号的映射,例如 "<#IMEI>/PUB" 会自动把 <#IMEI> 替换成设备IMEI,具体参考指令 AT+MAPEN 。 示例: [2024-09-30 13:32:52.633]# SEND ASCII> AT+MQSUBM=0,1,0,4,"SUB" [2024-09-30 13:32:52.928]# RECV ASCII> +MQSUBM=0,1,0,4,"SUB" OK [2024-09-30 13:32:55.464]# SEND ASCII> AT+MQSUBM=0? [2024-09-30 13:32:55.672]# RECV ASCII> +MQSUBM=0,1,0,4,"SUB" 第 50 页 共 153 页OK 13,+MQRECV 多通道模式接收报文 接收报文 格式: +MQRECV,<topic_id>,<topic>,<datalen>,<data> 参数说明 <topic_id> 整型,topic通道id。 <topic> 字符串,接收数据的 topic 。 <datalen> 整型,接收的数据长度。 <data> 字节流,接收的数据。 示例: [2024-09-30 13:42:46.420]# RECV ASCII> +MQRECV,0,SUB,20,{ "msg": "hello" } [2024-09-30 13:42:50.641]# RECV ASCII> +MQRECV,1,SUB1,20,{ "msg": "hello" } [2024-09-30 13:42:52.502]# RECV ASCII> +MQRECV,2,SUB2,20,{ "msg": "hello" } 14,MQPUB 多通道模式发布报文 接收报文 例 使用 id 发布到 AT+MQPUBM 配置 MQPUB,<mode:0>,<topic_id>, 的 topic <data> MQPUB,0,0,123 自由发布到任意 topic MQPUB,<mode:1>,<topic_name>, <data> MQPUB,1,PUB,123 第 51 页 共 153 页 <mode> 整型,发布模式。 0 1 使用内置 topic 发布到任意topic <topic_id> 整型,要发布的 topic id。 <topic_name> 字符串,要发布的 topic name <data> 数据流,要发布的数据。 示例: [2024-09-30 13:53:27.601]# SEND ASCII>//发布到通道 0 的 topic MQPUB,0,0,123 [2024-09-30 13:53:31.304]# SEND ASCII>//发布到 "PUB" 这个topic MQPUB,1,PUB,123 15,配置MQTT通信服务的最简流程 [2024-09-10 16:16:31.541]# SEND ASCII> AT+DTUTASK="1","20" AT+MQTTIP="mqtt.heclouds.com","6002" AT+MQTT="1143445399","405153","3c39789f97dfe4071e009d62782c20d8" AT+MQPUB="1","0","4","PUB/<#IMEI>" AT+MQSUB="1","0","4","SUB/<#IMEI>" AT+MQMULTEN=0 AT+REST [2024-09-10 16:16:31.772]# RECV ASCII> +DTUTASK="1","20" OK [2024-09-10 16:16:31.899]# RECV ASCII> +MQTTIP="mqtt.heclouds.com","6002" OK [2024-09-10 16:16:32.009]# RECV ASCII> +MQTT="1143445399","405153","3c39789f97dfe4071e009d62782c20d8" OK 第 52 页 共 153 页 [2024-09-10 16:16:32.106]# RECV ASCII> +MQPUB="1","0","4","PUB/<#IMEI>" OK [2024-09-10 16:16:32.201]# RECV ASCII> +MQSUB="1","0","4","SUB/<#IMEI>" OK [2024-09-10 16:16:32.312]# RECV ASCII> +MQMULTEN=0 OK +REST="1" OK [2024-09-10 16:16:34.688]# RECV ASCII> ML307R-DC-DTU V2.7 [2024-09-10 16:16:35.862]# RECV ASCII> SIM:READY [2024-09-10 16:16:38.451]# RECV ASCII> REGSTER:SUCCESS [2024-09-10 16:16:39.350]# RECV ASCII> MQTT_CONNECT:mqtt.heclouds.com:6002 16,配置多通道MQTT通信服务的最简流程 [2024-09-30 13:57:52.619]# SEND ASCII> AT+DTUTASKS="MQTT" AT+MQTTIP="mqtt.heclouds.com","6002" AT+MQTT="1143444943","405153","46e28793c2054b211def7d30fdc02e9c" AT+MQMULTEN=1 AT+MQSUBM=0,1,0,4,"SUB" AT+MQSUBM=1,1,0,4,"SUB1" AT+MQSUBM=2,1,0,4,"SUB2" AT+MQPUBM=0,1,0,4,"PUB" AT+MQPUBM=1,1,0,4,"PUB1" AT+MQPUBM=2,1,0,4,"PUB2" AT+REST [2024-09-30 13:57:52.952]# RECV ASCII> 第 53 页 共 153 页 +DTUTASKS="TCP" OK [2024-09-30 13:57:53.127]# RECV ASCII> +MQTTIP="mqtt.heclouds.com","6002" OK [2024-09-30 13:57:53.291]# RECV ASCII> +MQTT="1143444943","405153","46e28793c2054b211def7d30fdc02e9c" OK [2024-09-30 13:57:53.434]# RECV ASCII> +MQMULTEN=1 OK [2024-09-30 13:57:53.600]# RECV ASCII> +MQSUBM=0,1,0,4,"SUB" OK [2024-09-30 13:57:53.790]# RECV ASCII> +MQSUBM=1,1,0,4,"SUB1" OK [2024-09-30 13:57:53.940]# RECV ASCII> +MQSUBM=2,1,0,4,"SUB2" OK [2024-09-30 13:57:54.110]# RECV ASCII> +MQPUBM=0,1,0,4,"PUB" OK [2024-09-30 13:57:54.271]# RECV ASCII> +MQPUBM=1,1,0,4,"PUB1" OK [2024-09-30 13:57:54.451]# RECV ASCII> +MQPUBM=2,1,0,4,"PUB2" OK +REST="1" OK [2024-09-30 13:57:56.974]# RECV ASCII> ML307R-DC-DTU V2.8 第 54 页 共 153 页[2024-09-30 13:57:58.111]# RECV ASCII> SIM:READY [2024-09-30 13:58:00.817]# RECV ASCII> REGSTER:SUCCESS [2024-09-30 13:58:01.216]# RECV ASCII> MQTT_CONNECT:mqtt.heclouds.com:6002 [2024-09-30 13:58:04.897]# RECV ASCII> +MQRECV,0,SUB,20,{ "msg": "hello" } [2024-09-30 13:58:07.413]# RECV ASCII> +MQRECV,1,SUB1,20,{ "msg": "hello" } [2024-09-30 13:58:09.587]# RECV ASCII> +MQRECV,2,SUB2,20,{ "msg": "hello" } [2024-09-30 13:59:01.351]# SEND ASCII> MQPUB,0,0,123 [2024-09-30 13:59:04.993]# SEND ASCII> MQPUB,0,1,123 [2024-09-30 13:59:07.571]# SEND ASCII> MQPUB,0,2,123 [2024-09-30 13:59:17.620]# SEND ASCII> MQPUB,1,PUB,123 [2024-09-30 13:59:23.261]# SEND ASCII> MQPUB,1,PUB1,123 [2024-09-30 13:59:25.074]# SEND ASCII> MQPUB,1,PUB2,123 第 55 页 共 153 页八,新版ONENET 通信 ONENET 服务器具备以下限制 不能用于代理设备的数据上传,否则断开连接; 不能订阅代理设备或不属于控制连接自身的topic,否则断开连接或订阅失败; 控制连接有且只能有一个,重复登录会踢掉前一个控制连接; 和设备一致,不支持qos2、不支持retain、will等特性; 和设备一致,订阅、取消订阅filter个数不能超过8。 1,AT+ONENET 链接参数设置指令 命令 查询设置: AT+ONENET? 返回结果 +ONENET=<reg_mode>,"<产品id>"," <access_key>","[<设备名称/id>]" OK 第 56 页 共 153 页 命令 返回结果 AT+ONENET=<reg_mode>,"<产品id>"," <access_key>","[<设备名称/id>]" AT+ONENET=<reg_mode>,"<产品id>"," <access_key>","[<设备名称/id>]" OK 参数说明: <reg_mode> 整型,注册模式。 0 1 2 3 自定义<设备名称/id> 使用 IMEI 作为 <设备名称/id> 使用 IMSI作为 <设备名称/id> 使用 ICCID 作为 <设备名称/id> <产品id> 字符串,onenet参数里的产品id,最大长度128。 <access_key> 字符串,onenet 参数里的 access_key,最大长度128。 注:很多用户错误的使用成了设备密钥,这个参数是在产品选项里的 access_key <设备名称/id>:字符串,onenet参数里的 设备名称/id,最大长度128。 示例 [2024-05-28 15:36:33.119]# SEND ASCII> AT+ONENET=1,"KR98uQ8dXH","30+/PceLAw/LFV/P5w2BEWVVHfVF451LLcW90Zthhwk=" [2024-05-28 15:36:33.610]# RECV ASCII> +ONENET=1,"KR98uQ8dXH","30+/PceLAw/LFV/P5w2BEWVVHfVF451LLcW90Zthhwk=" OK 第 57 页 共 153 页2,AT+ONENETCLEAN 设置CLEAN选项 命令 返回结果 +ONENETCLEAN=<en> OK +ONENETCLEAN=<en> OK 查询指令: AT+ONENETCLEAN? AT+ONENETCLEAN=<en> 参数说明: <en> 整型,mqtt clean,默认值 1 。 0 1 关闭 使能 注:onenet 平台要求 clean session 必须为 1,否则无法链接,但是这个参数依旧提供了配置选项。 示例: [2024-10-18 15:33:34.973]# SEND ASCII> AT+ONENETCLEAN=1 [2024-10-18 15:33:35.438]# RECV ASCII> +ONENETCLEAN=1 OK [2024-10-18 15:33:37.114]# SEND ASCII> AT+ONENETCLEAN? [2024-10-18 15:33:37.326]# RECV ASCII> +ONENETCLEAN=1 OK 3,AT+ONENETKEEP 设置KEEPALIVE 命令 查询指令: AT+ONENETKEEP? 返回结果 +ONENETKEEP=<time> OK 第 58 页 共 153 页 命令 返回结果 AT+ONENETKEEP=<time> 默认配置 参数说明: +ONENETKEEP=<time> OK AT+ONENETKEEP=300 <time> 整型,mqtt keepalive,范围 0~65535,默认值 300 。 示例: [2024-10-18 15:57:10.203]# SEND ASCII> AT+ONENETKEEP=300 [2024-10-18 15:57:10.490]# RECV ASCII> +ONENETKEEP=60 OK [2024-10-18 15:57:11.793]# SEND ASCII> AT+ONENETKEEP? [2024-10-18 15:57:11.999]# RECV ASCII> +ONENETKEEP=60 OK 4,AT+ONENETSUB 设置自动订阅 这个指令是设置 ONENET 的自动订阅,ONENET 支持订阅一部分内置 TOPIC,同时提供了 8 组可以用户 自定义的TOPIC。 命令 查询设置: AT+ONENETSUB? 返回结果 查询成功时: +ONENETSUB=<id>,<en>,["<user_topic>"] OK 配置成功时: AT+ONENETSUB=<id>,<en>,["<user_topic>"] AT+ONENETSUB=<id>,<en>,["<user_topic>"] OK 参数说明: <id> 整型,通道id,范围查看下方列表。 第 59 页 共 153 页 <en> 整型,使能。 0 1 关闭 使能 <user_topic> 字符串,自定义 topic ,这个参数是可选的,且只在 100 ~ 107 这个 id 段时生效,这个自 定义 topic 是支持映射的,详细内容查看映射功能的介绍。 示例: //订阅 id0 的topic $sys/<pid>/<device-name>/thing/property/post/reply [2024-05-28 16:14:50.998]# SEND ASCII> AT+ONENETSUB=0,1 [2024-05-28 16:14:51.334]# RECV ASCII> +ONENETSUB=0,1 OK //订阅自定义topic,且使用了两个映射参数,用来订阅服务的topic,他的原型是 //$sys/<pid>/<device-name>/thing/service/<identifier>/invoke [2024-12-25 17:55:31.895]# SEND ASCII> AT+ONENETSUB=100,1,"$sys/<#ONENET_PID>/<#ONENET_DID>/thing/service/config/invoke" [2024-12-25 17:55:32.158]# RECV ASCII> +ONENETSUBE=100,1,"$sys/<#ONENET_PID>/<#ONENET_DID>/thing/service/config/invoke" OK [2024-12-25 17:57:35.219]# SEND ASCII> AT+ONENETSUB=101,1,"$sys/<#ONENET_PID>/<#ONENET_DID>/thing/service/info/invoke" [2024-12-25 17:57:35.455]# RECV ASCII> +ONENETSUBE=101,1,"$sys/<#ONENET_PID>/<#ONENET_DID>/thing/service/info/invoke" OK id 列表 id 通道 topic 功能 0 1 2 $sys/<pid>/<device-name>/thing/property/post/reply 设备属性上报响应 $sys/<pid>/<device-name>/thing/property/set 设备属性设置请求 $sys/<pid>/<device- 设备获取属性期望值 name>/thing/property/desired/get/reply 响应 第 60 页 共 153 页id 通道 topic 功能 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 .... $sys/<pid>/<device- 设备清除属性期望值 name>/thing/property/desired/delete/reply 响应 $sys/<pid>/<device-name>/thing/property/get 设备属性获取请求 $sys/<pid>/<device-name>/thing/event/post/reply 设备事件上报响应 -- 废弃 --- $sys/<pid>/<device-name>/dp/post/json/accepted $sys/<pid>/<device-name>/dp/post/json/rejected 设备上传数据点成功 响应 设备上传数据点失败 响应 $sys/<pid>/<device-name>/cmd/request/# 设备同步命令请求 $sys/<pid>/<device-name>/cmd/response/# $sys/<pid>/<device-name>/image/update/accepted $sys/<pid>/<device-name>/image/update/rejected 设备同步命令响应成 功/失败 设备更新镜像成功响 应 设备更新镜像失败响 应 $sys/<pid>/<device-name>/image/get 设备获取镜像请求 $sys/<pid>/<device-name>/image/get/accepted $sys/<pid>/<device-name>/image/get/rejected $sys/<pid>/<device-name>/image/update/delta 设备获取镜像成功响 应 设备获取镜像失败响 应 设备镜像delta推送 请求 $sys/<pid>/<device-name>/ota/inform 系统OTA升级通知 保留的 通道 100~107 用户自定义通道 用户自定义 第 61 页 共 153 页 5,AT+ONENETSUBLS 查询自动订阅表 命令 查询设置: AT+ONENETSUBLS? 参数说明: 返回结果 查询成功时: +ONENETSUBLS= <list> ... OK <list> 字符串,可订阅列表,格式为:[ id,topic,备注 ] 示例: [2024-05-28 16:13:23.251]# SEND ASCII> AT+ONENETSUBLS? [2024-05-28 16:13:23.665]# RECV ASCII> +ONENETSUBLS= 0 , $sys/<pid>/<device-name>/thing/property/post/reply , 设备属性上报响应 1 , $sys/<pid>/<device-name>/thing/property/set , 设备属性设置请求 2 , $sys/<pid>/<device-name>/thing/property/desired/get/reply , 设备获取属性期望值响 应 3 , $sys/<pid>/<device-name>/thing/property/desired/delete/reply , 设备清除属性期望 值响应 4 , $sys/<pid>/<device-name>/thing/property/get , 设备属性获取请求 5 , $sys/<pid>/<device-name>/thing/event/post/reply , 设备事件上报响应 6 , ---,保留 7 , $sys/<pid>/<device-name>/dp/post/json/accepted , 设备上传数据点成功响应 8 , $sys/<pid>/<device-name>/dp/post/json/rejected , 设备上传数据点失败响应 9 , $sys/<pid>/<device-name>/cmd/request/# , 设备同步命令请求 10 , $sys/<pid>/<device-name>/cmd/response/# , 设备同步命令响应成功/失败 11 , $sys/<pid>/<device-name>/image/update/accepted , 设备更新镜像成功响应 12 , $sys/<pid>/<device-name>/image/update/rejected , 设备更新镜像失败响应 13 , $sys/<pid>/<device-name>/image/get , 设备获取镜像请求 14 , $sys/<pid>/<device-name>/image/get/accepted , 设备获取镜像成功响应 15 , $sys/<pid>/<device-name>/image/get/rejected , 设备获取镜像失败响应 16 , $sys/<pid>/<device-name>/image/update/delta , 设备镜像delta推送请求 17 , $sys/<pid>/<device-name>/ota/inform , 系统OTA升级通知 OK 第 62 页 共 153 页 6,AT+ONENETPUBLS 查询发布topic表 命令 查询设置: AT+ONENETPUBLS? 参数说明: 返回结果 查询成功时: +ONENETPUBLS= <list> ... OK <list> 字符串,可订阅列表,格式为:[ id,topic,备注 ] 示例: [2024-05-28 16:17:55.485]# SEND ASCII> AT+ONENETPUBLS [2024-05-28 16:17:55.709]# RECV ASCII> +ONENETPUBLS= 0 , $sys/<pid>/<device-name>/thing/property/post , 设备属性上报请求 1 , $sys/<pid>/<device-name>/thing/property/set_reply , 设备属性设置响应 2 , $sys/<pid>/<device-name>/thing/property/desired/get , 设备获取属性期望值请求 3 , $sys/<pid>/<device-name>/thing/property/desired/delete , 设备清除属性期望值请求 4 , $sys/<pid>/<device-name>/thing/property/get_reply , 设备属性获取响应 5 , $sys/<pid>/<device-name>/thing/event/post , 设备事件上报请求 6 , $sys/<pid>/<device-name>/dp/post/json , 设备上传数据点请求【对应数据流功能】 7 , $sys/<pid>/<device-name>/image/update , 设备更新镜像请求 8 , $sys/<pid>/<device-name>/ota/inform_reply , 设备回复系统OTA升级通知 OK 7,AT+ONENETMULT 使能多通道 onenet默认开启多通道,如果要使用透传功能,则需要关闭多通道,并设置透传id 命令 返回结果 查询设置: AT+ONENETMULT? 查询成功时: +ONENETMULT=<en> OK 配置成功时: AT+ONENETMULT=<en> AT+ONENETMULT=<en> OK 参数说明: <en> 整型,使能,默认 0 。 第 63 页 共 153 页 0 1 关闭多通道 开启多通道 8,AT+ONENETSUBMODE 订阅接收设置 命令 查询设置: 返回结果 查询成功时: +ONENETSUBMODE=<id>,<topic_name_en>, AT+ONENETSUBMODE? <len_en>,<out_mode> OK 配置成功时: AT+ONENETSUB=<id>,<topic_name_en>, AT+ONENETSUB=<id>,<topic_name_en>, <len_en>,<out_mode> <len_en>,<out_mode> OK 参数说明: <id> 整型,通道id。可通过 AT+ONENETSUBLS 获取列表。 <topic_name_en> 整型,返回报文使能。 0 1 返回的报文不包含名称 返回的报文包含名称 <len_en> 整型,返回长度位使能。 0 1 返回的报文不包长度位 返回的报文包含长度位 <out_mode> 整型,输出模式, 0 第 64 页 共 153 页 以字符串报文输出 1 以字节流形式输出【暂不支持】 格式详解: 1,字符串模式 +MQRECV,<通道id>,<topic名称>,<长度>,<接受到的数据> 例: +MQRECV,1,$sys/1LBo5p7mP6/863270073564275/thing/property/set,46, {"id":"7","version":"1.0","params":{"temp":3}} 9,AT+ONENETPUBPASS 透传的发布通道 命令 查询设置: AT+ONENETPUBPASS? 返回结果 查询成功时: +ONENETPUBPASS=<id> OK 配置成功时: AT+ONENETPUBPASS=<id> AT+ONENETPUBPASS=<id> OK 参数说明: <id> 整型,要透传的通道 id 。 示例: [2024-05-29 09:40:49.102]# SEND ASCII> AT+ONENETPUBPASS? [2024-05-29 09:40:49.464]# RECV ASCII> +ONENETPUBPASS=0 OK [2024-05-29 09:40:51.520]# SEND ASCII> AT+ONENETPUBPASS=1 [2024-05-29 09:40:51.848]# RECV ASCII> +ONENETPUBPASS=1 OK 第 65 页 共 153 页 [2024-05-29 09:40:53.336]# SEND ASCII> AT+ONENETPUBPASS? [2024-05-29 09:40:53.547]# RECV ASCII> +ONENETPUBPASS=1 OK 10,AT+ONENETSUBPASS 透传的订阅通道 命令 查询设置: AT+ONENETSUBPASS? 返回结果 查询成功时: +ONENETSUBPASS=<id> OK 配置成功时: AT+ONENETSUBPASS=<id> AT+ONENETSUBPASS=<id> OK 参数说明: <id> 整型,要透传的通道 id 。 示例: [2024-05-29 09:42:03.206]# SEND ASCII> AT+ONENETSUBPASS? [2024-05-29 09:42:03.448]# RECV ASCII> +ONENETSUBPASS=1 OK [2024-05-29 09:42:08.711]# SEND ASCII> AT+ONENETSUBPASS=2 [2024-05-29 09:42:09.031]# RECV ASCII> +ONENETSUBPASS=2 OK [2024-05-29 09:42:10.890]# SEND ASCII> AT+ONENETSUBPASS? [2024-05-29 09:42:11.109]# RECV ASCII> +ONENETSUBPASS=2 第 66 页 共 153 页 OK 11,MQPUB 主动推送topic 这是一个主动推送报文的指令,注意他不是AT开头的 命令 MQPUB,[<pub_mode:0>],[<pub_topic>],<data> MQPUB,[<pub_mode:1>],[<pub_topic id>],<data> <pub_mode> 整型,发布模式。 0 1 发布到任意topic 发布到设定的通道 id <pub_topic> 字符串,发布topic 。 <pub_id> 整型,发布内置的topic通道 id 。 <data> 数据流,要发送的数据包 例:以下是推送的格式 //推送模式0,推送到内置id 0 $sys/<pid>/<device-name>/thing/property/post MQPUB,0,0,{"id":"1","params":{"temp":{"value":66}}} //推送模式1,推送到指定topic,这种模式可以自行填充topic,主要是因为,比如一些命令下发是随机的 topic,只能通过这种方式进行回发 MQPUB,1,$sys/KR98uQ8dXH/863270073564275/cmd/response/73cfe076-de73-4cb0-a69b- ff5196e11b71,OK 九,IO控制指令 设备提供了最多 8 个 IO 可供用户使用 1,AT+IOCFG 配置IO功能 命令 配置命令: AT+IOCFG=<id>,<mode>,<pull> 返回结果 正确响应: +IOCFG=<id>,<mode>,<pull> OK 第 67 页 共 153 页 返回结果 +IOCFG=<id>,<mode>,<pull> OK 命令 查询命令: AT+IOCFG=<id>? 参数说明: <id> 整型,IO通道标号,范围 1~8 <mode> 整型,IO模式。 0 1 输入模式 输出模式 <pull> 整型,上下拉,默认 0 0 1 2 None 无上下拉 Down 下拉 Up 上拉 实例: [2024-09-10 16:46:57.838]# SEND ASCII> AT+IOCFG=1,1,1 [2024-09-10 16:46:58.150]# RECV ASCII> +IOCFG=1,1,1 OK [2024-09-10 16:47:13.121]# SEND ASCII> AT+IOCFG=1? [2024-09-10 16:47:13.337]# RECV ASCII> +IOCFG=1,1,1 OK 第 68 页 共 153 页返回结果 正确响应: +IOCFGALL=<io_mode>,<io_pull> OK +IOCFGALL=1,<io_mode>,<io_pull> 2,<io_mode>,<io_pull> 3,<io_mode>,<io_pull> 4,<io_mode>,<io_pull> 5,<io_mode>,<io_pull> 6,<io_mode>,<io_pull> 7,<io_mode>,<io_pull> 8,<io_mode>,<io_pull> OK 2,AT+IOCFGALL 配置IO功能 命令 配置命令: AT+IOCFGALL=<io_mode>,<io_pull> AT+IOCFGALL? 参数说明: <io_mode> 整型,IO模式。 0 1 输入模式 输出模式 <io_pull> 整型,上下拉。 0 1 2 None 无上下拉 Down 下拉 Up 上拉 实例: 第 69 页 共 153 页 [2024-09-11 18:27:17.109]# SEND ASCII> AT+IOCFGALL=1,1 [2024-09-11 18:27:17.804]# RECV ASCII> +IOCFGALL=1,1 OK 3,AT+IOSET 控制IO 对已经配置为输出模式的IO有效,否则返回ERROR 查询命令时是查询IO最后配置的输出状态,如果IO是输入模式,也会返回当前的IO状态。 命令 配置命令: AT+IOSET=<id>,<state> 返回结果 正确响应: 错误返回 正确响应: +IOSET=<id>,<state> +IOSET="<error message>" OK ERROR 查询命令: AT+IOSET=<id>? +IOSET=<id>,<state> OK 参数说明: <id> 整型,IO通道,范围 1~8。 <state> 整型,电平。 0 1 低电平 高电平 实例: [2023-02-19 18:16:07.020]# SEND ASCII> //通道2,IO置高 AT+IOSET="2","1" [2023-02-19 18:16:07.124]# RECV ASCII> +IOSET="2","1" OK 第 70 页 共 153 页 [2023-02-19 18:16:14.252]# SEND ASCII> //通道2,IO置低 AT+IOSET="2","0" [2023-02-19 18:16:14.343]# RECV ASCII> +IOSET="2","0" OK 4,AT+IOSETALL 控制所有IO 对所有的IO进行配置,只会对输出模式的IO有效,否则略过。 返回结果 正确响应: +IOSETALL=<state> OK 命令 配置命令: AT+IOSETALL=<state> 参数说明 <state> 整型,电平。 0 1 低电平 高电平 实例: [2024-09-11 15:58:30.177]# SEND ASCII> AT+IOSETALL=1 [2024-09-11 15:58:30.376]# RECV ASCII> +IOSETALL=1 OK [2024-09-11 15:58:32.546]# SEND ASCII> AT+IOSETALL=0 [2024-09-11 15:58:32.732]# RECV ASCII> +IOSETALL=0 OK 第 71 页 共 153 页 返回结果 正确响应: +IOGET =<id>,<state> OK 5,AT+IOGET 读取IO 对已经配置为输出模式的IO有效,否则返回ERROR 命令 配置命令: AT+IOGET =<id> 参数说明: <id> 整型,IO通道,范围 1~8。 <state> 整型,电平。 0 1 低电平 高电平 实例: [2024-09-10 17:10:17.493]# SEND ASCII> AT+IOGET=1 [2024-09-10 17:10:17.697]# RECV ASCII> +IOGET=1,0 OK [2024-09-10 17:10:19.073]# SEND ASCII> AT+IOGET=2 [2024-09-10 17:10:19.245]# RECV ASCII> +IOGET=2,0 OK 6,AT+IOGETALL 读取所有IO状态 读取所有io状态,无论是否是输入模式,都会返回当前的IO状态。 第 72 页 共 153 页 命令 返回结果 正确响应: +IOGET =<io1_state>,<io2_state>,<io3_state>,<io4_state>,<io5_state>, <io6_state>,<io7_state>,<io8_state> OK 配置命 令: AT+IOGET 参数说明: <id> 整型,IO通道,范围 1~8。 实例: [2024-09-11 15:41:48.772]# SEND ASCII> AT+IOGETALL [2024-09-11 15:41:48.935]# RECV ASCII> +IOGETALL=0,0,0,0,0,0,0,0 OK 7,AT+IOTIMUP 设置IO定时上报 只会对输入模式的IO生效 命令 配置命令: AT+IOTIMUP=<id>,<en>,<time>,<mode> 返回结果 正确响应: +IOTIMUP=<id>,<en>,<time>,<mode> OK 正确响应: AT+IOTIMUP=<id>? +IOTIMUP=<id>,<en>,<time>,<mode> OK 参数说明: <id> 整型,IO通道,范围 1~8。 <en> 整型,定时上报使能。 0 1 关闭 使能 第 73 页 共 153 页 <time> 整型,上报频率,单位ms。 <mode>整型,上报格式。 0 1 AT格式上报,例: +IOSTATE=1,1 JSON格式上报 例: {"id":1,"state":1} 实例: [2024-09-10 16:46:57.838]# SEND ASCII>// AT+IOCFG=1,0,1 [2024-09-10 16:46:58.150]# RECV ASCII> +IOCFG=1,0,1 OK [2024-09-11 21:44:38.285]# SEND ASCII> AT+IOTIMUP=1,1,5000,0 [2024-09-11 21:44:38.517]# RECV ASCII> +IOTIMUP=1,1,5000,0 OK [2024-09-11 21:44:50.798]# SEND ASCII> AT+IOTIMUP=1? [2024-09-11 21:44:50.983]# RECV ASCII> +IOTIMUP=1,1,5000,0 OK 8,AT+IOACUP 设置IO变化上报 只对设置为输入模式的IO有效,这个功能在使用 IO任务时失效。 命令 配置命令: AT+IOACUP=<id>,<en>,<mode> 返回结果 正确响应: +IOACUP=<id>,<en>,<mode> OK 第 74 页 共 153 页 命令 返回结果 正确响应: AT+IOACUP=<id>? +IOACUP=<id>,<en>,<mode> OK 参数说明: <id> 整型,IO通道,范围 1~8。 <en>整型,定时上报使能。 0 1 关闭 使能 <mode>整型,上报格式。 0 1 AT格式上报,例: +IOSTATE=1,1 JSON格式上报 例: {"id":1,"state":1} 实例: [2024-09-11 21:47:19.404]# SEND ASCII> AT+IOACUP=1,1,1 [2024-09-11 21:47:19.678]# RECV ASCII> +IOACUP=1,1,1 OK [2024-09-11 21:47:22.450]# SEND ASCII> AT+IOACUP=1? [2024-09-11 21:47:22.661]# RECV ASCII> +IOACUP=1,1,1 OK 第 75 页 共 153 页9,AT+IOJOG IO点动触发 设备进入低电平,并维持一段时间的高电平,再自动恢复,执行完毕前不能继续执行指令。 命令 返回结果 错误结果 配置命令: AT+IOJOG =<id>,<time> 正确响应: 错误响应: +IOJOG =<id>,<time> +IOJOG="<error message>" OK 正确响应: ERROR AT+IOJOG =<id>? +IOJOG =<id>,<time> OK 参数说明: <id> 整型,IO通道,范围 1~8。 <time> 整型 ,高电平维持时间,单位ms,范围10-65535,精度10ms,最低值10ms。 实例: [2024-09-11 21:51:52.534]# SEND ASCII> AT+IOJOG=1,5000 [2024-09-11 21:51:52.747]# RECV ASCII> +IOJOG=1,5000 OK [2024-09-11 21:51:56.898]# SEND ASCII> AT+IOJOG=1,5000 [2024-09-11 21:51:57.097]# RECV ASCII>//设备当前任务还未执行完 +IOJOG="already running" ERROR 10,AT+IOTRGCFG IO触发器配置 触发器功能是和任务功能绑定的,指用 IO 触发绑定的任务。 第 76 页 共 153 页 命令 配置命令: AT+IOTRGCFG=<id>,<en>,<mode>,<time> 返回结果 正确响应: +IOTRGCFG=<id>,<en>,<mode>,<time> OK 正确响应: AT+IOTRGCFG=<id>? +IOTRGCFG=<id>,<en>,<mode>,<time> OK 注:设备的采样模式为扫描采样,对于快速变化的波形是难以抓捕的,且时间精度为10ms,该功 能只适用于一些低速采样的场合,例如按键,投币器,等的简易脉冲信号(即会维持一段时间的脉 冲)。 且使用该功能时需要把对应的采样 io 配置为输入模式,并根据需要配置其上下拉。 参数说明: <id> 整型,IO通道,范围 1~8。 <en> 整型,定时上报使能。 0 1 关闭 使能 <mode> 整型,触发模式。 0 上升沿触发,上升沿到来时开始判定,维持高电平 <time> 时间后触发成功,当 <time> 设置为 0 时,则是下降沿直接触发。 1 下降沿触发,下降沿到来时开始判定,维持低电平 <time> 时间后触发成功,当 <time> 设置为 0 时,则是下降沿直接触发。 2 上升脉冲触发,需要满足一个完整的上升脉冲,在下降沿到来时进行结算,电平维持时间大于 <time> 设置的时间时,触发成功。 3 下降脉冲触发,需要满足一个完整的下降脉冲,在上升沿到来时进行结算,电平维持时间大于 <time> 设置的时间时,触发成功。 第 77 页 共 153 页<time> 整型,电平维持时间,指特定的触发必须超过这个时间才生效,单位 ms ,范围 1-65535 ,生 效的最低值是10ms【设置低于10,也生效为10】,且精度是10ms。 [2024-10-23 17:53:40.530]# SEND ASCII>//设置io1,使能,上升脉冲触发,电平最短维持时间 90ms AT+IOTRGCFG=1,1,2,90 [2024-10-23 17:53:40.819]# RECV ASCII> +IOTRGCFG=1,1,2,90 OK [2024-10-23 17:53:44.298]# SEND ASCII> AT+IOTRGCFG=1? [2024-10-23 17:53:44.489]# RECV ASCII> +IOTRGCFG=1,1,2,90 OK 11,AT+IOTRGBD 绑定任务id 触发器绑定任务 id ,需要查看任务相关的指令 AT+USERTASK 。 命令 配置命令: AT+IOTRGBD=<id>,<task_id> 返回结果 正确响应: +IOTRGBD=<id>,<task_id> OK 正确响应: AT+IOTRGBD=<id>? +IOTRGBD=<id>,<task_id> OK 参数说明: <id> 整型,IO通道,范围 1~8 。 *<task_id> * 整型,任务通道 id,范围 1~8 。 [2024-10-23 17:56:01.074]# SEND ASCII>//触发器 1 绑定 任务 1 AT+IOTRGBD=1,1 [2024-10-23 17:56:01.350]# RECV ASCII> +IOTRGBD=1,1 OK 第 78 页 共 153 页 [2024-10-23 17:56:09.938]# SEND ASCII>//触发器 2 绑定 任务 4 AT+IOTRGBD=2,4 [2024-10-23 17:56:10.203]# RECV ASCII> +IOTRGBD=2,4 OK [2024-10-23 17:56:12.186]# SEND ASCII>//查询触发器绑定 AT+IOTRGBD=1? [2024-10-23 17:56:12.380]# RECV ASCII> +IOTRGBD=1,1 OK [2024-10-23 17:56:13.986]# SEND ASCII>//查询触发器绑定 AT+IOTRGBD=2? [2024-10-23 17:56:14.181]# RECV ASCII> +IOTRGBD=2,4 OK 十,自动组包 自动打包功能,可以对发送的数据自动组包,目前对socket和标准mqtt有效。 1,AT+PACKETCFG 配置包格式 命令 返回结果 查询成功时: 读取TTL串口: +PACKETCFG =<id1>,[<id2>],[<id3>],[<id4>], AT+PACKETCFG=<id1>,[<id2>],[<id3>],[<id4>], [<id5>],[<id6>],[<id7>],[<id8>],[<id9>], [<id5>],[<id6>],[<id7>],[<id8>],[<id9>],[<id10>] [<id10>] 配置TTL信息: AT+PACKETCFG=? OK 查询成功时: +PACKETCFG =<id1>,[<id2>],[<id3>],[<id4>], [<id5>],[<id6>],[<id7>],[<id8>],[<id9>], [<id10>] OK 第 79 页 共 153 页 参数说明: <id> 整型,包成本 id ,对应组成成分。 1 2 3 4 5 6 7 8 IMEI [固定15字节] ICCID [固定20字节] IMSI [固定15字节] HEAD [可自定义] TAIL [可自定义] DATA 串口收到的数据 [长度是变化的,可以使用 DATALEN这个长度位来指示] DATALEN [16位无符号无符号整数] CRC16 [16位无符号整数] 例如:AT+PACKETCFG=4,1,7,6,5 对应就是 15字节 HEAD IMEI DATALEN DATA TAIL 2,AT+PACKETHEAD 设置包头 命令 读取TTL串口: AT+PACKETHEAD=<hex_str> 配置TTL信息: AT+PACKETHEAD =? 参数说明: 返回结果 查询成功时: +PACKETHEAD=<hex_str> OK 查询成功时: +PACKETHEAD=<hex_str> OK <hex_str> 字符串,16进制字符串编码,例如 AABB 第 80 页 共 153 页 示例: [2024-09-11 22:34:36.782]# SEND ASCII> AT+PACKETHEAD="CCDD" [2024-09-11 22:34:39.921]# RECV ASCII> +PACKETHEAD="CCDD" OK [2024-09-11 22:34:53.879]# SEND ASCII> AT+PACKETHEAD? [2024-09-11 22:34:54.070]# RECV ASCII> +PACKETHEAD="CCDD" OK 3,AT+PACKETTAIL 设置包头 命令 读取TTL串口: AT+PACKETTAIL =<hex_str> 配置TTL信息: AT+PACKETTAIL =? 参数说明: 返回结果 查询成功时: +PACKETTAIL =<hex_str> OK 查询成功时: +PACKETTAIL =<hex_str> OK <hex_str> 字符串,16进制的字符串编码,例如 AABB,最大长度 128 【128是HEX编码长度,对应64字 节的数据】 示例: [2024-09-11 22:34:36.782]# SEND ASCII> AT+PACKETTAIL="CCDD" [2024-09-11 22:34:39.921]# RECV ASCII> +PACKETTAIL="CCDD" OK [2024-09-11 22:34:53.879]# SEND ASCII> AT+PACKETTAIL? 第 81 页 共 153 页 返回结果 查询成功时: +PACKETEN=<en> OK 查询成功时: +PACKETEN=<en> OK [2024-09-11 22:34:54.070]# RECV ASCII> +PACKETTAIL="CCDD" OK 4,AT+PACKETEN 使能组包功能 命令 读取TTL串口: AT+PACKETEN=<en> 配置TTL信息: AT+PACKETEN=? 参数说明: <en> 整型,定时上报使能。 示例: [2024-09-11 22:34:36.782]# SEND ASCII> AT+PACKETEN=1 [2024-09-11 22:34:39.921]# RECV ASCII> +PACKETEN=1 OK [2024-09-11 22:34:53.879]# SEND ASCII> AT+PACKETEN? [2024-09-11 22:34:54.070]# RECV ASCII> +PACKETEN=1 OK 第 82 页 共 153 页 返回结果 查询成功时: +PACKETTEST=<id> OK 查询成功时: +PACKETTEST=<id> OK 5,AT+PACKETTEST 测试组包功能 命令 读取TTL串口: AT+PACKETTEST=<id> 配置TTL信息: AT+PACKETTEST=? 参数说明: <id> 整型,测试功能的输出模式。 1 2 流输出 16进制编码输出 示例: [2024-09-11 22:42:53.351]# SEND ASCII> AT+PACKETTEST=1 [2024-09-11 22:42:53.530]# RECV ASCII> > [2024-09-11 22:42:56.288]# SEND ASCII> 123456 [2024-09-11 22:42:56.543]# RECV HEX>//注意这里是HEX显示的 AA BB 00 06 31 32 33 34 35 36 CC DD [2024-09-11 22:43:04.513]# SEND ASCII> AT+PACKETTEST=2 [2024-09-11 22:43:04.668]# RECV ASCII> > [2024-09-11 22:43:08.908]# SEND ASCII> 123456 [2024-09-11 22:43:09.037]# RECV ASCII> 第 83 页 共 153 页 AABB0006313233343536CCDD 十,预映射 1,功能简介 这个功能可以对发送和收到的数据包,进行一层额外的打包,这样可以减少客户端需要发送的文本量。 例如,设置如下的预映射包: { "data":"<#DATA>" } 客户端发送数据:123 ,则服务器会收到如下的包。 { "data":"123" } 预映射的配置,也是支持基础映射的。 { "lat": <#LBS_LAT>, "lon": <#LBS_LON>, "temperature": "<#DATA>", "iccid": "<#ICCID>", "time":"<#TIME>" } 客户端发送数据:24,以下是服务端收到的,同样的,服务端下发的数据,也能进行预映射。 { "lat": 30.690517, "lon": 104.097833, "temperature": "24", "iccid": "898604F01123C0799288", "time":"2025-01-14 16:43:57" } 2,映射支持列表 支持的参数 映射类 型 含义 长度 示例 DATA 字符串 客户端或服务端下发的数 据包 动态 "860883070172604" DATALEN 整形 客户端或服务端下发的数 固定4字 据包长度 节 "898604F0112340082817" 第 84 页 共 153 页 支持的参数 映射类 型 含义 长度 示例 DATALEN_S 字符串 客户端或服务端下发的数 据包长度 动态 3,AT+PREMAP 配置预映射 返回结果 1,> 2,+PREMAP=<id>,<en> <config> OK +PREMAP=<id>,<en> <config> OK 命令 配置映射: 1,AT+PREMAP=<id>,<en> 2,<config> 读取映射: AT+PREMAP=<id>? 参数说明: <id> 整型,通道 id 。 0 1 上传通道,串口透传给服务器的预映射。 下发通道,服务器透传给设备的预映射。 <en> 整型,映射使能 。 0 1 关闭 开启 <config> 数据流,任意数据,最大长度 1024 。 示例: [2025-01-14 17:10:49.053]# SEND ASCII> AT+PREMAP=0,1 [2025-01-14 17:10:49.141]# RECV ASCII> 第 85 页 共 153 页 > [2025-01-14 17:10:53.884]# SEND ASCII> { "lat": <#LBS_LAT>, "lon": <#LBS_LON>, "温度": "<#DATA>", "iccid": "<#ICCID>", "time":"<#TIME>" } [2025-01-14 17:10:54.199]# RECV ASCII> OK 4,AT+PREMAPH 配置预映射 命令 配置映射: 返回结果 +PREMAPH=<id>,<en>,<config_hex> AT+PREMAPH=<id>,<en>,<config_hex> OK +PREMAPH=<id>,<en>,<config_hex> OK 读取映射: AT+PREMAPH=<id>? 参数说明: <id> 整型,通道 id 。 0 1 上传通道,串口透传给服务器的预映射。 下发通道,服务器透传给设备的预映射。 <en> 整型,映射使能 。 0 1 关闭 开启 <config_hex> 字符串,要配置的映射的十六进制编码,最大长度2048,对应字节长度1024 。 第 86 页 共 153 页 示例: [2025-01-14 17:52:33.050]# SEND ASCII> AT+PREMAPH=0,1,"7B0D0A2020226C6174223A203C234C42535F4C41543E2C0D0A2020226C6F6E223 A203C234C42535F4C4F4E3E2C0D0A202022CEC2B6C8223A20223C23444154413E222C20200D0A2020 226963636964223A20223C2349434349443E222C20200D0A20202274696D65223A223C2354494D453 E220D0A7D" [2025-01-14 17:52:33.291]# RECV ASCII> +PREMAPH=0,1,"7B0D0A2020226C6174223A203C234C42535F4C41543E2C0D0A2020226C6F6E223A2 03C234C42535F4C4F4E3E2C0D0A202022CEC2B6C8223A20223C23444154413E222C20200D0A202022 6963636964223A20223C2349434349443E222C20200D0A20202274696D65223A223C2354494D453E2 20D0A7D" OK [2025-01-14 17:52:36.850]# SEND ASCII> AT+PREMAPH=0? [2025-01-14 17:52:36.954]# RECV ASCII> +PREMAPH=0,1,"7B0D0A2020226C6174223A203C234C42535F4C41543E2C0D0A2020226C6F6E223A2 03C234C42535F4C4F4E3E2C0D0A202022CEC2B6C8223A20223C23444154413E222C20200D0A202022 6963636964223A20223C2349434349443E222C20200D0A20202274696D65223A223C2354494D453E2 20D0A7D" 十一,映射和变换 1,AT+MAPEN 关闭和使能内部映射 通过特定的字符串映射内部参数 返回结果 查询成功时: +MAPEN=<write_en>,<recv_en>,<other_en> OK 查询成功时: +MAPEN=<write_en>,<recv_en>,<other_en> OK 命令 配置映射: AT+MAPEN=<write_en>,<recv_en>,<other_en> 读取映射: AT+MAPEN? 参数说明: <write_en> 整型,上传数据映射使能,默认值 0 。 0 第 87 页 共 153 页 上传数据关闭替换 1 上传数据打开替换 <recv_en> 整型,串口输出数据映射使能,默认值 0 。 0 1 接收数据关闭替换。 接收数据打开替换。 <other_en> 整型,其他映射使能,默认值 1 。 0 1 其他数据关闭替换 其他数据打开替换 注:包括注册包,心跳包,MQTT 的 TOPIC 和 三元组 。 示例: [2024-09-11 22:49:33.936]# SEND ASCII> AT+MAPEN? [2024-09-11 22:49:34.116]# RECV ASCII> +MAPEN=0,0,1 OK [2024-09-11 22:49:38.448]# SEND ASCII> AT+MAPEN=1,1,1 [2024-09-11 22:49:38.716]# RECV ASCII> +MAPEN=1,1,1 OK 第 88 页 共 153 页返回结果 查询成功时: +MAPTEST=<id> OK 查询成功时: +MAPTEST=<id> OK 2,AT+MAPTEST 测试映射功能 命令 读取TTL串口: AT+MAPTEST=<id> 配置TTL信息: AT+MAPTEST=? 参数说明: <id> 整型,输出模式。 1 2 流输出 十六进制编码输出 示例: [2024-09-11 23:02:02.015]# SEND ASCII> AT+MAPTEST=1 [2024-09-11 23:02:02.213]# RECV ASCII> > [2024-09-11 23:02:16.278]# SEND ASCII> IMEI:<#IMEI> [2024-09-11 23:02:16.460]# RECV ASCII> IMEI:860883070172604 3,AT+CONVERT 字符串十六进制变换 解析接收的十六进制字符串,和发送的数据转换成十六进制字符串 命令 配置转换: AT+CONVERT=<write_en>,<recv_en> 返回结果 查询成功时: +CONVERT=<write_en>,<recv_en> OK 第 89 页 共 153 页 命令 读取转换: AT+CONVERT? 参数说明: 返回结果 查询成功时: +CONVERT=<write_en>,<recv_en> OK <write_en> 整型,发往串口的数据,流转十六进制编码,串口接收 [0x33,0x34,0x35] 转换后推送服务 器的数据为 "333535" ,默认 0 。 0 1 上传数据关闭转换 上传数据打开转换 <recv_en> 整型,服务器下发的十六进制编码数据转流,如服务器下发 "333536" 转换后推送串口的数据 为 [0x33,0x34,0x35] ,当接收的数据不能正常转换时会中断转换,推送已转换成功的部分。 0 1 接收数据关闭转换【默认】 接收数据打开转换 示例: [2024-09-18 13:45:51.076]# SEND ASCII> AT+CONVERT=1,1, [2024-09-18 13:45:51.339]# RECV ASCII> +CONVERT=1,1 OK [2024-09-18 13:45:52.852]# SEND ASCII> AT+CONVERT? [2024-09-18 13:45:53.028]# RECV ASCII> +CONVERT=1,1 OK 第 90 页 共 153 页4,映射支持列表 支持映射的列表如下,实际效果用指令测试为主 注:示例中使用引号"",并不表示映射结果包括引号,仅指示他是字符串类型,而 [] 符号表示这是 一个字节内的实际数据,需加以区分。 支持的参数 IMEI ICCID IMSI CSQ CSQ_S NAME LBS VER VBAT VBAT_S LAC LAC_S CELL CELL_S 映 射 类 型 字 符 串 字 符 串 字 符 串 整 型 字 符 串 字 符 串 字 符 串 字 符 串 整 型 字 符 串 整 型 字 符 串 整 型 字 符 串 含义 长度 示例 IMEI 号 ICCID号 IMSI号 信号强度值 固定 的15 字节 固定 的20 字节 固定 的 固定 的1 个字 节 "860883070172604" "898604F0112340082817" "460087082602817" [0x17] 信号强度值 动态 "23" 设备命名 动态 "ML307R-DTU" 基站定位 动态 "30.69094,104.099977" 系统版本 动态 "V2.83-2024/10/22" 系统内核电 压,单位毫伏 固定 2字 节 [0x39] [0x0e] 系统内核电 压,单位毫伏 动态 "926" 区域码 固定 四个 字节 [1B] [81] 区域码 动态 "0x811b" 小区号 固定 四个 字节 [C0] [8A] [FE] [03] 小区号 动态 "0x3fe8ac0" 第 91 页 共 153 页 支持的参数 IO[1-8] IO[1-8]_S UTC TIME ADC1 ADC1_S ADC2 ADC2_S GPS_STATE GPS_STATE_S GPS_LAT GPS_LAT_S GPS_LON GPS_LON_S GPS_TIME GPS_SPEED GPS_SPEED_S 映 射 类 型 整 型 字 符 串 字 符 串 字 符 串 整 型 字 符 串 整 型 字 符 串 整 型 字 符 串 浮 点 型 字 符 串 浮 点 型 字 符 串 字 符 串 浮 点 型 字 符 串 含义 长度 示例 IO电平状态 IO电平状态 固定 一个 字节 固定 一个 字节 [0x01] "1" 秒级时间戳 动态 "1729748767" 固定 19字 节 固定 2字 节 固定 2字 节 时间 ADC通道1的 电压,单位毫 伏 ADC通道1的 电压,单位毫 伏动态 ADC通道2的 电压,单位毫 伏 ADC通道2的 "2024-10-24 13:47:09" [0x39] [0x0e] "926" [0x39] [0x0e] 电压,单位毫 动态 "926" 伏 GPS 定位状 态,1 表示成 功,0 无效 GPS 定位状 态,1 表示成 功,0 无效 纬度 固定 一个 字节 固定 一个 字节 固定 四个 字节 [0x01] or [0x00] "1" or "0" 30.691465 纬度 动态 "30.691465" 经度 固定 四个 字节 104.100014 经度 动态 "104.100014" GPS 获取的时 间 GPS 获取的速 度 固定 17字 节 固定 四个 字节 "24-11-27 08:03:11" 100 GPS 获取的速 度 动态 "100" 第 92 页 共 153 页 支持的参数 GPS_RAW LBS_LAT LBS_LON 映 射 类 型 字 符 串 字 符 串 字 符 串 含义 长度 示例 $GNGGA,080311.000,3041.4879,N,10406.0009,E,1,06,1.7,464.4,M,0.0,M,,75 $GNGLL,3041.4879,N,10406.0009,E,080311.000,A,A42 $GPGSA,A,3,04,09,16,03,07,,,,,,,,2.5,1.7,1.935 GPS的原始报 $BDGSA,A,3,09,,,,,,,,,,,,2.5,1.7,1.923 文,这个映射 约 $GPGSV,2,1,07,03,08,218,25,04,70,255,34,07,19,306,22,09,47,301,337E 长度较长,约 600 字节左 600 字节 $GPGSV,2,2,07,16,50,031,34,26,24,054,,31,,,2379 $BDGSV,1,1,01,09,68,007,3258 右。 $GNRMC,080311.000,A,3041.4879,N,10406.0009,E,0.00,0.00,271124,,,A76 $GNVTG,0.00,T,,M,0.00,N,0.00,K,A23 $GNZDA,080311.000,27,11,2024,00,0042 $GPTXT,01,01,01,ANTENNA OK*35 基站定位 动态 "30.69094" 基站定位 动态 "104.099977" 十二,串口 1,AT+SERIAL 修改串口参数信息 指令有两个格式,一个旧格式兼容老版本,新格式可配置第二个串口通道,两个格式都可以使用,新格 式没有引号,注意区分。 命令 读取TTL串口: AT+SERIAL? 配置TTL信息: AT+SERIAL="<buad>","<parity>","<stopbit>"," <databit>" AT+SERIAL=1? 返回结果 查询成功时: +SERIAL="<buad>","<parity>","<stopbit>"," <databit>" OK 查询成功时: +SERIAL="<buad>","<parity>","<stopbit>"," <databit>" OK +SERIAL=<id>,<buad>,<parity>,<stopbit>, <databit> OK 这是配置多通道的格式: +SERIAL=<id>,<buad>,<parity>,<stopbit>, AT+SERIAL=<id>,<buad>,<parity>,<stopbit>, <databit> <databit> 参数说明: OK <id> 整型,串口 id 号,可以通过 AT+SERIALID 查询当前串口对应的通道 id,通常使用的是通道 0 。 0 第 93 页 共 153 页 1 通道 0 通道 1 <buad>:整型,波特率,仅支持以下标准波特率列表,默认值 115200 。 300 600 1200 2400 4800 9600 14400 19200 28800 38400 57600 76800 115200 230400 460800 921600 <parity>:整型,校验位,默认 0 [ NONE ]。 0 1 2 NONE EVEN ODD <stopbit> 整型,停止位 ,默认 0 [ 1 bit ]。 0 1 1 Bit 2 Bit <databit> 整型,数据位,默认 3 [ 8 bit]。 第 94 页 共 153 页0 1 2 3 5 Bit 6 Bit 7 Bit 8 Bit 示例:单通道配置,旧版格式 [2024-10-11 16:17:57.189]# SEND ASCII> AT+SERIAL="115200","0","0","3" [2024-10-11 16:17:57.574]# RECV ASCII> +SERIAL="115200","0","0","3" OK [2024-10-11 16:18:00.564]# SEND ASCII> AT+SERIAL? [2024-10-11 16:18:00.829]# RECV ASCII> +SERIAL="115200","0","0","3" OK 新版格式,多通道配置。 [2024-10-11 16:18:43.756]# SEND ASCII> AT+SERIAL=0,115200,0,0,3 [2024-10-11 16:18:44.177]# RECV ASCII> +SERIAL=0,115200,0,0,3 OK [2024-10-11 16:18:47.049]# SEND ASCII> AT+SERIAL=1,115200,0,0,3 [2024-10-11 16:18:47.477]# RECV ASCII> +SERIAL=1,115200,0,0,3 OK 第 95 页 共 153 页[2024-10-11 16:18:50.738]# SEND ASCII> AT+SERIAL=0? [2024-10-11 16:18:50.996]# RECV ASCII> +SERIAL=0,115200,0,0,3 OK [2024-10-11 16:18:52.251]# SEND ASCII> AT+SERIAL=1? [2024-10-11 16:18:52.536]# RECV ASCII> +SERIAL=1,115200,0,0,3 OK 2,AT+SERIALQUE 修改串口分包信息。 通常情况下不需要修改这些参数,但针对单个包需要很大的长度,或者低波特率场景时需要修改这个 值,低波特率下数据传输速度过慢,需要适当增大分包间隔,不然数据包容易被提前截断。 命令 读取TTL串口: AT+SERIALQUE=<id>? 配置TTL信息: AT+SERIALQUE=<id>,<latency>,<max_size>, <out_delay> 参数说明: 返回结果 查询成功时: +SERIALQUE=<id>,<latency>,<max_size>, <out_delay> OK 查询成功时: +SERIALQUE=<id>,<latency>,<max_size>, <out_delay> OK <id> 整型,串口 id ,可以通过 AT+SERIALID 获取当前通道的ID。 0 1 串口0 串口1 <latency>整型,串口分包时延,超出该时间还未收到新的数据就会打包上传,这是本设备的分包标准, 单位 ms ,时间粒度是 5ms。 第 96 页 共 153 页 <max_size> 整型,单个包的最大长度,单次数据超过这个值会直接被分包,范围 1~8192,默认值8192 。 <out_delay> 整型,这个参数暂时无效。 示例: [2024-10-11 16:25:51.249]# SEND ASCII> AT+SERIALQUE=0,30,4096,20 [2024-10-11 16:25:51.750]# RECV ASCII> +SERIALQUE=0,30,4096,20 OK [2024-10-11 16:25:55.891]# SEND ASCII> AT+SERIALQUE=1,30,4096,20 [2024-10-11 16:25:56.371]# RECV ASCII> +SERIALQUE=1,30,4096,20 OK [2024-10-11 16:25:59.020]# SEND ASCII> AT+SERIALQUE=0? [2024-10-11 16:25:59.342]# RECV ASCII> +SERIALQUE=0,30,4096,20 OK [2024-10-11 16:26:00.434]# SEND ASCII> AT+SERIALQUE=1? [2024-10-11 16:26:00.780]# RECV ASCII> +SERIALQUE=1,30,4096,20 OK 3,AT+BUAD 修改串口波特率。 只需要修改波特率可以使用这个简化指令。 第 97 页 共 153 页 返回结果 查询成功时: +BUAD=<id>,<buad> OK 查询成功时: +BUAD=<id>,<buad> OK 命令 读取TTL串口: AT+BUAD=<id>? 配置TTL信息: AT+BUAD=<id>,<buad> 参数说明: <id> 整型,串口 id 号。 0 1 串口0 串口1 <buad> 整型,波特率,仅支持标准波特率。 300 600 1200 2400 4800 9600 14400 19200 28800 38400 57600 76800 115200 230400 460800 921600 示例: [2024-09-18 12:13:23.121]# SEND ASCII> AT+BUAD=0,115200 [2024-09-18 12:13:23.499]# RECV ASCII> +BUAD=0,115200 第 98 页 共 153 页返回结果 查询成功时: +SERIALID=<id> OK OK [2024-09-18 12:13:35.231]# SEND ASCII> AT+BUAD=0? [2024-09-18 12:13:35.473]# RECV ASCII> +BUAD=0,115200 OK 4,AT+SERIALID 获取串口id。 注:这个指令仅支持串口通讯,不支持网路指令。 命令 读取TTL串口: AT+SERIALID? 参数说明: <id> 整型,串口 id 号。 0 1 串口0 串口1 示例: [2024-09-18 10:43:57.753]# SEND ASCII> AT+SERIALID? [2024-09-18 10:43:58.013]# RECV ASCII> +SERIALID=0 OK 第 99 页 共 153 页 5,AT+CHANNELSET 设置通道 命令 读取通道信息: AT+CHANNEL? 配置通道信息: 返回结果 查询成功时: +CHANNEL=<uart0_recv_en>,<uar1_recv_en>, <uart0_update>,<uart1_update> OK 查询成功时: AT+CHANNEL=<uart0_recv_en>, +CHANNEL=<uart0_recv_en>,<uar1_recv_en>, <uar1_recv_en>,<uart0_update>, <uart0_update>,<uart1_update> <uart1_update> OK 参数说明: <uart0_recv_en> 整型,串口 0 网络下发透传使能。 0 1 串口0 ,关闭网路下发的数据 串口0,接收网络下发的数据 <uar1_recv_en> 整型,串口 1 网络下发透传使能。 0 1 串口1 ,关闭网路下发的数据 串口1,接收网络下发的数据 <uart0_update> 整型,串口 0 上传透传使能。 0 1 串口0 ,关闭上传透传 串口0,打开上传透传 <uart1_update> 整型,串口 1 上传透传使能。 0 串口1 ,关闭上传透传 第 100 页 共 153 页 1 串口1,打开上传透传 示例: [2024-09-18 13:46:32.913]# SEND ASCII> AT+CHANNELSET=1,1,1,1 [2024-09-18 13:46:33.209]# RECV ASCII> +CHANNELSET=1,1,1,1 OK [2024-09-18 13:46:35.803]# SEND ASCII> AT+CHANNELSET? [2024-09-18 13:46:35.990]# RECV ASCII> +CHANNELSET=1,1,1,1 OK 十三,心跳包 1,AT+HEARTSET 设置心跳包 命令 查询设置: AT+HEARTSET? 返回结果 查询成功时: +HEARTSET="<en>","<mode>"," <frequency>","[<packet>]" OK 配置成功时: AT+HEARTSET="<en>","<mode>"," +HEARTSET="<en>","<mode>"," <frequency>","[<packet>]" <frequency>","[<packet>]" OK 参数说明: <en> 整型,心跳包开关,默认值 0 。 0 1 关闭 第 101 页 共 153 页 使能 <mode> 整型,心跳包模式,支持使用内部参数作为心跳包和自定义心跳包。 0 1 2 3 4 5 使用设备 IMEI 作为心跳包,固定长度15字节。 使用设备 IMSI 作为心跳包,固定长度15字节。 使用设备 ICCID 作为心跳包,固定长度20字节。 【保留,不可用】 使用自定义心跳包,字符串形式录入,例:"HELLO" 使用自定义心跳包 十六进制编码录入,例:"AABB00" <frequency> 整型,心跳频率,单位毫秒,最低 1000 。 <packet> 字符串,心跳包, 仅在 <mode> 是 4 或 5 时生效,具体如下,否则不需要录入这个参数。 <mode> 为 4 时 字符串录入,例:“hello” <mode> 为 5 时 十六进制编码录入,如果要录入hello,则参数是“68656C6C6F ” 示例: [2023-10-12 10:25:54.179]# SEND ASCII>//查询当前设置 AT+HEARTSET? [2023-10-12 10:25:54.265]# RECV ASCII> +HEARTSET="0" OK [2023-10-12 10:26:09.762]# SEND ASCII>//设置使用IMEI作为心跳包,5s一次 AT+HEARTSET="1","0","5000" 第 102 页 共 153 页[2023-10-12 10:26:10.007]# RECV ASCII> +HEARTSET="1","0","5000" OK [2023-10-12 10:26:20.881]# SEND ASCII>//设置自定义字符串HELLO作为心跳包,5s一次 AT+HEARTSET="1","4","5000","HELLO" [2023-10-12 10:26:21.160]# RECV ASCII> +HEARTSET="1","4","5000","HELLO" OK 2,AT+REGSET 设置注册包 命令 查询设置: AT+REGSET? 返回结果 查询成功时: +REGSET="<en>","<mode>","[<packet>]" OK 配置成功时: AT+REGSET="<en>","<mode>","[<packet>]" +REGSET="<en>","<mode>","[<packet>]" OK 参数说明: <en> 整型,注册包开关,默认值 0 。 0 1 关闭 使能 <mode> 整型,注册包模式,支持使用内部参数作为心跳包和自定义心跳包。 0 1 2 3 使用设备 IMEI 作为注册包,固定长度15字节。 使用设备 IMSI 作为注册包,固定长度15字节。 使用设备 ICCID 作为注册包,固定长度20字节。 第 103 页 共 153 页 【保留,不可用】 4 5 使用自定义注册包,字符串形式录入,例:"HELLO" 使用自定义注册包 十六进制编码录入,例:"AABB00" <packet> 字符串,注册包, 仅在 <mode> 是 4 或 5 时生效,具体如下,否则不需要录入这个参数。 <mode> 为 4 时 字符串录入,例:“hello” <mode> 为 5 时 十六进制编码录入,如果要录入hello,则参数是“68656C6C6F ” 示例: [2023-10-12 10:25:54.179]# SEND ASCII>//查询当前设置 AT+REGSET? [2023-10-12 10:25:54.265]# RECV ASCII> +REGSET="0" OK [2023-10-12 10:26:09.762]# SEND ASCII>//设置使用IMEI作为注册包 AT+REGSET="1","0" [2023-10-12 10:26:10.007]# RECV ASCII> +REGSET="1","0" OK [2023-10-12 10:26:20.881]# SEND ASCII>//设置自定义字符串HELLO作为注册包 AT+REGSET="1","4""HELLO" [2023-10-12 10:26:21.160]# RECV ASCII> +REGSET="1","4","HELLO" OK 十四,MODBUS 简介:设备支持录制最大十条查询命令,每条命令支持解析最多十个寄存器,也就是最大100个寄存器, 支持直接录制元数据,自动转换成有符号,无符号整型,浮点数据,每条查询指令,都支持一次上报, 上报格式可以自定义。 第 104 页 共 153 页 流程:每一条查询命令,对应着一次单次流程,最多十条指令,一次查询任务,最多执行十次以下流 程。 单 次 查 询 的 流 程 查 询 解 析 上 报 流程任务 备注 设备发送 MODBUS 查 询命令。 可以自定义要发送的报文,超时时间,和离下一条报文之间的间隔。 每次校验成功的数据,会进入寄存器,一条查询报文,对应十个寄存 设备读取设 器,十条报文,对应合计100个寄存器,例如第一条指令对应的寄存器 备响应报 文,并解 析。 是 A0,A1...A10,第二条的是 B0,B1...B10,每次在上报数据阶段便可以访 问任意一个寄存器,比如在第二条指令的上报时,可以同时访问 A0 和 B0 寄存器,在第一条指令上报时,也可以访问 B0 寄存器,但是因为 B0 寄存器还未入栈,返回的值是 null。 DTU上报解 析的数据。 每次指令都支持一次上报数据,上报是可选的,也就是说,如果需要在 全部查询完之后再上报,可以只在最后一条指令时上报数据,即只配置 最后一个通道的上报报文。 以下是一个大致的流程图 以下是配置这三个流程的指令 第 105 页 共 153 页1,AT+MBCMD 设置查询报文 命令 查询设置: AT+MBCMD? 返回结果 查询成功时: +MBCMD=<id>,<en>,<time_out>, <wait_time>,"<querry_packet>" OK 配置成功时: AT+MBCMD=<id>,<en>,<time_out>, +MBCMD=<id>,<en>,<time_out>, <wait_time>,"<querry_packet>" <wait_time>,"<querry_packet>" OK 参数说明: <id> 整型,通道 id ,范围 1~10 ,最大十个 modbus 通道,对应十个查询报文,十个解析报文,十个 上传报文。 <en> 整型,通道开关。 0 1 关闭通道 打开这个通道 <time_out> 整型,发送报文后等待响应的超时时间,超时后继续下一个通道任务,范围 0 ~ int32 ,单 位 ms 。 <wait_time> 整型,一个通道任务结束后,离下一个任务开始的间隔,范围 0 ~ int32 ,单位 ms 。 <querry_packet> 字符串,查询报文,十六进制编码录入,例: "010300030002340B " ,编码最大长 度512,对应报文实际字节 256 。 示例: [2024-09-28 03:32:02.944]# SEND ASCII> //配置通道1 AT+MBCMD=1,1,5000,5000,"010300030002340B" [2024-09-28 03:32:03.377]# RECV ASCII> +MBCMD=1,1,5000,5000,"010300030002340B" OK [2024-09-28 03:32:08.942]# SEND ASCII>//查询通道1 第 106 页 共 153 页 AT+MBCMD=1? [2024-09-28 03:32:09.160]# RECV ASCII> +MBCMD=1,1,5000,5000,"010300030002340B" OK [2024-09-28 03:32:55.445]# SEND ASCII>//配置通道2 AT+MBCMD=2,1,5000,5000,"024108E196" [2024-09-28 03:32:55.892]# RECV ASCII> +MBCMD=2,1,5000,5000,"024108E196" OK [2024-09-28 03:32:59.196]# SEND ASCII>//查询通道2 AT+MBCMD=2? [2024-09-28 03:32:59.408]# RECV ASCII> +MBCMD=2,1,5000,5000,"024108E196" OK 2,AT+MBANA 设置解析报文 命令 查询设置: AT+MBANA? 返回结果 查询成功时: +MBANA=<id>,<en>,"<analy_rule>" OK 配置成功时: AT+MBANA=<id>,<en>,"<analy_rule>" +MBANA=<id>,<en>,"<analy_rule>" OK 参数说明: <id> 整型,通道 id ,范围 1~10 ,最大十个 modbus 通道,对应十个查询报文,十个解析报文,十个 上传报文。 <en> 整型,通道开关。 0 1 关闭通道 打开这个通道 第 107 页 共 153 页 <analy_rule> 字符串,解析规则的报文。 解析报文使用一种固定的语法录入,使用多个元素组合,由 ',' 分隔,支持最大15个解析元素。 解析报文的格式 <元素>,<元素>,...,<元素> 元素支持以下类型 元素 格式 格式 异常返回 有符号整型匹配,支持的字节序 如下 A:uint8_t 单字节匹配 AB:uint16_t 大端匹配 BA:uint16_t 小端匹配 ABCD:uint32_t 大端匹配 DCBA:uint32_t 小端匹配 <I:[字节 序]> 映射这个寄存器时会是有 符号整型字符串的形式。 例如:"-1997" 注:映射本身不会加引 BADC:uint32_t 大端交换匹配 号,只有中间的内容。 数据录入前访问 时会返回 "null" 字符串。 注:映射本身不 会加引号,只有 中间的内容。 CDAB:uint32_t 小端交换匹配 这个元素会把指定的数据根据指 定的字节序录入寄存器。 无符号整型匹配,支持的字节序 如下 有符号整型匹配,支持的字节序 如下 A:int8_t 单字节匹配 AB:int16_t 大端匹配 BA:int16_t 小端匹配 <U:[字节 序]> <F:[字节 序]> 映射这个寄存器时会是无 数据录入前访问 符号整型字符串的形式。 时会返回 "null" ABCD:int32_t 大端匹配 例如:"1997" 字符串。 DCBA:int32_t 小端匹配 BADC:int32_t 大端交换匹配 CDAB:int32_t 小端交换匹配 这个元素会把指定的数据根据指 定的字节序录入寄存器。 浮点匹配,支持的字节序如下 有符号整型匹配,支持的字节序 如下 ABCD:float 大端匹配 DCBA:float 小端匹配 BADC:float 大端交换匹配 CDAB:float 小端交换匹配 这个元素会把指定的数据根据指 定的字节序录入寄存器。 映射这个寄存器时会是浮 点字符串的形式,保留最 大六位小数点。 例如:"3.141592" 数据录入前访问 时会返回 "null" 字符串。 第 108 页 共 153 页元素 格式 格式 异常返回 <E:[十六进 制字符 串]> 十六进制强制校验 例:<E:010203> 这个元素,要 求占位位置的数据一致,否则整 个报文解析失败,这是一个校验 元素,不会录入数据到寄存器, 最大支持20字节的数据。 MODBUS CRC校验 这个占位元素,会自动计算整行 数据的CRC并校验,这个元素只 <CRC:[字 能放在最后一个位置,否则指令 节序]> 配置失败。 支持两个参数 <C:0> 大端 和 <C:1> 小端。这是一个校验元 素,不会录入数据到寄存器。 整行元素 无 无 无 无 这个元素会把整行数据录入到寄 映射这个寄存器时会十六 数据录入前访问 <ALL_H> 存器,最大录制长度为256字节, 这个元素在解析流程中不会占用 进制编码字符串的形式 例如:"3334353637" 时会返回 "null" 字符串。 <N:[长 度]> <H:[长 度]> 字节。 占位元素 这个元素的格式为 <N:%d> , 例如 <N:1> 表示占据 1 个字节 的位置,<N:2> 表示占据 2 个 字节的位置,这个元素只用来占 位,不会录入寄存器。 元数据录入元素 这个元素的格式为 <H:%d>,例 如 <H:5> 表示录制 5 个字节的 数据到寄存器,最大录制长度为 256 字节。 映射这个寄存器时会以十六进制 字符串形式映射。 例如当寄存器数据为: [0x33] [0x44] 时,"data:<#A0>" 映射 后为 "data:3344" 元数据录入元素 这个元素的格式为 <R:%d>,例 如 <R:5> 表示录制 5 个字节的 数据到寄存器,最大录制长度为 无 无 映射这个寄存器时会十六 数据录入前访问 进制编码字符串的形式 时会返回 "null" 例如:"3334353637" 字符串。 <R:[长度]> 256字节。 映射这个寄存器时会直接 映射这个寄存器时,会直接以原 以源数据的形式 始数据形式映射。 例如当寄存器数据为: [0x33] [0x44] 时,"data:<#A0>" 映射 后为 "data:34" 数据录入前访问 时会返回 指定录 制长度的空数 据,每个字节都 为 0x00。 第 109 页 共 153 页元素 格式 格式 异常返回 整行元素 这个元素会把整行数据录入到寄 映射这个寄存器时会直接 <ALL_R> 存器,最大录制长度为256字节, 以源数据的形式 这个元素在解析流程中不会占用 例如[0x33][0x44] 字节。 以下一些解析报文的实例 这是一个设备返回的报文 01030440490C003B25 这是他的报文组成 从机地址 功能码 数据长度 浮点数据 CRC校验 01 03 04 40490C00 3B25 假设我们要提取浮点数据,且已知他是使用ABCD的字节序,可以使用以下校验报文,一个强制校验元 素,一个浮点匹配,一个CRC校验元素,匹配元素会依次把数据放入寄存器,从左至右,依次是 0,1, 2,3,,以此类推,后面会通过这个 id 来访问寄存器。 <E:010304>,<F:ABCD>,<CRC:0> <E:010304> <F:ABCD> <CRC> 消耗三个字节,要求数 据一致 010304 消耗四字节,根据ABCD的 字节序,录入到寄存器 自动计算报文【除开最后两个字节的全 部数据】的CRC,并要求跟报文的CRC 一致。 如果不需要严格的校验,也可以使用占位符来代替,总之总的消耗字节必须对应,否则校验失败。 <N:3>,<F:ABCD>,<N:2> <N:3> <F:ABCD> <N:2> 消耗三个字节,仅仅占 消耗四字节,根据ABCD的字节序,录入到 消耗两个字节,仅仅 位。 寄存器 占位 这样也会成功把指定的数据录入到寄存器,根据录入顺序,一个一个进入寄存器,访问的语法,在后面 的上报报文讲解。 第 110 页 共 153 页 3,AT+MBUP 设置上报报文 命令 查询设置: AT+MBUP? 需要两步发送,设备返回">"时,再直接发送报文数据 1,AT+MBUP=<id>,<en> 2,<data> 参数说明: 返回结果 查询成功时: +MBUP=<通道>,<使能>>[报文] OK 配置成功时: 1,> 2,+MBUP=<id>,<en>,<len> OK <id> 整型,通道 id ,范围 1~10 ,最大十个 modbus 通道,对应十个查询报文,十个解析报文,十个上 传报文。 <en> 整型,通道开关。 0 1 关闭通道 打开这个通道 <data> 流,上报报文,自定义格式,通过指定的元素映射来获取寄存器数据,映射格式在文本末。 示例: [2024-09-29 00:35:17.069]# SEND ASCII>//配置通道1的解析报文 AT+MBUP=1,1 [2024-09-29 00:35:17.265]# RECV ASCII> > [2024-09-29 00:35:20.857]# SEND ASCII> {"float_dcba":<#A0>,"float_abcd":<#A1>,"imei":"<#IMEI>","iccid":"<#ICCID>"} [2024-09-29 00:35:21.167]# RECV ASCII> +MBUP=1,1,75 OK [2024-09-29 00:35:25.654]# SEND ASCII>//设置通道2的解析报文 AT+MBUP=2,1 第 111 页 共 153 页 [2024-09-29 00:35:25.859]# RECV ASCII> > [2024-09-29 00:35:29.335]# SEND ASCII> {"u8_ab":<#B0>,"u8_ba":<#B1>,"u32_abcd":"<#B2>","u32_dcba":"<#B3>","u32_badc":" <#B4>","u32_dabc":"<#B5>","float_dcba":<#A0>,"float_abcd":<#A1>} [2024-09-29 00:35:29.643]# RECV ASCII> +MBUP=2,1,143 OK 4,AT+MBUPH 设置上报报文 MBUP 报文是以流的形式录入,但是需要以两次发送来配置,这个报文支持单条报文配置,录入方式是 HEX字符串。 命令 查询设置: AT+MBUP? 配置报文 AT+MBUPH=<id>,<en>,"<data_hexstr>" 参数说明: 返回结果 查询成功时: +MBUP=<id>,<en>,"<data_hexstr>" OK 配置成功时: +MBUP=<id>,<en>,"<data_hexstr>" OK <id> 整型,通道 id ,范围 1~10 ,最大十个 modbus 通道,对应十个查询报文,十个解析报文,十个 上传报文。 <en> 整型,通道开关。 <data_hexstr> 字符串,上报报文,十六进制编码录入,例如要录入 "{"temp":<#A0>}" ,则应该以 "7B2274656D70223A3C2341303E7D" 这样录入。 示例: [2024-09-29 00:34:10.433]# SEND ASCII> AT+MBUPH=1,1,"7B22666C6F61745F64636261223A3C2341303E2C22666C6F61745F61626364223A3 C2341313E2C22696D6569223A223C23494D45493E222C226963636964223A223C2349434349443E22 7D" [2024-09-29 00:34:10.781]# RECV ASCII> 第 112 页 共 153 页 +MBUPH=1,1,"7B22666C6F61745F64636261223A3C2341303E2C22666C6F61745F61626364223A3C2 341313E2C22696D6569223A223C23494D45493E222C226963636964223A223C2349434349443E227D " OK [2024-09-29 00:34:13.863]# SEND ASCII> AT+MBUPH=1? [2024-09-29 00:34:14.094]# RECV ASCII> +MBUPH=1,1,"7B22666C6F61745F64636261223A3C2341303E2C22666C6F61745F61626364223A3C2 341313E2C22696D6569223A223C23494D45493E222C226963636964223A223C2349434349443E227D " OK 5,AT+MBLOOP 设置查询时间 命令 查询设置: AT+MBLOOP? 配置报文 1,AT+MBLOOP=<time> 参数说明: 返回结果 查询成功时: +MBLOOP=<time> OK 配置成功时: +MBLOOP=<time> OK <time> 整型,MODBUS 任务的查询时间间隔,单位毫秒,设置 5000,则是每 5秒 启动一次查询任 务,根据配置从通道 1 开始,顺位一直查询。如果查询任务的总时间超过这个值,则会直接覆盖,立刻 开始下一次任务。 示例: [2024-09-29 00:41:34.012]# SEND ASCII> AT+MBLOOP=6000 [2024-09-29 00:41:34.386]# RECV ASCII> +MBLOOP=6000 OK [2024-09-29 00:41:36.785]# SEND ASCII> AT+MBLOOP? [2024-09-29 00:41:36.977]# RECV ASCII> +MBLOOP=6000 第 113 页 共 153 页 OK 6,AT+MBATRG 主动触发 设备未进入查询状态时,可以使用查询指令进行主动触发一次新的查询,会重置轮询时间,如果当前设 备未查询结束,则不生效。 返回结果 查询成功时: +MBATRG=1 OK 命令 配置报文 AT+MBATRG 示例: [2025-03-05 16:16:19.640]# SEND ASCII> AT+MBATRG [2025-03-05 16:16:19.725]# RECV ASCII> +MBATRG=1 OK OP=6000 OK 7,上报报文映射格式 上报报文通过特定的格式来映射寄存器。 格式 例子 含义 <#[组id]: [寄存器编 号]> 代表通道 1 寄存器的第一个 总共是十个查询通道,每个通道十个寄存器,分别用 <#A0> 到 <#A9> 和 <#J0> 到 <#J9> 来表示。 <#A0> 且每一组寄存器都只会在查询后进行装填,比如通道 1 和通道 2 执行 后,<#AX> 和 <#BX> 才会录入数据,也就意味着,在需要全部查询完毕 再上报时,可以在最后一个通道的上传报文中访问前面的所有数据。 还未查询的通道的寄存器依旧可以访问,不过会返回 "null" 或其他。 例如下面是一个上报报文设置 {"float_dcba":<#A0>,"float_abcd":<#A1>} 他的解析格式是,假设这是通道 1 的解析报文,解析元素会根据顺序依次进入寄存器, 从 0 开始,依次是 0,1,2,以此类推。 <E:010308>,<F:DCBA>,<F:ABCD>,<CRC:0> 这是收到的响应报文。 第 114 页 共 153 页 01 03 08 DA 0F 49 40 40 49 0F DA A8 1F 根据解析报文,其中的数据进入寄存器。 A0 DA 0F 49 40 A1 40 49 0F DA 上报报文访问寄存器后,实际上传数据, {"float_dcba":3.141593,"float_abcd":3.141593} 除了能用访问寄存器的映射,还支持使用全局映射,参考 “映射和变换” 的指令,下面是一个示例。 注:使用这个功能时需要打开全局映射,见 AT+MAPEN 指令。 {"float_dcba":<#A0>,"float_abcd":<#A1>,"imei":"<#IMEI>","iccid":"<#ICCID>"} 最终上报的数据为 {"float_dcba":3.141593,"float_abcd":3.141593,"imei":"860883070172604","iccid":"89 8604F01123C0799288"} 8,完整示例 [2024-09-29 00:15:20.405]# RECV ASCII> ML307R-DC-DTU V2.75 [2024-09-29 00:15:22.358]# RECV ASCII> SIM:READY [2024-09-29 00:15:28.202]# RECV ASCII> REGSTER:SUCCESS [2024-09-29 00:15:34.022]# SEND ASCII>//配置通道1的查询报文 AT+MBCMD=1,1,15000,5000,"010300030002340B" [2024-09-29 00:15:34.359]# RECV ASCII> +MBCMD=1,1,15000,5000,"010300030002340B" OK [2024-09-29 00:15:38.430]# SEND ASCII>//配置通道2的查询报文 AT+MBCMD=2,1,15000,5000,"02030000001445F6" [2024-09-29 00:15:38.764]# RECV ASCII> 第 115 页 共 153 页 +MBCMD=2,1,15000,5000,"02030000001445F6" OK [2024-09-29 00:15:42.643]# SEND ASCII>//配置通道1的解析报文 AT+MBANA=1,1,"<E:010308>,<F:DCBA>,<F:ABCD>,<CRC:0>" [2024-09-29 00:15:42.997]# RECV ASCII> +MBANA=1,1,"<E:010308>,<F:DCBA>,<F:ABCD>,<CRC:0>" OK [2024-09-29 00:15:47.712]# SEND ASCII>//配置通道2的解析报文 AT+MBANA=2,1,"<E:020314>,<U:AB>,<U:BA>,<U:ABCD>,<U:DCBA>,<U:BADC>,<U:CDAB>, <CRC:0>" [2024-09-29 00:15:48.045]# RECV ASCII> +MBANA=2,1,"<E:020314>,<U:AB>,<U:BA>,<U:ABCD>,<U:DCBA>,<U:BADC>,<U:CDAB>,<CRC:0>" OK [2024-09-29 00:15:51.938]# SEND ASCII>//设置通道1的上报报文 AT+MBUP=1,1 [2024-09-29 00:15:52.094]# RECV ASCII> > [2024-09-29 00:15:55.611]# SEND ASCII> {"float_dcba":<#A0>,"float_abcd":<#A1>,"imei":"<#IMEI>","iccid":"<#ICCID>"} [2024-09-29 00:15:56.014]# RECV ASCII> +MBUP=1,1,75 OK [2024-09-29 00:15:59.301]# SEND ASCII>//设置通道2的上报报文 AT+MBUP=2,1 [2024-09-29 00:15:59.500]# RECV ASCII> > [2024-09-29 00:16:03.114]# SEND ASCII> {"u8_ab":<#B0>,"u8_ba":<#B1>,"u32_abcd":"<#B2>","u32_dcba":"<#B3>","u32_badc":" <#B4>","u32_dabc":"<#B5>","float_dcba":<#A0>,"float_abcd":<#A1>} [2024-09-29 00:16:03.420]# RECV ASCII> +MBUP=2,1,143 OK [2024-09-29 00:27:49.563]# SEND ASCII>//设置MODBUS任务查询频率 第 116 页 共 153 页AT+MBLOOP=60000 [2024-09-29 00:27:49.918]# RECV ASCII> +MBLOOP=60000 OK [2024-09-29 00:16:07.156]# SEND ASCII>//设置DTU任务为TCP AT+DTUTASK="1","10" [2024-09-29 00:16:07.447]# RECV ASCII> +DTUTASK="1","10" OK [2024-09-29 00:16:11.768]# SEND ASCII>//设置TCP参数 AT+TCP="117.176.218.6","6010" [2024-09-29 00:16:12.200]# RECV ASCII> +TCP="117.176.218.6","6010" OK [2024-09-29 00:17:56.261]# SEND ASCII>//打开全局映射 AT+MAPEN=1,1,1 [2024-09-29 00:17:56.553]# RECV ASCII> +MAPEN=1,1,1 OK [2024-09-29 00:16:15.113]# SEND ASCII>//复位设备 AT+REST [2024-09-29 00:16:15.297]# RECV ASCII> +REST="1" OK 以下是 DTU 的 MODBUS 任务流程 [2024-09-29 00:57:55.484]# RECV HEX>//0时刻的通道1查询 01 03 00 03 00 02 34 0B [2024-09-29 00:57:55.486]# AUTO REPLY HEX> 01 03 08 DA 0F 49 40 40 49 0F DA A8 1F [2024-09-29 00:58:00.624]# RECV HEX> //5s后的通道2查询 02 03 00 00 00 14 45 F6 第 117 页 共 153 页[2024-09-29 00:58:00.626]# AUTO REPLY HEX> 02 03 14 01 23 23 01 12 34 56 78 78 56 34 12 34 12 78 56 56 78 12 34 25 8D [2024-09-29 00:58:55.438]# RECV HEX> //60s 后的第二轮查询,通道1查询 01 03 00 03 00 02 34 0B [2024-09-29 00:58:55.441]# AUTO REPLY HEX> 01 03 08 DA 0F 49 40 40 49 0F DA A8 1F [2024-09-29 00:59:00.585]# RECV HEX>//通道2查询 02 03 00 00 00 14 45 F6 [2024-09-29 00:59:00.587]# AUTO REPLY HEX> 02 03 14 01 23 23 01 12 34 56 78 78 56 34 12 34 12 78 56 56 78 12 34 25 8D 以下是服务器收到的数据 [2024-09-29 00:57:52.470]# RECV ASCII FROM 39.144.144.61 :52335> {"float_dcba":3.141593,"float_abcd":3.141593,"imei":"860883070172604","iccid":"89 8604F01123C0799288"} [2024-09-29 00:57:57.648]# RECV ASCII FROM 39.144.144.61 :52335> {"u8_ab":291,"u8_ba":291,"u32_abcd":"305419896","u32_dcba":"305419896","u32_badc" :"305419896","u32_dabc":"305419896","float_dcba":3.141593,"float_abcd":3.141593} [2024-09-29 00:58:52.455]# RECV ASCII FROM 39.144.144.61 :52335> {"float_dcba":3.141593,"float_abcd":3.141593,"imei":"860883070172604","iccid":"89 8604F01123C0799288"} [2024-09-29 00:58:57.597]# RECV ASCII FROM 39.144.144.61 :52335> {"u8_ab":291,"u8_ba":291,"u32_abcd":"305419896","u32_dcba":"305419896","u32_badc" :"305419896","u32_dabc":"305419896","float_dcba":3.141593,"float_abcd":3.141593} 十五,HTTP HTTP 功能是全局开启的,使用其他透传模式时,HTTP 指令依旧是工作的,如需使用透传模式 【仅在有 body 时支持透传】,则需要 AT+DTUTASK 配置为 HTTP透传模式。 1,AT+HTTPCFG 配置HTTP通道 设备支持最大五路配置录入,注意这是五路预设好的HTTP配置,不是指能同时发起5路HTTP,HTTP功能 是阻塞的,同一时刻只有一路在工作。 命令 查询设置: AT+HTTPCFG=<id>? 返回结果 查询成功时: +HTTPCFG=<id>,<en>,<mode>, <connect_time_out>,<resp_time_out>,"<url>" OK 第 118 页 共 153 页 命令 配置报文 AT+HTTPCFG=<id>,<en>,<mode>, <connect_time_out>,<resp_time_out>,"<url>" 返回结果 配置成功时: +HTTPCFG=<id>,<en>,<mode>, <connect_time_out>,<resp_time_out>,"<url>" OK 参数说明: <id> 整型,配置通道,范围 1~5 。 <en> 整型,通道使能。 0 1 关闭这个通道配置 启用这个通道配置 <mode> 整型,HTTP 方法。 0 1 2 3 4 5 NONE GET POST PUT DELETE HEAD <connect_time_out> 整型,TCP连接超时时间,这个参数是指TCP通道链接前等待的最大时间,单位 秒,范围 1~65535。 注:HTTP 任务结束之前不会接收其他指令,设置太长会导致 DTU 假死。 第 119 页 共 153 页<resp_time_out> 整型,HTTP响应超时时间,这个指链接服务器后等待的最大时间,单位秒,范围 1- 65535 。 注:如果服务器超时未响应,则会失败,如果任务进行中超时,也会视作失败,在服务器响应慢,或者 下载大量数据时应合理增大这个时间。 <url> 字符串,要访问的链接。例:"http://baidu.com",当未设置路径时会自动填充一个 "/"。 示例: [2024-11-12 16:50:32.117]# SEND ASCII> AT+HTTPCFG=1,1,1,10,10,"http://www.baidu.com" [2024-11-12 16:50:32.458]# RECV ASCII> +HTTPCFG=1,1,1,10,10,"http://www.baidu.com" OK [2024-11-12 16:50:35.782]# SEND ASCII> AT+HTTPCFG=1? [2024-11-12 16:50:36.007]# RECV ASCII> +HTTPCFG=1,1,1,10,10,"http://www.baidu.com" OK 2,AT+HTTPHEAD 配置Headers 命令 查询设置: AT+HTTPHEAD=<id>? 配置报文 1,AT+HTTPHEAD=<id> 2,发送报文<headers_str>。 参数说明: <id> 整型,通道 id ,范围 1~5 。 <len> 整型,实际录入的报文长度。 *<headers_str> * 字符串,需要满足以下格式。 返回结果 查询成功时: +HTTPHEAD=<id>,<len> ><headers_str> OK 配置成功时: 1,> 2,OK 第 120 页 共 153 页 格式如下: <Key>: <value>\r\n <Key>: <value>\r\n .... 例: Content-Type: application/json User-Agent: Mozilla/5.0 注:Content-Length通常不需要配置,DTU会自己生成 示例: [2024-11-12 17:08:57.761]# SEND ASCII> AT+HTTPHEAD=1 [2024-11-12 17:08:57.849]# RECV ASCII> > [2024-11-12 17:09:00.786]# SEND ASCII> Content-Type: application/json User-Agent: Mozilla/5.0 [2024-11-12 17:09:01.111]# RECV ASCII> OK [2024-11-12 17:09:13.427]# SEND ASCII> AT+HTTPHEAD=1? [2024-11-12 17:09:13.534]# RECV ASCII> +HTTPHEAD=1,55 >Content-Type: application/json User-Agent: Mozilla/5.0 OK 3,AT+HTTPHEADH 配置Headers 命令 查询设置: AT+HTTPHEADH=<id>? 返回结果 查询成功时: +HTTPHEAD=<id>,"<headers_hexstr>" OK 第 121 页 共 153 页 命令 配置报文 1,AT+HTTPHEADH=<id>,"<headers_hexstr>" 返回结果 配置成功时: +HTTPHEADH=<id>,"<headers_hexstr>" OK 参数说明: <id> 整型,通道 id ,范围 1~5 。 <headers_hexstr> 字符串,十六进制编码字符串,范围 2- 512 [ 对应字节 1-256 ] 。 Header 录入格式如下。 <Key>: <value>\r\n <Key>: <value>\r\n .... 例: Content-Type: application/json User-Agent: Mozilla/5.0 之后需要转换成十六进制编码,注意换行的 0D 0A 是需要存在的。 436F6E74656E742D547970653A206170706C69636174696F6E2F6A736F6E0D0A557365722D4167656 E743A204D6F7A696C6C612F352E30 示例: [2024-11-22 10:34:00.765]# SEND ASCII>//配置 AT+HTTPHEADH=1,"436F6E74656E742D547970653A206170706C69636174696F6E2F6A736F6E0D0A5 57365722D4167656E743A204D6F7A696C6C612F352E30" [2024-11-22 10:34:00.958]# RECV ASCII> HTTPHEADH=1,"436F6E74656E742D547970653A206170706C69636174696F6E2F6A736F6E0D0A5573 65722D4167656E743A204D6F7A696C6C612F352E30" OK [2024-11-22 10:34:06.252]# SEND ASCII> AT+HTTPHEADH=1? [2024-11-22 10:34:06.355]# RECV ASCII> +HTTPHEADH=1,"436F6E74656E742D547970653A206170706C69636174696F6E2F6A736F6E0D0A557 365722D4167656E743A204D6F7A696C6C612F352E30" OK 第 122 页 共 153 页[2024-11-22 10:34:07.702]# SEND ASCII>//可以用直接 AT+HTTPHEAD 指令查询 AT+HTTPHEAD=1? [2024-11-22 10:34:07.800]# RECV ASCII> +HTTPHEAD=1,55 >Content-Type: application/json User-Agent: Mozilla/5.0 OK 4,AT+HTTPCTRL 配置返回头 这个指令是用来控制返回数据的成分,和返回LOG的。 命令 查询设置: AT+HTTPCTRL=<id>? 配置报文 AT+HTTPHEAD=<id>,<status_line_en>, <status_line_at_ret>,<resp_header_en>, <resp_header_at_ret>,<at_body_at_ret>, <success_at_ret> 参数说明: <id> 整型,配置通道,范围 1~5 。 返回结果 查询成功时: +HTTPCTRL=<id>,<status_line_en>, <status_line_at_ret>,<resp_header_en>, <resp_header_at_ret>,<at_body_at_ret>, <success_at_ret> OK 配置成功时: +HTTPCTRL=<id>,<status_line_en>, <status_line_at_ret>,<resp_header_en>, <resp_header_at_ret>,<at_body_at_ret>, <success_at_ret> OK <status_line_en> 整型,是否返回HTTP响应报文的状态行。 0 1 不返回 返回 状态行: HTTP/1.1 200 OK <status_line_at_ret> 整型,返回的状态行是否加上AT指令头,这个参数需要 status_line_en 为 1 时才 会生效。 第 123 页 共 153 页 0 1 不返回 返回 状态行的指令头: +HTTPSTATUS:<len>\r\n <resp_header_en> 整型,是否返回 headers。 0 1 不返回 返回 Headers 如下 Connection: keep-alive Content-Length: 421212 Content-Type: text/html; charset=utf-8 <resp_header_at_ret> 整型,返回的状态行是否加上AT指令头,这个参数需要 status_line_en 为 1 时 才会生效。 0 1 不返回头 返回头 状态行的指令头: +HTTPHEADER:<len>\r\n <at_body_at_ret> 整型,返回的 body 是否加上AT头。 0 1 不返回头 返回头 BODY 的指令头: +HTTPBODY\r\n 第 124 页 共 153 页<success_at_ret> 整型, AT+HTTPSTART 成功时是否返回成功响应指令,这个只是开关响应成功时的指 令返回,执行失败时的异常返回会正常进行。 0 1 不返回头 返回头 成功响应指令: "\r\n+HTTPSTART=\"success\"\r\nOK\r\n" 下面是一个HTTP请求返回的内容 +HTTPSTATUS:17 HTTP/1.1 200 OK +HTTPHEADER:113 Content-Length: 7 Content-Type: text/plain Server: Microsoft-HTTPAPI/2.0 Date: Tue, 12 Nov 2024 09:56:45 GMT +HTTPBODY 2342323 [2024-11-12 17:56:46.161]# RECV ASCII> +HTTPSTART="success" OK 对应的开关位置如下 +HTTPSTATUS:17 --- status_line_en & status_line_at_ret HTTP/1.1 200 OK --- status_line_at_ret +HTTPHEADER:113 --- resp_header_en & resp_header_at_ret Content-Length: 7 Content-Type: text/plain Server: Microsoft-HTTPAPI/2.0 Date: Tue, 12 Nov 2024 09:56:45 GMT --- resp_header_en +HTTPBODY --- at_body_at_ret 2342323 [2024-11-12 17:56:46.161]# RECV ASCII> +HTTPSTART="success" --- success_at_ret OK 5,AT+HTTPSTART 发起HTTP任务 命令 发送报文 AT+HTTPSTART=<id>,[<max_size>],[<time_out>],[<latency>] 返回结果 成功时: +HTTPSTART="success" OK 第 125 页 共 153 页 参数说明: <id> 整型,配置通道,范围 1~5 。 <max_size> 整型,这个值是开启的接受缓存的最大值,例如设置为100,则接受到的字节达到100就会 立刻发送。但是接受的数据也可以小于100,由超时时间 <latency> 控制发送。这个参数是可选的,不填 时默认为 0 ,即不需要发送数据,最大值 65535 即单次推送数据最大 65 kb。 <time_out> 整型,接收超时时间,单位秒,指令发起后,超过该时间还未收到要上传的数据,则视作 任务失败。这个参数是可选的,不填时默认为 5000 ms。 <latency> 整型,打包超时时间,单位秒,这个值是数据和数据之间的最大超时时间,超出这个时间 后,已经发送的数据会被打包并上传,例如设置300ms,则在发送完一次数据,且未发送新数据的 300ms 后,已经发送的数据就会被结算打包,而在 300ms 内,则可以继续发送数据并刷新时间。 这个 参数是可选的,默认值为 200 ms 示例: [2024-11-12 18:31:27.679]# SEND ASCII>//不需要推送数据 AT+HTTPSTART=1 [2024-11-12 18:31:28.188]# RECV ASCII> +HTTPSTATUS:17 HTTP/1.1 200 OK +HTTPHEADER:113 Content-Length: 7 Content-Type: text/plain Server: Microsoft-HTTPAPI/2.0 Date: Tue, 12 Nov 2024 10:31:28 GMT +HTTPBODY 2342323 +HTTPSTART="success" OK [2024-11-12 18:31:54.448]# SEND ASCII>//需要推送最大十个数据 AT+HTTPSTART=1,10 [2024-11-12 18:31:54.541]# RECV ASCII> > [2024-11-12 18:31:55.516]# SEND ASCII> 1234567890 [2024-11-12 18:31:55.922]# RECV ASCII> +HTTPSTATUS:17 第 126 页 共 153 页HTTP/1.1 200 OK +HTTPHEADER:113 Content-Length: 7 Content-Type: text/plain Server: Microsoft-HTTPAPI/2.0 Date: Tue, 12 Nov 2024 10:31:55 GMT +HTTPBODY 2342323 [2024-11-12 18:31:55.984]# RECV ASCII> +HTTPSTART="success" OK [2024-11-12 18:32:46.477]# SEND ASCII>//最大推送5000个数据,指令超时10s,报文打包超时5s AT+HTTPSTART=1,5000,10000,5000 [2024-11-12 18:32:46.569]# RECV ASCII> > [2024-11-12 18:32:48.239]# SEND ASCII>//只要不超过报文打包时间,可以分段发送 123123123123 [2024-11-12 18:32:49.239]# SEND ASCII>//只要不超过报文打包时间,可以分段发送 123123123123 [2024-11-12 18:32:50.304]# SEND ASCII>//只要不超过报文打包时间,可以分段发送 123123123123 [2024-11-12 18:32:51.231]# SEND ASCII>//只要不超过报文打包时间,可以分段发送 123123123123 [2024-11-12 18:32:56.657]# RECV ASCII> +HTTPSTATUS:17 HTTP/1.1 200 OK +HTTPHEADER:113 Content-Length: 7 Content-Type: text/plain Server: Microsoft-HTTPAPI/2.0 Date: Tue, 12 Nov 2024 10:32:56 GMT +HTTPBODY 2342323 [2024-11-12 18:32:56.718]# RECV ASCII> +HTTPSTART="success" OK 第 127 页 共 153 页6,AT+HTTP 临时发起HTTP 用于不储存的临时发起 HTTP 请求。 命令 配置报文 AT+HTTP=<mode>,<time_out>,<url>,<header>,<body> 参数说明: <mode> 整型,HTTP 方法。 0 1 2 3 4 5 NONE GET POST PUT DELETE HEAD <time_out> 整型,HTTP 超时时间,单位秒,范围 1~65535。 注:HTTP 任务结束之前不会接收其他指令,设置太长会导致 DTU 假死。 <url> 字符串,要访问的链接,最大长度 256 。 <header> 字符串,访问头,缺省时不填,需要保留位置, "" 这样留空 。 <body> 数据流,要发送的数据,可以缺省,直接不填。 示例: [2025-01-14 16:19:15.542]# SEND ASCII>//不需要发送body时,整个缺省即可。 AT+HTTP=1,5,"http://117.176.218.6:6009","" 第 128 页 共 153 页 [2025-01-14 16:19:15.890]# RECV ASCII> {"state":"success"} [2025-01-14 16:20:36.572]# SEND ASCII>//header缺省直接不填,但是要保留引号 AT+HTTP=1,5,"http://117.176.218.6:6009","",123 [2025-01-14 16:20:36.902]# RECV ASCII> {"state":"success"} [2025-01-14 16:19:31.307]# SEND ASCII>//完整参数 AT+HTTP=1,5,"http://117.176.218.6:6009","Content-Type: text/plain",123 [2025-01-14 16:20:32.905]# RECV ASCII> {"state":"success"} 7,透传模式 关于 HTTP 透传模式,HTTP透传必须任务包含 body ,直接发送 body 则可以激活任务,单个包会作为 当前 HTTP 任务的 body 发起一次请求,透传默认使用 HTTP 通道 1,且只支持通道 1 。 没有 body 的情况则使用 AT+HTTPSTART 指令进行获取,则无需再打开 HTTP 透传模式 [ AT+DTUTASKS="HTTP" 设置] ,因为 HTTPSTART 指令是全程可用的。 透传模式的单个包大小上限由 AT+SERIALQUE 决定,发送数据如果较大,需要使用指令发送。 示例: [2024-12-05 18:24:18.249]# SEND ASCII>//透传模式下,直接发送的数据会作为body上传 {"IMEI":"<#IMEI>"} [2024-12-05 18:24:18.755]# RECV ASCII> +HTTPSTATUS:17 HTTP/1.1 200 OK +HTTPHEADER:113 Content-Length: 0 Content-Type: text/plain Server: Microsoft-HTTPAPI/2.0 Date: Thu, 05 Dec 2024 10:24:18 GMT [2024-12-05 18:24:20.138]# SEND ASCII> {"IMEI":"<#IMEI>"} [2024-12-05 18:24:20.471]# RECV ASCII> +HTTPSTATUS:17 HTTP/1.1 200 OK +HTTPHEADER:113 第 129 页 共 153 页 Content-Length: 0 Content-Type: text/plain Server: Microsoft-HTTPAPI/2.0 Date: Thu, 05 Dec 2024 10:24:20 GMT [2024-12-05 18:25:04.657]# SEND ASCII>//同时 AT 指令请求也是激活的,不需要上传数据的情 况,得使用指令发起请求 AT+HTTPSTART=1 [2024-12-05 18:25:05.077]# RECV ASCII> +HTTPSTATUS:17 HTTP/1.1 200 OK +HTTPHEADER:113 Content-Length: 0 Content-Type: text/plain Server: Microsoft-HTTPAPI/2.0 Date: Thu, 05 Dec 2024 10:25:04 GMT [2024-12-05 18:25:05.140]# RECV ASCII> +HTTPSTART="success" OK 十六,FILE 文件读取功能 设备支持一个文件存储,最大100kb,目前只支持一个写入渠道,即 “AT+HTTPDOWN” 指令下载文件的 写入。 1,AT+FILESIZE 获取文件大小 命令 查询设置: AT+FILESIZE? 参数说明: 返回结果 查询成功时: +FILESIZE =<size> OK <size> 整型,文件系统中文件的大小,单位字节。 示例: 第 130 页 共 153 页 [2024-11-13 13:42:00.349]# SEND ASCII> AT+FILESIZE? [2024-11-13 13:42:00.445]# RECV ASCII> +FILESIZE=7 OK 2,AT+FILEREAD 读取文件 命令 读取: AT+FILEREAD=<offset>,<len>,[<mode>] 参数说明: 返回结果 查询成功时: [+FILEREAD="read success">] <data> <offset> 整型,读取偏移,0 对应文件第一个字节,偏移值必须在文件索引范围内,否则报错。 <len> 整型,要读取的长度,读取长度值必须在文件索引范围内,否则报错(起始位置在文件范围内, 起始位置+读取长度也需要在文件范围内)。 <mode> 整型,是否返回响应头,默认值 0 。 0 1 返回AT响应头 不返回AT响应头 示例: [2024-11-13 13:56:04.338]# SEND ASCII> AT+FILEREAD=0,7,1 [2024-11-13 13:56:04.425]# RECV ASCII> 2342323 [2024-11-13 14:00:18.284]# SEND ASCII> AT+FILEREAD=0,7,0 [2024-11-13 14:00:18.372]# RECV ASCII> +FILEREAD="read success" > 第 131 页 共 153 页 2342323 [2024-11-13 14:02:17.301]# SEND ASCII> AT+FILEREAD=0,7 [2024-11-13 14:02:17.397]# RECV ASCII> +FILEREAD="read success" > 2342323 3,AT+FILEREADALL 读取全部文件 这个指令支持自动连续吐出全部数据 命令 读取: AT+FILEREADALL=[<packet_size>],[<delay>] 参数说明: 返回结果 成功时: <data> <packet_size> 整型,可选参数,不设置时,会一次性读取所有数据,设置后,单次推送指定长度的数 据,并在延迟 <delay> 参数指定时间后,再自动推送下一包数据。 <delay> 整型,可选参数,每个包结束后要等待的时间,单位ms 示例: [2024-11-13 14:44:58.426]# SEND ASCII>//一次性读取所有数据 AT+FILEREADALL [2024-11-13 14:44:58.511]# RECV ASCII> 2342323 [2024-11-13 14:45:04.332]# SEND ASCII>//一次读取2字节,每个包延迟1s AT+FILEREADALL=2,1000 [2024-11-13 14:45:04.423]# RECV ASCII> 23 [2024-11-13 14:45:05.433]# RECV ASCII> 42 [2024-11-13 14:45:06.427]# RECV ASCII> 32 第 132 页 共 153 页 [2024-11-13 14:45:07.433]# RECV ASCII> 3 十七,用户任务功能 这个功能支持用户录制一些固定的任务,且任务支持特定的触发器重复触发,例如电平,网络指令等。 任务支持多个触发源触发,多个触发源同时触发时,将会以队列的形式排队触发,不会打断正在进行的 任务。 当前支持的触发源如下: IO 触发 定时触发 AT指令触发 1,AT+USERTASK 配置用户任务 命令 查询设置: AT+USERTASK? 需要两步发送,设备返回">"时,再直接发送报文数据 1,AT+USERTASK=<id>,<en>,"<task_mode>" 2,<config> 参数说明: <id> 整型,任务通道,范围 1~8 。 <en> 整型,任务开关。 0 1 关闭 使能 返回结果 查询成功时: +USERTASK=<id>,<en>,"<task_mode>" > <config> OK 配置成功时: 1,> 2,+USERTASK=<id>,<en>,"<task_mode>" OK <task_mode> 字符串,下面是支持的类型,详细的格式解析参考独立的条目。 第 133 页 共 153 页 io_wave io任务 update 上传任务 serial_write 串口输出任务 <config> 数据流,配置通常是以 json 字符串的形式进行配置,每个任务的格式都不同,需要参考后面 的任务目录。 示例: [2024-11-29 15:52:46.348]# SEND ASCII> AT+USERTASK=1,1,"update" [2024-11-29 15:52:46.434]# RECV ASCII> > [2024-11-29 15:52:49.014]# SEND ASCII> { "lat": <#GPS_LAT_S>, "lon": <#GPS_LON_S>, "speed": "<#GPS_SPEED_S>", "state": "<#GPS_STATE_S>", "time":"<#GPS_TIME>" } [2024-11-29 15:52:49.428]# RECV ASCII> +USERTASK=1,1,"update",140 OK [2024-11-29 15:52:56.489]# SEND ASCII> AT+USERTASK=1? [2024-11-29 15:52:56.620]# RECV ASCII> +USERTASK=1,1,"update" > { "lat": <#GPS_LAT_S>, "lon": <#GPS_LON_S>, "speed": "<#GPS_SPEED_S>", "state": "<#GPS_STATE_S>", "time":"<#GPS_TIME>" } OK 第 134 页 共 153 页返回结果 查询成功时: +USERTASK=<id>,<en>,<task_mode>," <config_hexstr>" OK +USERTASK=<id>,<en>,<task_mode>," <config_hexstr>" OK 2,AT+USERTASKH 配置用户任务 命令 查询设置: AT+USERTASKH? AT+USERTASK=<id>,<en>,<task_mode>," <config_hexstr>" 参数说明: <id> 整型,任务通道,范围 1~8 。 <en> 整型,任务开关。 0 1 关闭 使能 <task_mode> 字符串,下面是支持的类型,详细的格式解析参考独立的条目。 io_wave io任务 update 上传任务 serial_write 串口输出任务 <config_hexstr> 字符串,配置数据的十六进制编码,长度范围 2~8192 (对应转化字节 1~ 4096。 例:想要输入 "123" 则十六进制编码是 "313233 " 示例: [2024-11-29 15:53:02.895]# SEND ASCII> 第 135 页 共 153 页 AT+USERTASKH=1,1,"serial_write","7B0D0A2020226C6174223A203C234750535F4C41545F533E 2C0D0A2020226C6F6E223A203C234750535F4C4F4E5F533E2C0D0A2020227370656564223A20223C2 34750535F53504545445F533E222C20200D0A2020227374617465223A20223C234750535F53544154 455F533E222C20200D0A20202274696D65223A223C234750535F54494D453E220D0A7D" [2024-11-29 15:53:03.290]# RECV ASCII> +USERTASKH=1,1,"serial_write","7B0D0A2020226C6174223A203C234750535F4C41545F533E2C 0D0A2020226C6F6E223A203C234750535F4C4F4E5F533E2C0D0A2020227370656564223A20223C234 750535F53504545445F533E222C20200D0A2020227374617465223A20223C234750535F5354415445 5F533E222C20200D0A20202274696D65223A223C234750535F54494D453E220D0A7D" OK [2024-11-29 15:53:06.585]# SEND ASCII> AT+USERTASKH=1? [2024-11-29 15:53:06.721]# RECV ASCII> +USERTASKH=1,1,"serial_write","7B0D0A2020226C6174223A203C234750535F4C41545F533E2C 0D0A2020226C6F6E223A203C234750535F4C4F4E5F533E2C0D0A2020227370656564223A20223C234 750535F53504545445F533E222C20200D0A2020227374617465223A20223C234750535F5354415445 5F533E222C20200D0A20202274696D65223A223C234750535F54494D453E220D0A7D" OK 3,AT+USERTASKTIM 使能定时触发 返回结果 查询成功时: +USERTASKTIM=<id>,<en>,<time> OK 配置成功时: +USERTASKTIM=<id>,<en>,<time> OK 命令 查询设置: AT+USERTASKTIM=<id>? 设置: AT+USERTASK=<id>,<en>,<time> 参数说明: <id> 整型,任务通道,范围 1~8 。 <en> 整型,任务开关。 0 1 关闭 使能 第 136 页 共 153 页 <time> 整型,任务定时触发频率,单位ms,误差约30ms左右,如设置 5000,则任务每 5s 重复触发。 [2024-10-25 16:00:30.821]# SEND ASCII> AT+USERTASKTIM=1,1,5000 [2024-10-25 16:00:31.426]# RECV ASCII> +USERTASKTIM=1,1,5000 OK [2024-10-25 16:00:33.922]# SEND ASCII> AT+USERTASKTIM=1? [2024-10-25 16:00:34.514]# RECV ASCII> +USERTASKTIM=1,1,5000 OK 4,AT+PUTTASK 主动触发任务 主动推送一次任务到队列。 命令 返回结果 执行成功时: +USERTASKTIM=<id> OK 执行指令: AT+PUTTASK=<id> 参数说明: <id> 整型,任务通道,范围 1~8 。 [2024-10-25 17:16:08.078]# SEND ASCII> AT+PUTTASK=1 [2024-10-25 17:16:08.275]# RECV ASCII> +PUTTASK=1 OK 5,AT+PUTTASKNR 主动触发任务无返回 主动推送一次任务到队列,成功执行时不会返回结果,在串口侧触发 "串口任务" 时可以使用这个指令。 第 137 页 共 153 页 命令 返回结果 错误结果 执行指令: 执行成功时: +PUTTASKNR="<error message>" AT+PUTTASK=<id> 执行成功时无返回 ERROR 参数说明: <id> 整型,任务通道,范围 1~8 。 [2024-10-25 17:16:08.078]# SEND ASCII> AT+PUTTASKNR=1 6,支持任务列表 更多任务更新中..... (一) "io_wave" IO 波形绘制 这个任务可以指定 io 绘制简单的波形,以 json 的形式进行配置,json 格式需要以下两个参数,id 是必 选参数,wave 和 action 是可选参数,同一时间只有一个生效。 key id wave value 1-8 对应 8 个 io 波形数组,最大支持的长度 128,格式如下 [ 电平<0-1> , 维持时间<0-65535 ms> , 电平 , 维持时间 .....] action 目前仅支持 id :0 翻转 下面是一个简单示例 //[1,1000,0,1000] 就是高电平维持1000ms,低电平维持1000ms。 { "id": 1, "wave": [1,1000,0,1000] } 当最后一个维持时间为0时,可以省略 //高电平维持1000ms,低电平,结束。 { "id": 1, "wave": [1,100,0] } 使用动作功能 第 138 页 共 153 页 //翻转 io 1 { "id": 1, "action": 0 } 流程示例: [2024-10-23 18:30:52.342]# SEND ASCII> AT+USERTASK=1,1,"io_wave" [2024-10-23 18:30:52.547]# RECV ASCII> > [2024-10-23 18:30:53.760]# SEND ASCII> {"id":1,"wave":[1,100,0]} [2024-10-23 18:30:54.150]# RECV ASCII> +USERTASK="save success" OK (二) "update" 上报服务器 这个任务可以录制一段数据,在触发时上报到服务器,录入的方式为直接录入原始数据,输入的数据就 是最终要上传的数据,支持使用映射来获取部分参数【需要先打开映射功能 ,详细见 AT+MAPEN】。 示例 1: 录入了字符串数据 "123",当任务触发时,会往服务器上传 "123" 123 示例 2: 下面录入了一个json格式的字符串,且使用了映射功能【需要先AT使能】 { "io1_value": <#IO1_S>, "io2_value": <#IO2_S>, "lbs": "<#LBS>", } 服务器收到的数据为: { "io1_value": 1, "io2_value": 0, "lbs": "30.69094,104.099977", } 第 139 页 共 153 页 示例3: //注:这里显示的是HEX编码,等效于如下,上位机输入时选择HEX uint8_t array[]={0xAA,0xBB,0x3C,0x23,0x49,0x4D,0x45,0x49,0x3E,0xCC,0xDD}; uart_write(array,sizeof(array)); 以下是要录入的数据,这里是HEX编码显示 //注:<#IMEI>的编码为 3C 23 49 4D 45 49 3E AA BB 3C 23 49 4D 45 49 3E CC DD 收到的数据,也是HEX编码显示 //注:中间的部分是替换的IMEI:860883070172604 AA BB 38 36 30 38 38 33 30 37 30 31 37 32 36 30 34 CC DD 流程示例: [2024-10-23 18:30:52.342]# SEND ASCII> AT+USERTASK=1,1,"update" [2024-10-23 18:30:52.547]# RECV ASCII> > [2024-10-23 18:30:53.760]# SEND ASCII> 123456 [2024-10-23 18:30:54.150]# RECV ASCII> +USERTASK="save success" OK (三) "serial_write" 串口输出 这个任务可以录制一段数据,在触发时往串口下发,录入的方式为直接录入原始数据,输入的数据就是 最终会下发的数据,支持使用映射来获取部分参数。 示例 1: 录入了字符串数据 "123",当任务触发时,会往串口下发 "123" 123 示例 2: 下面录入了一个json格式的字符串,且使用了映射功能【需要先AT使能】 第 140 页 共 153 页 { "utc": "<#UTC>", "time": "<#TIME>", "csq": "<#CSQ_S>", } 收到的数据为: { "utc": "1729850660", "time": "2024-10-25 18:04:20", "csq": "15", } 示例3: //注:这里显示的是HEX编码,等效于如下,上位机输入时选择HEX uint8_t array[]={0xAA,0xBB,0x3C,0x23,0x49,0x4D,0x45,0x49,0x3E,0xCC,0xDD}; uart_write(array,sizeof(array)); 以下是要录入的数据,这里是HEX编码显示 //注:<#IMEI>的编码为 3C 23 49 4D 45 49 3E AA BB 3C 23 49 4D 45 49 3E CC DD 收到的数据,也是HEX编码显示 //注:中间的部分是替换的IMEI:860883070172604 AA BB 38 36 30 38 38 33 30 37 30 31 37 32 36 30 34 CC DD 流程示例: [2024-10-25 18:16:29.372]# SEND ASCII> AT+USERTASK=1,1,"serial_write" [2024-10-25 18:16:29.566]# RECV ASCII> > [2024-10-25 18:16:31.918]# SEND ASCII> { "utc": "<#UTC>", "time": "<#TIME>", "csq": "<#CSQ_S>", } [2024-10-25 18:16:32.492]# RECV ASCII> +USERTASK="save success" 第 141 页 共 153 页OK 7,任务配置示例 (一) 使用 IO 触发器来触发上报任务 这里演示的是使用 IO 触发器来触发上报任务,下面是要用到的指令 AT+DTUTASK="1","10" AT+TCP="117.176.218.6","6010" AT+MAPEN=1,1,1 AT+IOCFG=1,0,0 AT+IOTRGCFG=1,1,2,150 AT+IOTRGBD=1,1 AT+USERTASK=1,1,"update" { "io1_value": <#IO2_S>, "io2_value": <#IO3_S>, "lbs": "<#LBS>", } AT+IOCFG=2,0,0 AT+IOCFG=3,0,0 AT+REST 流程如下: [2024-10-25 16:07:54.987]# SEND ASCII>//配置DTU任务为TCP AT+DTUTASK="1","10" [2024-10-25 16:07:55.278]# RECV ASCII> +DTUTASK="1","10" OK [2024-10-25 16:07:57.964]# SEND ASCII>//配置TCP服务器 AT+TCP="117.176.218.6","6010" [2024-10-25 16:07:58.287]# RECV ASCII> +TCP="117.176.218.6","6010" OK [2024-10-25 16:08:00.612]# SEND ASCII>//打开全映射,上报报文要用到 AT+MAPEN=1,1,1 [2024-10-25 16:08:00.884]# RECV ASCII> +MAPEN=1,1,1 OK 第 142 页 共 153 页 [2024-10-25 16:08:03.743]# SEND ASCII>//设置触发的IO为输入模式,下拉,因为用到上升脉冲触发 AT+IOCFG=1,0,0 [2024-10-25 16:08:03.978]# RECV ASCII> +IOCFG=1,0,0 OK [2024-10-25 16:08:09.948]# SEND ASCII>//设置触发的IO为,上升脉冲触发,最低维持时间150ms AT+IOTRGCFG=1,1,2,150 [2024-10-25 16:08:10.261]# RECV ASCII> +IOTRGCFG=1,1,2,150 OK [2024-10-25 16:08:13.185]# SEND ASCII>//设置触发器,绑定任务1 AT+IOTRGBD=1,1 [2024-10-25 16:08:13.444]# RECV ASCII> +IOTRGBD=1,1 OK [2024-10-25 16:08:16.762]# SEND ASCII>//配置任务1为,上报任务 AT+USERTASK=1,1,"update" [2024-10-25 16:08:16.954]# RECV ASCII> > [2024-10-25 16:08:20.638]# SEND ASCII> { "io1_value": <#IO2_S>, "io2_value": <#IO3_S>, "lbs": "<#LBS>", } [2024-10-25 16:08:21.128]# RECV ASCII> +USERTASK="save success" OK [2024-10-25 16:09:02.794]# SEND ASCII>//上报任务中读取这两个 io ,所以设置为输入模式 AT+IOCFG=2,0,0 [2024-10-25 16:09:03.083]# RECV ASCII> 第 143 页 共 153 页+IOCFG=2,0,0 OK [2024-10-25 16:09:06.268]# SEND ASCII>//上报任务中读取这两个 io ,所以设置为输入模式 AT+IOCFG=3,0,0 [2024-10-25 16:09:06.536]# RECV ASCII> +IOCFG=3,0,0 OK [2024-10-25 16:09:18.655]# SEND ASCII> AT+REST [2024-10-25 16:09:18.851]# RECV ASCII> +REST="1" OK (二) 使用定时触发器来触发IO任务 这里演示的是使用定时触发器来触发 IO 任务,下面是要用到的指令 AT+IOCFG=3,1,2 AT+USERTASK=1,1,"io_wave" {"id":3,"wave":[1,100,0]} AT+USERTASKTIM=1,1,5000 AT+REST 流程如下: [2024-10-25 16:32:48.398]# SEND ASCII>//设置 IO3 为输出模式 AT+IOCFG=3,1,2 [2024-10-25 16:32:48.657]# RECV ASCII> +IOCFG=3,1,2 OK [2024-10-25 16:32:51.425]# SEND ASCII>//设置任务 1 为波形录制。 AT+USERTASK=1,1,"io_wave" [2024-10-25 16:32:51.589]# RECV ASCII> > [2024-10-25 16:32:54.680]# SEND ASCII>//录制的波形为一个维持 100ms 的上升脉冲 第 144 页 共 153 页 {"id":3,"wave":[1,100,0]} [2024-10-25 16:32:55.117]# RECV ASCII> +USERTASK="save success" OK [2024-10-25 16:32:58.146]# SEND ASCII>//设置任务 1 ,每 5000ms 触发一次。 AT+USERTASKTIM=1,1,5000 [2024-10-25 16:32:58.563]# RECV ASCII> +USERTASKTIM=1,1,5000 OK [2024-10-25 16:33:03.141]# SEND ASCII> AT+REST [2024-10-25 16:33:03.333]# RECV ASCII> +REST="1" OK (二) 定时上报GPS任务 这里演示的是使用定时触发器触发数据上报,使用映射功能读取GPS数据。 AT+GPSEN=1 AT+MAPEN=1,1,1 AT+USERTASK=1,1,"update" { "lat": <#GPS_LAT_S>, "lon": <#GPS_LON_S>, "speed": "<#GPS_SPEED_S>", "state": "<#GPS_STATE_S>", "time":"<#GPS_TIME>" } AT+USERTASKTIM=1,1,5000 AT+DTUTASK="1","10" AT+TCP="117.176.218.6","6009" AT+REST 流程如下: [2024-11-29 15:59:55.728]# SEND ASCII> AT+GPSEN=1 [2024-11-29 15:59:56.121]# RECV ASCII> +GPSEN=1 第 145 页 共 153 页 OK [2024-11-29 15:59:58.438]# SEND ASCII> AT+MAPEN=1,1,1 [2024-11-29 15:59:58.609]# RECV ASCII> +MAPEN=1,1,1 OK [2024-11-29 16:00:01.154]# SEND ASCII> AT+USERTASK=1,1,"update" [2024-11-29 16:00:01.231]# RECV ASCII> > [2024-11-29 16:00:05.197]# SEND ASCII> { "lat": <#GPS_LAT_S>, "lon": <#GPS_LON_S>, "speed": "<#GPS_SPEED_S>", "state": "<#GPS_STATE_S>", "time":"<#GPS_TIME>" } [2024-11-29 16:00:05.559]# RECV ASCII> +USERTASK=1,1,"update",140 OK [2024-11-29 16:00:07.916]# SEND ASCII> AT+USERTASKTIM=1,1,5000 [2024-11-29 16:00:08.269]# RECV ASCII> +USERTASKTIM=1,1,5000 OK [2024-11-29 16:00:10.536]# SEND ASCII> AT+DTUTASK="1","10" [2024-11-29 16:00:10.719]# RECV ASCII> +DTUTASK="1","10" OK [2024-11-29 16:00:13.130]# SEND ASCII> AT+TCP="117.176.218.6","6009" 第 146 页 共 153 页[2024-11-29 16:00:13.544]# RECV ASCII> +TCP="117.176.218.6","6009" OK [2024-11-29 16:00:16.454]# SEND ASCII> AT+REST [2024-11-29 16:00:16.552]# RECV ASCII> +REST="1" OK [2024-11-29 16:00:19.151]# RECV ASCII> ML307R-DC-RTU V3.22 [2024-11-29 16:00:29.297]# RECV ASCII> SIM:READY [2024-11-29 16:00:30.191]# RECV ASCII> REGSTER:SUCCESS [2024-11-29 16:00:31.207]# RECV ASCII> TCP_CONNECT:117.176.218.6:6009 #### (三) 使用指令触发IO任务 这里演示AT命令触发IO任务 AT+IOCFG=3,1,2 AT+USERTASK=1,1,"io_wave" {"id":3,"wave":[1,100,0]} AT+REST AT+PUTTASK=1 流程如下: [2024-10-25 18:29:38.194]# SEND ASCII> AT+IOCFG=3,1,2 [2024-10-25 18:29:38.456]# RECV ASCII> +IOCFG=3,1,2 OK 第 147 页 共 153 页 [2024-10-25 18:29:40.601]# SEND ASCII> AT+USERTASK=1,1,"io_wave" [2024-10-25 18:29:40.779]# RECV ASCII> > [2024-10-25 18:29:44.146]# SEND ASCII> {"id":3,"wave":[1,100,0]} [2024-10-25 18:29:44.609]# RECV ASCII> +USERTASK="save success" OK [2024-10-25 18:29:47.013]# SEND ASCII> AT+REST [2024-10-25 18:29:47.179]# RECV ASCII> +REST="1" OK [2024-10-25 18:29:49.758]# RECV ASCII> ML307R-DC-DTU V2.83 [2024-10-25 18:29:50.845]# RECV ASCII> SIM:READY [2024-10-25 18:29:53.708]# RECV ASCII> REGSTER:SUCCESS [2024-10-25 18:29:56.957]# SEND ASCII>//AT指令主动触发,注:AT指令也是支持服务器下发的 AT+PUTTASK=1 [2024-10-25 18:29:57.152]# RECV ASCII> +PUTTASK=1 OK 第 148 页 共 153 页返回结果 查询成功时: +GPSEN=<en> OK 配置成功时: +GPSEN=<en> OK 十八,GPS 功能 1,AT+GPSEN 使能GPS 这个配置也需要复位后生效,模块默认不启用 GPS 模式。 命令 查询设置: AT+GPSEN? 配置报文 AT+GPSEN=<en> 参数说明: <en> 整型,通道使能。 0 1 关闭 GPS 功能 启用 GPS 功能 示例: [2024-12-05 13:31:00.363]# RECV ASCII> +GPSEN=1 OK [2024-12-05 13:31:02.293]# SEND ASCII> AT+GPSEN? [2024-12-05 13:31:02.384]# RECV ASCII> +GPSEN=1 OK 第 149 页 共 153 页 2,AT+GPS 查询GPS定位信息 命令 返回结果 查询设置: AT+GPS[?] 查询设置: AT+GPS=<id> 参数说明: 查询成功时: +GPS=<en>,<lat>,<lon> OK 查询成功时: +GPS=<en>,<lat>,<lon>,[<speed>],[<time>] OK <id> 整型,决定 AT 指令的返回格式 。 1 2 3 +GPS=<en>,<lat>,<lon> +GPS=<en>,<lat>,<lon>,<speed> +GPS=<en>,<lat>,<lon>,<speed>,<time> <lat> 浮点型,纬度。 <lon> 浮点型,经度。 <lon> 浮点型,速度。 <time> 字符串,时间,例:"24-11-27 08:03:11" 。 示例: [2024-12-05 13:34:25.133]# SEND ASCII> AT+GPS [2024-12-05 13:34:25.212]# RECV ASCII> +GPS=1,30.691465,104.100014 OK 第 150 页 共 153 页 [2024-12-05 13:34:28.581]# SEND ASCII> AT+GPS=1 [2024-12-05 13:34:28.666]# RECV ASCII> +GPS=1,30.691465,104.100014 OK [2024-12-05 13:34:31.956]# SEND ASCII> AT+GPS=2 [2024-12-05 13:34:32.043]# RECV ASCII> +GPS=1,30.691465,104.100014,0.000000 OK [2024-12-05 13:34:37.125]# SEND ASCII> AT+GPS=3 [2024-12-05 13:34:37.204]# RECV ASCII> +GPS=1,30.691465,104.100014,0.000000,"24-11-27 08:03:11" OK 3,AT+GPSRAW 查询GPS原始报文 命令 查询设置: AT+GPSRAW? 参数说明: 返回结果 查询成功时: <gps_raw> <gps_raw> 字符串,GPS 的原始报文,如下所示 。 $GNGGA,080311.000,3041.4879,N,10406.0009,E,1,06,1.7,464.4,M,0.0,M,,75 $GNGLL,3041.4879,N,10406.0009,E,080311.000,A,A42 $GPGSA,A,3,04,09,16,03,07,,,,,,,,2.5,1.7,1.935 $BDGSA,A,3,09,,,,,,,,,,,,2.5,1.7,1.923 $GPGSV,2,1,07,03,08,218,25,04,70,255,34,07,19,306,22,09,47,301,337E $GPGSV,2,2,07,16,50,031,34,26,24,054,,31,,,2379 $BDGSV,1,1,01,09,68,007,3258 $GNRMC,080311.000,A,3041.4879,N,10406.0009,E,0.00,0.00,271124,,,A76 $GNVTG,0.00,T,,M,0.00,N,0.00,K,A23 第 151 页 共 153 页 $GNZDA,080311.000,27,11,2024,00,0042 $GPTXT,01,01,01,ANTENNA OK*35 示例: [2024-12-05 13:46:53.682]# SEND ASCII> AT+GPSRAW? [2024-12-05 13:46:53.819]# RECV ASCII> +GPRAW=539,"$GNGGA,080311.000,3041.4879,N,10406.0009,E,1,06,1.7,464.4,M,0.0,M,,*7 5 $GNGLL,3041.4879,N,10406.0009,E,080311.000,A,A*42 $GPGSA,A,3,04,09,16,03,07,,,,,,,,2.5,1.7,1.9*35 $BDGSA,A,3,09,,,,,,,,,,,,2.5,1.7,1.9*23 $GPGSV,2,1,07,03,08,218,25,04,70,255,34,07,19,306,22,09,47,301,33*7E $GPGSV,2,2,07,16,50,031,34,26,24,054,,31,,,23*79 $BDGSV,1,1,01,09,68,007,32*58 $GNRMC,080311.000,A,3041.4879,N,10406.0009,E,0.00,0.00,271124,,,A*76 $GNVTG,0.00,T,,M,0.00,N,0.00,K,A*23 $GNZDA,080311.000,27,11,2024,00,00*42 $GPTXT,01,01,01,ANTENNA OK*35" OK 4,AT+GPSTRG 设置GPS触发器 在首次定位成功时,触发一次任务,可以同时绑定 8 个任务源。 命令 查询设置: AT+GPSTRG? 查询设置: AT+GPSTRG=<id1>,<id2>,<id3>,<id4>,<id5>, <id6>,<id7>,<id8> 参数说明: 返回结果 查询成功时: +GPSTRG=<id1>,<id2>,<id3>,<id4>,<id5>, <id6>,<id7>,<id8> OK 查询成功时: +GPSTRG=<id1>,<id2>,<id3>,<id4>,<id5>, <id6>,<id7>,<id8> OK <idx> 整型,是否对这个 id 通道的任务推送一次触发,详细查看 AT+USERTASK 。 0 1 不对这个通道推送。 第 152 页 共 153 页 对这个通道推送。 示例: [2024-12-05 13:59:47.057]# SEND ASCII>//首次定位成功时,对任务通道 1 推送一次触发 AT+GPSTRG=1,0,0,0,0,0,0,0 [2024-12-05 13:59:47.228]# RECV ASCII> +GPRAW=1,0,0,0,0,0,0,0 OK 十九,联络我们 成都度云未来有限科技公司 网址:www.domall.cn 电话:400-8780206 微信:do-iot 邮件:zyf@doiot.cn 地址:成都市成华区府青路朗诗3号写字楼1103号 第 153 页 共 153 页
admin
2025年5月8日 17:17
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码