IoT Smart Plug Socket SDK Solutions

Умный Мопс MK102
Smart Plug MK112
Smart Switch WS001-3
README.md - IOS

1. Под папкой MKSDK For Device находится SDK для настройки смарт-плагина.

1.1 Если вы хотите настроить информацию о сервере MQTT и информацию о Wi-Fi для подключения к Smart Plug,вам нужно сделать умный плагин в режиме AP(Пожалуйста, обратитесь к руководству пользователя MokoLife):подключите интеллектуальную вилку к розетке,нажмите кнопку для 10 секунд до тех пор, пока индикатор смарт-разъема не начнет мигать желтым светом, что означает, что смарт-разъем находится в режиме AP(Заметка:Период ожидания для режима AP 3 минут,как только вы настроили информацию для смарт-плагин,это завершит режим AP).Зайдите на страницу Wlan и выберите смарт-точку доступа для подключения ,когда подключиться успешно,вызовите connectDeviceWithHost:порт:connectSucBlock:методы connectFailedBlock для подключения Smart Plug.Following - это полная конфигурация процесса Smart Plug:

шаг 1

[[MKSocketManager sharedInstance] connectDeviceWithHost:@”192.168.4.1″
порт:8266
connectSucBlock:^(NSString * IP, NSInteger порт) {
//подключить успех
connectFailedBlock:^(Ошибка NSError *) {
//сбой соединения
}];

шаг 2

[[MKSocketManager sharedInstance] readSmartPlugDeviceInformationWithSucBlock:^(id returnData) {
//Читать информацию об устройстве успешно
} failedBlock:^(Ошибка NSError *) {
//Ошибка чтения информации об устройстве
}];

шаг 3

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

step4

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

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

2.1 MKMQTTServerManagerDelegate
@protocol MKMQTTServerManagerDelegate

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

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

@конец

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

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

2.4 Приложение публикует данные в указанной теме
Пожалуйста, обратитесь к протоколу MQTT для темы смарт-плагин. – (недействительным)SendData:(NSDictionary *)тема данных:(NSString *)тема sucBlock:(недействительным (^)(недействительным))sucBlock не удалосьBlock:(недействительным (^)(Ошибка NSError *))failedBlock

README.md - Android

1.Импорт и использование SDK

1.1 Модуль импорта проекта mokosupport

1.2 Сконфигурируйте файл settings.gradle и вызовите проект mokosupport:

включают ':приложение',»:mokosupport’

1.3 Отредактируйте файл build.gradle основного проекта:

зависимости {
реализация fileTree(тебе: «LIBS», включают: [«* .Jar»])
проект внедрения(дорожка: «: mokosupport»)
}

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

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

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

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

2.1 SocketService

Перед созданием соединения Socket, вам нужно подтвердить, подключено ли приложение к 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、Получите ответ Socket для связи, зарегистрировав трансляцию :

Трансляция АКЦИЯ:MokoConstants.ACTION_AP_SET_DATA_RESPONSE

Получить ответ:

DeviceResponse 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_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

public void creatClient(Струнный хост, Струнный порт, String clientId, логическое значение tlsConnection)

2、Подключиться к серверу

public void connectMqtt(Параметры MqttConnectOptions)
Получите статус создания согласно MqttCallbackHandler и получите сервер формы данных возврата

@Override
public void connectComplete(логическое переподключение, Струнный серверURI) {

}
@Override
public void connectionLost(Бросаемая причина) {

}
@Override
public void messageArrived(Строковая тема, MqttMessage message) исключение {

}

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:

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

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

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、UNSUBSCRIBE

Трансляция АКЦИЯ:MokoConstants.ACTION_MQTT_UNSUBSCRIBE

Отписаться статус:MokoConstants.EXTRA_MQTT_STATE

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

MokoSupport.getInstance().подписываться(Строковая тема, Int Qos)

2.2.4 Публиковать информацию

MokoSupport.getInstance().публиковать(Строковая тема, MqttMessage message)

2.2.5 Отписаться от темы

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

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”;// имя папки

}

Стратегия хранения: хранить только данные дня и данные за день до , к файлу добавляется .bak

вызов метода:

LogModule.v(“информация журнала”);
LogModule.d(“информация журнала”);
LogModule.i(“информация журнала”);
LogModule.w(“информация журнала”);
LogModule.e(“информация журнала”);