智能家居解决方案SDK

智能帕格MK102
智能插件MK112
智能交换机WS001-3
README.md - IOS

1. 下面MKSDK对于设备文件夹是配置智能插头的SDK

1.1 如果你想配置MQTT服务器信息和WiFi信息连接智能插件,你需要做出明智的插头插入AP模式(请参阅MokoLife用户手册):请将智能插头插入电源插座,按住按钮 10 秒直到智能插头指示器闪烁琥珀色光其指示智能插头插入AP模式(注意:的超时时间AP模式是 3 分钟,一旦你已经配置的信息,智能插头,它会结束AP模式).进入WLAN页面,并选择智能插头热点连接 ,连接成功时,,呼叫connectDeviceWithHost:港口:connectSucBlock:connectFailedBlock方法连接智能plug.Following是智能插头过程的完整配置:

第1步

[[MKSocketManager sharedInstance] connectDeviceWithHost:@”192.168.4.1″
港口:8266
connectSucBlock:^(的NSString * IP, NSInteger的端口) {
//连接成功
connectFailedBlock:^(NSError *错误) {
//连接失败
}];

第2步

[[MKSocketManager sharedInstance] readSmartPlugDeviceInformationWithSucBlock:^(ID returnData) {
//读取设备信息成功
} failedBlock:^(NSError *错误) {
//读取设备信息失败
}];

第三步:

[[MKSocketManager sharedInstance] configMQTTServerHost:@”您MQTT服务器主机”
港口:港口
connectMode:mqttServerConnectTCPMode
服务质量:mqttQosLevelExactlyOnce
活着:60
cleanSession:是
的clientId:@”您设备的MAC地址”
用户名:@”您MQTT服务器用户名”
密码:@”您MQTT服务器密码”
sucBlock:^(ID returnData) {
//配置成功
}
failedBlock:^(NSError *错误) {
//配置失败
}];

第四步

[[MKSocketManager sharedInstance] configWifiSSID:您的无线SSID
密码:无线网络密码
安全:wifiSecurity_WPA2_PSK
sucBlock:^(ID returnData) {
//配置成功
} failedBlock:^(NSError *错误) {
//配置失败
}];

2. 该MKSDKForMqttServer文件夹是配置APP和MQTTServer的SDK

2.1 MKMQTTServerManagerDelegate
@protocol MKMQTTServerManagerDelegate

(空虚)mqttServerManagerStateChanged:(MKMQTTSessionManagerState)州;//连接状态委托方法

(空虚)sessionManager:(MKMQTTServerManager *)sessionManager didReceiveMessage:(的NSData *)数据ontopic:(的NSString *)话题;//从MQTT服务器接收数据

@结束

2.2 APP连接到MQTT服务器
当网络可用,呼叫 [[MKMQTTServerManager sharedInstance] connectMQTTServer:港口:TLS:活着:清洁:AUTH:用户:通过:的clientId:] 连接您的MQTT服务器.

2.3 订阅主题
请参阅MQTT protocal文档智能plug.Call的话题 – (空虚)订阅:(NSArray的 *)题目列表和 – (空虚)取消订阅:(NSArray的 *)题目列表订阅和退订separatrly话题.

2.4 APP数据发布到指定主题
请参阅MQTT protocal文档智能插头的话题. – (空虚)送出数据:(的NSDictionary *)数据话题:(的NSString *)话题sucBlock:(空虚 (^)(空虚))sucBlock failedBlock:(空虚 (^)(NSError *错误))failedBlock

README.md - 安卓

1.进口和使用SDK

1.1 导入模块项目mokosupport

1.2 配置settings.gradle文件和呼叫mokosupport项目:

包括“:应用”,”:mokosupport’

1.3 编辑主体工程的build.gradle文件:

依赖 {
执行文件树(您: “库”, 包括: ['*。罐'])
实施项目(路径: “: mokosupport”)
}

1.4 项目初始化过程中导入SDK:

公共类BaseApplication扩展应用 {
@覆盖
公共无效的onCreate() {
super.onCreate();
// 初始化
MokoSupport.getInstance().在里面(getApplicationContext());
}
}

2.功能介绍

    • 在SDK中提供的方法包括:: 与WIFI装置套接字通信, MQTT连接服务, 断开, 订阅主题, 退订话题, 帖子主题, 日志记录, 等等.
    • 套接字通信由SocketService称为;
    • MQTT通信可以通过MokoSupport.getInstance被称为();

2.1 SocketService

之前创建一个Socket连接, 你需要确认APP是否连接到该设备的WIFI. 连接默认的IP地址 192.168.4.1, 默认的端口号为 8266, 其可以在SocketThread被修改.

2.1.1 初始化

bindService(新意图(这个, SocketService.class), mServiceConnection, BIND_AUTO_CREATE);

开始SocketService, 并获得SocketService对象, 呼叫mService.startSocket() 创建一个Socket线程, 连接设备, 和消息线程等待后连接成功发送;

2.1.2 获取连接状态和响应

1.通过注册广播获取的连接状态:

广播事件:MokoConstants.ACTION_AP_CONNECTION

连接状态:

    • 连接成功:MokoConstants.CONN_STATUS_SUCCESS
    • 连:MokoConstants.CONN_STATUS_CONNECTING
    • 连接失败:MokoConstants.CONN_STATUS_FAILED
    • 连接超时:MokoConstants.CONN_STATUS_TIMEOUT

2、通过注册广播获得套接字通信响应 :

广播事件:MokoConstants.ACTION_AP_SET_DATA_RESPONSE

得到回应:

DeviceResponse响应= (DeviceResponse) intent.getSerializableExtra(MokoConstants.EXTRA_AP_SET_DATA_RESPONSE);

2.1.3 插座
发送的数据只接受JSON格式字符串

例如:

1、获取设备信息:

{
“头” : 4001
}

响应:

{
“码” : 0,
“信息” : “成功”,
“结果” : {
“头” : 4001,
“device_function” : “iot_plug”,
“设备名称” : “plug_one”,
“device_specifications” : “我们”,
“device_mac” : “11:22:33:44:55:66”,
“设备类型” : “1”
}
}

2、 发送MQTT服务器信息

{
“头” : 4002,
“主办” : “45.32.33.42”,
“港口” : 1883,
“connect_mode” : 0,
“用户名” : “DVES_USER”,
“密码” : “DVES_PASS”,
“活着” : 120,
“服务质量” : 2,
“clean_session” :1
}
响应:

{
“码” : 0,
“信息” : “成功”,
“结果” : {
“头” : 4002
}
}

3、发送WIFI网络与特定的SSID

{
“头” : 4003,
“wifi_ssid” : “Fitpolo”,
“wifi_pwd” : “fitpolo1234。”,
“WIFI_SECURITY” : 3
}

响应:

{
“码” : 0,
“信息” : “成功”,
“结果” : {
“头” : 4003
}
}

2.2 MokoSupport

2.2.1 连接到MQTT服务器
1、创建MqttAndroidClient

公共无效creatClient(字符串主机, 串口, 字符串的clientId, 布尔tlsConnection)

2、连接到服务器

公共无效connectMqtt(MqttConnectOptions选项)
根据MqttCallbackHandler获取创作状态,并接收返回的数据表格服务器

@覆盖
公共无效connectComplete(布尔重新连接, 字符串serverURI) {

}
@覆盖
公共无效connectionLost(Throwable的原因) {

}
@覆盖
公共无效messageArrived(字符串话题, MqttMessage消息) 抛出异常 {

}

3、通过注册广播获取的连接状态:

广播事件:MokoConstants.ACTION_MQTT_CONNECTION

连接状态:

    • 连接成功:MokoConstants.MQTT_CONN_STATUS_SUCCESS
    • 断开:MokoConstants.MQTT_CONN_STATUS_LOST

4、通过注册的广播接收从服务器返回的数据

广播事件:MokoConstants.ACTION_MQTT_RECEIVE

返回数据:

    • 返回的数据主题:

MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC

    • 返回数据消息:

MokoConstants.EXTRA_MQTT_RECEIVE_MESSAGE

返回的数据是JSON格式,例如:

{
“公司名” : “面粉”,
“生产日期” : “201801”,
“product_model” : “plug_one”,
“固件版本” : “000001”
“device_mac” : “11:22:33:44:55:66”
}

2.2.2 操作显示器
MQTT通信包含4种操作的. 为了执行每个Action, 你需要设置的ActionListener监视行动状态:

公共枚举行动 {
/**
* 连接动作
**/
CONNECT,
/**
* 订阅行动
**/
订阅,
/**
* 发布操作
**/
发布,
/**
* 退订行动
**/
退订
}

通过注册获取广播动作状态:

1、CONNECT

广播事件:MokoConstants.ACTION_MQTT_CONNECTION

连接失败:MokoConstants.MQTT_CONN_STATUS_FAILED
2、订阅

广播事件:MokoConstants.ACTION_MQTT_SUBSCRIBE

订阅主题:MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC
订阅状态:MokoConstants.EXTRA_MQTT_STATE

3、发布

广播事件:MokoConstants.ACTION_MQTT_PUBLISH

发布状态:MokoConstants.EXTRA_MQTT_STATE

4、退订

广播事件:MokoConstants.ACTION_MQTT_UNSUBSCRIBE

退订状态:MokoConstants.EXTRA_MQTT_STATE

2.2.3 订阅主题

MokoSupport.getInstance().订阅(字符串话题, INT的QoS)

2.2.4 发布信息

MokoSupport.getInstance().发布(字符串话题, MqttMessage消息)

2.2.5 退订话题

MokoSupport.getInstance().退订(字符串话题)

2.2.6 确定MQTT是否连接

MokoSupport.getInstance().已连接()

2.2.7 断开

MokoSupport.getInstance().disconnectMqtt()

3.保存日志到SD卡
SDK集成日志保存到SD卡功能, 被称为HTTPS://github.com/elvishew/xLog

在MokoSupport.getInstance初始化方法().在里面(getApplicationContext())

保存在SD卡上的文件夹名和文件名可以被修改.

公共类LogModule {
私有静态最后弦乐TAG = “mokoLife”;// 文档名称
私有静态最后弦乐LOG_FOLDER = “mokoLife”;// 文件夹名称

}

存储策略: 只保存一天的数据和天前的数据 , 该文件后缀with.bak

调用方法:

LogModule.v(“日志信息”);
LogModule.d(“日志信息”);
LogModule.i(“日志信息”);
LogModule.w(“日志信息”);
LogModule.e(“日志信息”);