NodeMCU文档中文翻译 6 MQTT模块
2017-09-19 11:11
405 查看
一、译文
MQTT客户端支持Mqtt3.1.1协议,要确保你的MQTT服务器配置正确并支持3.1.1版本。此Mqtt模块并不兼容3.1版本之前的MQTT服务器。mqtt.Client() | 创建一个MQTT客户端. |
mqtt.client:close() | 关闭与服务器之间的连接. |
mqtt.client:connect() | 根据主机名、端口号和安全配置连接服务器. |
mqtt.client:lwt() | 创建遗嘱 (可选). |
mqtt.client:on() | 为事件创建回调函数. |
mqtt.client:publish() | 发送一条消息. |
mqtt.client:subscribe() | 订阅一个或多个主题. |
mqtt.client:unsubscribe() | 取消订阅一个或多个主题. |
1、mqtt.Client()
创建一个MQTT客户端。语法(PS:中括号内为可选参数)
mqtt.Client(clientid, keepalive[, username, password, cleansession])
参数
clientid客户端id
keepalive心跳秒数
username用户名
password密码
cleansession清除session
0/1 表示
否/
是
返回
Mqtt客户端
示例代码
[javascript] view
plain copy
-- 初始化无需登陆的客户端, 心跳时间 120秒
m = mqtt.Client("clientid", 120)
-- 初始化需要登陆的客户端, 心跳时间 120秒
m = mqtt.Client("clientid", 120, "user", "password")
-- 创建遗嘱(可选)
-- 服务器将会发送一条 qos = 0, retain = 0, 内容为"offline"的消息到"/lwt"主题,如果没收到客户端发送的心跳数据包(掉线)
m:lwt("/lwt", "offline", 0, 0)
m:on("connect", function(client) print ("connected") end) --连接到服务器触发事件
m:on("offline", function(client) print ("offline") end) --掉线触发事件
-- 收到消息时触发事件
m:on("message", function(client, topic, data)
print(topic .. ":" )
if data ~= nil then
print(data)
end
end)
-- 对于 TLS: m:connect("192.168.11.118", secure-port, 1)
m:connect("192.168.11.118", 1883, 0, function(client) print("connected") end,
function(client, reason) print("failed reason: "..reason) end)
-- 确保subscribe/publish方法在连接上服务器后再调用,在实际应用中是把他们放在connect回调函数里或者确定连接成功
-- 订阅/topic主题、服务质量为0
m:subscribe("/topic",0, function(client) print("subscribe success") end)
-- 发送一条信息 data = hello, QoS = 0, retain = 0
m:publish("/topic","hello",0,0, function(client) print("sent") end)
m:close();
-- 你可以再次调用 m:connect 连接函数
2、mqtt.client:close()
关闭与服务器的连接语法 mqtt:close()
参数 无
返回 成功true,失败false
3、mqtt.client:connect()
根据主机名、端口号和安全配置连接服务器。语法
mqtt:connect(host[, port[, secure[, autoreconnect]]][, function(client)[, function(client, reason)]])
参数
host主机名,
域名或 IP (字符串)
port服务器端口(数字),
默认1883
secure0/1
表示
false/
true,
默认 0. 详情查看文档 net module.
autoreconnect0/1表示
false/
true,默认
0 (断线是否重连)
function(client)连接服务器成功时的回调函数
function(client, reason)连接服务器失败时的回调函数
返回
成功true,失败false
连接失败时的错误代码
常量 | 值 | 描述 |
---|---|---|
mqtt.CONN_FAIL_SERVER_NOT_FOUND | -5 | 未找到服务器(或没开端口) |
mqtt.CONN_FAIL_NOT_A_CONNACK_MSG | -4 | 返回消息回应不是Mqtt协议 |
mqtt.CONN_FAIL_DNS | -3 | DNS错误 |
mqtt.CONN_FAIL_TIMEOUT_RECEIVING | -2 | 等待响应超时 |
mqtt.CONN_FAIL_TIMEOUT_SENDING | -1 | 尝试发送连接消息超时 |
mqtt.CONNACK_ACCEPTED | 0 | 没有错误. 注意: 这不会触发错误回调函数. |
mqtt.CONNACK_REFUSED_PROTOCOL_VER | 1 | 服务器MQTT版本不是3.1.1. |
mqtt.CONNACK_REFUSED_ID_REJECTED | 2 | ClientID被服务器拒绝. (查看mqtt.Client()) |
mqtt.CONNACK_REFUSED_SERVER_UNAVAILABLE | 3 | 服务不可用. |
mqtt.CONNACK_REFUSED_BAD_USER_OR_PASS | 4 | 用户名或密码错误. |
mqtt.CONNACK_REFUSED_NOT_AUTHORIZED | 5 | 用户名没经过认证. |
4、mqtt.client:lwt()
创建遗嘱(可选),服务器将会发送一条 qos = 0, retain = 0, 内容为"offline"的消息到"/lwt"主题,如果没收到客户端发送的心跳数据包(掉线)。语法
mqtt:lwt(topic, message[, qos[, retain]])
参数
topic将要发送遗嘱消息的主题
(字符串)
message遗嘱消息,
(缓存 或 字符串)
qos消息质量,
默认 0
retain保留标志,
默认 0
返回 空
5、mqtt.client:on()
为事件创建回调函数.语法
mqtt:on(event, function(client[, topic[, message]]))
参数
event可以是
"connect", "message" 或者 "offline"
function(client[, topic[, message]])回调函数。第一个参数为client、如果事件为 "message",那么第二个、第三个参数分别是主题和接收到的消息
返回 空
6、mqtt.client:publish()
发送一条消息.语法
mqtt:publish(topic, payload, qos, retain[, function(client)])
参数
topic要发送消息的主题
(字符串)
message消息,
(缓存 或 字符串)
qos消息质量
retain消息保留标志
function(client)可选的回调函数。当消息发送成功(服务器传来PUBACK响应)则触发该事件。注意:当多次调用publish()
函数,所有的发送指令将会调用最后定义的回调函数。
返回
成功true,失败false
7、mqtt.client:subscribe()
订阅一个或多个主题.语法
mqtt:subscribe(topic, qos[, function(client)]) 或
mqtt:subscribe(table[, function(client)])
参数
topic主题
(字符串)
qos订阅的消息质量,
默认 0
table要订阅的'topic,
qos'数组对
function(client)订阅成功时的可选回调函数.注意:当多次调用subscribe()
函数,所有的订阅指令将会调用最后定义的回调函数。
返回
成功true,失败false
示例代码
[javascript] view
plain copy
-- 订阅/topic主题、服务质量为0
m:subscribe("/topic",0, function(conn) print("subscribe success") end)
-- 或者订阅多个主题 (topic/0, qos = 0; topic/1, qos = 1; topic2 , qos = 2)
m:subscribe({["topic/0"]=0,["topic/1"]=1,topic2=2}, function(conn) print("subscribe success") end)
8、mqtt.client:unsubscribe()
取消订阅一个或多个主题.语法
mqtt:unsubscribe(topic[, function(client)]) 或
mqtt:unsubscribe(table[, function(client)])
参数
topic主题
(字符串)
table要取消订阅的'topic,
qos'数组对
function(client)取消订阅成功时的可选回调函数.注意:当多次调用unsubscribe()
函数,所有的取消订阅指令将会调用最后定义的回调函数。
返回
成功true,失败false
示例代码
[javascript] view
plain copy
-- 取消订阅主题
m:unsubscribe("/topic", function(conn) print("unsubscribe success") end)
-- 或者取消订阅多个主题 (topic/0; topic/1; topic2)
m:unsubscribe({["topic/0"]=0,["topic/1"]=0,topic2="anything"}, function(conn) print("unsubscribe success") end)
【转载请注明出处:http://blog.csdn.net/leytton/article/details/72454287】
二、原文
摘自https://nodemcu.readthedocs.io/en/master/en/modules/mqtt/
MQTT Module
Since | Origin / Contributor | Maintainer | Source |
---|---|---|---|
2015-01-23 | Stephen Robinson, Tuan PM | Vowstar | mqtt.c |
version 3.1.1. The client is backwards incompatible with brokers running MQTT 3.1.
mqtt.Client() | Creates a MQTT client. |
mqtt.client:close() | Closes connection to the broker. |
mqtt.client:connect() | Connects to the broker specified by the given host, port, and secure options. |
mqtt.client:lwt() | Setup Last Will and Testament (optional). |
mqtt.client:on() | Registers a callback function for an event. |
mqtt.client:publish() | Publishes a message. |
mqtt.client:subscribe() | Subscribes to one or several topics. |
mqtt.client:unsubscribe() | Unsubscribes from one or several topics. |
mqtt.Client()
Creates a MQTT client.
Syntax
mqtt.Client(clientid, keepalive[, username, password, cleansession])
Parameters
clientidclient
ID
keepalivekeepalive
seconds
usernameuser
name
passworduser
password
cleansession0/1
for
false/
true
Returns
MQTT client
Example
-- init mqtt client without logins, keepalive timer 120s m = mqtt.Client("clientid", 120) -- init mqtt client with logins, keepalive timer 120sec m = mqtt.Client("clientid", 120, "user", "password") -- setup Last Will and Testament (optional) -- Broker will publish a message with qos = 0, retain = 0, data = "offline" -- to topic "/lwt" if client don't send keepalive packet m:lwt("/lwt", "offline", 0, 0) m:on("connect", function(client) print ("connected") end) m:on("offline", function(client) print ("offline") end) -- on publish message receive event m:on("message", function(client, topic, data) print(topic .. ":" ) if data ~= nil then print(data) end end) -- for TLS: m:connect("192.168.11.118", secure-port, 1) m:connect("192.168.11.118", 1883, 0, function(client) print("connected") end, function(client, reason) print("failed reason: "..reason) end) -- Calling subscribe/publish only makes sense once the connection -- was successfully established. In a real-world application you want -- move those into the 'connect' callback or make otherwise sure the -- connection was established. -- subscribe topic with qos = 0 m:subscribe("/topic",0, function(client) print("subscribe success") end) -- publish a message with data = hello, QoS = 0, retain = 0 m:publish("/topic","hello",0,0, function(client) print("sent") end) m:close(); -- you can call m:connect again
MQTT Client
mqtt.client:close()
Closes connection to the broker.
Syntax
mqtt:close()
Parameters
none
Returns
trueon
success,
falseotherwise
mqtt.client:connect()
Connects to the broker specified by the given host, port, and secure options.
Syntax
mqtt:connect(host[, port[, secure[, autoreconnect]]][, function(client)[, function(client, reason)]])
Parameters
hosthost,
domain or IP (string)
portbroker
port (number), default 1883
secure0/1
for
false/
true,
default 0. Take note of constraints documented in the net module.
autoreconnect0/1
for
false/
true,
default 0
function(client)callback
function for when the connection was established
function(client, reason)callback function for when the connection could not be established
Returns
trueon
success,
falseotherwise
Connection failure callback reason codes:
Constant | Value | Description |
---|---|---|
mqtt.CONN_FAIL_SERVER_NOT_FOUND | -5 | There is no broker listening at the specified IP Address and Port |
mqtt.CONN_FAIL_NOT_A_CONNACK_MSG | -4 | The response from the broker was not a CONNACK as required by the protocol |
mqtt.CONN_FAIL_DNS | -3 | DNS Lookup failed |
mqtt.CONN_FAIL_TIMEOUT_RECEIVING | -2 | Timeout waiting for a CONNACK from the broker |
mqtt.CONN_FAIL_TIMEOUT_SENDING | -1 | Timeout trying to send the Connect message |
mqtt.CONNACK_ACCEPTED | 0 | No errors. Note: This will not trigger a failure callback. |
mqtt.CONNACK_REFUSED_PROTOCOL_VER | 1 | The broker is not a 3.1.1 MQTT broker. |
mqtt.CONNACK_REFUSED_ID_REJECTED | 2 | The specified ClientID was rejected by the broker. (Seemqtt.Client()) |
mqtt.CONNACK_REFUSED_SERVER_UNAVAILABLE | 3 | The server is unavailable. |
mqtt.CONNACK_REFUSED_BAD_USER_OR_PASS | 4 | The broker refused the specified username or password. |
mqtt.CONNACK_REFUSED_NOT_AUTHORIZED | 5 | The username is not authorized. |
mqtt.client:lwt()
Setup Last Will and Testament (optional). A broker will publish a message with qos =0, retain = 0, data = "offline" to topic "/lwt" if client does not send keepalive packet.
Syntax
mqtt:lwt(topic, message[, qos[, retain]])
Parameters
topicthe
topic to publish to (string)
messagethe
message to publish, (buffer or string)
qosQoS
level, default 0
retainretain
flag, default 0
Returns
nil
mqtt.client:on()
Registers a callback function for an event.
Syntax
mqtt:on(event, function(client[, topic[, message]]))
Parameters
eventcan
be "connect", "message" or "offline"
function(client[, topic[, message]])callback function. The first parameter is the client. If event is "message", the 2nd and 3rd param are received topic and message (strings).
Returns
nil
mqtt.client:publish()
Publishes a message.
Syntax
mqtt:publish(topic, payload, qos, retain[, function(client)])
Parameters
topicthe
topic to publish to (topic string)
messagethe
message to publish, (buffer or string)
qosQoS
level
retainretain
flag
function(client)optional
callback fired when PUBACK received. NOTE: When calling publish() more than once, the last callback function defined will be called for ALL publish commands.
Returns
trueon
success,
falseotherwise
mqtt.client:subscribe()
Subscribes to one or several topics.
Syntax
mqtt:subscribe(topic, qos[, function(client)])
mqtt:subscribe(table[, function(client)])
Parameters
topica topic
string
qosQoS
subscription level, default 0
tablearray
of 'topic, qos' pairs to subscribe to
function(client)optional
callback fired when subscription(s) succeeded. NOTE: When calling subscribe() more than once, the last callback function defined will be called for ALL subscribe commands.
Returns
trueon
success,
falseotherwise
Example
-- subscribe topic with qos = 0 m:subscribe("/topic",0, function(conn) print("subscribe success") end) -- or subscribe multiple topic (topic/0, qos = 0; topic/1, qos = 1; topic2 , qos = 2) m:subscribe({["topic/0"]=0,["topic/1"]=1,topic2=2}, function(conn) print("subscribe success") end)
mqtt.client:unsubscribe()
Unsubscribes from one or several topics.
Syntax
mqtt:unsubscribe(topic[, function(client)])
mqtt:unsubscribe(table[, function(client)])
Parameters
topica topic
string
tablearray
of 'topic, anything' pairs to unsubscribe from
function(client)optional
callback fired when unsubscription(s) succeeded. NOTE: When calling unsubscribe() more than once, the last callback function defined will be called for ALL unsubscribe commands.
Returns
trueon
success,
falseotherwise
Example
-- unsubscribe topic m:unsubscribe("/topic", function(conn) print("unsubscribe success") end) -- or unsubscribe multiple topic (topic/0; topic/1; topic2) m:unsubscribe({["topic/0"]=0,["topic/1"]=0,topic2="anything"}, function(conn) print("unsubscribe success") end)
相关文章推荐
- NodeMCU文档中文翻译 6 MQTT模块
- NodeMCU文档中文翻译 3 构建固件
- NodeMCU文档中文翻译 4 烧写固件
- NodeMCU文档中文翻译 8 Websocket模块
- NodeMCU文档中文翻译 5 上传代码
- NodeMCU文档中文翻译 7 DHT温湿度传感器模块
- NodeMCU文档中文翻译 1 概要
- NodeMCU文档中文翻译 2 首页
- Android Audio音频部分官网文档中文翻译
- Redis 3.0中文官方文档翻译计划(16) ——集群(上)
- scikit-learn(sklearn) 0.19 中文文档的翻译计划,邀请你的加入 | ApacheCN
- Oracle 10g Pro*C/C++ Programmer's Guide英文官方文档的中文翻译(一 )
- ubuntu 下的翻译软件 openyoudao 以及 txt文档中文显示乱码解决
- java8 JDK1.8 API 中文 翻译版 java帮助文档
- Bootstrap Table 中文文档(完整翻译版)
- CloudStack中文文档翻译进度表
- The Portable Executable File Format PE文件格式中文翻译文档
- Python UnitTest 文档中文翻译-2-3(渣翻自娱)
- Spring MVC中文文档翻译发布
- sklearn API 文档 - 0.18 中文翻译