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

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

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

1.1 If you want to configure the MQTT server information and the wifi information to connect to the smart plug, you need to make the smart plug into AP mode(Пожалуйста, обратитесь к руководству пользователя MokoLife): plug the smart plug into a power socket, нажмите кнопку для 10 seconds till the smart plug indicator blink amber light which indicates the smart plug into AP mode(Заметка: Период ожидания для режима AP 3 минут, как только вы настроили информацию для смарт-плагин, это завершит режим AP). Зайдите на страницу Wlan и выберите смарт-точку доступа для подключения, when connecting successfully, вызовите connectDeviceWithHost:порт
connectSucBlock:connectFailed
Blockmethods to connect the smart plug. Following is the complete configuration of the smart plug process:

шаг 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:@”your MQTT Server host”
порт:порт
ConnectMode:mqttServerConnectTCPMode
QoS:mqttQosLevelExactlyOnce
KeepAlive:60
cleanSession:ДА
ID клиента:@”your device mac address”
имя пользователя:@”your MQTT Server userName”
пароль:@”your MQTT Server password”
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 Подписаться тему

Please refer to the MQTT protocal document for the topic of the smart plug.Call – (недействительным)Подписки:(NSArray *)topicList and – (недействительным)отменяют подписку:(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(); // initialization MokoSupport.getInstance().в этом(
getApplication Context()); } }

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 Get a response
DeviceResponse response = (DeviceResponse) intent.getSerializableExtra(MokoConstants.
EXTRA_AP _SET_DATA_RESPONSE);

2.1.3 Разъем

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

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

{
“header” : 4001
}

ответ:

{
“code” : 0,
“message” : “success”,
“result” : {
“header” : 4001,
“device_function” : “iot_plug”,
“device_name” : “plug_one”,
“device_specifications” : “us”,
“device_mac” : “11:22:33:44:55:66,
“device_type” : “1”
}
}

2、 Отправить MQTT информацию о сервере

{
“header” : 4002,
“host” : “45.32.33.42”,
“port” : 1883,
“connect_mode” : 0,
“username” : “DVES_USER”,
“password” : “DVES_PASS”,
“keepalive” : 120,
“qos” : 2,
“clean_session” :1
}
ответ:

{
“code” : 0,
“message” : “success”,
“result” : {
“header” : 4002
}
}

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

{
“header” : 4003,
“wifi_ssid” : “Fitpolo”,
“wifi_pwd” : “fitpolo1234.”,
“wifi_security” : 3
}

ответ:

{
“code” : 0,
“message” : “success”,
“result” : {
“header” : 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_
    SUCCESS
  • Отключить:MokoConstants.MQTT_CONN_STATUS_LOST

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

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

Возврат данных:

  • Возврат данных Тема:
MokoConstants.EXTRA_MQTT_RECEIVE_
TOPIC
  • Возврат данных Сообщение:
MokoConstants.EXTRA_MQTT_RECEIVE_
MESSAGE

Возвращаемые данные в формате JSON,например:

{
“company_name” : “moko”,
“production_date” : “201801”,
“product_model” : “plug_one”,
“firmware_version” : “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/xLoginitialization method in MokoSupport.getInstance().в этом(
getApplicationContext())Имя папки и имя файла, сохраненные на SD-карте, можно изменить.

открытый класс LogModule {
private static final String TAG = “mokoLife”;// имя файла
private static final String LOG_FOLDER = “mokoLife”;// имя папки

}

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

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

LogModule.v(“log info”);
LogModule.d(“log info”);
LogModule.i(“log info”);
LogModule.w(“log info”);
LogModule.e(“log info”);

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