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 de wi-fi para se conectar ao plugue inteligente, você precisa fazer o plug inteligente no modo AP(Por favor, consulte o manual do usuário MokoLife): conecte o plugue inteligente a uma 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, ao conectar com sucesso, chamar connectDeviceWithHost:porta
connectSucBlock:connectFailed
Métodos de bloco para conectar o plugue inteligente. A seguir está a configuração completa do processo de plugue 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]readSmartPlugDevice
InformationWithSucBlock:^(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 servidor MQTT”
porta:porta
connectMode:mqttServerConnectTCPMode
qos:mqttQosLevelExactlyOnce
mantenha vivo:60
cleanSession:SIM
ID do Cliente:@ ”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 MQTT para o tópico do smart plug.Chamada - (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(
getApplication Contexto()); } }

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_
    CONECTANDO
  • 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_
RESPOSTA Obtenha 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” : "nós",
“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 de 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)

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

2、Conecte-se ao servidor

@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_
    SUCESSO
  • 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_
TÓPICO
  • Retornar dados Mensagem:
MokoConstants.EXTRA_MQTT_RECEIVE_
MENSAGEM

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

5.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 {
private static final String TAG = “mokoLife”;// nome do arquivo
private static final String 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 registro”);
LogModule.d(“Informações de registro”);
LogModule.i(“Informações de registro”);
LogModule.w(“Informações de registro”);
LogModule.e(“Informações de registro”);