IoT Smart Plug Socket SDK Solutions

Розумний мопс MK102
Розумна вилка MK112
Розумний перемикач WS001-3
README.md - IOS

1. Під папкою MKSDK для пристрою знаходиться SDK для налаштування інтелектуального штекера

1.1 Якщо ви хочете налаштувати інформацію про сервер MQTT та інформацію про wifi для підключення до інтелектуальної вилки, вам потрібно перевести розумну розетку в режим точки доступу(Зверніться до посібника користувача MokoLife): підключіть розумну вилку до розетки, натисніть кнопку для 10 секунд, доки індикатор інтелектуальної вилки не почне блимати бурштиновим світлом, що вказує на інтелектуальну вилку в режимі точки доступу(Примітка: Час очікування для режиму точки доступу становить 3 хвилин, налаштувавши інформацію на інтелектуальну вилку, це закінчить режим AP). Зайдіть на сторінку Wlan і виберіть точку доступу smart plug для підключення, при успішному підключенні, виклик connectDeviceWithHost:порт
connectSucBlock:connectFailed
Блок-методи для підключення інтелектуальної вилки. Далі йде повна конфігурація процесу інтелектуального підключення:

крок 1

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

крок2

[[MKSocketManager sharedInstance]readSmartPlugDevice
ІнформаціяWithSucBlock:^(id returnData) {
//Прочитайте інформацію про пристрій
} failedBlock:^(Помилка NSError *) {
//Не вдалося прочитати інформацію про пристрій
}];

крок 3

[[MKSocketManager sharedInstance] configMQTTServerHost:@ "Ваш хост сервера MQTT"
порт:порт
connectMode:mqttServerConnectTCPMode
qos:mqttQosLevelExactlyOnce
залишатися живим:60
cleanSession:ТАК
clientId:@ "Mac-адреса вашого пристрою"
ім'я користувача:@ ”Ваше ім’я користувача MQTT Server”
пароль:@ "Ваш пароль сервера MQTT"
sucBlock:^(id returnData) {
//Налаштуйте успіх
}
failedBlock:^(Помилка NSError *) {
//Помилка налаштування
}];

крок4

[[MKSocketManager sharedInstance] configWifiSSID:ваш wifi ssid - -
пароль:пароль WiFi
безпеки:wifiSecurity_WPA2_PSK
sucBlock:^(id returnData) {
//Налаштуйте успіх
} failedBlock:^(Помилка NSError *) {
//Помилка налаштування
}];

2. Папка MKSDKForMqttServer - це SDK, який налаштовує APP та MQTTServer

2.1 MKMQTTServerManagerDelegate

@protocol MKMQTTServerManagerDelegate

(порожнеча)mqttServerManagerStateChanged:(MKMQTTSessionManagerState)держава;
//метод підключення стану делегата -

(порожнеча)sessionManager:(MKMQTTServerManager *)sessionManager didReceiveMessage:(NSData *)дані по темі:(NSString *)теми;//Отримує дані з сервера MQTT

@end

2.2 APP підключається до сервера MQTT

Коли мережа доступна,дзвінок [[MKMQTTServerManager sharedInstance] connectMQTTServer:порт:tls:залишатися живим:чистий:
авт:користувач:пройти:clientId:] для підключення сервера MQTT.

2.3 Підписатися на тему

Будь ласка, зверніться до протокольного документа MQTT, щоб ознайомитись із темою розумної розетки. (порожнеча)передплати:(NSArray *)topicList та - (порожнеча)відписки:(NSArray *)topicList, щоб підписатись та скасувати підписку на тему окремо.

2.4 Додаток публікує дані за вказаною темою

Будь ласка, зверніться до протокольного документа MQTT, щоб ознайомитись із темою розумної вилки. - (порожнеча)sendData:(NSD Dictionary *)тема даних:(NSString *)тема sucBlock:(порожнеча (^)(порожнеча)). не вдалося:(порожнеча (^)(Помилка 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 розширює Application { @Override публічна порожнеча onCreate() { super.onCreate(); // ініціалізація MokoSupport.getInstance().у цьому(
getApplication Контекст()); } }

2.Функція Вступ

  • Методи, передбачені в SDK, включають: Зв'язок через розетку з пристроєм WIFI, Послуга підключення MQTT, відключення, тема передплати, скасувати тему, додати тему, запис журналу, тощо.
  • Socket-зв'язок називається SocketService;
  • Зв'язок MQTT може бути викликаний MokoSupport.getInstance();

2.1 SocketService

Перед створенням з'єднання Socket, потрібно підтвердити, чи APP підключено до 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 = (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,
“Clean_session” :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(Ведучий рядка, Рядок порт, Рядок clientId, логічний tlsConnection)

публічна порожнеча connectMqtt(Параметри MqttConnectOptions)
Отримайте статус створення відповідно до MqttCallbackHandler і отримайте сервер форми повернення даних

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

@Override
public void connectComplete(логічне повторне підключення, Рядковий серверURI) {
...
}
@Override
public void connectionLost(Причина, яку можна кинути) {
...
}
@Override
публічне недійсне повідомлення(Тема рядка, Повідомлення MqttMessage) кидає виняток {
...
}

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”,
“Firmware_version” : “000001”
“Device_mac” : “11:22:33:44:55:66"
}

2.2.2 Монітор дій

Зв'язок MQTT містить чотири види дій. Для виконання кожної дії, вам потрібно встановити ActionListener для моніторингу стану дії:

Громадський перелік Акція {
/**
* Connect Action
**/
ПІДКЛЮЧИТИ,
/**
* Підписатися на дію
**/
ПОДПИСАТИСЯ,
/**
* Дія публікації
**/
ОПУБЛІКУВАТИ,
/**
* Дія скасування підписки
**/
ПІДПИСАТИСЯ
}

Отримайте статус 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().опублікувати(Тема рядка, Повідомлення MqttMessage)

2.2.5 Скасувати підписку на тему

MokoSupport.getInstance().скасувати підписку(
Тема рядка)

2.2.6 Визначте, чи підключено MQTT

MokoSupport.getInstance().isConnected()

2.2.7 Відключення

MokoSupport.getInstance().відключитиMqtt()

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(“Інформація про журнал”);