mqtt

概述

MQTT是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。本插件通过startmqtt订阅,之后所有服务器过来的消息都在startmqtt的callback里呈现,其他的指令单独返回callback(一般只反馈接口是否调用成功)。所以建议在startmqtt的callback里处理服务器下发的数据.

###备注 不能同时添加的插件:fog2

startmqtt

建立MQTT连接

startmqtt(param, function(ret, err))

params

host:

  • 类型:字符串
  • 默认值:无
  • 描述:host,域名或者IP

port:

  • 类型:字符串
  • 默认值:无
  • 描述:端口,一般是1883

topic:

  • 类型:字符串
  • 默认值:无
  • 描述:监听的主题

username:

  • 类型:字符串
  • 默认值:无
  • 描述:用户名

password:

  • 类型:字符串
  • 默认值:无
  • 描述:用户密码

clientid:

  • 类型:字符串
  • 默认值:无
  • 描述:客户端ID

isencrypt:

  • 类型:boolean
  • 默认值:无
  • 描述:是否SSL加密(默认为false)

callback(ret,err)

ret:

  • 类型:JSON对象

内部字段:

//调用成功
{
  "message": "success",
  "code": 0
}

//连接成功
{
  "status": "connected",
  "code": 4210
}

//收到服务器的数据
{
  "topic": "d64f517c/c8934691813c/out/read",
  "payload": {"9": 3062},
  "code": 4200
}

err:

  • 类型:JSON对象

内部字段:

{
    code : 0,
    message:"Parameter is null"
}

示例代码

var mqtt = api.require('mqtt');
var param = {
    host: "api.easylink.io",
    port: "1883",
    topic: "d64f517c/c8934691813c/out/read/#",
    username: "admin",
    password: "admin",
    clientid: "f60e5d3c-65aa-11e6-9d95-00163e103941",
    isencrypt: false
};
mqtt.startmqtt(param, function(ret, err) {
    if (ret)
        api.alert({msg: JSON.stringify(ret)});
    else
        api.alert({msg: JSON.stringify(err)});
})

可用性

Android系统,iOS系统

可提供的1.0.0及更高版本

stopmqtt

断开MQTT连接

stopmqtt(function(ret, err))

callback(ret,err)

ret:

  • 类型:JSON对象

内部字段:

{
  "status": "stopped",
  "code": 4212
}

err:

  • 类型:JSON对象

内部字段:

{
  "message": "mqtt closed",
  "code": 4204
}

示例代码

mqtt.stopmqtt(function(ret, err) {
    if (ret)
        api.alert({msg: JSON.stringify(ret)});
    else
        api.alert({msg: JSON.stringify(err)});
});

可用性

Android系统,iOS系统

可提供的1.0.0及更高版本

publish

发送指令

publish(param, function(ret, err))

params

topic:

  • 类型:字符串
  • 默认值:无
  • 描述:发送指令的通道

command:

  • 类型:字符串
  • 默认值:无
  • 描述:指令

qos:

  • 类型:数字
  • 默认值:无
  • 描述:建议为0,QoS=0:最多一次,有可能重复或丢失;QoS=1:至少一次,有可能重复;QoS=2:只有一次,确保消息只到达一次(用于比较严格的计费系统)

retained:

  • 类型:boolean
  • 默认值:无
  • 描述:建议为false(设置是否在服务器中保存消息体)

callback(ret,err)

ret:

  • 类型:JSON对象

内部字段:

{
  "status": "publish success",
  "code": 4219
}

err:

  • 类型:JSON对象

内部字段:

{
  "message": "mqtt closed",
  "code": 4204
}

示例代码

var param = {
    topic: "d64f517c/c8934691813c/in/write/0012",
    command: '{"4":false}',
    // qos: 6,
    // retained: false
};
mqtt.publish(param, function(ret, err) {
    if (ret)
        api.alert({msg: JSON.stringify(ret)});
    else
        api.alert({msg: JSON.stringify(err)});
});

可用性

Android系统,iOS系统

可提供的1.0.0及更高版本

subscribe

增加订阅的通道

subscribe(param, function(ret, err))

params

topic:

  • 类型:字符串
  • 默认值:无
  • 描述:发送指令的通道

qos:

  • 类型:数字
  • 默认值:无
  • 描述:建议为0,QoS=0:最多一次,有可能重复或丢失;QoS=1:至少一次,有可能重复;QoS=2:只有一次,确保消息只到达一次(用于比较严格的计费系统)

callback(ret,err)

ret:

  • 类型:JSON对象

内部字段:

{
  "status": "subscribe success",
  "code": 4213
}

err:

  • 类型:JSON对象

内部字段:

{
  "message": "mqtt closed",
  "code": 4204
}

示例代码

var param = {
    topic: "d64f517c/c8934691813c/in/write/#",
    qos: 0,
};
mqtt.subscribe(param, function(ret, err) {
    if (ret)
        api.alert({msg: JSON.stringify(ret)});
    else
        api.alert({msg: JSON.stringify(err)});
});

可用性

Android系统,iOS系统

可提供的1.0.0及更高版本    

unsubscribe

移除订阅的通道

unsubscribe(param, function(ret, err))

params

topic:

  • 类型:字符串
  • 默认值:无
  • 描述:发送指令的通道

callback(ret,err)

ret:

  • 类型:JSON对象

内部字段:

{
  "status": "unsubscribe success",
  "code": 4215
}

err:

  • 类型:JSON对象

内部字段:

{
  "message": "mqtt closed",
  "code": 4204
}

示例代码

var param = {
    topic: "d64f517c/c8934691813c/in/write/#"
};
mqtt.unsubscribe(param, function(ret, err) {
    if (ret)
        api.alert({msg: JSON.stringify(ret)});
    else
        api.alert({msg: JSON.stringify(err)});
});

可用性

Android系统,iOS系统

可提供的1.0.0及更高版本    

状态码

状态码(code) | 说明(message) | 描述 :----------- | :-------------: 0 | success|请求成功 9001 | Parameter is null|参数为空 || 4201 |invalid param|各种参数错误(tag用来定位具体的参数) 4202 |invalid context | 无效的上下文 4203 |mqtt busy | MQTT正在工作中 4204 |mqtt closed | MQTT已经关闭 4205 |qos must within(0,1,2) |qos必须是0、1、2之一 4206 |exception | 异常 || 4210 |connected | MQTT连接成功 4211 |topic missing | 缺少topic参数 4212 |stopped | MQTT断开连接成功 4213 |subscribe success | 订阅成功 4214 |re-subscribe success | 重订阅成功 4215 |unsubscribe success | 取消订阅成功 4216 |connect exception | 连接异常 4217 |lost | 连接丢失 4218 |disconnected | 未连接 4219 |publish success | 发布成功

是否仍需要帮助? 请保持联络!
最后更新于 2024/11/18