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 al enchufe inteligente, necesitas poner el enchufe inteligente en modo AP(Consulte el manual de usuario de MokoLife): conecte el enchufe inteligente a una toma de corriente, presione el botón para 10 segundos hasta que el indicador de enchufe inteligente parpadee con 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:Conexión fallida
Métodos de bloque para conectar el enchufe inteligente. A continuación se muestra la configuración completa del proceso de conexión 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]readSmartPlugDevice
InformationWithSucBlock:^(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 host del servidor MQTT”
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 protocal de MQTT para conocer 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 vacío público onCreate() { super.onCreate(); // inicialización MokoSupport.getInstance().en eso(
getApplication Contexto()); } }

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_
    CONECTANDO
  • 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_
RESPUESTA Obtén 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",
"Device_specifications" : "nos",
"Device_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,
"Modo_conexión" : 0,
"Nombre de usuario" : "DVES_USER",
"contraseña" : "DVES_PASS",
"mantener viva" : 120,
"Qos" : 2,
"Clean_session" :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)

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

2、Conectarse al servidor

@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_
    ÉXITO
  • 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_
TEMA
  • Mensaje de devolución de datos:
MokoConstants.EXTRA_MQTT_RECEIVE_
MENSAJE

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"
"Device_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()

5.Guardar registro en la tarjeta SD

SDK integra el registro guardado en la función de tarjeta SD, se llama https://github.com/elvishew/xLoginitialization method in 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 {
Cadena final estática privada TAG = "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");

Habla con un experto