物联网智能插头插座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:连接失败
连接智能插头的方法. 以下是智能插件过程的完整配置:

第1步

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

第2步

[[MKSocketManager sharedInstance]readSmartPlugDevice
InformationWithSucBlock:^(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().在里面(
getApplication 语境()); } }

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_
    连接中
  • 连接失败:MokoConstants.CONN_STATUS_FAILED
  • 连接超时:MokoConstants.CONN_STATUS_TIMEOUT

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

广播动作:MokoConstants.ACTION_AP_SET_DATA_
响应 得到回应:
DeviceResponse响应= (设备响应) intent.getSerializableExtra(莫科常数.
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,
“ qos” : 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)

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

2、连接到服务器

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

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

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

}

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

广播动作:MokoConstants.ACTION_MQTT_CONNECTION

连接状态:

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

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

广播动作:MokoConstants.ACTION_MQTT_RECEIVE

返回数据:

  • 返回数据主题:
MokoConstants.EXTRA_MQTT_RECEIVE_
话题
  • 返回数据信息:
MokoConstants.EXTRA_MQTT_RECEIVE_
信息

返回数据为JSON格式,例如:

{
“公司名” : “莫科”,
“生产日期” : “ 201801”,
“ product_model” : “ 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().断开连接()

5.将日志保存到SD卡

SDK集成了将日志保存到SD卡的功能, 被称为https://github.com/elvishew/xLoginitialization method in MokoSupport.getInstance().在里面(
getApplicationContext())可以修改保存在SD卡上的文件夹名称和文件名称.

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

}

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

调用方法:

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

与专家交谈