物联网智能插头插座SDK解决方案

聪明的哈巴狗MK102
智能插头MK112
智能开关WS001-3
README.md--IOS

1. 在MKSDK For Device文件夹下面是用于配置智能插头的SDK。

1.1 如果要配置MQTT服务器信息和wifi信息以进行连接以连接智能插头,您需要将智能插头插入AP模式(请参考MokoLife用户手册):将智能插头插入电源插座,按下按钮 10 秒,直到智能插头指示灯闪烁琥珀色,表示智能插头已进入AP模式(注意:AP模式的超时时间为 3 分钟,将信息配置到智能插头后,它将结束AP模式).进入Wlan页面并选择智能插头热点进行连接 ,连接成功时,调用connectDeviceWithHost:港口:connectSucBlock:connectFailedBlock方法来连接智能插头。以下是智能插头过程的完整配置:

第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 *错误) {
//配置失败
}];

第4步

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

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

2.1 MKMQTTServerManagerDelegate
@协议MKMQTTServerManagerDelegate

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

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

@结束

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

2.3 订阅主题
请参阅MQTT协议文档以获取智能插头的主题。 – (虚空)订阅:(NSArray *)topicList和 – (虚空)取消订阅:(NSArray *)topicList分别订阅和退订主题.

2.4 APP将数据发布到指定主题
请参阅MQTT协议文档以获取智能插头的主题。. – (虚空)sendData:(NSDictionary *)数据主题:(NSString *)主题sucBlock:(虚空 (^)(虚空))sucBlock failedBlock:(虚空 (^)(NSError *错误))failedBlock

README.md--Android

1.导入和使用SDK

1.1 导入模块项目mokosupport

1.2 配置settings.gradle文件并调用mokosupport项目:

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

1.3 编辑主项目的build.gradle文件:

依存关系 {
实现文件树(给你: ‘libs’, 包括: ['*。罐'])
实施项目(路径: ‘: mokosupport’)
}

1.4 在项目初始化期间导入SDK:

公共类BaseApplication扩展Application {
@Override
公共无效onCreate() {
超级创建();
// 初始化
MokoSupport.getInstance().在里面(getApplicationContext());
}
}

2.功能介绍

    • SDK中提供的方法包括: 与WIFI设备的套接字通信, MQTT连接服务, 断开, 订阅主题, 退订主题, 发表主题, 日志记录, 等等.
    • 套接字通信由SocketService调用;
    • 可以通过MokoSupport.getInstance调用MQTT通信();

2.1 套接字服务

创建套接字连接之前, 您需要确认APP是否已连接到设备的WIFI. 连接默认IP地址 192.168.4.1, 默认端口号是 8266, 可以在SocketThread中修改.

2.1.1 初始化

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

启动SocketService, 并获取SocketService对象, 调用mService.startSocket() 创建一个套接字线程, 连接设备, 连接成功后,线程等待消息发送;

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响应= (设备响应) intent.getSerializableExtra(MokoConstants.EXTRA_AP_SET_DATA_RESPONSE);

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

例如:

1、获取设备信息:

{
“标头” : 4001
}

响应:

{
“码” : 0,
“信息” : “成功”,
“结果” : {
“标头” : 4001,
“device_function” : “iot_plug”,
“设备名称” : “plug_one”,
“设备规格” : “我们”,
“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、发送具有特定SSID的WIFI网络

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

响应:

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

2.2 Moko支持

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

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

2、连接到服务器

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

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

}
@Override
公共无效连接(可丢原因) {

}
@Override
公共无效消息已到达(字符串主题, Mqtt消息消息) 抛出异常 {

}

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”,
“产品型号” : “plug_one”,
“固件版本” : “000001”
“device_mac” : “11:22:33:44:55:66”
}

2.2.2 动作监控
MQTT通讯包含四种动作. 执行每个动作, 您需要设置ActionListener来监视Action的状态:

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

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

1、连接

广播动作: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().发布(字符串主题, Mqtt消息消息)

2.2.5 退订主题

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

2.2.6 确定是否连接了MQTT

MokoSupport.getInstance().已连接()

2.2.7 断开

MokoSupport.getInstance().断开连接()

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

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

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

公共类LogModule {
私有静态最终字符串TAG = “mokoLife”;// 文档名称
私有静态最终字符串LOG_FOLDER = “mokoLife”;// 文件夹名称

}

储存策略: 仅存储当天的数据和前一天的数据 , 该文件后缀为.bak

调用方法:

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