Soluciones IoT Smart Plug Socket SDK

Smart Pug MK102
Smart Plug MK112
Smart Switch WS001-3
README.md - IOS

1. Debajo de la carpeta MKSDK para dispositivo se encuentra el SDK para configurar el enchufe inteligente

1.1 Si desea configurar la información del servidor MQTT y la información wifi para conectarse para un enchufe inteligente,necesitas que el enchufe inteligente entre en modo AP(Consulte el manual de usuario de MokoLife):conecte el enchufe inteligente a la toma de corriente,presione el botón para 10 segundos hasta que el indicador del enchufe inteligente parpadee en una luz ámbar que indica que el enchufe inteligente está en modo AP(Nota:El tiempo de espera para el modo AP es 3 minutos,una vez que haya configurado la información para el enchufe inteligente,finalizará el modo AP).Ingrese a la página Wlan y seleccione el punto de conexión inteligente para conectarse ,cuando se conecta con éxito,llame a connectDeviceWithHost:Puerto:connectSucBlock:Métodos connectFailedBlock para conectar el enchufe inteligente. A continuación se muestra la configuración completa del proceso del enchufe inteligente:

paso 1

[[MKSocketManager sharedInstance] connectDeviceWithHost:@ @”192.168.4.1″
Puerto:8266
connectSucBlock:^(NSString * IP, NSInteger port) {
//conectar el éxito
connectFailedBlock:^(NSError *error) {
//Conexión fallida
}];

paso 2

[[MKSocketManager sharedInstance] readSmartPlugDeviceInformationWithSucBlock:^(id returnData) {
//Leer la información del dispositivo con éxito
} bloqueado:^(NSError *error) {
//Leer la información del dispositivo falló
}];

paso 3

[[MKSocketManager sharedInstance] configMQTTServerHost:@ @”su servidor MQTT host”
Puerto:Puerto
connectMode:mqttServerConnectTCPMode
qos:mqttQosLevelExactlyOnce
mantener viva:60
cleanSession:SI
Identificación del cliente:@ @”la dirección mac de tu dispositivo”
nombre de usuario:@ @”su nombre de usuario del servidor MQTT”
contraseña:@ @”su contraseña del servidor MQTT”
sucBlock:^(id returnData) {
//Config Success
}
bloqueado:^(NSError *error) {
//Configuración fallida
}];

paso 4

[[MKSocketManager sharedInstance] configWifiSSID:su wifi ssid
contraseña:Contraseña de wifi
seguridad:wifiSecurity_WPA2_PSK
sucBlock:^(id returnData) {
//Config Success
} bloqueado:^(NSError *error) {
//Configuración fallida
}];

2. La carpeta MKSDKForMqttServer es el SDK que configura la aplicación y MQTTServer

2.1 MKMQTTServerManagerDelegate
@protocol MKMQTTServerManagerDelegate

(vacío)mqttServerManagerStateChanged:(MKMQTTSessionManagerState)estado;//método de delegado de estado de conexión

(vacío)sessionManager:(MKMQTTServerManager *)sessionManager didReceiveMessage:(NSData *)datos sobre el tema:(NSString *)tema;//Recibe los datos del servidor MQTT

@final

2.2 La aplicación se conecta al servidor MQTT
Cuando la red esta disponible,llamada [[MKMQTTServerManager sharedInstance] connectMQTTServer:Puerto:tls:mantener viva:limpiar:auth:usuario:pasar:Identificación del cliente:] para conectar su servidor MQTT.

2.3 Suscribir tema
Consulte el documento de protocolo MQTT para ver el tema del enchufe inteligente. – (vacío)suscripciones:(NSArray *)topicList y – (vacío)baja de suscripciones:(NSArray *)topicList para suscribirse y cancelar la suscripción del tema por separado.

2.4 La aplicación publica datos en un tema específico
Consulte el documento de protocolo MQTT para el tema del enchufe inteligente. – (vacío)enviar datos:(NSDictionary *)tema de datos:(NSString *)tema sucBlock:(vacío (^)(vacío))sucBlock failBlock:(vacío (^)(NSError *error))bloqueado

README.md - Android

1.Importar y usar SDK

1.1 Importar módulo proyecto mokosupport

1.2 Configure el archivo settings.gradle y llame al proyecto mokosupport:

incluir ‘:aplicación ",’:mokosupport’

1.3 Edite el archivo build.gradle del proyecto principal:

dependencias {
archivo de implementación(para ti: ‘Libs’, incluir: ['*.tarro'])
proyecto de implementación(camino: ‘: mokosupport ")
}

1.4 Importar SDK durante la inicialización del proyecto:

BaseApplication de clase pública extiende la aplicación {
@Anular
público vacío en Crear() {
super.onCreate();
// inicialización
MokoSupport.getInstance().en eso(getApplicationContext());
}
}

2.Introducción a la función

    • Los métodos proporcionados en SDK incluyen: Toma de comunicación con dispositivo WIFI, Servicio de conexión MQTT, desconexión, tema de suscripción, cancelar suscripción, publicar tema, registro de registro, etc..
    • SocketService llama a la comunicación de socket;
    • La comunicación MQTT puede ser llamada por MokoSupport.getInstance();

2.1 SocketService

Antes de crear una conexión de socket, debe confirmar si la aplicación está conectada al WIFI del dispositivo. Conecte la dirección IP predeterminada 192.168.4.1, el número de puerto predeterminado es 8266, que se puede modificar en SocketThread.

2.1.1 Inicialización

bindService(nueva intención(esta, SocketService.class), mServiceConnection, BIND_AUTO_CREATE);

Iniciar SocketService, y obtener el objeto SocketService, llame a mService.startSocket() para crear un hilo de socket, conecta el dispositivo, y el hilo espera a que se envíe el mensaje después de que la conexión sea exitosa;

2.1.2 Obtenga el estado de la conexión y la respuesta

1.Obtenga el estado de la conexión registrando la transmisión:

ACCIÓN de difusión:MokoConstants.ACTION_AP_CONNECTION

Estado de conexión:

    • Conexión exitosa:MokoConstants.CONN_STATUS_SUCCESS
    • conectando:MokoConstants.CONN_STATUS_CONNECTING
    • La conexión falló:MokoConstants.CONN_STATUS_FAILED
    • El tiempo de conexión expiro:MokoConstants.CONN_STATUS_TIMEOUT

2、Obtenga la respuesta de comunicación de Socket registrando la transmisión :

ACCIÓN de difusión:MokoConstants.ACTION_AP_SET_DATA_RESPONSE

Obtener una respuesta:

Respuesta de DeviceResponse = (DeviceResponse) intent.getSerializableExtra(MokoConstants.EXTRA_AP_SET_DATA_RESPONSE);

2.1.3 Enchufe
Enviar datos solo acepta cadenas en formato JSON

p.ej:

1、Obtener información del dispositivo:

{
“encabezamiento” : 4001
}

respuesta:

{
“código” : 0,
“mensaje” : “éxito”,
“resultado” : {
“encabezamiento” : 4001,
“función_dispositivo” : “iot_plug”,
“nombre del dispositivo” : “plug_one”,
“especificaciones_dispositivo” : “nosotros”,
“dispositivo_mac” : “11:22:33:44:55:66”,
“tipo de dispositivo” : “1”
}
}

2、 Enviar información del servidor MQTT

{
“encabezamiento” : 4002,
“anfitrión” : “45.32.33.42”,
“Puerto” : 1883,
“connect_mode” : 0,
“nombre de usuario” : “DVES_USER”,
“contraseña” : “DVES_PASS”,
“mantener viva” : 120,
“qos” : 2,
“sesión_limpia” :1
}
respuesta:

{
“código” : 0,
“mensaje” : “éxito”,
“resultado” : {
“encabezamiento” : 4002
}
}

3、Enviar una red WIFI con un SSID específico

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

respuesta:

{
“código” : 0,
“mensaje” : “éxito”,
“resultado” : {
“encabezamiento” : 4003
}
}

2.2 MokoSupport

2.2.1 Conéctese al servidor MQTT
1、Crear MqttAndroidClient

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

2、Conectarse al servidor

public void connectMqtt(Opciones de MqttConnectOptions)
Obtenga el estado de creación de acuerdo con MqttCallbackHandler y reciba el servidor de formulario de datos de devolución

@Anular
public void connectComplete(reconexión booleana, Servidor de cadenasURI) {

}
@Anular
conexión pública vacía(Causa arrojable) {

}
@Anular
mensaje vacío público(Tema de cadena, Mensaje MqttMessage) lanza Excepción {

}

3、Obtenga el estado de la conexión registrando la transmisión:

ACCIÓN de difusión:MokoConstants.ACTION_MQTT_CONNECTION

Estado de conexión:

    • Conexión exitosa:MokoConstants.MQTT_CONN_STATUS_SUCCESS
    • Desconectar:MokoConstants.MQTT_CONN_STATUS_LOST

4、Reciba los datos de devolución del servidor registrando la transmisión

ACCIÓN de difusión:MokoConstants.ACTION_MQTT_RECEIVE

Devolver datos:

    • Volver datos Tema:

MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC

    • Mensaje de devolución de datos:

MokoConstants.EXTRA_MQTT_RECEIVE_MESSAGE

Los datos de devolución están en formato JSON,p.ej:

{
“nombre de empresa” : “moko”,
“fecha de producción” : “201801”,
“Modelo del Producto” : “plug_one”,
“versión de firmware” : “000001”
“dispositivo_mac” : “11:22:33:44:55:66”
}

2.2.2 Monitor de acción
La comunicación MQTT contiene cuatro tipos de acciones.. Para ejecutar cada acción, necesita configurar ActionListener para monitorear el estado de la acción:

Acción de enumeración pública {
/**
* Acción de conectar
**/
CONECTAR,
/**
* Acción de suscripción
**/
SUSCRIBIR,
/**
* Publicar acción
**/
PUBLICAR,
/**
* Anular suscripción
**/
SUSCRIBIRSE
}

Obtenga el estado de acción registrando la transmisión:

1、CONECTAR

ACCIÓN de difusión:MokoConstants.ACTION_MQTT_CONNECTION

La conexión falló:MokoConstants.MQTT_CONN_STATUS_FAILED
2、SUSCRIBIR

ACCIÓN de difusión:MokoConstants.ACTION_MQTT_SUBSCRIBE

Suscribir tema:MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC
Estado de suscripción:MokoConstants.EXTRA_MQTT_STATE

3、PUBLICAR

ACCIÓN de difusión:MokoConstants.ACTION_MQTT_PUBLISH

Estado de publicación:MokoConstants.EXTRA_MQTT_STATE

4、SUSCRIBIRSE

ACCIÓN de difusión:MokoConstants.ACTION_MQTT_UNSUBSCRIBE

Estado de baja:MokoConstants.EXTRA_MQTT_STATE

2.2.3 Suscribir tema

MokoSupport.getInstance().suscribir(Tema de cadena, int qos)

2.2.4 Publicar información

MokoSupport.getInstance().publicar(Tema de cadena, Mensaje MqttMessage)

2.2.5 Darse de baja del tema

MokoSupport.getInstance().darse de baja(Tema de cadena)

2.2.6 Determine si el MQTT está conectado

MokoSupport.getInstance().está conectado()

2.2.7 Desconexión

MokoSupport.getInstance().disconnectMqtt()

3.Guardar registro en la tarjeta SD
SDK integra el registro guardado en la función de tarjeta SD, se llama https://github.com/elvishew/xLog

método de inicialización en MokoSupport.getInstance().en eso(getApplicationContext())

El nombre de la carpeta y el nombre del archivo guardado en la tarjeta SD se pueden modificar.

LogModule de clase pública {
etiqueta de cadena final estática privada = “mokoLife”;// nombre del archivo
Cadena final estática privada LOG_FOLDER = “mokoLife”;// nombre de la carpeta

}

Estrategia de almacenamiento: solo almacene los datos del día y los datos del día anterior , el archivo tiene el sufijo con.bak

método de llamada:

LogModule.v(“información de registro”);
LogModule.d(“información de registro”);
LogModule.i(“información de registro”);
LogModule.w(“información de registro”);
LogModule.e(“información de registro”);