Smart Home Solution SDK

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

1. Al di sotto della MKSDK Per cartella Dispositivo è l'SDK per configurare il collegamento intelligente

1.1 Se si desidera configurare le informazioni sever MQTT e le informazioni per la connessione wifi per il collegamento intelligente,è necessario sfruttare al collegamento intelligente in modalità AP(Si prega di fare riferimento al manuale utente MokoLife):inserire la spina nella presa di alimentazione intelligente,premere il pulsante per 10 secondi fino l'indicatore collegamento intelligente lampeggiano ambra che indicano il collegamento intelligente in modalità AP(Nota:Il periodo di timeout per la modalità AP è 3 minuti,una volta aver configurato le informazioni al collegamento intelligente,finirà modalità AP).Accedere alla pagina WLAN e selezionare il plug hotspot intelligente per collegare ,Quando si collega con successo,chiamata connectDeviceWithHost:porta:connectSucBlock:Metodi connectFailedBlock per collegare plug.Following intelligente è la configurazione completa del processo collegamento intelligente:

passo 1

[[MKSocketManager sharedInstance] connectDeviceWithHost:@”192.168.4.1″
porta:8266
connectSucBlock:^(NSString * IP, porto NSInteger) {
//successo connect
connectFailedBlock:^(NSError * Errore) {
//connessione fallita
}];

passo 2

[[MKSocketManager sharedInstance] readSmartPlugDeviceInformationWithSucBlock:^(id returnData) {
//Informazioni dispositivo Leggi successo
} failedBlock:^(NSError * Errore) {
//informazioni del dispositivo di lettura non riuscita
}];

step3

[[MKSocketManager sharedInstance] configMQTTServerHost:@”il vostro ospite MQTT Server”
porta:porta
connectMode:mqttServerConnectTCPMode
QoS:mqttQosLevelExactlyOnce
keepalive:60
cleanSession:SÌ
Identificativo cliente:@”l'indirizzo MAC del dispositivo”
nome utente:@”il vostro MQTT Server Nome”
parola d'ordine:@”la password MQTT Server”
sucBlock:^(id returnData) {
//config Successo
}
failedBlock:^(NSError * Errore) {
//config non riuscita
}];

step4

[[MKSocketManager sharedInstance] configWifiSSID:proprio SSID wifi
parola d'ordine:password wifi
sicurezza:wifiSecurity_WPA2_PSK
sucBlock:^(id returnData) {
//config Successo
} failedBlock:^(NSError * Errore) {
//config non riuscita
}];

2. La cartella MKSDKForMqttServer è l'SDK che configura l'applicazione e MQTTServer

2.1 MKMQTTServerManagerDelegate
@protocol MKMQTTServerManagerDelegate

(vuoto)mqttServerManagerStateChanged:(MKMQTTSessionManagerState)stato;//metodo delegato stato connect

(vuoto)SessionManager:(MKMQTTServerManager *)SessionManager didReceiveMessage:(NSData *)dati ontopic:(NSString *)argomento;//Riceve i dati dal server MQTT

@fine

2.2 APP connettersi al server MQTT
Quando la rete è disponibile,chiamata [[MKMQTTServerManager sharedInstance] connectMQTTServer:porta:tls:keepalive:pulito:auth:utente:passaggio:Identificativo cliente:] per collegare il server di MQTT.

2.3 Iscriviti argomento
Si prega di fare riferimento al documento protocal MQTT per il tema della plug.Call intelligente – (vuoto)abbonamenti:(NSArray *)topicList e – (vuoto)unsubscriptions:(NSArray *)topicList per iscrivere e cancellare l'argomento separatrly.

2.4 APP pubblicare i dati ad un argomento specifico
Si prega di fare riferimento al documento protocal MQTT per il tema del collegamento intelligente. – (vuoto)invia i dati:(NSDictionary *)argomento di dati:(NSString *)argomento sucBlock:(vuoto (^)(vuoto))sucBlock failedBlock:(vuoto (^)(NSError * Errore))failedBlock

README.md - Android

1.Importazione e uso SDK

1.1 progetto di modulo di importazione mokosupport

1.2 file di progetto e call mokosupport settings.gradle Configura:

includere ':app’,’:mokosupport’

1.3 Modificare il file build.gradle del progetto principale:

dipendenze {
FileTree implementazione(voi: ‘libs’, includere: ['*.vaso'])
progetto di implementazione(sentiero: ‘: mokosupport’)
}

1.4 Importazione SDK durante l'inizializzazione progetto:

public class BaseApplication estende Application {
@Oltrepassare
onCreate public void() {
super.onCreate();
// inizializzazione
MokoSupport.getInstance().dentro(getApplicationContext());
}
}

2.Introduzione di funzione

    • I metodi forniti nel SDK includono: comunicazione dello zoccolo con dispositivo WIFI, servizio di connessione MQTT, sconnessione, argomento di sottoscrizione, argomento unsubscribe, argomento Apri, record di log, eccetera.
    • comunicazione socket è chiamato da SocketService;
    • comunicazione MQTT può essere chiamato da MokoSupport.getInstance();

2.1 SocketService

Prima di creare una connessione socket, è necessario confermare se l'applicazione è collegata al Wi-Fi del dispositivo. Collegare l'indirizzo IP di default 192.168.4.1, il numero di porta di default è 8266, che può essere modificato in SocketThread.

2.1.1 Inizializzazione

bindService(nuovo Intent(Questo, SocketService.class), mServiceConnection, BIND_AUTO_CREATE);

Inizio SocketService, e ottenere l'oggetto SocketService, chiamata mService.startSocket() creare un thread Socket, collegare il dispositivo, e il thread per il messaggio da inviare dopo che la connessione è riuscita;

2.1.2 Ottenere lo stato della connessione e la risposta

1.Ottenere lo stato della connessione registrando la trasmissione:

Broadcast AZIONE:MokoConstants.ACTION_AP_CONNECTION

stato della connessione:

    • Connessione riuscita:MokoConstants.CONN_STATUS_SUCCESS
    • collegamento:MokoConstants.CONN_STATUS_CONNECTING
    • Connessione fallita:MokoConstants.CONN_STATUS_FAILED
    • Connesione finita:MokoConstants.CONN_STATUS_TIMEOUT

2、Ottenere la risposta di comunicazione Socket registrando la trasmissione :

Broadcast AZIONE:MokoConstants.ACTION_AP_SET_DATA_RESPONSE

Ottenere una risposta:

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

2.1.3 presa di corrente
Invia dati accetta solo le stringhe in formato JSON

per esempio:

1、Ottenere informazioni sul dispositivo:

{
“intestazione” : 4001
}

risposta:

{
“codice” : 0,
“Messaggio” : “successo”,
“risultato” : {
“intestazione” : 4001,
“device_function” : “iot_plug”,
“nome del dispositivo” : “plug_one”,
“device_specifications” : “noi”,
“device_mac” : “11:22:33:44:55:66”,
“tipo di dispositivo” : “1”
}
}

2、 Invia le informazioni sul server MQTT

{
“intestazione” : 4002,
“ospite” : “45.32.33.42”,
“porta” : 1883,
“connect_mode” : 0,
“nome utente” : “DVES_USER”,
“parola d'ordine” : “DVES_PASS”,
“keepalive” : 120,
“QoS” : 2,
“clean_session” :1
}
risposta:

{
“codice” : 0,
“Messaggio” : “successo”,
“risultato” : {
“intestazione” : 4002
}
}

3、Invia una rete Wi-Fi con uno specifico SSID

{
“intestazione” : 4003,
“wifi_ssid” : “Fitpolo”,
“wifi_pwd” : “fitpolo1234.”,
“WIFI_SECURITY” : 3
}

risposta:

{
“codice” : 0,
“Messaggio” : “successo”,
“risultato” : {
“intestazione” : 4003
}
}

2.2 MokoSupport

2.2.1 Si connette al server MQTT
1、creare MqttAndroidClient

creatClient public void(String host, porto String, String clientId, booleano tlsConnection)

2、Si connette al server

connectMqtt public void(opzioni MqttConnectOptions)
Ottenere lo status creazione secondo MqttCallbackHandler e ricevere il server di modulo dei dati di ritorno

@Oltrepassare
connectComplete public void(riconnessione booleano, String serverURI) {

}
@Oltrepassare
connectionlost public void(causa Throwable) {

}
@Oltrepassare
public void messageArrived(argomento String, messaggio MqttMessage) getta Eccezione {

}

3、Ottenere lo stato della connessione registrando la trasmissione:

Broadcast AZIONE:MokoConstants.ACTION_MQTT_CONNECTION

stato della connessione:

    • il successo di collegamento:MokoConstants.MQTT_CONN_STATUS_SUCCESS
    • Disconnect:MokoConstants.MQTT_CONN_STATUS_LOST

4、Ricevere i dati di ritorno da server registrando la trasmissione

Broadcast AZIONE:MokoConstants.ACTION_MQTT_RECEIVE

i dati di ritorno:

    • Return dati Discussione:

MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC

    • Return dati Messaggio:

MokoConstants.EXTRA_MQTT_RECEIVE_MESSAGE

I dati di ritorno è in formato JSON,per esempio:

{
“Nome della ditta” : “farina”,
“data di produzione” : “201801”,
“Modello di prodotto” : “plug_one”,
“versione del firmware” : “000001”
“device_mac” : “11:22:33:44:55:66”
}

2.2.2 Monitor Azione
comunicazione MQTT contiene quattro tipi di azioni. Per eseguire ogni azione, È necessario impostare ActionListener per monitorare lo stato della azione:

Azione enum pubblico {
/**
* Azione Connect
**/
COLLEGARE,
/**
* Iscriviti Azione
**/
SOTTOSCRIVI,
/**
* publish action
**/
PUBBLICARE,
/**
* Azione Rimuoviti
**/
ANNULLA L'ISCRIZIONE
}

Ottenere lo status di azione registrando la trasmissione:

1、COLLEGARE

Broadcast AZIONE:MokoConstants.ACTION_MQTT_CONNECTION

Connessione fallita:MokoConstants.MQTT_CONN_STATUS_FAILED
2、SOTTOSCRIVI

Broadcast AZIONE:MokoConstants.ACTION_MQTT_SUBSCRIBE

Sottoscrivi Discussione:MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC
Iscriviti stato:MokoConstants.EXTRA_MQTT_STATE

3、PUBBLICARE

Broadcast AZIONE:MokoConstants.ACTION_MQTT_PUBLISH

pubblicare lo stato:MokoConstants.EXTRA_MQTT_STATE

4、ANNULLA L'ISCRIZIONE

Broadcast AZIONE:MokoConstants.ACTION_MQTT_UNSUBSCRIBE

stato Cancellati:MokoConstants.EXTRA_MQTT_STATE

2.2.3 Iscriviti argomento

MokoSupport.getInstance().sottoscrivi(argomento String, qos int)

2.2.4 pubblicare informazioni

MokoSupport.getInstance().pubblicare(argomento String, messaggio MqttMessage)

2.2.5 argomento Cancellati

MokoSupport.getInstance().Annulla l'iscrizione(argomento String)

2.2.6 Determinare se il MQTT è collegato

MokoSupport.getInstance().è connesso()

2.2.7 sconnessione

MokoSupport.getInstance().disconnectMqtt()

3.Salva registro su SD Card
SDK integra il registro salvato alla funzione scheda SD, è chiamato https://github.com/elvishew/xLog

metodo di inizializzazione in MokoSupport.getInstance().dentro(getApplicationContext())

Il nome della cartella e il nome file salvati sulla scheda SD può essere modificato.

public class LogModule {
private static final String = TAG “mokoLife”;// nome del file
private static final String LOG_FOLDER = “mokoLife”;// nome della cartella

}

strategia di storage: memorizzare solo i dati del giorno ei dati del giorno prima , il file viene suffisso with.bak

chiamata di metodo:

LogModule.v(“informazioni di registro”);
LogModule.d(“informazioni di registro”);
LogModule.i(“informazioni di registro”);
LogModule.w(“informazioni di registro”);
LogModule.e(“informazioni di registro”);