mico

来自于:庆科

getSSID startEasyLink stopEasyLink startMDNS stopMDNS startMqtt stopMqtt recvMqttMsg stopRecvMqttMsg publishCommand addSubscribe rmSubscribe

概述

(本模块已下架)

mico封装了物联网中最重要的接口,如果你使用的是庆科的WIFI设备,那么此模块可助你极快地开发一个智能硬件设备的APP,最主要的功能如下:

  1. 让设备联网,我们称之为EasyLink
  2. 通过mDNS发现局域网的设备
  3. 通过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 对象
  • 内部字段:
  1. {
  2. ssid:wifi //WIFI 的名字
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. error:0 //错误码
  3. }

示例代码

  1. var mico = api.require('mico');
  2. mico.getSSID(function(ret, err) {
  3. if (ret) {
  4. alert(JSON.stringify(ret));
  5. } else {
  6. alert(JSON.stringify(err));
  7. }
  8. });

可用性

Android 系统

可提供的1.0.0及更高版本

startEasyLink

将当前的 WIFI 名称和密码发送给设备,有些设备带回连的这里就会有返回值,不带回连的设备就不会返回任何信息

startEasyLink({params}, callback(ret, err))

params

wifi_ssid:

  • 类型:字符串
  • 描述:WIFI 的名称,即 SSID,不能为空

wifi_password:

  • 类型:字符串
  • 描述:WIFI 的密码,手动输入,不能为空

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. devip: ip //设备的ip地址
  3. devinfo: {} //设备的所有信息,包括名称、状态、属性等
  4. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. error:0 //错误码(错误返回码说明)
  3. }

示例代码

  1. var mico = api.require('mico');
  2. mico.startEasyLink({
  3. wifi_ssid: 'mico',
  4. wifi_password: '88888888'
  5. }, function(ret, err) {
  6. if (ret) {
  7. alert(JSON.stringify(ret));
  8. } else {
  9. alert(JSON.stringify(err));
  10. }
  11. });

可用性

Android 系统

可提供的1.0.0及更高版本

stopEasyLink

停止 EasyLink 配网

stopEasyLink(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. 无返回值

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. error:0 //错误码
  3. }

示例代码

  1. var mico = api.require('mico');
  2. mico.stopEasyLink(function(ret, err) {
  3. if (ret) {
  4. alert(JSON.stringify(ret));
  5. } else {
  6. alert(JSON.stringify(err));
  7. }
  8. });

可用性

Android 系统

可提供的1.0.0及更高版本

startMDNS

通过 mDNS 来搜索局域网设备,需要传入服务的名称

startMDNS({params}, callback(ret, err))

params

servicename:

  • 类型:字符串
  • 默认值:’_easylink._tcp.local’
  • 描述:服务的名称

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. deviceinfo: {} //mDNS 搜索到的设备的全部信息
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. error: 0 //错误码
  3. }

示例代码

  1. var mico = api.require('mico');
  2. mico.startMDNS({
  3. servicename: 'mico'
  4. }, function(ret, err) {
  5. if (ret) {
  6. alert(JSON.stringify(ret));
  7. } else {
  8. alert(JSON.stringify(err));
  9. }
  10. });

可用性

Android 系统

可提供的1.0.0及更高版本

stopMDNS

停止mDNS,不再搜索局域网设备

stopMDNS(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: Stop //操作成功
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. error: 0 //错误码
  3. }

示例代码

  1. var mico = api.require('mico');
  2. mico.stopMDNS(function(ret, err) {
  3. if (ret) {
  4. alert(JSON.stringify(ret));
  5. } else {
  6. alert(JSON.stringify(err));
  7. }
  8. });

可用性

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 对象
  • 内部字段:
  1. {
  2. status: //操作成功状态洗洗脑
  3. payload:{} //服务器返回的消息
  4. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. error:0 //错误码
  3. }

示例代码

  1. var mico = api.require('mico');
  2. mico.startMqtt({
  3. host: 'api.easylink.io',
  4. port: '1883',
  5. username: 'admin',
  6. password: 'admin',
  7. clientID: 'clientId-999abcdedf',
  8. topic: 'd64f517c/c8934691813c/out/read'
  9. }, function(ret, err) {
  10. if (ret.status) {
  11. alert(JSON.stringify(ret));
  12. } else {
  13. alert(JSON.stringify(err));
  14. }
  15. });

可用性

Android 系统

可提供的1.0.0及更高版本

stopMqtt

关闭 MQTT 订阅服务

stopMqtt(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: Stop //操作成功
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. error: 0 //错误码
  3. }

示例代码

  1. var mico = api.require('mico');
  2. mico.stopMqtt(function(ret, err) {
  3. if (ret.status) {
  4. alert(JSON.stringify(ret));
  5. } else {
  6. alert(JSON.stringify(err));
  7. }
  8. });

可用性

Android 系统

可提供的1.0.0及更高版本

recvMqttMsg

开始接收服务器 push 的消息,startMQTT 的时候会自动启用,所以 startMQTT 之后不需要再次执行此方法,只有在 stopRecvMqttMsg 之后,想再次接收时,才需要再次启用

recvMqttMsg(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. 无返回值

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. error:0 //错误码
  3. }

示例代码

  1. var mico = api.require('mico');
  2. mico.recvMqttMsg(function(ret, err) {
  3. if (ret.status) {
  4. alert(JSON.stringify(ret));
  5. } else {
  6. alert(JSON.stringify(err));
  7. }
  8. });

可用性

Android 系统

可提供的1.0.0及更高版本

stopRecvMqttMsg

停止接收服务器push的信息

stopRecvMqttMsg(callback(ret, err))

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. 无返回值

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. error:0 //错误码
  3. }

示例代码

  1. var mico = api.require('mico');
  2. mico.stopRecvMqttMsg(function(ret, err) {
  3. if (ret.status) {
  4. alert(JSON.stringify(ret));
  5. } else {
  6. alert(JSON.stringify(err));
  7. }
  8. });

可用性

Android 系统

可提供的1.0.0及更高版本

publishCommand

发送指令控制设备

publishCommand({params}, callback(ret, err))

params

topic:

  • 类型:字符串
  • 描述:发送指令的地址,不能为空

command:

  • 类型:字符串
  • 描述:指令,JSON 类型的字符串,不能为空

qos:

  • 类型:字符串
  • 描述:消息发布服务质量,0

retained:

  • 类型:字符串
  • 描述:false=实时,false

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. 无返回值
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. error:0 //错误码
  3. }

示例代码

  1. var mico = api.require('mico');
  2. mico.publishCommand({
  3. topic: 'd64f517c/c8934691813c/in/write',
  4. command: '{"4":true}',
  5. qos: 0,
  6. retained: false
  7. }, function(ret, err) {
  8. if (ret) {
  9. alert(JSON.stringify(ret));
  10. } else {
  11. alert(JSON.stringify(err));
  12. }
  13. });

可用性

Android 系统

可提供的1.0.0及更高版本

addSubscribe

增加MQTT订阅主题

addSubscribe({params}, callback(ret, err))

params

topic:

  • 类型:字符串
  • 描述:需要订阅的topic地址,不能为空

qos:

  • 类型:字符串
  • 描述:QOS,不能为空

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. 无返回值
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. error:0 //错误码
  3. }

示例代码

  1. var mico = api.require('mico');
  2. mico.addSubscribe({
  3. topic: 'd64f517c/c8934691813c/out/err',
  4. qos: 0
  5. }, function(ret, err) {
  6. if (ret) {
  7. alert(JSON.stringify(ret));
  8. } else {
  9. alert(JSON.stringify(err));
  10. }
  11. });

可用性

Android 系统

可提供的1.0.0及更高版本

rmSubscribe

移除一个MQTT订阅主题

rmSubscribe({params}, callback(ret, err))

params

topic:

  • 类型:字符串
  • 描述:MQTT 服务器的域名,不能为空

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. 无返回值
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. error:0 //错误码
  3. }

示例代码

  1. var mico = api.require('mico');
  2. mico.rmSubscribe({
  3. topic: 'd64f517c/c8934691813c/out/err'
  4. }, function(ret, err) {
  5. if (ret) {
  6. alert(JSON.stringify(ret));
  7. } else {
  8. alert(JSON.stringify(err));
  9. }
  10. });

可用性

Android 系统

可提供的1.0.0及更高版本

错误返回码说明

90000 手机未联网
90001 参数不能为空
90002 EasyLink服务已经开启
90003 EasyLink服务尚未打开
90004 MQTT服务已经开启
90005 MQTT服务尚未打开
90006 已经在接收MQTT消息了
90007 尚未开始接收MQTT消息
90008 MQTT服务已经开启
90009 MQTT服务尚未打开