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 del server MQTT e le informazioni Wi-Fi per connettersi alla presa intelligente, è necessario impostare la smart plug in modalità AP(Fare riferimento al manuale dell'utente di MokoLife): collegare lo smart plug a una presa di corrente, premere il tasto per 10 secondi fino a quando l'indicatore della presa intelligente lampeggia con luce ambra che indica che 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 ci si connette con successo, chiama connectDeviceWithHost:porta
connectSucBlock:connessione fallita
Metodi di blocco per collegare la presa intelligente. Di seguito è riportata la configurazione completa del processo 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]readSmartPlugDevice
InformationWithSucBlock:^(id returnData) {
//Leggi informazioni sul dispositivo riuscite
} failedBlock:^(Errore NSError *) {
//Lettura delle informazioni sul dispositivo non riuscita
}];

step3

[[MKSocketManager sharedInstance] configMQTTServerHost:@ "Host del server MQTT"
porta:porta
connectMode:mqttServerConnectTCPMode
QoS:mqttQosLevelExactlyOnce
keepalive:60
cleanSession:SÌ
Identificativo cliente:@ "Indirizzo mac del dispositivo"
nome utente:@ "Nome utente del server MQTT"
parola d'ordine:@ "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 protocale MQTT per l'argomento della presa intelligente. (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:

includere ':app’,’:mokosupport’

1.3 Modifica il file build.gradle del progetto principale:

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

1.4 Importa SDK durante l'inizializzazione del progetto:

BaseApplication di classe pubblica estende l'applicazione { @Oltrepassare public void onCreate() { super.onCreate(); // inizializzazione MokoSupport.getInstance().dentro(
getApplication Contesto()); } }

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_
    CONNESSIONE
  • 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_
RISPOSTA 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)

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

2、Connettiti al server

@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_
    SUCCESSO
  • 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_
ARGOMENTO
  • Messaggio per la restituzione dei dati:
MokoConstants.EXTRA_MQTT_RECEIVE_
MESSAGGIO

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

5.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");

Parla con un esperto