mico
来自于:庆科
getSSID startEasyLink stopEasyLink startMDNS stopMDNS startMqtt stopMqtt recvMqttMsg stopRecvMqttMsg publishCommand addSubscribe rmSubscribe
概述
(本模块已下架)
mico封装了物联网中最重要的接口,如果你使用的是庆科的WIFI设备,那么此模块可助你极快地开发一个智能硬件设备的APP,最主要的功能如下:
- 让设备联网,我们称之为EasyLink
- 通过mDNS发现局域网的设备
- 通过MQTT控制远程设备 开发时候,按照以下接口的顺序开发即可,或者直接参考开源项目项目里也包含完整的开发手册,如果您没有智能硬件,也可以申请硬件设备。
首先,我们需要通过getSSID获取设备的SSID,然后将ssid和wifi的密码通过startEasyLink发送给设备,如果需要发现局域网的设备我们可以使用startMDNS,当设备连上网络,并与自己绑定上时,我们就可以通过startMqtt开启mqtt通道,并通过publishCommand将指令发送给设备。
接口清单如下:
EasyLink配网
mDNS发现设备
MQTT控制设备
错误返回码说明
getSSID
获取当前手机所连接的WIFI的SSID
getSSID(callback(ret, err))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
ssid:wifi //WIFI 的名字
}
err:
- 类型:JSON 对象
- 内部字段:
{
error:0 //错误码
}
示例代码
var mico = api.require('mico');
mico.getSSID(function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
Android 系统
可提供的1.0.0及更高版本
startEasyLink
将当前的 WIFI 名称和密码发送给设备,有些设备带回连的这里就会有返回值,不带回连的设备就不会返回任何信息
startEasyLink({params}, callback(ret, err))
params
wifi_ssid:
- 类型:字符串
- 描述:WIFI 的名称,即 SSID,不能为空
wifi_password:
- 类型:字符串
- 描述:WIFI 的密码,手动输入,不能为空
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
devip: ip //设备的ip地址
devinfo: {} //设备的所有信息,包括名称、状态、属性等
}
err:
- 类型:JSON 对象
- 内部字段:
{
error:0 //错误码(错误返回码说明)
}
示例代码
var mico = api.require('mico');
mico.startEasyLink({
wifi_ssid: 'mico',
wifi_password: '88888888'
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
Android 系统
可提供的1.0.0及更高版本
stopEasyLink
停止 EasyLink 配网
stopEasyLink(callback(ret, err))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
无返回值
err:
- 类型:JSON 对象
- 内部字段:
{
error:0 //错误码
}
示例代码
var mico = api.require('mico');
mico.stopEasyLink(function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
Android 系统
可提供的1.0.0及更高版本
startMDNS
通过 mDNS 来搜索局域网设备,需要传入服务的名称
startMDNS({params}, callback(ret, err))
params
servicename:
- 类型:字符串
- 默认值:’_easylink._tcp.local’
- 描述:服务的名称
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
deviceinfo: {} //mDNS 搜索到的设备的全部信息
}
err:
- 类型:JSON 对象
- 内部字段:
{
error: 0 //错误码
}
示例代码
var mico = api.require('mico');
mico.startMDNS({
servicename: 'mico'
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
Android 系统
可提供的1.0.0及更高版本
stopMDNS
停止mDNS,不再搜索局域网设备
stopMDNS(callback(ret, err))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: Stop //操作成功
}
err:
- 类型:JSON 对象
- 内部字段:
{
error: 0 //错误码
}
示例代码
var mico = api.require('mico');
mico.stopMDNS(function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
Android 系统
可提供的1.0.0及更高版本
startMqtt
开启 MQTT 通道,同时订阅一个主题
startMqtt({params}, callback(ret, err))
params
host:
- 类型:字符串
- 描述:MQTT 服务器的域名,不能为空
port:
- 类型:字符串
- 描述:服务器 MQTT 的端口,不能为空
username:
- 类型:字符串
- 描述:用户名,不能为空
password:
- 类型:字符串
- 描述:密码,不能为空
clientID:
- 类型:字符串
- 描述:客户机的 ID,v1app[MAC] //版本号 _app_USERTOKEN (截取12位必须小写),不能为空
topic:
- 类型:字符串
- 描述:订阅的主题
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: //操作成功状态洗洗脑
payload:{} //服务器返回的消息
}
err:
- 类型:JSON 对象
- 内部字段:
{
error:0 //错误码
}
示例代码
var mico = api.require('mico');
mico.startMqtt({
host: 'api.easylink.io',
port: '1883',
username: 'admin',
password: 'admin',
clientID: 'clientId-999abcdedf',
topic: 'd64f517c/c8934691813c/out/read'
}, function(ret, err) {
if (ret.status) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
Android 系统
可提供的1.0.0及更高版本
stopMqtt
关闭 MQTT 订阅服务
stopMqtt(callback(ret, err))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: Stop //操作成功
}
err:
- 类型:JSON 对象
- 内部字段:
{
error: 0 //错误码
}
示例代码
var mico = api.require('mico');
mico.stopMqtt(function(ret, err) {
if (ret.status) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
Android 系统
可提供的1.0.0及更高版本
recvMqttMsg
开始接收服务器 push 的消息,startMQTT 的时候会自动启用,所以 startMQTT 之后不需要再次执行此方法,只有在 stopRecvMqttMsg 之后,想再次接收时,才需要再次启用
recvMqttMsg(callback(ret, err))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
无返回值
err:
- 类型:JSON 对象
- 内部字段:
{
error:0 //错误码
}
示例代码
var mico = api.require('mico');
mico.recvMqttMsg(function(ret, err) {
if (ret.status) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
Android 系统
可提供的1.0.0及更高版本
stopRecvMqttMsg
停止接收服务器push的信息
stopRecvMqttMsg(callback(ret, err))
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
无返回值
err:
- 类型:JSON 对象
- 内部字段:
{
error:0 //错误码
}
示例代码
var mico = api.require('mico');
mico.stopRecvMqttMsg(function(ret, err) {
if (ret.status) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
Android 系统
可提供的1.0.0及更高版本
publishCommand
发送指令控制设备
publishCommand({params}, callback(ret, err))
params
topic:
- 类型:字符串
- 描述:发送指令的地址,不能为空
command:
- 类型:字符串
- 描述:指令,JSON 类型的字符串,不能为空
qos:
- 类型:字符串
- 描述:消息发布服务质量,0
retained:
- 类型:字符串
- 描述:false=实时,false
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
无返回值
}
err:
- 类型:JSON 对象
- 内部字段:
{
error:0 //错误码
}
示例代码
var mico = api.require('mico');
mico.publishCommand({
topic: 'd64f517c/c8934691813c/in/write',
command: '{"4":true}',
qos: 0,
retained: false
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
Android 系统
可提供的1.0.0及更高版本
addSubscribe
增加MQTT订阅主题
addSubscribe({params}, callback(ret, err))
params
topic:
- 类型:字符串
- 描述:需要订阅的topic地址,不能为空
qos:
- 类型:字符串
- 描述:QOS,不能为空
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
无返回值
}
err:
- 类型:JSON 对象
- 内部字段:
{
error:0 //错误码
}
示例代码
var mico = api.require('mico');
mico.addSubscribe({
topic: 'd64f517c/c8934691813c/out/err',
qos: 0
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
Android 系统
可提供的1.0.0及更高版本
rmSubscribe
移除一个MQTT订阅主题
rmSubscribe({params}, callback(ret, err))
params
topic:
- 类型:字符串
- 描述:MQTT 服务器的域名,不能为空
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
无返回值
}
err:
- 类型:JSON 对象
- 内部字段:
{
error:0 //错误码
}
示例代码
var mico = api.require('mico');
mico.rmSubscribe({
topic: 'd64f517c/c8934691813c/out/err'
}, function(ret, err) {
if (ret) {
alert(JSON.stringify(ret));
} else {
alert(JSON.stringify(err));
}
});
可用性
Android 系统
可提供的1.0.0及更高版本
错误返回码说明
90000 手机未联网
90001 参数不能为空
90002 EasyLink服务已经开启
90003 EasyLink服务尚未打开
90004 MQTT服务已经开启
90005 MQTT服务尚未打开
90006 已经在接收MQTT消息了
90007 尚未开始接收MQTT消息
90008 MQTT服务已经开启
90009 MQTT服务尚未打开