简体中文
简体中文
English
联系我们
注册
登录
layout空间导航

串口协议

更新时间:2022-05-05 07:06:39下载pdf

涂鸦 Cat.1模组串口通用协议主要用于涂鸦 Cat.1 模组与其它 MCU 串口直连做串口通信,其架构框如下图所示:
串口协议

名词解释

  • 模组:Cat.1 模组的在本文中的简称
  • GNSS:是 Global Navigation Satellite System 的缩写,表示全球导航卫星系统

串口通信

  • 波特率:115200/9600(自动侦测2分钟,如果未侦测到默认使用115200)
  • 数据位:8
  • 奇偶校验:无
  • 停止位:1
  • 数据流控:无
  • MCU:用户控制板控制芯片,与涂鸦模组通过串口对接

帧格式

字段 字节数 说明
帧头 2 固定为0x55aa
版本 1 升级扩展用
命令字 1 具体帧类型
数据长度 2 大端
数据 N
校验和 1 从帧头开始按字节求和得出的结果对256求余
  • 所有大于一个字节的数据均采用大端模式传输。

  • 一般情况下,采用同命令字一发一收同步机制,即一方发出命令,另一方应答,若发送方超时未收到正确的响应包,则超时传输,如下图所示:

    串口协议

    具体通信方式以协议列表章节中为准。

  • 模组控制命令下发及MCU状态上报则采用异步模式,假设模组控制命令下发“命令字”为x,MCU状态上报“命令字”为y,如下所示:

    • 模组控制命令下发:
      串口协议
    • MCU状态上报:
      串口协议

协议列表

心跳检测

  • 以15s的间隔定期发送心跳,若在超时时间(90s)内,未收到MCU的任何回应,则认为与MCU通信异常模组自动内部软件重启复位。

  • MCU侧也可依据此心跳定期检测模组是否正常工作,若模组无心跳下发,则MCU可通过模组提供的硬件复位引脚复位模组。

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x00
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

0x55aa 00 00 0000 ff

MCU返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x00
数据长度 2 0x0001
数据 1 0x00:MCU重启后第一次心跳返回值,仅发送一次,用于模组判断工作过程中MCU是否重启 0x01:除MCU重启后第一次返回0外,其余均返回此值
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

  • 0x55aa 03 00 0001 00 03(MCU第一次返回)
  • 0x55aa 03 00 0001 01 04(除第一次外,正常返回)

查询产品信息

产品信息由 product ID、MCU 软件版本构成:

  • product ID:对应 涂鸦 IoT 平台 PID (产品标识),由涂鸦 IoT 平台生成,用于 IoT 云端记录产品相关信息。
  • MCU 软件版本号格式定义:采用点分十进制形式,“x.x.x”(0<=x<=99),x 为十进制数。

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x01
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

0x55aa 00 01 0000 00

MCU返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x01
数据长度 2 N
数据 N {“p”: “AIp08kLIftb8x2x0”, “v”:“1.0.0” ,“m”:1, “apn”:“cniot”,“mht”:60,“qr”:0}
其中APN是可选项。如果没有APN,系统自动配置APN,mht、qr是可选项
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

{"p":"AIp08kLIftb8x2x0","v":"1.0.0","m":1}

  • p:表示产品ID,为AIp08kLIftb8x2x0

  • v:表示MCU版本,为1.0.0

  • m:表示模组的功耗,

    • 0:正常功耗
    • 1:低功耗(TuyaOS提供的定时器1S一个周期)
  • mht表示模组的MQTT心跳间隔时间,单位秒。默认心跳间隔100s。

  • qr表示模组拉取扫码配网使用的二维码的短码的字段,qr字段设置为1时会拉取二维码短码,设置为0时不会拉取二维码短码(如果设备已经绑定,不再获取短码地址)。

查询MCU和设定模组的工作模式

模组工作模式主要针对如何指示模组的工作状态以及如何重置模组而言,主要分两种情况:

  • MCU与模组配合处理:即模组通过串口通知MCU当前的工作状态,由MCU提供显示支持;MCU检测出模组的重置需求,通过串口通知模组重置模组。

  • 模组自处理:模组的工作状态通过模组的NET_MODE引脚驱动LED状态显示;模组重置通过检测GPIO输入需求处理。

    模组自处理模组重置方法为:模组检测GPIO入口低电平持续3s以上触发模组重置。指示灯与按钮所使用的GPIO管脚由以下命令配置(在低功耗模式无法触发该功能)。

    自处理模式下,LED灯只支持NET_MODE指示灯。

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x02
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

0x55aa 00 02 0000 01

MCU返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x02
数据长度 2 0x0000/0x0002 0x0000:指示模组工作为“MCU与模组配合处理”模式,MCU需实现上述“说明”中提及的功能。 0x0002:指示模组工作为“模组自处理”模式。
数据 0/2 数据长度为2:首字节为模组状态指示GPIO序号(固定值为0);次字节为模组重置按键GPIO序号
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

  • MCU与模组配合处理:0x55aa 03 02 0000 04

  • 模组自处理:0x55aa 03 02 0002 0c0d 1f(指示灯0x0c:GPIO12,复位按钮0x0d:GPIO13)

报告设备联网状态

设备联网状态 描述 状态值
状态1 SIM卡未连接 0x00
状态2 搜索网络中 0x01
状态3 已成功注册未联网 0x02
状态4 联网成功并获取到IP 0x03
状态5 已连接到云端 0x04
状态6 SIM 卡拒绝注册 0x05
  • 设备联网状态:

    • SIM卡未连接
    • 搜索网络中
    • 已成功注册未联网
    • 联网成功并获取到IP
    • 设备已连接到云端
    • 是SIM卡基站注册被拒绝,可能是SIM卡入网服务未开通
  • 当模组检测到MCU重启或MCU断线再上线的过程,则主动下发联网状态至MCU

  • 当模组的联网状态发生变化,则主动下发联网状态至MCU

  • 如设置模组工作模式为“模组自处理”,则MCU无需实现该协议

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x03
数据长度 2 0x0001
数据 1 参考状态说明
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

0x55aa 00 03 0001 00 03

MCU返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x03
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

0x55aa 03 03 0000 05

重置连接

CAT1接收到重置命令后会重启,初始化相关命令交互完成后模组进入配网模式,可以使用 App 进行配网。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x04
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

0x55aa 03 04 0000 06

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x04
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

0x55aa 00 04 0000 03

设置CAT1的工作模式

CAT1 模组有全功能工作模式,飞行模式两种。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x05
数据长度 2 0x0001
数据 1 1:全功能模式 4:飞行模式
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

0x55aa 03 04 0000 06

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x05
数据长度 2 0x0001
数据 1 0:设置成功 1:设置失败
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

0x55aa 00 04 0000 03

命令下发

  • datapoint命令/状态数据单元如下所示:

    数据段 字节数 说明
    dpid 1 datapoint序号
    type 1 对应开放平台上某datapoint具体的数据类型,通过如下“表示值”标识
    类型 表示值 长度(字节) 说明
    raw 0x00 N 对应于raw型datapoint(模组透传)
    bool 0x01 1 value范围:0x00/0x01
    value 0x02 4 对应int类型,大端表示
    string 0x03 N 对应于具体字符串
    enum 0x04 1 枚举类型,范围0-255
    bitmap 0x05 1/2/4 长度大于1字节时,大端表示
    len 2 长度对应value的字节数
    value 1/2/4/N hex表示,大于1字节采用大端传输
  • datapoint命令/状态数据单元除”raw”类型外,其他类型均属于“obj”型datapoint

  • “命令下发”可含多个datapoint“命令数据单元”

  • “命令下发”为异步处理协议,对应于MCU的datapoint“状态上报”

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x06
数据长度 2 取决于“命令数据单元”类型以及个数
数据 N “4.7.1命令数据单元”组
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例:系统开关对应3号DP,使用bool型变量,开机数值为1

0x55aa 00 06 0005 03 01 0001 01 10

状态上报

  • datapoint状态数据单元说明详见状态数据单元
  • “状态上报”为异步处理协议,“状态上报”触发机制有三类:
    • MCU收到“命令下发处理帧时,正确执行相应datapoint命令,再通过“状态上报”,帧将变化后的datapoint状态发送至模组。
    • MCU主动检测到datapoint有变化,将变化后的datapoint状态发送至模组。
    • MCU收到状态查询帧时,将所有的datapoint状态发送至模组。
  • “状态上报”可含多个datapoint“命令数据单元”

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x07
数据长度 2 取决于“状态数据单元”类型以及个数
数据 N 参考状态数据单元
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例:湿度对应5号DP,使用value型变量,湿度为30%

0x55aa 03 07 0008 05 02 0004 0000001e 3a

状态查询

  • “状态查询”为异步处理协议,主要用于模组查询MCU所有的“obj”类型的datapoint状态,当MCU收到此帧时,通过状态上报帧上报datapoint状态。
  • “状态查询”发送时机主要有两种:
    • 模组首次上电,通过心跳与MCU建立连接后,查询发送。
    • 模组工作过程中检测到MCU重启或发生了离线再上线的过程,查询发送。

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x08
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

0x55aa 00 08 0000 07

MCU升级服务

  • 何时升级客户涂鸦 IoT 平台自己的产品页面配置相关升级选项触发,模组仅作为支持 MCU 升级的数据传输通道,也不对数据内容做任何解析。

  • 目前涂鸦 IoT 平台的 MCU 升级支持下面四种升级方式的配置:

    • App提醒升级:用户每次进入设备控制面板都会收到升级提醒的弹窗,是否确认升级由用户自己在APP确认

    • App静默升级:App不会有任何提醒弹窗,固件上电后一分钟内会去自动去检测升级发现有高版本的升级包会自动开始拉取相关升级包,第一次上电后模组会间隔24小时去云端检测一次是否有升级包配置。

    • App强制升级:App端会有升级提醒弹窗,如果用户不确认升级用户就没法正常使用这个产品的控制面板。

    • App检测升级:App端不会有任何升级提醒的弹窗,必须要用户在App端自己去点击相关固件版本检测,如果有高版本的固件配置才会显示升级提示信息。

  • MCU升级相关流程图:

    模组发送完所有的升级包,重新发送01命令字(查询产品信息)MCU需要在一分钟回复产品信息中的软件版本号带上升级后的MCU版本号,版本号需要和在涂鸦后台配置升级的版本号保持一致。

    串口协议

升级启动(升级包大小通知)

升级启动方式含自动及手动升级。当处于自动升级时,模组检测云端MCU有更新版本固件,则自动启动与MCU升级包交互流程;当处于手动升级时,通过App确定,模组才启发与MCU升级包交互流程。

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x0a
数据长度 2 0x0004
数据 4 固件包字节数,unsigned int类型,大端模式
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

0x55aa 00 0a 0004 00006800 75(表示固件包长度26624,即26KB)

MCU返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x0a
数据长度 2 0x0001
数据 1 升级包分包传输大小:
0x00:默认256byte(兼容旧固件)
0x01:512byte
0x02:1024byte
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

0x55aa 03 0a 0001 00 0d

升级包传输

  • 升级包传输数据格式:包偏移(unsigned short) + 包数据

  • MCU若收到该帧数据长度为4且包偏移>=固件大小,则包传输结束

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x0b
数据长度 2 0x0004+数据包长度
数据 N 前四字节,固定为包偏移,后面为数据包内容
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例:若要升级的文件大小530Byte,(最后一包数据可不回复)

  • 第一包数据,包偏移为0x00000000,数据包长度为256

    0x55aa 00 0b 0104 00000000 xx…xx XX

  • 第二包数据,包偏移为0x00000100,数据包长度为256

    0x55aa 00 0b 0104 00000100 xx…xx XX

  • 第三包数据,包偏移为0x00000200,数据包长度为18

    0x55aa 00 0b 0016 00000200 xx…xx XX

  • 最后一包,包偏移为0x00000212,数据包长度为0

    0x55aa 00 0b 0004 00000212 xx...xx XX

MCU返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x0b
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例:0x55aa 03 0b 0000 0d

获取系统时间(格林时间)

  • 格林时间不带有时区和夏令时的因素,是一个国际标准的时间基准。
  • 当模组连接上网络之前本地的时间戳校准后才会返回成功,并带有有效的时间数据。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x0c
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

0x55aa 03 0c 0000 0e

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x0c
数据长度 2 0x0007
数据 7 数据长度为7字节: Data[0]为是否获取时间成功标志,为0表示失败,为1表示成功 Data[1]为年份, 0x00表示2000年 Data[2]为月份,从1开始到12结束 Data[3]为日期,从1开始到31结束 Data[4]为时钟,从0开始到23结束 Data[5]为分钟,从0开始到59结束 Data[6]为秒钟,从0开始到59结束
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

0x55aa 00 0c 0007 01 10 04 13 05 06 07 4c(格林时间2016年4月19日5时6分7秒)

检查模组功能

  • 模组需要插入SIM卡,检查SIM卡是否检测成功。

  • 检测模组是否经过授权。

  • 检测模式是否经过RF校准。

  • 获取当前4G信号强度(必须插入SIM卡)。范围为0~31,您可以根据自己所处的环境来判断是否合格。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x0e
数据长度 2 0x0000
数据 Data
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x0e
数据长度 2 0x0004
数据 4 数据长度为4字节: Data[0]: 0:SIM卡为检测到,1:SIM卡检测成功 Data[1]: 0:未写过授权,1:写过授权 Data[2]: 0:RF未校准,1:已经校准 Data[3]: 信号强度(0~31)
校验和 1 从帧头开始按字节求和得出的结果对256求余

获取本地时间

  • 本地时间是在格林时间的基础上加上当地(设备激活所在地)时区和夏令时的时间。
  • 当模组连接上网络之前本地的时间戳校准后才会返回成功,并带有有效的时间数据。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x1c
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x1c
数据长度 2 0x0008
数据 Data 数据长度为8字节: Data[0]为是否获取时间成功标志,为0表示失败,为1表示成功 Data[1]为年份, 0x00表示2000年 Data[2]为月份,从1开始到12结束 Data[3]为日期,从1开始到31结束 Data[4]为时钟,从0开始到23结束 Data[5]为分钟,从0开始到59结束 Data[6]为秒钟,从0开始到59结束 Data[7]为星期,从1开始到7结束,1代表星期一
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例:表示设备在中国大陆激活使用,当地时间为(UTC+8)2016年4月19日5时6分7秒。

0x55aa 00 1c 0008 01 10 04 13 05 06 07 02 5f

获取模组内存

获取模组剩余内存,返回-1表示不支持获取内存。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x0f
数据长度 2 0x0000
数据 Data
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x0f
数据长度 2 0x0004
数据 4 数据长度为4字节,大端格式: 如0x00 0x00 0x28 0x00代表剩余10240字节内存
校验和 1 从帧头开始按字节求和得出的结果对256求余

离线动态密码

离线动态密码是指设备长时间不联网也可使用的动态密码。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x16
数据长度 2 N
数据 Year(1) + mon(1) + day(1) + hour(1) + min(1) + sec(1) + code_len(1) + code(n) 格林时间+密码长度+密码
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

  • 离线密码:1849455172
  • 格林时间:2021/01/11 08:18:42
  • 数据示例:55 AA 00 16 00 11 15 01 0B 08 12 2A 0A 01 08 04 09 04 05 05 01 07 02 C3

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x16
数据长度 2 N
数据 Result(1) + type(1) + decode_len(1) + decode(n) Result :
0 正确非0 错误(无后续数据)
Type:
0 限时开门密码1 单次开门密码2 清除密码
decode_len:
解密后数据长度
decode:
解密数据
校验和 1 从帧头开始按字节求和得出的结果对256求余

获取Unix时间戳(带时区信息)

  • MCU可以获取当前Unix时间戳,时区信息以及夏令时范围。
  • 该协议仅支持保活门锁。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x1B
数据长度 2 0x0000
数据 Data
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x1B
数据长度 2 N
数据 2 Data[0]:获取时间成功与否 1:成功 0:失败
Data[1]-Data[4]:Unix时间戳
Data[5]:获取时区信息是否成功 1表示成功 0表示失败
Data[6]:0:表示东区 1:表示西区
Data[7]:表示时区
Data[8]:是否有夏令时 1:表示有夏令时 0:表示没有夏令时
Data[9]-Data[12]:进入夏令时时间戳(大端)
Data[13]-Data[16]:退出夏令时时间戳(大端)
校验和 1 从帧头开始按字节求和得出的结果对256求余

暂不支持夏令时获取。

请求云端临时密码(带schedule)

  • 门锁主板当检测到用户使用的是多组临时密码才去调用此接口去云端拉取相关数据,更新本地的密码数据和状态,这样可以最大程度节约功耗。

    模组给门锁给的相关时间数据都是基于格林时间,请门锁本地通过获取格林时间的接口同步自己的时钟数据。

  • 密码每次服务端都是全量下发,门锁需要每次根据服务端返回的所有密码和状态进行更新。

  • 保留原生效周期设置,在生效周期基础上可以按照每周重复的方式添加密码生效的计划;最多可以添加3个schedule。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x14
数据长度 2 0x0000
数据 Data
校验和 1 从帧头开始按字节求和得出的结果对256求余

门锁获取当前生效临时密码:

55 aa 00 14 00 00 13

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x14
数据长度 2 0x0001+N(临时密码)
数据 1+N 数据长度为1+N字节:
Data[0]:是否获取密码成功标志,为0表示失败,后面不会带上相关密码和有效时间数据,数据内容长度为1,为1表示成功
Data[1]:密码组数(0~10)
当密码组数为0的时候表示面板没有创建密码。串口传输不会带上相关密码和有效时间数据.此密码组数为本包数据含有的密码数据
Data[2]:密码长度(后面每组的密码长度保持一致)
Data[3]:bit7: 后续是否还有数据包。Bit6-bit0: 本包序号(从0开始)
//第一组密码相关数据
Data[4]:密码编号 (实际编号需要在密码编号的数据上加900)(1~50)
Data[5]:密码有效次数
0:表示不限制次数密码-有效期内可以不限次数开门
1:表示一次性密码-有效期内只能开一次门
Data[6]:密码当前状态
0:表示密码有效
1:表示面板已经进行了删除操作此密码无效
密码生效日期(格林时间):
Data[7]:为年份, 0x00表示2000年
Data[8]:为月份,从1开始到12结束
Data[9]:为日期,从1开始到31结束Data
Data[10]:为时钟,从0开始到23结束
Data[11]:为分钟,从0开始到59结束
Data[12]:为秒钟,从0开始到59结束
密码截至日期(格林时间):
Data[13]:为年份, 0x00表示2000年
Data[14]:为月份,从1开始到12结束
Data[15]:为日期,从1开始到31结束
Data[16]:为时钟,从0开始到23结束
Data[17]:为分钟,从0开始到59结束
Data[18]:为秒钟,从0开始到59结束临时密码(具体字节数N=data[2])(密码数据传输字符的ASCII码)
Data[19+N]:为schedule 条数
/* 第一条schedule数据*/
Data[20+N]:
0:非全天有效,分时间段有效。
1:全天有效。后面的起始时间和结束时间为无效数据。
Data[21+N]:开始时间(小时)
Data[22+N]:开始时间(分钟)
Data[23+N]:结束时间(小时)
Data[24+N]:结束时间(分钟)
Data[25+N]:周循环 Bit0:周日 Bit1:周一 Bit2:周二 Bit3:周三 Bit4:周四 Bit5:周五 Bit6:周六若此条schedule周日,周三循环,则为0x09
/* 第二条schedule数据 */

//第二组密码数据
校验和 1 从帧头开始按字节求和得出的结果对256求余

密码进制服务

密码进制主要指连续的密码数字按键范围,包含两个主要概念:

  • 进制:表示所有密码数字的个数,目前支持4-10。

  • 起始值:表示数字开始的数值,目前仅支持0和1。

    密码进制对应
    密码按键数量
    密码按键
    从0/1开始
    是否支持
    动态密码
    是否支持
    离线密码
    在线密码最
    小密码长度
    安全等级
    在线密码
    多语言配置
    4 可选 不支持 不支持 8 1/29W 支持8-12位密码
    5 可选 支持 不支持 8 1/39W 支持8-12位密码
    6 可选 支持 不支持 8 1/100W 支持8-12位密码
    7 可选 支持 支持 8 1/100W 支持8-11位密码
    8 可选 支持 支持 7 1/100W 支持7-11位密码
    9 可选 支持 支持 7 1/100W 支持7-10位密码
    10 不可选 支持 支持 6 1/100W 支持6-10位密码

密码进制设置

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x17
数据长度 2 0x0002
数据 2 数据长度为2字节:Data[0]为进制值Data[1]为起始值
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

  • 配置数字“12345”,分别配置进制为5,起始值为1。

  • 配置数字“012345”,分别配置进制为6,起始值为0。

    密码进制0x17设置,需要在获取信息查询产品信息0x01之后进行设置,并在密码操作前设置。

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x17
数据长度 2 0x0001
数据 result result: 0 设置成功 非0 设置失败
校验和 1 从帧头开始按字节求和得出的结果对256求余

请求云端临时密码(带schedule)

  • 门锁主板当检测到用户使用的是多组临时密码才去调用此接口去云端拉取相关数据,更新本地的密码数据和状态,这样可以最大程度节约功耗。

    模组给门锁给的相关时间数据都是基于格林时间,请门锁本地通过获取格林时间的接口同步自己的时钟数据。

  • 密码每次服务端都是全量下发,门锁需要每次根据服务端返回的所有密码和状态进行更新。
  • 保留原生效周期设置,在生效周期基础上可以按照每周重复的方式添加密码生效的计划;最多可以添加3个schedule。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x14
数据长度 2 0x0000
数据 Data
校验和 1 从帧头开始按字节求和得出的结果对256求余

门锁获取当前生效临时密码:

55 aa 00 14 00 00 13

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x14
数据长度 2 0x0001+N(临时密码)
数据 1+N 数据长度为1+N字节:
Data[0]为是否获取密码成功标志,为0表示失败,后面不会带上相关密码和有效时间数据,数据内容长度为1,为1表示成功
Data[1] 密码组数(0~10)
当密码组数为0的时候表示面板没有创建密码。串口传输不会带上相关密码和有效时间数据
Data[2] bit7: 后续是否还有数据包。Bit6-bit0: 本包序号(从0开始)
//第一组密码相关数据(长度+编号+有效次数+当前状态+生效日期+截至日期+密码内容+schedule条数+schedule数据)
Data[3] 密码长度
Data[4]密码编号 (实际编号需要在密码编号的数据上加900)(1~50)
Data[5]密码有效次数
0:表示不限制次数密码-有效期内可以不限次数开门
1:表示一次性密码-有效期内只能开一次门
Data[6]密码当前状态
0:表示密码有效
1:表示面板已经进行了删除操作此密码无效
密码生效日期(格林时间):
Data[7]为年份, 0x00表示2000年
Data[8]为月份,从1开始到12结束
Data[9]为日期,从1开始到31结束Data
[10]为时钟,从0开始到23结束
Data[11]为分钟,从0开始到59结束
Data[12]为秒钟,从0开始到59结束
密码截至日期(格林时间):
Data[13]为年份, 0x00表示2000年
Data[14]为月份,从1开始到12结束
Data[15]为日期,从1开始到31结束
Data[16]为时钟,从0开始到23结束
Data[17]为分钟,从0开始到59结束
Data[18]为秒钟,从0开始到59结束临时密码(具体字节数N=data[2])(密码数据传输字符的ASCII码)
Data[19+N] 为schedule 条数
/* 第一条schedule数据*/
Data[20+N]
0:非全天有效,分时间段有效。
1:全天有效。后面的起始时间和结束时间为无效数据。
Data[21+N] 开始时间(小时)
Data[22+N] 开始时间(分钟)
Data[23+N] 结束时间(小时)
Data[24+N] 结束时间(分钟)
Data[25+N] 周循环 Bit0:周日 Bit1:周一 Bit2:周二 Bit3:周三 Bit4:周四 Bit5:周五 Bit6:周六若此条schedule周日,周三循环,则为0x09
/* 第二条schedule数据 */

//第二组密码数据
校验和 1 从帧头开始按字节求和得出的结果对256求余

打开获取天气数据功能(可选)

打开获取天气数据功能。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x20
数据长度 2 N((L+K)+(L+K)…)
数据 Data L:占用1byte,表示K的长度 K:请求参数名称 如:L:0x06 K:w.temp L:0x06 K:w.pm25 L:0x0a K:w.humidity
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x20
数据长度 2 0x0002
数据 2 0x00表示失败 0x01错误码,数据格式非法 0x02错误码,异常错误 0x01表示成功 0x00
校验和 1 从帧头开始按字节求和得出的结果对256求余

下发天气数据(可选)

下发天气数据,在打开天气数据功能后模组定时下发。

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x21
数据长度 2 N((LKTLV)+(LKTLV)+…)
数据 Data 0x00:表示失败 0x01:错误码,表示参数服务没权限(确认是否购买了该参数服务) 0x01:表示成功 L:参数名长度 K:参数名 T:0x00整形、0x01字符串 L:字段名长度 V:字段值
校验和 1 从帧头开始按字节求和得出的结果对256求余

MCU模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x21
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

请求参数表如w.temp,w.pm25返回w.temp,返回参数少于请求参数请仔细检查请求参数名是否正确。

状态上报(同步)

  • 此命令为同步指令,MCU数据状态上报后,需要等待模组返回结果;

  • 每次发送模组都会有响应,模组未响应前不可多次上报;

  • 网络不好,数据难以及时上报时,模组会在5后返回失败,MCU需要等待大于5秒。

  • datapoint状态数据单元说明详见命令下发章节。

  • “状态上报”可含多个datapoint“命令数据单元”。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x22
数据长度 2 取决于“状态数据单元”类型以及个数
数据 N 参考状态数据单元
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x23
数据长度 2 0x01
数据 Data 0x00:表示失败 0x01:表示成功
校验和 1 从帧头开始按字节求和得出的结果对256求余

获取当前模组信号强度(可选)

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x24
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x24
数据长度 2 0x0001
数据 Data RSSI 值的范围为 0~31,值越大,信号越好。
0表示-113 dBm 或以下,31 表示 -51dBm 或以上
若返回 RSSI 的值不在范围内则为无效值,表示失败。
校验和 1 从帧头开始按字节求和得出的结果对256求余

通知模组关闭心跳(可选)

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x25
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x25
数据长度 2 0x0000
数据 0
校验和 1 从帧头开始按字节求和得出的结果对256求余

对于需要休眠降低功耗的MCU模组,可在休眠前发送该指令关闭模组心跳,方便进入休眠状态。该指令请勿在设备刚上电时发送,模组上电后需要和MCU建立心跳连接。

获取当前模组联网状态

设备联网状态 描述 状态值
状态1 SIM卡未连接 0x00
状态2 搜索网络中 0x01
状态3 已成功注册未联网 0x02
状态4 联网成功并获取到IP 0x03
状态5 已连接到云端 0x04
状态6 SIM 卡拒绝注册 0x05

报告设备联网状态保持一致。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x2b
数据长度 2 0x0000
数据 Data
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x2b
数据长度 2 0x0001
数据 1 参考状态说明
校验和 1 从帧头开始按字节求和得出的结果对256求余

获取模组MAC

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x2d
数据长度 2 0x0000
数据 Data
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x2d
数据长度 2 0x0007
数据 Data data[0]: 获取MAC地址是是否成功的标志: 0x00表示成功,表示后面6字节的MAC地址有效 0x01表示获取MAC失败,表示后面6字节的MAC无效 data[1]~data[6]:当获取MAC地址标志位data[0]表示成功则表示模组有效的MAC地址

获取CAT1的工作模式

CAT1模组有全功能工作模式,飞行模式两种。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 1 子命令:0x01
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

55 AA 03 71 00 01 01 75

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002
数据 2 子命令:0x01 数据: 1:全功能模式 4:飞行模式
校验和 1 从帧头开始按字节求和得出的结果对256求余

获取国际移动用户识别码 IMSI

本命令可以由 MCU 控制主动发送一个 IMSI 获取包,可用于获取模组的国际移动用户识别码。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 Data 子命令:0x02
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0010
数据 16 子命令:0x02 15字节的IMSI 示例:460113012467340
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回信息示例

55 AA 00 71 00 10 02 34 36 30 31 31 33 30 31 32 34 36 37 33 34 30 7C

获取 SIM 卡识别码ICCID

MCU 主动下发给模组获取 ICCID指令,模组将 ICCID(长度20的字串)返回给 MCU。本命令可以由 MCU 控制,主动发送 ICCID获取包,以用于获取模组的 SIM 卡识别号码。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 Data 子命令:0x03
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0015
数据 21 子命令:0x03 20字节的ICCID示例:89861118249000363490
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回信息示例

55 AA 00 71 00 15 03 38 39 38 36 31 31 31 38 32 34 39 30 30 30 33 36 33 34 39 30 9A

获取设备 IMEI

MCU 主动下发给模组获取 IMEI 指令,模组将 IMEI(长度15的字串)返回给 MCU。本命令可以由 MCU 控制,主动发送 IMEI 获取包,以用于获取设备的 IMEI 码。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 Data 子命令:0x04
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0010
数据 16 子命令:0x04 15字节的IMEI 示例:864237040014733
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回信息示例

55 AA 00 71 00 10 04 38 36 34 32 33 37 30 34 30 30 31 34 37 33 33 88

启动或关闭设备GNSS定位功能(可选)

MCU 主动下发给模组设置GNSS启动或者关闭定位功能。该功能由于GNSS模组的处理事务比较多,应答的消息超时时间最大为3秒。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x72
数据长度 2 0x0003
数据 Data 子命令:0x81
控制命令:0x01启动、0x00 关闭
定位类型:(开启模式下有效) 0x00:GPS+北斗
0x01:GPS+GLONASS
0x02:GPS
0x03:北斗(需要确认GNSS设备是否支持)
0x04:GLONASS(需要确认GNSS设备是否支持)
0x05:Galileo(需要确认GNSS设备是否支持)
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0003
数据 3 子命令:0x81
启动或者关闭状态:
0:失败,1:成功
定位类型状态(关闭时该状态显示值无效):
0:失败,1:成功
校验和 1 从帧头开始按字节求和得出的结果对256求余

自动上报设备的GNSS信息(可选)

MCU 主动下发给模组设置GNSS启动或者关闭定位功能。该功能由于GNSS模组的处理事务比较多,应答的消息超时时间最大为3秒。启用该功能,需要首先开启GNSS定位功能。

定位类型字段在GNSS定位开启的情况下其值才有效。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x72
数据长度 2 0x0003
数据 Data 子命令:0x90 上报周期:2字节(秒)(大端模式)上报的DPID:1字节
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0002
数据 Data 子命令:0x90 状态:0:失败,1:成功
校验和 1 从帧头开始按字节求和得出的结果对256求余

上报周期为0的时候,表取消自动上报。上报周期不小于5秒。自动上报的数据通过蜂窝通道。

启动或关闭设备Wi-Fi定位功能(可选)

MCU 主动下发给模组设置 Wi-Fi 启动或者关闭定位功能。启动后,模组会每30秒扫描一次周围的热点。

命令下发后,第一次需要等待2秒左右才可以获取信息。因为热点扫描一次大概需要2秒左右。

该功能开启后,蓝牙功能会关闭。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x72
数据长度 2 0x0002
数据 Data 子命令:0x82 控制命令:0x01启动、0x00关闭
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0002
数据 2 子命令:0x82 状态:0:失败,1:成功
校验和 1 从帧头开始按字节求和得出的结果对256求余

自动上报设备Wi-Fi定位信息(可选)

MCU 主动下发给模组根据设置的DPID和上报间隔,模组自动上报定位信息到云端。启用该功能,需要首先开启Wi-Fi定位功能。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x72
数据长度 2 0x0002
数据 Data 子命令:0x91 上报周期:2字节(秒)(大端模式)上报的DPID:1字节
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0002
数据 2 子命令:0x91 状态:0:失败,1:成功
校验和 1 从帧头开始按字节求和得出的结果对256求余

自动上报设备LBS定位信息(可选)

MCU 主动下发给模组根据设置的DPID和上报间隔,模组自动上报定位信息到云端。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x72
数据长度 2 0x0002
数据 Data 子命令:0x92 上报周期:2字节(秒)(大端模式)上报的DPID:1字节
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0002
数据 2 子命令:0x92 状态:0:失败,1:成功
校验和 1 从帧头开始按字节求和得出的结果对256求余

上报周期为0的时候,表取消自动上报。上报周期不小于5秒。自动上报的数据通过蜂窝通道。

建议Wi-Fi、GNSS、LBS三种定位模式只开启一种自动上报,否则上报周期和设定值可能会有1~2秒的偏差

复位GNSS设备(可选)

MCU 主动下发给模组复位GNSS设备。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x72
数据长度 2 0x0003
数据 Data 子命令:0x83 复位GPIO:0~31,根据实际产品的GNSS设备的复位GPIO口 复位电平:0表示低电平,1表示高电平
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0002
数据 2 子命令:0x83 状态:0:失败,1:成功
校验和 1 从帧头开始按字节求和得出的结果对256求余

获取设备GNSS定位信息(可选,经纬度格式)

MCU 主动下发给模组获取GNSS定位信息。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 Data 子命令:0x10
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002+N
数据 2+N 子命令:0x10 状态:(1:成功,0:失败) +N字节的定位信息(字符串,longitude ,latitude)
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回的定位信息为字符串类型,MCU 在获取到后定位信息后,按照状态上报章节把模组返回的定位信息上报给云端。如果云端的DP是要求纬经度格式,则 MCU 需要对收到的定位信息转为纬经度。

获取设备GNSS定位信息(可选,纬经度格式)

MCU 主动下发给模组获取GNSS定位信息。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 Data 子命令:0x29
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002+N
数据 2+N 子命令:0x29 状态:(1:成功,0:失败) +N字节的定位信息(字符串,字符串为纬经度格式:latitude,longitude)
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回的定位信息为字符串类型,MCU在获取到后定位信息后,按照状态上报把模组返回的定位信息上报给云端。

获取设备GNSS的SNR(可选)

MCU 主动下发给模组获取GNSS信号强度。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 1 子命令:0x11
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0003
数据 3 子命令:0x11 状态:1:成功,0:失败 信号强度:0~100(1字节)
校验和 1 从帧头开始按字节求和得出的结果对256求余

获取设备GNSS速度(可选)

MCU 主动下发给模组获取GNSS瞬时速度。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 1 0x0001
数据 Data 子命令:0x12
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0004
数据 4 DATA[0]子命令:0x12 DATA[1]状态:1:成功,0:失败 速度(2字节):单位(100米/H) DATA[2] = (速度)高数据位 DATA[3] = (速度)低数据位。 例如DATA[2]=SPEED>>8 DATA[3]=0xFF;
校验和 1 从帧头开始按字节求和得出的结果对256求余

获取设备 Wi-Fi 定位信息(可选)

MCU 主动下发给模组获取 Wi-Fi 定位信息。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 1 0x0001
数据 Data 子命令:0x20
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002+N
数据 2+N 子命令:0x20
AP信息个数:1(字节)
N字节的定位信息(字符串)
如: 18:56:80:2F:7C:36,-61;18:56:80:2F:7C:36,-61;18:56:80:2F:7C:36,-61
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回的定位信息为字符串类型,MCU在获取到后定位信息后,按照状态上报直接把模组返回的定位信息上报给云端。目前定位信息只上报最多10个最好信号的AP信息。

获取LBS定位信息

MCU 发送命令给模组,获取定位信息。LBS定位信息的格式是运营商编码(MCC+MNC)+位置区域码+基站编号。如中国电信:46011,e615,04bafc0a

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 Data 子命令:0x21
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002+N
数据 Data 子命令:0x21状态:1字节(1,成功;0,失败)N字节的LBS定位信息(字符串格式)如46011,e615,04bafc0a
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回示例

55 AA 00 71 00 15 21 01 34 36 30 31 31 2C 65 36 31 35 2C 30 34 62 61 66 63 30 61 7D

控制LZ211的GNSS主电源

MCU 发送命令给LZ211模组控制GNSS电源。LZ211模组内置GNSS芯片,GNSS备用电源处于常供电,主电源属于可控制模式,主电源上电属于热启动。

GNSS上电过程中,会加载GNSS固件,需要4秒左右。GNSS关闭主电源后,重新打开电源后,需要重新启动GNSS定位功能(参考章节启动/关闭设备GNSS定位功能)。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x72
数据长度 2 0x0002
数据 Data 子命令:0x85数据:Data[1] :1打开电源,0关闭电源
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0002
数据 Data 子命令:0x85状态:1:成功;0:失败
校验和 1 从帧头开始按字节求和得出的结果对256求余

获取LZ211的GNSS电源状态

MCU 发送命令查询LZ211模组的GNSS电源状态。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 Data 子命令:0x22
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002
数据 Data 子命令:0x22状态:0:电源关闭;1:固件加载中2:电源开启,固件加载完成
校验和 1 从帧头开始按字节求和得出的结果对256求余

电话呼入提醒(可选)

由于MCU与模组属于一问一答交互方式,故MCU收到电话呼入提醒时,应予以答复,3s内MCU不做对应指令响应,呼入即被挂断。

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002+N(电话号码)
数据 Data 子命令:0x23
+控制字:0x00
+电话号码:(字符串N字节)
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

55 aa 00 71 00 0D 23 00 31 35 38 39 30 39 38 36 37 36 37 F2

MCU返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0002
数据 Data 子命令:0x23
控制字:0x00
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

55 aa 03 71 00 02 23 00 98

电话呼出(可选)

呼出返回成功仅代表指令下发 OK。具体对方是否收到,需要通过电话状态查询。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0002+N(电话号码)
数据 Data 子命令:0x23
+控制字:0x01
+电话号码:(字符串N字节)
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

55 aa 03 71 00 07 23 01 31 30 30 38 36 9D

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0003
数据 Data 子命令:0x23
+控制字:0x01
+结果:1成功;0失败
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

55 aa 00 71 00 03 23 01 01 98

电话接听(可选)

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0002
数据 Data 子命令:0x23
+控制字:0x02
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

55 aa 03 71 00 02 23 02 9A

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0003
数据 Data 子命令:0x23
+控制字:0x02
+结果:0成功;1失败
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

55 aa 00 71 00 03 23 02 00 9A

电话挂断(可选)

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0002
数据 Data 子命令:0x23
+控制字:0x03
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

55 aa 03 71 00 02 23 03 9B

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0003
数据 Data 子命令:0x23
+控制字:0x03
+结果:0成功;1失败
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

55 aa 00 71 00 03 23 03 00 99

电话状态查询(可选)

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0002
数据 Data 子命令:0x23
+控制字:0x04
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

55 aa 03 71 00 02 23 04 9C

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0003
数据 Data 子命令:0x23
+控制字:0x04
+结果:
0,拨号中;
1,空闲;
2,通话失败;
3,通话中
校验和 1 从帧头开始按字节求和得出的结果对256求余

示例

55 aa 00 71 00 03 23 04 01 9B

接收到短信通知(可选)

模组收到短信后,会主动上报给MCU,MCU接收到短信后,模组会把收到的短信删除。以防止SIM中短信满后,无法接收到新的信息。

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002+N
数据 Data 子命令:0x24
+控制字:0x00
+短信内容:
N字节{“n”:”10086”, “t”:”2021-3-29 16:58”“c”:”xxxdfasfd”}
校验和 1 从帧头开始按字节求和得出的结果对256求余

MCU返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0003
数据 Data 子命令:0x24
+控制字:0x00
+结果:0,失败1,成功
校验和 1 从帧头开始按字节求和得出的结果对256求余

上报的短信内容为JSON格式,其那n表示电话号码,t表示时间,c表示短信中的具体内容,编码格式为GB2312。

发送短信(可选)

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0002+N
数据 Data 子命令:0x24
+控制字:0x01
+短信内容{“n”:”10086”,“c”:”xxxdfasfd”}
校验和 1 从帧头开始按字节求和得出的结果对256求余

以中文短信为例,发送 “你好” 则为:

55aa0371002024017b226e223a223135383930393836373533222c2263223a22c4e3bac3227d A2

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0003
数据 Data 子命令:0x24
+控制字:0x01
+结果:0,失败1,成功
校验和 1 从帧头开始按字节求和得出的结果对256求余

以中文短信为例,发送 “你好” 则为:

55aa00710003240101 99

设置短信编码格式(可选)

说明:设置收发短信的编码方式。LZ211-EAU模组的短信默编码是UTF-8,CN模组的短信默认编码均为CP936。该设置掉电后失效。

模组发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002+N
数据 3 子命令:0x24
+控制字:0x02
+编码方式:
0x00 ISO8859-1(不支持中文)
0x01 UTF-8
0x05 CP936
校验和 1 从帧头开始按字节求和得出的结果对256求余

MCU返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0003
数据 3 子命令:0x24
+控制字:0x02
+结果:0,失败1,成功
校验和 1 从帧头开始按字节求和得出的结果对256求余

电池电量查询(可选)

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 Data 子命令:0x25
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002
数据 Data 子命令:0x25电量:0~100
校验和 1 从帧头开始按字节求和得出的结果对256求余

充电状态查询(可选)

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 Data 子命令:0x26
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0002
数据 Data 子命令:0x26
充电状态:
1 开始充电
2 充电结束
3 电量低
4 电量超低
5 电池拔出
6 充电器拔出
7 充电故障
校验和 1 从帧头开始按字节求和得出的结果对256求余

音量设置(可选)

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x72
数据长度 2 0x0003
数据 Data 子命令:0x87
+类型:(1字节)
1:本地音量
2:通话音量
+音量:0~100(0静音)
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0003
数据 Data 子命令:0x87
+类型:(1字节)
1:本地音量
2:通话音量
+结果:0成功,其他失败
校验和 1 从帧头开始按字节求和得出的结果对256求余

SD卡中音频播放播放(可选)

本功能是需要SD卡支持。

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0004+N
数据 Data 子命令:0x27
+端口(1字节)
0:播放到本地喇叭
1:播放到通话的上行链路
+控制字:(1字节)
0,停止
1,播放
2,暂停
3,恢复
+音频文件格式如
1,pcm
2,wavpcm
3,mp3
4,amr-nb
5,amr-wb
+音频文件所在模组的路径(N字节)如"/sdcard0/ice_8k_16bit.pcm"(仅播放时需要音频文件的地址)
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0005
数据 Data 子命令:0x27
+端口(1字节)
+控制字(1字节)
+音频文件格式
+状态(0,成功;其他失败)
校验和 1 从帧头开始按字节求和得出的结果对256求余

本地音频播放状态查询(可选)

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 Data 子命令:0x28
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0003
数据 Data 子命令:0x28
+状态:
0,空闲
1,播放中
2,播放中止
3,播放完成
+结果:0成功,其他失败
校验和 1 从帧头开始按字节求和得出的结果对256求余

本地音频播放完成上报(可选)

模块发送

在本地音乐播放完成后,模块会主动上报播放完成的状态给MCU。

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 2 子命令:0x2a
状态(1 Byte):上报 1 表示播放完成
校验和 1 从帧头开始按字节求和得出的结果对256求余

获取是否启动各定位功能(可选)

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x71
数据长度 2 0x0001
数据 1 子命令:0x30
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x71
数据长度 2 0x0003
数据 4 子命令:0x30
gnss定位:0x01 表示启动,0x00 表示关闭
Wi-Fi 定位:0x01 表示启动,0x00 表示关闭
LBS 定位:0x01 表示启动,0x00 表示关闭
校验和 1 从帧头开始按字节求和得出的结果对256求余

启动/关闭设备低电压关机功能(可选)

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x72
数据长度 2 0x0001
数据 2 子命令:0x88
控制命令:0x01 表示启动,0x00 表示关闭
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0003
数据 2 子命令:0x88
状态:0 表示失败,1 表示成功
校验和 1 从帧头开始按字节求和得出的结果对256求余

启动/关闭蓝牙控制(可选)

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x72
数据长度 2 0x0001
数据 2 子命令:0x89
控制命令:0x01 表示启动,0x00 表示关闭
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0003
数据 2 子命令:0x89
状态:0 表示失败,1 表示成功
校验和 1 从帧头开始按字节求和得出的结果对256求余

二维码主动推送给MCU

模块发送

设备从云端获取二维码短连接后,主动发送给MCU。该功能一般使用在有屏的设备且需要在屏幕上显示绑定二维码。

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x72
数据长度 2 0x0001+N
数据 Data 子命令:0x93+短连接地址(字符串格式)
校验和 1 从帧头开始按字节求和得出的结果对256求余

设置VoLTE开关

MCU发送

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x03
命令字 1 0x72
数据长度 2 0x0001
数据 2 子命令:0x94
控制命令:
0x01打开
0x00关闭
校验和 1 从帧头开始按字节求和得出的结果对256求余

模组返回

字段 字节数 说明
帧头 2 0x55aa
版本 1 0x00
命令字 1 0x72
数据长度 2 0x0003
数据 2 子命令:0x94
状态:0 表示失败,1 表示成功
校验和 1 从帧头开始按字节求和得出的结果对256求余

协议版本

版本 主要变更 变更日期 说明
1.0.0 协议初版 20201031 CAT1串口通用协议初版
1.0.1 CAT1特有命令采用子命令方式 20201217 0x71->CAT1读操作0x72->CAT1写操作
1.02 1. 增加GPS/Wi-Fi定位功能
2. 取消最小工作模式
3. 增加模组功能检测
4. 增加定位跟踪模式选择
20201224 当前平台不支持最小工作模式
1.0.3 1. 增加APN选项
2. 增加GNSS电源开关命令
3. 增加LZ211模组支持
4. 增加LBS定位
5. 增加蜂窝拒绝注册状态
20210305 1. 在查询产品信息的MCU应答中增加apn设置
2. 增加0x85的GNSS子命令(LZ211模组有效)
1.0.4 1. 增加电话,短信
2. 增加电池,充电状态查询
3. 增加本地音频播放
20210318
1.0.5 1. 增加GPS纬经度格式的查询命令
2.Wi-Fi定位方式查询,返回json格式
3.支持Wi-Fi定位信息自动上报
4.支持GPS定位信息自动上报
5.支持获取Unix时间戳(带时区信息)
6. 离线动态密码
7.密码进制设置
8.请求云端临时密码(带schedule列表)
9.支持LBS定位信息自动上报
20210602
1.0.6 1.增加启动/关闭低电压关机功能
2.增加启动/关闭蓝牙连接
3.增加获取是否启动各定位功能
4.WIFI定位方式查询,返回string格式,返回string格式
20210703 关机电压:3.25V
1.0.7 1.在查询产品信息的应答包里增加MQTT心跳间隔时间设置
2.增加二维码短连接透传给mcu
3.增加产品信息查询返回里是否需要二维码短连接的配置
20210802
1.0.8 1.修改获取LBS定位的数据格式
2.修改获取WiFi定位的数据格式
20211020 LBS定位数据格式示例:460,00,22716,201564481,-41;460,00,22716,201564482,-42
1.0.9 添加VoLTE开关指令 20211029
1.0.10 1.添加模组主动发送通话状态
2.添加设置收发短信的编码方式的指令
20220121
1.0.11 添加本地播放音乐完成后的状态上报 20220308