一、概述
本文主要介绍用户APP 给MicoKit 设备配置Wi-Fi 网络连接、设置设备参数,以及配置设备接入FogCloud 云的方法。
设备工作模式:
1. 配置模式:
该模式主要用户设备Wi-Fi 网络配置和设备参数的设置。
设备收到APP 发送的SSID/key 并成功连接路由器后,就会自动连接用户APP 的FTCServer,并发送设备的当前配置信息给APP, 此时用户APP 可以修改配置参数,并发送给设备,完成配置。具体
通信方式参照Easylink APP 的实现(IOS/Android)。
2. 正常工作模式:
设备Wi-Fi 网络和设备参数配置完成后,重启设备,进入正常工作模式。
此时设备默认开启CongifgServer(TCP Server), 用户APP 作为TCP client 与之连接。APP 使用mDNS 协议发现设备,并与之建立TCP 连接,之后通过HTTP 协议与设备进行数据交互, 数据包采用JSON 格式。
二、设备Wi-Fi 配置
MicoKit 设备支持Easylink 配网模式,用户APP 使用Easylink 协议给设备配置Wi-Fi网络。
配置方法:
1. 短按设备上的Easylink 按键,使设备进入Easylink 配网模式(绿灯快闪);
2. 打开APP 上的Easylink 配网功能,输入要连接的Wi-Fi 密码,开始配置;
3. 设备收到Wi-Fi 的SSID 和密码后(绿灯慢闪)自动连接AP, 连接成功后(绿灯常亮)自动重启,进入正常工作模式,Wi-Fi 配置完成(绿灯常亮)。
三、设备参数设置
在使用Easylink 协议配置设备Wi-Fi 的过程中,还可以设置设备的参数。
设备收到APP 发送的SSID 和密码并成功连接AP 后,会将设备的当前配置参数发送给APP,用户在APP 上可修改这些参数并写入设备。
以上二、三步骤设备均工作在配置模式,详细实现参考Easylink 协议以及Easylink demoAPP 的实现。
四、设备云连接配置
设备配置完成后, 重启进入正常工作模式; 设备Wi-Fi 连接成功后, 开启FogCloudCongifgServer(TCP Server), 用户APP 作为TCP client 可与之建立连接。APP 使用mDNS 协议发现设备,并与之建立TCP 连接,之后通过HTTP 协议与设备进行数据交互,完成设备的激活、授权、重置等请求,使得设备接入FogCloud 云端并和用户APP 绑定。通信数据包采用JSON 格式,具体通信方式如下:
1. 设备接入FogCloud 云流程:
图1 FogCloud 接入流程
(1) 设备首次接入FogCloud 云之前,需要先激活设备;APP 向设备发送激活请求,使得设备向FogCloud 云端激活,成功后返回设备ID 给APP,完成设备激活和绑定;如上图1 中的1.1,1.2,1.3,1.4,1.5。
(2) 设备激活成功后,重启后自动连接FogCloud 云消息服务器(上图1 中2.0);
(3) 之后其他APP 要绑定设备,只需要向设备发送授权请求(如果发送激活请求,则设备实际执行授权),设备向云端请求APP 授权,返回设备ID 给APP(过程同步骤(1));
(4) 激活(或授权)完成后,APP 通过设备ID 向FogCloud 云端查询设备连接状态,并可与设备间进行云端消息收发(上图1 中的2.1)。
2. APP 请求接口:
(a)查询设备状态请求:
App 向设备发送:
设备响应:
实例:
App 发送:
POST /dev-state HTTP/1.1
Host: 192.168.31.180:8001
Content-Length: 74
Cache-Control: no-cache
{"login_id":"admin","dev_passwd":"12345678","user_token":"11111111"}
设备返回:
{ "isAc
tivated": true, "isConnected": true, "version": "v0.2.3" }
(b)激活请求:
APP 向设备发送:
设备响应:
实例:
APP 发送:
POST /dev-activate HTTP/1.1
Host: 192.168.31.180:8001
Content-Length: 74
Cache-Control: no-cache
{"login_id":"admin","dev_passwd":"12345678","user_token":"11111111"}
设备返回:
{ "device_id": "af2b33be/c8934645dd0a" }
注意:激活成功后,设备将会保存用户设置的用户名和密码,后续请求会验证该用户名和密码。
(c)用户授权请求:
APP 向设备发送:
设备响应:
实例:
APP 发送:
POST /dev-authorize HTTP/1.1
Host: 192.168.31.180:8001
Content-Length: 74
Cache-Control: no-cache
{"login_id":"admin","dev_passwd":"12345678","user_token":"22222222"}
设备返回:
{ "device_id": "af2b33be/c8934645dd0a" }
(d)设备注销请求:
该方法使得设备从云端注销,下次再使用需要重新激活。
APP 向设备发送:
设备返回:
实例:
APP 发送:
POST /dev-cloud_reset HTTP/1.1
Host: 192.168.31.180:8001
Content-Length: 74
Cache-Control: no-cache
{"login_id":"admin","dev_passwd":"12345678","user_token":"11111111"}
设备返回:
成功,无数据实体;
以上操作失败时,返回状态码500,消息实体返回详细错误码:
{“error”:
}
(3) 状态码
200: 执行成功
500: 执行失败
详细错误码参考MICO 错误码。
五、云端消息通信
设备连接上云端后,APP 即可向设备发送消息,详细方法请参考:《MicoKit 云数据通信协议》