MQTT是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。本插件通过startmqtt订阅,之后所有服务器过来的消息都在startmqtt的callback里呈现,其他的指令单独返回callback(一般只反馈接口是否调用成功)。所以建议在startmqtt的callback里处理服务器下发的数据.
###备注 不能同时添加的插件:fog2
建立MQTT连接
startmqtt(param, function(ret, err))
host:
port:
topic:
username:
password:
clientid:
isencrypt:
ret:
内部字段:
//调用成功
{
"message": "success",
"code": 0
}
//连接成功
{
"status": "connected",
"code": 4210
}
//收到服务器的数据
{
"topic": "d64f517c/c8934691813c/out/read",
"payload": {"9": 3062},
"code": 4200
}
err:
内部字段:
{
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及更高版本
断开MQTT连接
stopmqtt(function(ret, err))
ret:
内部字段:
{
"status": "stopped",
"code": 4212
}
err:
内部字段:
{
"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(param, function(ret, err))
topic:
command:
qos:
retained:
ret:
内部字段:
{
"status": "publish success",
"code": 4219
}
err:
内部字段:
{
"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(param, function(ret, err))
topic:
qos:
ret:
内部字段:
{
"status": "subscribe success",
"code": 4213
}
err:
内部字段:
{
"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(param, function(ret, err))
topic:
ret:
内部字段:
{
"status": "unsubscribe success",
"code": 4215
}
err:
内部字段:
{
"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 | 发布成功