Soluzioni SDK IoT Smart Plug Socket

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

1. Sotto la cartella MKSDK per dispositivo si trova l'SDK per configurare lo smart plug

1.1 Se si desidera configurare le informazioni sul server MQTT e le informazioni Wi-Fi per la connessione per la presa intelligente,è necessario rendere la spina intelligente in modalità AP(Fare riferimento al manuale dell'utente di MokoLife):inserire la spina intelligente nella presa di corrente,premere il tasto per 10 secondi fino a quando l'indicatore della presa intelligente non lampeggia con luce gialla che indica la presa intelligente in modalità AP(Nota:Il periodo di timeout per la modalità AP è 3 minuti,dopo aver configurato le informazioni sulla smart plug,terminerà la modalità AP).Accedi alla pagina Wlan e seleziona l'hotspot smart plug da connettere ,quando si connette correttamente,chiama connectDeviceWithHost:porta:connectSucBlock:metodi connectFailedBlock per la connessione di smart plug. Di seguito è la configurazione completa del processo di smart plug:

passo 1

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

passo 2

[[MKSocketManager sharedInstance] readSmartPlugDeviceInformationWithSucBlock:^(id returnData) {
//Leggi informazioni sul dispositivo riuscite
} failedBlock:^(Errore NSError *) {
//Lettura delle informazioni sul dispositivo non riuscita
}];

step3

[[MKSocketManager sharedInstance] configMQTTServerHost:@”il tuo host MQTT Server”
porta:porta
connectMode:mqttServerConnectTCPMode
QoS:mqttQosLevelExactlyOnce
keepalive:60
cleanSession:SÌ
Identificativo cliente:@”il tuo indirizzo mac del dispositivo”
nome utente:@”il nome utente del server MQTT”
parola d'ordine:@”la tua password del server MQTT”
sucBlock:^(id returnData) {
//Config Success
}
failedBlock:^(Errore NSError *) {
//Config non riuscita
}];

step4

[[MKSocketManager sharedInstance] configWifiSSID:il tuo wifi ssid
parola d'ordine:password wifi
sicurezza:wifiSecurity_WPA2_PSK
sucBlock:^(id returnData) {
//Config Success
} failedBlock:^(Errore NSError *) {
//Config non riuscita
}];

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

2.1 MKMQTTServerManagerDelegate
@protocol MKMQTTServerManagerDelegate

(vuoto)mqttServerManagerStateChanged:(MKMQTTSessionManagerState)stato;//metodo del delegato dello stato di connessione

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

@fine

2.2 L'APP si connette al server MQTT
Quando la rete è disponibile,chiamata [[MKMQTTServerManager sharedInstance] connectMQTTServer:porta:tls:keepalive:pulito:auth:utente:passaggio:Identificativo cliente:] per connettere il tuo server MQTT.

2.3 Iscriviti argomento
Fare riferimento al documento protocal MQTT per l'argomento dello smart plug. Chiamata – (vuoto)abbonamenti:(NSArray *)topicList e – (vuoto)unsubscriptions:(NSArray *)topicList per iscriversi e annullare l'iscrizione dell'argomento separatamente.

2.4 L'APP pubblica i dati su un argomento specificato
Fare riferimento al documento protocal MQTT per l'argomento dello smart plug. – (vuoto)invia i dati:(NSDictionary *)argomento dei dati:(NSString *)argomento sucBlock:(vuoto (^)(vuoto))sucBlock failedBlock:(vuoto (^)(Errore NSError *))failedBlock

README.md - Android

1.Importa e usa SDK

1.1 Importa il modulo di progetto mokosupport

1.2 Configura il file settings.gradle e chiama il progetto mokosupport:

include ‘:app’,:mokosupport’

1.3 Modifica il file build.gradle del progetto principale:

dipendenze {
fileTree di implementazione(a te: ‘libs’, includere: [‘*.jar’])
progetto di attuazione(sentiero: : mokosupport’)
}

1.4 Importa SDK durante l'inizializzazione del progetto:

BaseApplication di classe pubblica estende l'applicazione {
@Oltrepassare
vuoto pubblico su Crea() {
super.onCreate();
// inizializzazione
MokoSupport.getInstance().dentro(getApplicationContext());
}
}

2.Introduzione alla funzione

    • I metodi forniti in SDK includono: Comunicazione presa con dispositivo WIFI, Servizio di connessione MQTT, sconnessione, argomento di abbonamento, annulla iscrizione argomento, pubblica argomento, registro, eccetera.
    • La comunicazione socket viene chiamata da SocketService;
    • La comunicazione MQTT può essere chiamata da MokoSupport.getInstance();

2.1 SocketService

Prima di creare una connessione Socket, devi confermare se l'APP è connessa al WIFI del dispositivo. Collega l'indirizzo IP predefinito 192.168.4.1, il numero di porta predefinito è 8266, che può essere modificato in SocketThread.

2.1.1 Inizializzazione

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

Avviare SocketService, e ottenere l'oggetto SocketService, chiama mService.startSocket() per creare un thread Socket, collega il dispositivo, e il thread attende che il messaggio venga inviato dopo che la connessione ha esito positivo;

2.1.2 Ottieni lo stato e la risposta della connessione

1.Ottieni lo stato della connessione registrando la trasmissione:

Trasmissione 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、Ottieni la risposta di comunicazione Socket registrando la trasmissione :

Trasmissione AZIONE:MokoConstants.ACTION_AP_SET_DATA_RESPONSE

Ottieni una risposta:

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

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

per esempio:

1、Ottieni 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 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 WIFI con un SSID specifico

{
“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 Connettersi al server MQTT
1、Crea MqttAndroidClient

pubblico vuoto creatClient(Host di stringhe, Porta String, String clientId, boolean tlsConnection)

2、Connettiti al server

public void connectMqtt(Opzioni MqttConnectOptions)
Ottieni lo stato della creazione secondo MqttCallbackHandler e ricevi il server del modulo dati di ritorno

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

}
@Oltrepassare
collegamento vuoto pubblicoLost(Causa gettabile) {

}
@Oltrepassare
messaggio vuoto pubblicoArrivato(Argomento della stringa, Messaggio MqttMessage) genera eccezione {

}

3、Ottieni lo stato della connessione registrando la trasmissione:

Trasmissione AZIONE:MokoConstants.ACTION_MQTT_CONNECTION

Stato della connessione:

    • Connessione riuscita:MokoConstants.MQTT_CONN_STATUS_SUCCESS
    • Disconnect:MokoConstants.MQTT_CONN_STATUS_LOST

4、Ricevi i dati di ritorno dal server registrando la trasmissione

Trasmissione AZIONE:MokoConstants.ACTION_MQTT_RECEIVE

Restituisci dati:

    • Argomento di restituzione dei dati:

MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC

    • Messaggio per la restituzione dei dati:

MokoConstants.EXTRA_MQTT_RECEIVE_MESSAGE

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

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

2.2.2 Monitoraggio dell'azione
La comunicazione MQTT contiene quattro tipi di azioni. Per eseguire ogni azione, è necessario impostare ActionListener per monitorare lo stato dell'azione:

enum pubblico Azione {
/**
* Connetti azione
**/
COLLEGARE,
/**
* Iscriviti azione
**/
SOTTOSCRIVI,
/**
* Pubblica azione
**/
PUBBLICARE,
/**
* Annulla iscrizione azione
**/
ANNULLA L'ISCRIZIONE
}

Ottieni lo stato dell'azione registrando la trasmissione:

1、COLLEGARE

Trasmissione AZIONE:MokoConstants.ACTION_MQTT_CONNECTION

Connessione fallita:MokoConstants.MQTT_CONN_STATUS_FAILED
2、SOTTOSCRIVI

Trasmissione AZIONE:MokoConstants.ACTION_MQTT_SUBSCRIBE

Iscriviti argomento:MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC
Sottoscrivi lo stato:MokoConstants.EXTRA_MQTT_STATE

3、PUBBLICARE

Trasmissione AZIONE:MokoConstants.ACTION_MQTT_PUBLISH

Pubblica stato:MokoConstants.EXTRA_MQTT_STATE

4、ANNULLA L'ISCRIZIONE

Trasmissione AZIONE:MokoConstants.ACTION_MQTT_UNSUBSCRIBE

Annulla l'iscrizione allo stato:MokoConstants.EXTRA_MQTT_STATE

2.2.3 Iscriviti argomento

MokoSupport.getInstance().sottoscrivi(Argomento della stringa, int qos)

2.2.4 Pubblica informazioni

MokoSupport.getInstance().pubblicare(Argomento della stringa, Messaggio MqttMessage)

2.2.5 Annulla l'iscrizione all'argomento

MokoSupport.getInstance().Annulla l'iscrizione(Argomento della stringa)

2.2.6 Determina se MQTT è collegato

MokoSupport.getInstance().è connesso()

2.2.7 sconnessione

MokoSupport.getInstance().disconnectMqtt()

3.Salva registro su scheda SD
SDK integra il registro salvato nella funzione della scheda SD, si chiama https://github.com/elvishew/xLog

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

È possibile modificare il nome della cartella e il nome del file salvati sulla scheda SD.

LogModule di classe pubblica {
Stringa finale statica privata TAG = “mokoLife”;// nome del file
Stringa finale statica privata LOG_FOLDER = “mokoLife”;// nome della cartella

}

Strategia di archiviazione: memorizza solo i dati del giorno e i dati del giorno prima , il file è suffisso con.bak

metodo di chiamata:

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”);