Smart Home Solution SDK

Pug esperto MK102
Inteligente plug MK112
Inteligente WS001-3 interruptor
README.md - IOS

1. Abaixo do MKSDK Para pasta do dispositivo é o SDK para configurar a tomada inteligente

1.1 Se você quiser configurar as informações de Sever MQTT e as informações Wi-Fi para ligar para tomada inteligente,Você precisa fazer a tomada inteligente em modo AP(Por favor, consulte o manual do usuário MokoLife):ligue a tomada inteligente na tomada de alimentação,pressione o botão para 10 segundos até a luz piscar âmbar indicador tomada inteligente que indicam a tomada inteligente em modo AP(Nota:O período de tempo limite para o modo AP é 3 minutos,uma vez que você tenha configurado as informações para a tomada inteligente,isso vai acabar modo AP).Entre na página de Wlan e selecione o ponto de acesso tomada inteligente para conectar ,quando se conectar com êxito,chamada connectDeviceWithHost:porta:connectSucBlock:métodos connectFailedBlock para plug.Following Smart Connect é a configuração completa do processo de tomada inteligente:

passo 1

[[MKSocketManager sharedInstance] connectDeviceWithHost:@”192.168.4.1″
porta:8266
connectSucBlock:^(NSString * IP, porta NSInteger) {
//sucesso connect
connectFailedBlock:^(NSError * erro) {
//conexão falhou
}];

passo 2

[[MKSocketManager sharedInstance] readSmartPlugDeviceInformationWithSucBlock:^(id returnData) {
//Informações Leia dispositivo de sucesso
} failedBlock:^(NSError * erro) {
//Informações Leia dispositivo falhou
}];

etapa 3

[[MKSocketManager sharedInstance] configMQTTServerHost:@”seu anfitrião MQTT Servidor”
porta:porta
connectMode:mqttServerConnectTCPMode
qos:mqttQosLevelExactlyOnce
mantenha vivo:60
cleanSession:SIM
ID do Cliente:@”o endereço MAC do dispositivo”
nome de usuário:@”o Servidor Nome de Utilizador MQTT”
senha:@”sua senha MQTT Servidor”
sucBlock:^(id returnData) {
//configuração Sucesso
}
failedBlock:^(NSError * erro) {
//configuração Falha
}];

Passo 4

[[MKSocketManager sharedInstance] configWifiSSID:seu SSID wi-fi
senha:senha do wifi
segurança:wifiSecurity_WPA2_PSK
sucBlock:^(id returnData) {
//configuração Sucesso
} failedBlock:^(NSError * erro) {
//configuração Falha
}];

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

2.1 MKMQTTServerManagerDelegate
@protocol MKMQTTServerManagerDelegate

(vazio)mqttServerManagerStateChanged:(MKMQTTSessionManagerState)Estado;//método delegado estado connect

(vazio)SessionManager:(MKMQTTServerManager *)SessionManager didReceiveMessage:(NSData *)dados ontopic:(NSString *)tema;//Recebe os dados do servidor MQTT

@fim

2.2 APP 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:] para conectar seu servidor MQTT.

2.3 Assinar tópico
Por favor, consulte o documento protocal MQTT para o tema da plug.Call inteligente – (vazio)assinaturas:(NSArray *)TOPICLIST e – (vazio)unsubscriptions:(NSArray *)TOPICLIST para subscrever e anular o tópico separatrly.

2.4 APP publicar dados a um tópico específico
Por favor, consulte o documento protocal MQTT para o tópico da tomada inteligente. – (vazio)sendData:(NSDictionary *)tópico de dados:(NSString *)tópico sucBlock:(vazio (^)(vazio))sucBlock failedBlock:(vazio (^)(NSError * erro))failedBlock

README.md - Android

1.Importação e utilização SDK

1.1 mokosupport Import projeto de módulo

1.2 projeto arquivo e mokosupport chamada settings.gradle Configurar:

incluir ':aplicativo',’:mokosupport’

1.3 Editar o arquivo build.gradle do projeto principal:

dependências {
filetree implementação(você: ‘libs’, incluir: [‘.Jar *’])
projeto de implementação(caminho: ‘: mokosupport’)
}

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

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

2.função Introdução

    • Os métodos fornecidos no SDK incluir: comunicação soquete com dispositivo Wi-Fi, serviço de conexão MQTT, desconexão, tópico de assinatura, tópico unsubscribe, Post tópico, registro de log, etc.
    • comunicação de soquete é chamado por SocketService;
    • comunicação MQTT pode ser chamado por MokoSupport.getInstance();

2.1 SocketService

Antes de criar uma conexão de soquete, Você precisa confirmar se a APP está ligado ao Wi-Fi do dispositivo. Ligue o endereço IP padrão 192.168.4.1, o número da porta padrão é 8266, o qual pode ser modificado em SocketThread.

2.1.1 inicialização

bindService(new Intent(esta, SocketService.class), mServiceConnection, BIND_AUTO_CREATE);

Iniciar SocketService, e obter o objeto SocketService, chamada mService.startSocket() para criar uma linha de soquete, conectar o dispositivo, e as esperas de rosca para a mensagem a ser enviada depois que a conexão é bem sucedida;

2.1.2 Obter o status da conexão e de resposta

1.Obter o status da conexão por registrar 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
    • A ligação falhou:MokoConstants.CONN_STATUS_FAILED
    • tempo limite de conexão:MokoConstants.CONN_STATUS_TIMEOUT

2、Obter a resposta a comunicação de soquete por registrar a transmissão :

transmissão AÇÃO:MokoConstants.ACTION_AP_SET_DATA_RESPONSE

Obter uma resposta:

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

2.1.3 soquete
Enviar dados só aceita cadeias 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 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、Enviar uma rede Wi-Fi com um determinado SSID

{
“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 Conectar ao servidor MQTT
1、Criar MqttAndroidClient

creatClient public void(String host, porta corda, Cordas clientId, boolean tlsConnection)

2、Conectar ao servidor

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

@Sobrepor
connectComplete public void(boolean reconexão, Cordas ServerUri) {

}
@Sobrepor
connectionlost public void(Throwable cause) {

}
@Sobrepor
public void messageArrived(tema de Cordas, mensagem MqttMessage) throws Exception {

}

3、Obter o status da conexão por registrar a transmissão:

transmissão AÇÃO:MokoConstants.ACTION_MQTT_CONNECTION

Status da conexão:

    • sucesso Connection:MokoConstants.MQTT_CONN_STATUS_SUCCESS
    • desconectar:MokoConstants.MQTT_CONN_STATUS_LOST

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

transmissão AÇÃO:MokoConstants.ACTION_MQTT_RECEIVE

dados de retorno:

    • Retorno de dados Tópico:

MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC

    • Retorno de dados mensagem:

MokoConstants.EXTRA_MQTT_RECEIVE_MESSAGE

Os dados de retorno é em formato JSON,por exemplo:

{
“Nome da empresa” : “farinha”,
“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
comunicação MQTT contém quatro tipos de ações. Para executar cada acção, Você precisa definir ActionListener para monitorar o estado da acção:

Ação public enum {
/**
* Ação Conecte
**/
CONECTAR,
/**
* Assinar Ação
**/
SE INSCREVER,
/**
* publicar Ação
**/
PUBLICAR,
/**
* Ação unsubscribe
**/
CANCELAR SUBSCRIÇÃO
}

Obter o status de Ação de registrar a transmissão:

1、CONECTAR

transmissão AÇÃO:MokoConstants.ACTION_MQTT_CONNECTION

A ligação falhou:MokoConstants.MQTT_CONN_STATUS_FAILED
2、SE INSCREVER

transmissão AÇÃO:MokoConstants.ACTION_MQTT_SUBSCRIBE

Assinar Tópico:MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC
Assinar estado:MokoConstants.EXTRA_MQTT_STATE

3、PUBLICAR

transmissão AÇÃO:MokoConstants.ACTION_MQTT_PUBLISH

publicar estado:MokoConstants.EXTRA_MQTT_STATE

4、CANCELAR SUBSCRIÇÃO

transmissão AÇÃO:MokoConstants.ACTION_MQTT_UNSUBSCRIBE

estatuto unsubscribe:MokoConstants.EXTRA_MQTT_STATE

2.2.3 Assinar tópico

MokoSupport.getInstance().se inscrever(tema de Cordas, qos int)

2.2.4 publicar informações

MokoSupport.getInstance().publicar(tema de Cordas, mensagem MqttMessage)

2.2.5 tópico unsubscribe

MokoSupport.getInstance().Cancelar subscrição(tema de Cordas)

2.2.6 Determinar se o MQTT está conectado

MokoSupport.getInstance().está conectado()

2.2.7 desconexão

MokoSupport.getInstance().disconnectMqtt()

3.Save Log para SD Card
SDK integra o Log salvo para a função de cartão SD, é chamado https://github.com/elvishew/xLog

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

O nome da pasta eo nome do arquivo salvo no cartão SD pode ser modificado.

LogModule classe pública {
private static final String TAG = “mokoLife”;// nome do arquivo
private static final String LOG_FOLDER = “mokoLife”;// nome da pasta

}

estratégia de armazenamento: armazenar apenas os dados do dia e os dados do dia anterior , o arquivo é sufixo with.bak

chamada de método:

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