MQTT指令集
=================


--------------------------------------------
AT+MQTTUSERCFG:设置 MQTT 用户属性
--------------------------------------------

**执行命令**

命令:
::

	AT+MQTTUSERCFG=<LinkID>,<scheme>,<"client_id">,<"username">,<"password">,<cert_key_ID>,<CA_ID>,<"path">

返回:
::

	OK

**参数**

- <LinkID>:当前仅支持 link ID 0。
- <scheme>:

	- 1: MQTT over TCP
	- 2: MQTT over TLS(PSK加密)

- <client_id>:MQTT 客户端 ID,最大长度:256 字节。
- <username>:用户名,用于登陆 MQTT broker,最大长度:64 字节。
- <password>:密码,用于登陆 MQTT broker,最大长度:64 字节。
- <cert_key_ID>:证书 ID,目前 暂不支持cert 证书,参数为 0。
- <CA_ID>:CA ID,目前暂不支持CA 证书,参数为 0。
- <path>:资源路径,最大长度:32 字节。

**说明**

- 每条 AT 命令的总长度不能超过 256 字节。


-----------------------------------------------
AT+ MQTTCONNCFG:设置 MQTT连接属性
-----------------------------------------------

**执行命令**

命令:
::

	AT+MQTTCONNCFG=<LinkID>,<keepalive>,<disable_clean_session>,<"lwt_topic">,<"lwt_msg">,<lwt_qos>,<lwt_retain>

返回:
::

	OK

**参数**

- <LinkID>:当前仅支持 link ID 0。
- <keepalive>:MQTT ping 超时时间,单位:秒。范围:[0,7200]。默认值:0,会被强制改为 120 秒。
- <disable_clean_session>:设置 MQTT 清理会话标志。

	- 0: 使能清理会话
	- 1: 禁用清理会话

- <lwt_topic>:遗嘱 topic,最大长度:128 字节。
- <lwt_msg>:遗嘱 message,最大长度:64 字节。
- <lwt_qos>:遗嘱 QoS,参数可选 0、1、2,默认值:0。
- <lwt_retain>:遗嘱 retain,参数可选 0 或 1,默认值:0。

**示例**
::

	AT+MQTTCONNCFG=0,180,0,"test/aaa","good bye",1,0


------------------------------------------
AT+MQTTCONN:设置 MQTT连接属性
------------------------------------------

**查询命令**

命令:
::

	AT+MQTTCONN?

返回:
::

	+MQTTCONN:<LinkID>,<state>,<scheme>,<"host">,<port>,<reconnect>
	OK

**执行命令**

命令:
::

	AT+MQTTCONN=<LinkID>,<host>,<port>,<reconnect>

返回:
::

	OK

**参数**

- <LinkID>:当前仅支持 link ID 0。
- <host>:MQTT broker 域名或IP,最大长度:64 字节。
- <port>:MQTT broker 端口,最大端口:65535。
- <reconnect>:

	- 0: MQTT 不自动重连
	- 1: MQTT 自动重连

- <state>:MQTT 状态:

	- connected:连接成功
	- disconnect:连接失败

- <scheme>:

	- 1: MQTT over TCP
	- 2: MQTT over TLS(PSK加密)

**示例**
::

	AT+MQTTCONN=0,192.168.0.102,8883,1


----------------------------
AT+MQTTPUB:发布 MQTT 消息
----------------------------

**执行命令**

命令:
::

	AT+MQTTPUB=<linkID>,<"topic">,<"data">,<qos>,<retain>

返回:
::

	OK

**参数**

- <LinkID>:当前仅支持 LinkID 0。
- <topic>:MQTT topic,最大长度:128字节。
- <data>:MQTT字符串消息。
- <qos>:发布消息的 QoS,参数可选0、1、或2。
- <retain>:发布 retain(0或1)。

**示例**
::

	//通过主题test/abc发布字串“987654321”消息
	AT+MQTTPUB=0,test/abc,987654321,1,0


----------------------------------------------------
AT+ MQTTPUBRAW:发布 MQTT 消息(二进制)
----------------------------------------------------

**执行命令**

命令:
::

	AT+MQTTPUBRAW=<linkid>,<"topic">,<length>,<qos>,<retain>

返回:
::

	OK
	>

符号 > 表示 AT 准备好接收串口数据,此时您可以输入数据,当数据长度达到参数 <length> 的值时,数据传输开始。
若传输成功,则 AT 返回:
::

	+MQTTPUBRAW:OK

**参数**

- <LinkID>:当前仅支持 link ID 0。
- <topic>:MQTT topic,最大长度:128 字节。
- <length>:MQTT 消息长度,最大长度为512字节。
- <qos>:发布消息的 QoS,参数可选 0、1、或 2,默认值:0。
- <retain>:发布 retain。


----------------------------------------------------
AT+ MQTTSUB:订阅 MQTT Topic
----------------------------------------------------

**查询命令**

命令:
::

	AT+MQTTSUB?

返回:
::

	+MQTTSUB:<linkid>,<status>,<topic1>,<“qos”>
	+MQTTSUB: <linkid>,<status>,<topic2>,<“qos”>
	OK

**执行命令**

命令:
::

	AT+MQTTSUB=<linkid>,<"topic">,<qos>

返回:
::

	OK

**参数**

- <LinkID>:当前仅支持 link ID 0。
- <topic>:订阅的 topic。
- <qos>:订阅的 QoS。

**说明**

当 AT 接收到已订阅的 topic 的 MQTT 消息时,返回:
::

	+MQTTSUBRECV:<LinkID>,<"topic">,<data_length>,data

若已订阅过该 topic,则返回:
::

	ALREADY SUBSCRIBE


----------------------------------------------------
AT+ MQTTUNSUB:取消订阅 MQTT Topic
----------------------------------------------------

**执行命令**

命令:
::

	AT+MQTTUNSUB=<linkID>,<”topic”>

返回:
::

	OK

若未订阅过该 topic,或未创建MQTT连接则返回:
::

	NO UNSUBSCRIBE
	OK

**参数**

- <LinkID>:当前仅支持 link ID 0。
- <topic>:MQTT topic,最大长度:128 字节。


--------------------------------------------------------------------
AT+ MQTTCLEAN:断开 MQTT 连接
--------------------------------------------------------------------

**执行命令**

命令:
::

	AT+MQTTCLEAN=<LinkID>

返回:
::

	OK

**参数**

• <LinkID>:当前仅支持 link ID 0。