Решения SDK для IoT Smart Plug Socket

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

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

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

шаг 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 public void onCreate() { super.onCreate(); // инициализация MokoSupport.getInstance().в этом(
getApplication Контекст()); } }

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_
    ПОДКЛЮЧЕНИЕ
  • Ошибка подключения:MokoConstants.CONN_STATUS_FAILED
  • Время соединения вышло:MokoConstants.CONN_STATUS_TIMEOUT

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

Трансляция АКЦИЯ:MokoConstants.ACTION_AP_SET_DATA_
ОТВЕТ Получить ответ:
DeviceResponse response = (DeviceResponse) intent.getSerializableExtra(MokoConstants.
EXTRA_AP _SET_DATA_RESPONSE);

2.1.3 Разъем

Отправка данных принимает только строки в формате JSON
например:

1、Получить информацию об устройстве:

{
«Заголовок» : 4001
}

ответ:

{
"код" : 0,
"сообщение" : «Успех»,
«Результат» : {
«Заголовок» : 4001,
«Функция_устройства» : «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,
«Чистая_сессия» :1
}
ответ:

{
"код" : 0,
"сообщение" : «Успех»,
«Результат» : {
«Заголовок» : 4002
}
}

3、Отправить сеть WIFI с определенным SSID

{
«Заголовок» : 4003,
«Wifi_ssid» : «Фитполо»,
«Wifi_pwd» : «Fitpolo1234.»,
«Wifi_security» : 3
}

ответ:

{
"код" : 0,
"сообщение" : «Успех»,
«Результат» : {
«Заголовок» : 4003
}
}

2.2 MokoSupport

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

1、Создать MqttAndroidClient

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

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

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

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

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

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

}

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:

публичное действие {
/**
* Подключите действие
**/
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()

5.Сохранить журнал на 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(«Информация журнала»);

Поговорить с экспертом