Smart Home Solution SDK
Смарт Мопс MK102
Smart Plug MK112
Smart Switch WS001-3
README.md - IOS

1. Ниже MKSDK Для папки устройства является SDK для настройки смарт-штекер

1.1 Если вы хотите сконфигурировать информацию отделят MQTT и информация Wi-Fi для подключения к смарт-штекером,вам нужно сделать смарт-штекер в режим точки доступа(Пожалуйста, обратитесь к руководству пользователя MokoLife):вставьте смарт вилку в розетку,нажмите кнопку для 10 секунд до смарт индикатор мигает подключи оранжевым светом, указывающие на смарт-штекер в режим точки доступа(Заметка:Время ожидания для режима 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:^(идентификатор returnData) {
//Устройство чтения Информация успеха
} failedBlock:^(NSError * ошибка) {
//Информация пользователя устройства не удалось
}];

шаг 3

[[MKSocketManager sharedInstance] configMQTTServerHost:@”хост-сервер MQTT”
порт:порт
ConnectMode:mqttServerConnectTCPMode
QoS:mqttQosLevelExactlyOnce
KeepAlive:60
cleanSession:ДА
ID клиента:@”ваш адрес макинтоша устройство”
имя пользователя:@”Ваш MQTT сервер имя_пользователя”
пароль:@”ваш пароль MQTT сервера”
sucBlock:^(идентификатор returnData) {
//Config успеха
}
failedBlock:^(NSError * ошибка) {
//Config Ошибка
}];

step4

[[MKSocketManager sharedInstance] configWifiSSID:Ваш WiFi SSID
пароль:Wi-Fi пароль
безопасность:wifiSecurity_WPA2_PSK
sucBlock:^(идентификатор returnData) {
//Config успеха
} failedBlock:^(NSError * ошибка) {
//Config Ошибка
}];

2. Папка MKSDKForMqttServer является SDK, который настраивает APP и MQTTServer

2.1 MKMQTTServerManagerDelegate
@protocol MKMQTTServerManagerDelegate

(недействительным)mqttServerManagerStateChanged:(MKMQTTSessionManagerState)штат;//подключения состояние метод делегата

(недействительным)sessionManager:(MKMQTTServerManager *)sessionManager didReceiveMessage:(NSData *)ontopic данные:(NSString *)тема;//Получает данные от сервера MQTT

@конец

2.2 APP подключения к серверу MQTT
Когда сеть доступна,вызов [[MKMQTTServerManager sharedInstance] connectMQTTServer:порт:TLS:KeepAlive:чистый:авт:пользователь:проходят:ID клиента:] для подключения к серверу MQTT.

2.3 Подписаться на тему
Пожалуйста, обратитесь к protocal документ MQTT для темы смарт plug.Call – (недействительным)Подписки:(NSArray *)topicList и – (недействительным)отменяют подписку:(NSArray *)topicList подписаться и отписаться на тему separatrly.

2.4 APP опубликует данные по указанному вопросу
Пожалуйста, обратитесь к protocal документ 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», включают: [«* .Jar»])
проект внедрения(путь: «: mokosupport»)
}

1.4 Импорт SDK во время инициализации проекта:

общественный класс BaseApplication расширяет приложение {
@Override
общественного недействительными OnCreate() {
super.onCreate();
// инициализация
MokoSupport.getInstance().в этом(getApplicationContext());
}
}

2.Введение функции

    • Методы, представленные в SDK включают: Разъем связь с устройством WIFI, Служба связи MQTT, отключение, подписка на тему, отписки тему, сообщение темы, запись в журнале, и т.д.
    • Разъем связи называют SocketService;
    • MQTT связь может быть вызвана MokoSupport.getInstance();

2.1 SocketService

Перед созданием соединения сокета, Вы должны подтвердить, является ли приложение подключается к Wi-Fi устройства. Подключение IP-адрес по умолчанию 192.168.4.1, номер порта по умолчанию 8266, который может быть изменен в SocketThread.

2.1.1 инициализация

bindService(новый Intent(это, SocketService.class), mServiceConnection, BIND_AUTO_CREATE);

Начало SocketService, и получить объект SocketService, вызов mService.startSocket() создать сокет нить, подключить устройство, и поток ожидает сообщение будет отправлено после того, как соединение успешно;

2.1.2 Получить статус соединения и ответ

1.Получить статус соединения путем регистрации вещания:

Broadcast ДЕЙСТВИЯ:MokoConstants.ACTION_AP_CONNECTION

состояние соединения:

    • успешное соединение:MokoConstants.CONN_STATUS_SUCCESS
    • соединительный:MokoConstants.CONN_STATUS_CONNECTING
    • Ошибка подключения:MokoConstants.CONN_STATUS_FAILED
    • Время соединения вышло:MokoConstants.CONN_STATUS_TIMEOUT

2、Получить ответ связи сокетов путем регистрации вещания :

Broadcast ДЕЙСТВИЯ: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”,
“KeepAlive” : 120,
“QoS” : 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 и получить форму данных сервера возврата

@Override
общественного недействительными connectComplete(булево переподключение, Строка serverURI) {

}
@Override
общественного недействительными connectionLost(Throwable причина) {

}
@Override
общественного недействительными messageArrived(Строка темы, MqttMessage сообщение) бросает исключение {

}

3、Получить статус соединения путем регистрации вещания:

Broadcast ДЕЙСТВИЯ:MokoConstants.ACTION_MQTT_CONNECTION

состояние соединения:

    • успех соединения:MokoConstants.MQTT_CONN_STATUS_SUCCESS
    • Отключить:MokoConstants.MQTT_CONN_STATUS_LOST

4、Получить возвращаемые данные с сервера, регистрируя трансляции

Broadcast ДЕЙСТВИЯ: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 контролировать состояние действий:

общественное перечисление действий {
/**
* Connect Action
**/
CONNECT,
/**
* Подписка Action
**/
ПОДПИСЫВАТЬСЯ,
/**
* Опубликовать Action
**/
ПУБЛИКОВАТЬ,
/**
* UNSUBSCRIBE Действие
**/
UNSUBSCRIBE
}

Получить статус действий по регистрации вещания:

1、CONNECT

Broadcast ДЕЙСТВИЯ:MokoConstants.ACTION_MQTT_CONNECTION

Ошибка подключения:MokoConstants.MQTT_CONN_STATUS_FAILED
2、ПОДПИСЫВАТЬСЯ

Broadcast ДЕЙСТВИЯ:MokoConstants.ACTION_MQTT_SUBSCRIBE

Подписаться на тему:MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC
Подписка статус:MokoConstants.EXTRA_MQTT_STATE

3、ПУБЛИКОВАТЬ

Broadcast ДЕЙСТВИЯ:MokoConstants.ACTION_MQTT_PUBLISH

статус публикации:MokoConstants.EXTRA_MQTT_STATE

4、UNSUBSCRIBE

Broadcast ДЕЙСТВИЯ:MokoConstants.ACTION_MQTT_UNSUBSCRIBE

Отказаться от статуса:MokoConstants.EXTRA_MQTT_STATE

2.2.3 Подписаться на тему

MokoSupport.getInstance().подписываться(Строка темы, ИНТ QoS)

2.2.4 Публикация информации

MokoSupport.getInstance().публиковать(Строка темы, MqttMessage сообщение)

2.2.5 Отказаться от темы

MokoSupport.getInstance().UNSUBSCRIBE(Строка темы)

2.2.6 Определить, подключен ли MQTT

MokoSupport.getInstance().подключен()

2.2.7 разъединение

MokoSupport.getInstance().disconnectMqtt()

3.Save Log для SD-карты
SDK интегрирует Log сохраняется в функции 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(“Информация о журнале”);