Module mqtt
模块功能:MQTT客户端
Info:
- Copyright: openLuat
- Release: 2017.10.24
- License: MIT
- Author: openLuat
Functions
Functions
- client (clientId[, keepAlive=300][, username=""][, password=""][, cleanSession=1][, will=nil][, version="3.1.1"])
-
创建一个mqtt client实例
Parameters:
- clientId string
- keepAlive
number
[此参数可选,默认值为: 300]
心跳间隔(单位为秒),默认300秒
- username
string
[此参数可选,默认值为: ""]
用户名,用户名为空配置为""或者nil
- password
string
[此参数可选,默认值为: ""]
密码,密码为空配置为""或者nil
- cleanSession
number
[此参数可选,默认值为: 1]
1/0
- will
table
[此参数可选,默认值为: nil]
遗嘱参数,格式为{qos=, retain=, topic=, payload=}
- version
string
[此参数可选,默认值为: "3.1.1"]
MQTT版本号
Returns:
-
table mqttc client实例
Usage:
mqttc = mqtt.client("clientid-123") mqttc = mqtt.client("clientid-123",200) mqttc = mqtt.client("clientid-123",nil,"user","password") mqttc = mqtt.client("clientid-123",nil,"user","password",nil,nil,"3.1")
- mqttc:connect (host, port[, transport="tcp"][, cert=nil], timeout)
-
连接mqtt服务器
Parameters:
- host
string
服务器地址
- port
string或者number类型,服务器端口
- transport
string
[此参数可选,默认值为: "tcp"]
"tcp"或者"tcp_ssl"
- cert
table
[此参数可选,默认值为: nil]
table或者nil类型,ssl证书,当transport为"tcp_ssl"时,此参数才有意义。cert格式如下: { caCert = "ca.crt", --CA证书文件(Base64编码 X.509格式),如果存在此参数,则表示客户端会对服务器的证书进行校验;不存在则不校验 clientCert = "client.crt", --客户端证书文件(Base64编码 X.509格式),服务器对客户端的证书进行校验时会用到此参数 clientKey = "client.key", --客户端私钥文件(Base64编码 X.509格式) clientPassword = "123456", --客户端证书文件密码[可选] }
- timeout
number
链接服务器最长超时时间
Returns:
-
result true表示成功,false或者nil表示失败
Usage:
mqttc = mqtt.client("clientid-123", nil, nil, false); mqttc:connect("mqttserver.com", 1883, "tcp", 5)
- host
string
- mqttc:subscribe (topic[, qos=0])
-
订阅主题
Parameters:
- topic
string或者table类型,一个主题时为string类型,多个主题时为table类型,主题内容为UTF8编码
- qos
[此参数可选,默认值为: 0]
number或者nil,topic为一个主题时,qos为number类型(0/1/2,默认0);topic为多个主题时,qos为nil
Returns:
-
bool true表示成功,false或者nil表示失败
Usage:
mqttc:subscribe("/abc", 0) -- subscribe topic "/abc" with qos = 0 mqttc:subscribe({["/topic1"] = 0, ["/topic2"] = 1, ["/topic3"] = 2}) -- subscribe multi topic
- topic
- mqttc:unsubscribe (topic)
-
取消订阅主题
Parameters:
- topic
string或者table类型,一个主题时为string类型,多个主题时为table类型,主题内容为UTF8编码
Returns:
-
bool true表示成功,false或者nil表示失败
Usage:
mqttc:unsubscribe("/abc") -- unsubscribe topic "/abc" mqttc:unsubscribe({"/topic1", "/topic2", "/topic3"}) -- unsubscribe multi topic
- topic
- mqttc:publish (topic, payload[, qos=0][, retain=0])
-
发布一条消息
Parameters:
- topic
string
UTF8编码的字符串
- payload
string
用户自己控制payload的编码,mqtt.lua不会对payload做任何编码转换
- qos
number
[此参数可选,默认值为: 0]
0/1/2, default 0
- retain
number
[此参数可选,默认值为: 0]
0或者1
Returns:
-
bool 发布成功返回true,失败返回false
Usage:
mqttc = mqtt.client("clientid-123", nil, nil, false) mqttc:connect("mqttserver.com", 1883, "tcp") mqttc:publish("/topic", "publish from luat mqtt client", 0)
- topic
string
- mqttc:receive (timeout[, msg=nil])
-
接收消息
Parameters:
- timeout
number
接收超时时间,单位毫秒
- msg
string
[此参数可选,默认值为: nil]
可选参数,控制socket所在的线程退出recv阻塞状态
Returns:
-
result 数据接收结果,true表示成功,false表示失败
-
data 如果result为true,表示服务器发过来的包;如果result为false,表示错误信息,超时失败时为"timeout"
-
param msg控制退出时,返回msg的字符串
Usage:
true, packet = mqttc:receive(2000) false, error_message = mqttc:receive(2000) false, msg, para = mqttc:receive(2000)
- timeout
number
- mqttc:disconnect ()
-
断开与服务器的连接
Returns:
-
nil
Usage:
mqttc = mqtt.client("clientid-123", nil, nil, false) mqttc:connect("mqttserver.com", 1883, "tcp") process data mqttc:disconnect()
-