Soluciones SDK u IoT Smart Plug Socket

Pug MK102 na'at
Enchufe na'at MK112
Conmutador na'at WS001-3
README.md-IOS

1. Yáanal le carpeta MKSDK For Device Kula'an le SDK utia'al u configurar le smart plug

1.1 Wa k'áato' configurar u t'aan le servidor MQTT yéetel le a'alajil t'aan wifi utia'al u conectar ti' le enchufe na'at, K'abéet a meentik le enchufe na'at u AP modo(Consulte le manual usuario MokoLife): Conecte le enchufe na'at ti' jump'éel toma sáasilo'.., Presione le botón utia'al u 10 segundos tak ka le indicador enchufe na'at parpadee sáasil ámbar u indica le enchufe na'at ti' modo AP(Páaybe'en: Le período k'iinil páa'tajo' utia'al u modo AP le 3 uchik, Una pakteche' ka yanak u configurado le a'alajil t'aan ti' le smart plug, Acabará AP modo). Ingrese u linki abas kaambal le páawo'ob inalámbrica (WLAN) yéetel seleccione le hotspot elegante ti' le enchufe utia'al u conectar, Ti' le conectar ku belil, T'anik connectDeviceWithHost:puerto
connectSucBlock:connectFailed
Métodos u bloque utia'al u conectar le enchufe na'at. Tu continuación Kula'an le configuración completa ti' le tuukula' enchufe na'at:

paso 1

[[MKSocketManager sharedInstance] connectDeviceWithHost:@"192.168.4.1″
puerto:8266
connectSucBlock:^(NSString * IP, Puerto NSInteger) {
//conectar belil
connectFailedBlock:^(NSError * ba'alo') {
//Ba'alo' ti' le conectar ku
}];

paso 2

[[MKSocketManager sharedInstance]readSmartPlugDevice
InformaciónConSucBlock:^(id returnData) {
//Xook le a'alajil t'aan le dispositivo belil
} failedBlock (bloque errores).:^(NSError * ba'alo') {
//Ba'alo' le xook le a'alajil t'aan le dispositivo
}];

paso 3

[[MKSocketManager sharedInstance] configMQTTServerHost:@"u host servidor MQTT"
puerto:puerto
connectMode:mqttServerConnectTCPMode
qos:mqttQosLevelExactlyOnce
keepalive:60
cleanSession:JE'EL
clientId:@"le dirección MAC ti' u dispositivo"
K'aaba' usuario:@"u k'aaba' usuario le servidor MQTT"
contraseña:@"u contraseña le servidor MQTT"
sucBlock:^(id returnData) {
//Configuración ma'alob
}
failedBlock (bloque errores).:^(NSError * ba'alo') {
//Ba'alo' configuración
}];

paso 4

[[MKSocketManager sharedInstance] configWifiSSID:Vuestro wifi ssid
contraseña:contraseña wifi
seguridad.:wifiSecurity_WPA2_PSK
sucBlock:^(id returnData) {
//Configuración ma'alob
} failedBlock (bloque errores).:^(NSError * ba'alo') {
//Ba'alo' configuración
}];

2. Le carpeta MKSDKForMqttServer le u SDK u configura le APP yéetel MQTTServer

2.1 MKMQTTServerManagerDelegate

@protocol MKMQTTServerManagerDelegate

(vacío)mqttServerManagerStateChanged:(MKMQTTSessionManagerState)noj;
//Método delegado noj connect

(vacío)sessionManager:(MKMQTTServerManager *)sessionManager didReceiveMessage:(NSData *)datos sobretema chun tuukulo':(NSString *)chun tuukulo';//Ku k'amik le datos servidor MQTT

@end

2.2 Conexión le ka'anatako'ob ti' le servidor MQTT

Le ken u páawo'ob táan disponible,T'anik [[MKMQTTServerManager sharedInstance] connectMQTTServer:puerto:tls:keepalive:limpio:
Auth:usuario:Máans:clientId:] utia'al u conectar le servidor MQTT.

2.3 Chun tuukulo' suscripción

Consulte le ju'una' protocal mqtt utia'al le chun tuukulo' enchufe na'at. T'– (vacío)Suscripciones:(NSArray *)topicList yéetel – (vacío)cancelar le suscripción:(NSArray *)topicList yo'osal suscribir u cancelar le suscripción ti' le chun tuukulo' tumen separado.

2.4 APP publicar datos ti' jump'éel chun tuukulo' especificado

Consulte le ju'una' protocal u MQTT utia'al le chun tuukulo' enchufe na'at. – (vacío)enviarDatos:(NSDictionary *)chun tuukulo' datos:(NSString *)chun tuukulo' sucBlock:(vacío (^)(vacío))sucBlock failedBlockBlock:(vacío (^)(NSError * ba'alo'))failedBlock (bloque errores).

README.md-Android

1.Importar ka biilankiltej le SDK

1.1 Importar xook tsol mokosupport

1.2 Configurar le archivo settings.gradle ka t'anik u tsol mokosupport:

incluir.:ka'anatako'ob.,':mokosupport.

1.3 Editar le archivo build.gradle u tsol noj bejo':

Privadas {
archivo implementaciónTree(Dir: . libs., incluír: [. * .jar.])
úuchik u implementación(bejo': ': mokosupport.)
}

1.4 Importar SDK ti' le inicialización úuchik:

public class BaseApplication Jaay Application { @Override vacío máako'obo' onCreate() { super.onCrear(); // inicialización MokoSupport.getInstance().Init(
Contexto getApplication()); } }

2.Introducción le función

  • Le métodos proporcionados ti' SDK incluyen: Comunicación socket yéetel dispositivo WIFI, Ti' conexión MQTT, desconexión, chun tuukulo' suscripción, chun tuukulo' cancelación suscripción, chun tuukulo' k'iinil, yaan tu registro, etc.
  • SocketService k'aaba' le comunicación socket;
  • MokoSupport.getInstance je'el u páajtal u t'anik ti' le comunicación MQTT();

2.1 SocketService

Bey ma' crear jump'éel conexión Socket, K'a'ana'an confirmar wa le ka'anatako'ob táan conectada yaan u WIFI le dispositivo. Conectar le dirección IP predeterminada 192.168.4.1, Le meyaj ku puerto predeterminado jach 8266, Ba'ax ku páajtal modificar ti' SocketThread.

2.1.1 Inicialización

bindService(Túumben intención(le, SocketService.class), mServiceConnection, BIND_AUTO_CREATE);

Máaxo'ob SocketService, ka kéen p'áatak le objeto SocketService, T'anik mService.startSocket() ch'a'iko'ob jump'éel subproceso socket, Conecte le dispositivo, yéetel le subproceso páa'tajo' tu u envíe le k'uuben t'aano' ti' ka' u conexión tu betaj belil;

2.1.2 Kéen p'áatak le noj yéetel u núukik le conexión

1. Kéen p'áatak le noj le conexión registrando le meyajo'ob:

Asab meyajo'ob:MokoConstants.ACTION_AP_CONNECTION
Noj le conexión:
  • Conexión ma'alob:MokoConstants.CONN_STATUS_SUCCESS
  • conectivo:MokoConstants.CONN_STATUS_
    CONECTIVO
  • Ba'alo' conexión:MokoConstants.CONN_STATUS_FAILED
  • K'iinil páa'tajo' conexión:MokoConstants.CONN_STATUS_TIMEOUT

2、Kéen p'áatak u núukik comunicación Socket registrando le meyajo'ob :

Asab meyajo'ob:MokoConstants.ACTION_AP_SET_DATA_
NÚUKIK kéen p'áatak jump'éel núukik:
Núukik DeviceResponse = (DeviceResponse) intent.getSerializableExtra(MokoConstants.
EXTRA_AP _SET_DATA_RESPONSE);

2.1.3 Enchufe

Túuxtik datos chéen acepta cadenas ti' formato JSON
Eg:

1、Kéen p'áatak a'alajil t'aan ti:

{
"encabezado" : 4001
}

núukik:

{
"código" : 0,
"t'aan" : "éxito",
"resultado" : {
"encabezado" : 4001,
"device_function" : "Iot_plug",
"device_name" : "plug_one",
"device_specifications" : "To'one'",
"device_mac" : "11:22:33:44:55:66",
"device_type" : "1"
}
}

2、 Túuxtik a'alajil t'aan ti' le servidor MQTT

{
"encabezado" : 4002,
"anfitrión" : "45.32.33.42",
"puerto" : 1883,
"Connect_mode" : 0,
"K'aaba' usuario" : "DVES_USER",
"contraseña" : "DVES_PASS",
"keepalive" : 120,
"qos" : 2,
"clean_session" :1
}
núukik:

{
"código" : 0,
"t'aan" : "éxito",
"resultado" : {
"encabezado" : 4002
}
}

3、Túuxtik jump'éel páawo'ob WIFI yéetel juntúul SSID específico

{
"encabezado" : 4003,
"wifi_ssid" : "Fitpolo",
"wifi_pwd" : "fitpolo1234.",
"Wifi_security" : 3
}

núukik:

{
"código" : 0,
"t'aan" : "éxito",
"resultado" : {
"encabezado" : 4003
}
}

2.2 MokoSupport

2.2.1 Conectar ti' le servidor MQTT

1、Crear MqttAndroidClient

public void creatClient(Host tsolokbal, Puerto tsolokbal, String clientId, boolean tlsConnection)

vacío máako'obo' connectMqtt(Opciones u MqttConnectOptions)
Kéen p'áatak le noj sukbenilo'ob bin MqttCallbackHandler ka k'amik le servidor formulario datos devueltos

2、Conectar ti' le servidor

@Override
public void connectComplete(boolean k'a' conectar, Tsolokbal serverURI) {
...
}
@Override
conexión nula u públicaLost(Causa throwable) {
...
}
@Override
t'aan vacío públicoArrived(Chun tuukulo' tsolokbal, T'aan mqttMessage) U yaantal jump'éel excepción {
...
}

3、Kéen p'áatak le noj le conexión registrando le meyajo'ob:

Asab meyajo'ob:MokoConstants.ACTION_MQTT_CONNECTION

Noj le conexión:

  • Éxito le conexión:MokoConstants.MQTT_CONN_STATUS_
    ÉXITO
  • Desconectar:MokoConstants.MQTT_CONN_STATUS_LOST

4、K'amik le datos devueltos ti' le servidor registrando le meyajo'ob

Asab meyajo'ob:MokoConstants.ACTION_MQTT_RECEIVE

Suuto'ob datos:

  • Chun tuukulo' devolución datos:
MokoConstants.EXTRA_MQTT_RECEIVE_
CHUN TUUKULO'
  • Suuto'ob datos t'aan:
MokoConstants.EXTRA_MQTT_RECEIVE_
TS'ÍIBO'OB

Le datos devueltos táan ti' formato JSON,Eg:

{
"company_name" : "moko",
"production_date" : "201801",
"product_model" : "plug_one",
"Firmware_version" : "000001"
"device_mac" : "11:22:33:44:55:66"
}

2.2.2 Monitor asab

Le comunicación MQTT ku taasik kan tipos meyajo'ob. Utia'al ejecutar Amal asab, K'a'ana'an u establecer ActionListener utia'al u supervisar le noj le molayil:

asab enumeración pública {
/**
* Asab conectar
**/
CONECTAR,
/**
* Asab Suscribir u
**/
SUBSCRIBIR,
/**
* Publicar asab
**/
PUBLICAR,
/**
* UnSubscribe (asab).
**/
ANULAR LE SUSCRIPCIÓN
}

Kéen p'áatak le noj asab yo'osal le registro le meyajo'ob:

1、CONECTAR

Asab meyajo'ob:MokoConstants.ACTION_MQTT_CONNECTION
Ba'alo' conexión:MokoConstants.MQTT_CONN_STATUS_FAILED

2、SUBSCRIBIR

Asab meyajo'ob:MokoConstants.ACTION_MQTT_SUBSCRIBE
Chun tuukulo' suscripción:MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC
Tu suscripción:MokoConstants.EXTRA_MQTT_STATE

3、PUBLICAR

Asab meyajo'ob:MokoConstants.ACTION_MQTT_PUBLISH
Noj k'iinil:MokoConstants.EXTRA_MQTT_STATE

4、ANULAR LE SUSCRIPCIÓN

Asab meyajo'ob:MokoConstants.ACTION_MQTT_UNSUBSCRIBE
Tu cancelación suscripción:MokoConstants.EXTRA_MQTT_STATE

2.2.3 Chun tuukulo' suscripción

MokoSupport.getInstance().subscribir(Chun tuukulo' tsolokbal, int qos)

2.2.4 Publicar a'alajil t'aan

MokoSupport.getInstance().publicar(Chun tuukulo' tsolokbal, T'aan mqttMessage)

2.2.5 Chun tuukulo' cancelación suscripción

MokoSupport.getInstance().anular le suscripción(
Chun tuukulo' tsolokbal)

2.2.6 Determinar wa u MQTT táan conectado

MokoSupport.getInstance().isConnected()

2.2.7 Desconexión

MokoSupport.getInstance().desconectarMqtt()

5.Ooks registro ti' le tarjeta SD

SDK ts'abal ichil le registro guardado ti' le función tarjeta SD, u k'aaba' https://github.com/elvishew/xLog método inicialización ti' MokoSupport.getInstance().Init(
getApplicationContext()) U k'aaba' le carpeta yéetel u k'aaba' le archivo guardados ti' le tarjeta SD ku páajtal modificar.

xook pública LogModule {
private static final String TAG = "mokoLife";// K'aaba' archivo
private static final String LOG_FOLDER = "mokoLife";// K'aaba' carpeta
...
}

Estrategia almacenamiento a'alajil t'aan: Almacenar chéen le datos k'iin yéetel le datos k'iin anterior , le archivo yaan ti' le sufijo.bak

método call:

LogModule.v("a'alajil t'aan ti' registro");
LogModule.d("a'alajil t'aan ti' registro");
LogModule.i("a'alajil t'aan ti' registro");
LogModule.w("a'alajil t'aan ti' registro");
LogModule.e("a'alajil t'aan ti' registro");