Soluções IoT Smart Plug Socket SDK

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

1. Abaixo da pasta MKSDK for Device, está o SDK para configurar o plug inteligente

1.1 Se você deseja configurar as informações do servidor MQTT e as informações do wifi para conectar-se ao smart plug,você precisa colocar o plug inteligente no modo AP(Por favor, consulte o manual do usuário MokoLife):conecte o plugue inteligente na tomada,pressione o botão para 10 segundos até que o indicador do plugue inteligente pisque a luz âmbar, que indica o plugue inteligente no modo AP(Nota:O período de tempo limite para o modo AP é 3 minutos,depois de configurar as informações no plug inteligente,terminará o modo AP).Entre na página Wlan e selecione o hotspot de plug inteligente para conectar ,quando conectar com sucesso,chamar connectDeviceWithHost:porta:connectSucBlock:métodos connectFailedBlock para conectar o plug inteligente. A seguir é a configuração completa do processo do plug inteligente:

passo 1

[[MKSocketManager sharedInstance] connectDeviceWithHost:@”192.168.4.1″
porta:8266
connectSucBlock:^(NSString * IP, Porta NSInteger) {
//conectar o sucesso
connectFailedBlock:^(Erro NSError *) {
//falha na conexão
}];

passo 2

[[MKSocketManager sharedInstance] readSmartPlugDeviceInformationWithSucBlock:^(id returnData) {
//Leia o sucesso das informações do dispositivo
} failBlock:^(Erro NSError *) {
//Falha na leitura das informações do dispositivo
}];

etapa 3

[[MKSocketManager sharedInstance] configMQTTServerHost:@”seu host do MQTT Server”
porta:porta
connectMode:mqttServerConnectTCPMode
qos:mqttQosLevelExactlyOnce
mantenha vivo:60
cleanSession:SIM
ID do Cliente:@”o endereço mac do seu dispositivo”
nome do usuário:@”seu nome de usuário do servidor MQTT”
senha:@”sua senha do servidor MQTT”
sucBlock:^(id returnData) {
//Sucesso de configuração
}
failBlock:^(Erro NSError *) {
//Falha na configuração
}];

Passo 4

[[MKSocketManager sharedInstance] configWifiSSID:seu wifi ssid
senha:senha do wifi
segurança:wifiSecurity_WPA2_PSK
sucBlock:^(id returnData) {
//Sucesso de configuração
} failBlock:^(Erro NSError *) {
//Falha na configuração
}];

2. A pasta MKSDKForMqttServer é o SDK que configura o APP e o MQTTServer

2.1 MKMQTTServerManagerDelegate
@protocol MKMQTTServerManagerDelegate

(vazio)mqttServerManagerStateChanged:(MKMQTTSessionManagerState)Estado;//método delegar estado de conexão

(vazio)sessionManager:(MKMQTTServerManager *)sessionManager didReceiveMessage:(NSData *)dados onTopic:(NSString *)tópico;//Recebe os dados do servidor MQTT

@fim

2.2 APP se conectar ao servidor MQTT
Quando a rede está disponível,ligar [[MKMQTTServerManager sharedInstance] connectMQTTServer:porta:tls:mantenha vivo:limpar limpo:auth:do utilizador:passar:ID do Cliente:] conectar seu servidor MQTT.

2.3 Subscrever tópico
Consulte o documento protocal do MQTT para obter o tópico do plug inteligente. – (vazio)assinaturas:(NSArray *)topicList e – (vazio)anular a subscrição:(NSArray *)topicList para assinar e cancelar a assinatura do tópico separadamente.

2.4 A APP publica dados em um tópico especificado
Consulte o documento protocal do MQTT para obter o tópico do plug inteligente. – (vazio)sendData:(NSDictionary *)tópico de dados:(NSString *)tópico sucBlock:(vazio (^)(vazio))sucBlock failedBlock:(vazio (^)(Erro NSError *))failBlock

README.md - Android

1.Importar e usar o SDK

1.1 Projeto de módulo de importação mokosupport

1.2 Configure o arquivo settings.gradle e chame o projeto mokosupport:

incluir ':aplicativo',':mokosupport’

1.3 Edite o arquivo build.gradle do projeto principal:

dependências {
fileTree de implementação(para você: "Libs", incluir: ['* .Jar'])
projeto de implementação(caminho: ‘: mokosupport ')
}

1.4 Importar SDK durante a inicialização do projeto:

classe pública BaseApplication estende Application {
@Sobrepor
public void onCreate() {
super.onCreate();
// inicialização
MokoSupport.getInstance().iniciar(getApplicationContext());
}
}

2.Introdução da função

    • Os métodos fornecidos no SDK incluem: Comunicação por soquete com dispositivo Wi-Fi, Serviço de conexão MQTT, desconexão, tópico de assinatura, cancelar inscrição, postar tópico, registro de log, etc.
    • A comunicação de soquete é chamada pelo SocketService;
    • A comunicação MQTT pode ser chamada por MokoSupport.getInstance();

2.1 SocketService

Antes de criar uma conexão Socket, você precisa confirmar se o aplicativo está conectado ao Wi-Fi do dispositivo. Conecte o endereço IP padrão 192.168.4.1, o número da porta padrão é 8266, que pode ser modificado no SocketThread.

2.1.1 Inicialização

bindService(nova intenção(isto, SocketService.class), mServiceConnection, BIND_AUTO_CREATE);

Iniciar SocketService, e obtenha o objeto SocketService, chame mService.startSocket() criar um encadeamento Socket, conecte o dispositivo, e o encadeamento aguarda o envio da mensagem após o êxito da conexão;

2.1.2 Obter status e resposta da conexão

1.Obtenha o status da conexão registrando a transmissão:

Transmissão AÇÃO:MokoConstants.ACTION_AP_CONNECTION

Status da conexão:

    • Conexão bem-sucedida:MokoConstants.CONN_STATUS_SUCCESS
    • conectando:MokoConstants.CONN_STATUS_CONNECTING
    • Falha na conexão:MokoConstants.CONN_STATUS_FAILED
    • Tempo limite de conexão:MokoConstants.CONN_STATUS_TIMEOUT

2、Obtenha a resposta de comunicação do soquete registrando a transmissão :

Transmissão AÇÃO:MokoConstants.ACTION_AP_SET_DATA_RESPONSE

Obter uma resposta:

Resposta DeviceResponse = (DeviceResponse) intent.getSerializableExtra(MokoConstants.EXTRA_AP_SET_DATA_RESPONSE);

2.1.3 Soquete
Enviar dados aceita apenas cadeias de caracteres no formato JSON

por exemplo:

1、Obter informações do dispositivo:

{
“cabeçalho” : 4001
}

resposta:

{
“código” : 0,
“mensagem” : “sucesso”,
“resultado” : {
“cabeçalho” : 4001,
“device_function” : “iot_plug”,
“nome do dispositivo” : “plug_one”,
“device_specifications” : “nos”,
“device_mac” : “11:22:33:44:55:66”,
“tipo de dispositivo” : “1”
}
}

2、 Enviar informações do servidor MQTT

{
“cabeçalho” : 4002,
“hospedeiro” : “45.32.33.42”,
“porta” : 1883,
“connect_mode” : 0,
“nome do usuário” : “DVES_USER”,
“senha” : “DVES_PASS”,
“mantenha vivo” : 120,
“qos” : 2,
“clean_session” :1
}
resposta:

{
“código” : 0,
“mensagem” : “sucesso”,
“resultado” : {
“cabeçalho” : 4002
}
}

3、Envie uma rede WIFI com um SSID específico

{
“cabeçalho” : 4003,
“wifi_ssid” : “Fitpolo”,
“wifi_pwd” : “fitpolo1234.”,
“wifi_security” : 3
}

resposta:

{
“código” : 0,
“mensagem” : “sucesso”,
“resultado” : {
“cabeçalho” : 4003
}
}

2.2 MokoSupport

2.2.1 Conecte-se ao servidor MQTT
1、Criar MqttAndroidClient

public void creatClient(Host de sequência, Porta String, String clientId, boolean tlsConnection)

2、Conecte-se ao servidor

public void connectMqtt(MqttConnectOptions opções)
Obtenha o status de criação de acordo com MqttCallbackHandler e receba o servidor de formulário de retorno de dados

@Sobrepor
public void connectComplete(reconexão booleana, String serverURI) {

}
@Sobrepor
public void connectionLost(Causa jogável) {

}
@Sobrepor
public void messageArrived(Tópico de String, Mensagem MqttMessage) lança exceção {

}

3、Obtenha o status da conexão registrando a transmissão:

Transmissão AÇÃO:MokoConstants.ACTION_MQTT_CONNECTION

Status da conexão:

    • Sucesso na conexão:MokoConstants.MQTT_CONN_STATUS_SUCCESS
    • desconectar:MokoConstants.MQTT_CONN_STATUS_LOST

4、Receba os dados de retorno do servidor registrando a transmissão

Transmissão AÇÃO:MokoConstants.ACTION_MQTT_RECEIVE

Retornar dados:

    • Retornar dados Tópico:

MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC

    • Retornar dados Mensagem:

MokoConstants.EXTRA_MQTT_RECEIVE_MESSAGE

Os dados de retorno estão no formato JSON,por exemplo:

{
“Nome da empresa” : “moko”,
“data de produção” : “201801”,
“product_model” : “plug_one”,
“versão do firmware” : “000001”
“device_mac” : “11:22:33:44:55:66”
}

2.2.2 Monitor de ação
A comunicação MQTT contém quatro tipos de ações. Para executar cada ação, você precisa configurar o ActionListener para monitorar o estado da ação:

enum público Ação {
/**
* Ação de conexão
**/
CONECTAR,
/**
* Ação de Subscrição
**/
SE INSCREVER,
/**
* Ação de publicação
**/
PUBLICAR,
/**
* Ação de cancelamento de inscrição
**/
CANCELAR SUBSCRIÇÃO
}

Obtenha o status de Ação registrando a transmissão:

1、CONECTAR

Transmissão AÇÃO:MokoConstants.ACTION_MQTT_CONNECTION

Falha na conexão:MokoConstants.MQTT_CONN_STATUS_FAILED
2、SE INSCREVER

Transmissão AÇÃO:MokoConstants.ACTION_MQTT_SUBSCRIBE

Subscrever tópico:MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC
Status de inscrição:MokoConstants.EXTRA_MQTT_STATE

3、PUBLICAR

Transmissão AÇÃO:MokoConstants.ACTION_MQTT_PUBLISH

Status de publicação:MokoConstants.EXTRA_MQTT_STATE

4、CANCELAR SUBSCRIÇÃO

Transmissão AÇÃO:MokoConstants.ACTION_MQTT_UNSUBSCRIBE

Status de cancelamento de inscrição:MokoConstants.EXTRA_MQTT_STATE

2.2.3 Subscrever tópico

MokoSupport.getInstance().se inscrever(Tópico de String, int qos)

2.2.4 Publicar informações

MokoSupport.getInstance().publicar(Tópico de String, Mensagem MqttMessage)

2.2.5 Cancelar tópico

MokoSupport.getInstance().Cancelar subscrição(Tópico de String)

2.2.6 Determine se o MQTT está conectado

MokoSupport.getInstance().está conectado()

2.2.7 Desconexão

MokoSupport.getInstance().connectMqtt()

3.Salvar registro no cartão SD
O SDK integra o registro salvo na função do cartão SD, é chamado https://github.com/elvishew/xLog

método de inicialização em MokoSupport.getInstance().iniciar(getApplicationContext())

O nome da pasta e o nome do arquivo salvos no cartão SD podem ser modificados.

classe pública LogModule {
string estática final privada TAG = “mokoLife”;// nome do arquivo
string final estática privada LOG_FOLDER = “mokoLife”;// nome da pasta

}

Estratégia de armazenamento: armazene apenas os dados do dia e os dados do dia anterior , o arquivo possui o sufixo with.bak

método de chamada:

LogModule.v(“informações de log”);
LogModule.d(“informações de log”);
LogModule.i(“informações de log”);
LogModule.w(“informações de log”);
LogModule.e(“informações de log”);