Soluciones IoT Smart Plug Socket SDK
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
Puerto:8266
connectSucBlock:^(NSString * IP, NSInteger port) {
//conectar el éxito
connectFailedBlock:^(NSError *error) {
//Conexión fallida
}];
paso 2
InformationWithSucBlock:^(id returnData) {
//Leer la información del dispositivo con éxito
} bloqueado:^(NSError *error) {
//Leer la información del dispositivo falló
}];
paso 3
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
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
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:
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:
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 :
RESPUESTA Obtén una respuesta:
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:
TEMA
- Mensaje de devolución de datos:
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
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
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");