Module mqtt

模块功能:MQTT客户端

Info:

  • Copyright: openLuat
  • Release: 2017.10.24
  • License: MIT
  • Author: openLuat

Functions

client (clientId[, keepAlive=300][, username=""][, password=""][, cleanSession=1][, will=nil][, version="3.1.1"]) 创建一个mqtt client实例
mqttc:connect (host, port[, transport="tcp"][, cert=nil], timeout) 连接mqtt服务器
mqttc:subscribe (topic[, qos=0]) 订阅主题
mqttc:unsubscribe (topic) 取消订阅主题
mqttc:publish (topic, payload[, qos=0][, retain=0]) 发布一条消息
mqttc:receive (timeout[, msg=nil]) 接收消息
mqttc:disconnect () 断开与服务器的连接


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)
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
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
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)
mqttc:receive (timeout[, msg=nil])
接收消息

Parameters:

  • timeout number
     接收超时时间,单位毫秒
  • msg string [此参数可选,默认值为: nil]
     可选参数,控制socket所在的线程退出recv阻塞状态

Returns:

  1. result 数据接收结果,true表示成功,false表示失败
  2. data 如果result为true,表示服务器发过来的包;如果result为false,表示错误信息,超时失败时为"timeout"
  3. param msg控制退出时,返回msg的字符串

Usage:

  • true, packet = mqttc:receive(2000)
    false, error_message = mqttc:receive(2000)
    false, msg, para = mqttc:receive(2000)
mqttc:disconnect ()
断开与服务器的连接

Returns:

  • nil

Usage:

  • mqttc = mqtt.client("clientid-123", nil, nil, false)
    mqttc:connect("mqttserver.com", 1883, "tcp")
    process data
    mqttc:disconnect()
generated by LDoc 1.4.6 Last updated 2020-04-11 23:40:56