IoT Smart Plug Socket SDK-Lösungen

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

1. Unterhalb des Ordners MKSDK für Gerät befindet sich das SDK zum Konfigurieren des Smart Plug

1.1 Wenn Sie die MQTT-Serverinformationen und die WLAN-Informationen konfigurieren möchten, um eine Verbindung für den Smart Plug herzustellen,Sie müssen den Smart Plug in den AP-Modus versetzen(Weitere Informationen finden Sie im MokoLife-Benutzerhandbuch):Stecken Sie den Smart Plug in die Steckdose,Drücken Sie die Taste für 10 Sekunden, bis die Smart Plug-Anzeige gelb blinkt und den Smart Plug in den AP-Modus versetzt(Hinweis:Die Zeitüberschreitung für den AP-Modus beträgt 3 Protokoll,Sobald Sie die Informationen für den Smart Plug konfiguriert haben,Der AP-Modus wird beendet).Rufen Sie die Wlan-Seite auf und wählen Sie den Smart Plug-Hotspot aus, um eine Verbindung herzustellen ,bei erfolgreicher Verbindung,Rufen Sie connectDeviceWithHost auf:Hafen:connectSucBlock:connectFailedBlock-Methoden zum Verbinden von Smart Plug. Im Folgenden finden Sie die vollständige Konfiguration des Smart Plug-Prozesses:

Schritt 1

[[MKSocketManager sharedInstance] connectDeviceWithHost:@”192.168.4.1″
Hafen:8266
connectSucBlock:^(NSString * IP, NSInteger-Port) {
//Erfolg verbinden
connectFailedBlock:^(NSError * Fehler) {
//Verbindung fehlgeschlagen
}];

Schritt 2

[[MKSocketManager sharedInstance] readSmartPlugDeviceInformationWithSucBlock:^(id returnData) {
//Lesen Sie den Erfolg der Geräteinformationen
} failedBlock:^(NSError * Fehler) {
//Das Lesen der Geräteinformationen ist fehlgeschlagen
}];

Schritt 3

[[MKSocketManager sharedInstance] configMQTTServerHost:@”Ihr MQTT Server-Host”
Hafen:Hafen
connectMode:mqttServerConnectTCPMode
qos:mqttQosLevelExactlyOnce
bleib am Leben:60
cleanSession:JA
Kunden ID:@”die Mac-Adresse Ihres Geräts”
Nutzername:@”Ihr MQTT Server Benutzername”
Passwort:@”Ihr MQTT Server-Passwort”
sucBlock:^(id returnData) {
//Konfigurationserfolg
}
failedBlock:^(NSError * Fehler) {
//Konfiguration fehlgeschlagen
}];

Schritt 4

[[MKSocketManager sharedInstance] configWifiSSID:Ihr WiFi ssid
Passwort:WLAN Passwort
Sicherheit:wifiSecurity_WPA2_PSK
sucBlock:^(id returnData) {
//Konfigurationserfolg
} failedBlock:^(NSError * Fehler) {
//Konfiguration fehlgeschlagen
}];

2. Der Ordner MKSDKForMqttServer ist das SDK, das die APP und den MQTTServer konfiguriert

2.1 MKMQTTServerManagerDelegate
@protocol MKMQTTServerManagerDelegate

(Leere)mqttServerManagerStateChanged:(MKMQTTSessionManagerState)Zustand;//Connect State Delegate-Methode

(Leere)sessionManager:(MKMQTTServerManager *)sessionManager didReceiveMessage:(NSData *)Daten onTopic:(NSString *)Thema;//Empfängt die Daten vom MQTT-Server

@Ende

2.2 APP-Verbindung zum MQTT-Server
Wenn das Netzwerk verfügbar ist,Anruf [[MKMQTTServerManager sharedInstance] connectMQTTServer:Hafen:tls:bleib am Leben:reinigen:auth:Benutzer:bestehen:Kunden ID:] um Ihren MQTT-Server zu verbinden.

2.3 Thema abonnieren
Informationen zum Thema des Smart Plug.Call finden Sie im MQTT-Protokoll – (Leere)Abonnements:(NSArray *)topicList und – (Leere)Abmeldungen:(NSArray *)topicList, um das Thema separat zu abonnieren und abzubestellen.

2.4 APP veröffentlicht Daten zu einem bestimmten Thema
Informationen zum Thema des Smart Plug finden Sie im MQTT-Protokoll. – (Leere)schicke Daten:(NSDictionary *)Datenthema:(NSString *)Thema sucBlock:(Leere (^)(Leere))sucBlock failedBlock:(Leere (^)(NSError * Fehler))failedBlock

README.md - Android

1.SDK importieren und verwenden

1.1 Importieren Sie das Modulprojekt mokosupport

1.2 Konfigurieren Sie die Datei settings.gradle und rufen Sie das mokosupport-Projekt auf:

umfassen „:App ’,’:Mokosupport’

1.3 Bearbeiten Sie die Datei build.gradle des Hauptprojekts:

Abhängigkeiten {
ImplementierungsdateiTree(dir: "Libs", umfassen: ['*.Krug'])
Implementierungsprojekt(Pfad: „: mokosupport “)
}

1.4 Importieren Sie das SDK während der Projektinitialisierung:

public class BaseApplication erweitert Application {
@Override
public void onCreate() {
super.onCreate();
// Initialisierung
MokoSupport.getInstance().drin(getApplicationContext());
}
}

2.Funktionseinführung

    • Die im SDK bereitgestellten Methoden umfassen: Socket-Kommunikation mit WIFI-Gerät, MQTT-Verbindungsdienst, Trennung, Abonnement-Thema, Thema abbestellen, Thema posten, Protokollaufzeichnung, etc.
    • Die Socket-Kommunikation wird von SocketService aufgerufen;
    • Die MQTT-Kommunikation kann von MokoSupport.getInstance aufgerufen werden();

2.1 SocketService

Vor dem Erstellen einer Socket-Verbindung, Sie müssen überprüfen, ob die APP mit dem WIFI des Geräts verbunden ist. Verbinden Sie die Standard-IP-Adresse 192.168.4.1, Die Standardportnummer ist 8266, Dies kann in SocketThread geändert werden.

2.1.1 Initialisierung

bindService(neue Absicht(diese, SocketService.class), mServiceConnection, BIND_AUTO_CREATE);

Starten Sie SocketService, und holen Sie sich das SocketService-Objekt, Rufen Sie mService.startSocket auf() um einen Socket-Thread zu erstellen, Schließen Sie das Gerät an, und der Thread wartet darauf, dass die Nachricht gesendet wird, nachdem die Verbindung erfolgreich ist;

2.1.2 Verbindungsstatus und Antwort abrufen

1.Erhalten Sie den Verbindungsstatus, indem Sie die Sendung registrieren:

Broadcast-AKTION:MokoConstants.ACTION_AP_CONNECTION

Verbindungsstatus:

    • Verbindung erfolgreich:MokoConstants.CONN_STATUS_SUCCESS
    • Anschließen:MokoConstants.CONN_STATUS_CONNECTING
    • Verbindung fehlgeschlagen:MokoConstants.CONN_STATUS_FAILED
    • Verbindungszeitüberschreitung:MokoConstants.CONN_STATUS_TIMEOUT

2、Erhalten Sie die Socket-Kommunikationsantwort, indem Sie die Sendung registrieren :

Broadcast-AKTION:MokoConstants.ACTION_AP_SET_DATA_RESPONSE

Erhalten Sie eine Antwort:

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

2.1.3 Steckdose
Daten senden akzeptiert nur Zeichenfolgen im JSON-Format

z.B:

1、Geräteinformationen abrufen:

{
“Header” : 4001
}

Antwort:

{
“Code” : 0,
“Botschaft” : “Erfolg”,
“Ergebnis” : {
“Header” : 4001,
“Gerätefunktion” : “iot_plug”,
“Gerätename” : “plug_one”,
“Gerätespezifikationen” : “uns”,
“device_mac” : “11:22:33:44:55:66”,
“Gerätetyp” : “1”
}
}

2、 Senden Sie MQTT-Serverinformationen

{
“Header” : 4002,
“Gastgeber” : “45.32.33.42”,
“Hafen” : 1883,
“connect_mode” : 0,
“Nutzername” : “DVES_USER”,
“Passwort” : “DVES_PASS”,
“bleib am Leben” : 120,
“qos” : 2,
“clean_session” :1
}
Antwort:

{
“Code” : 0,
“Botschaft” : “Erfolg”,
“Ergebnis” : {
“Header” : 4002
}
}

3、Senden Sie ein WIFI-Netzwerk mit einer bestimmten SSID

{
“Header” : 4003,
“wifi_ssid” : “Fitpolo”,
“wifi_pwd” : “fitpolo1234.”,
“wifi_security” : 3
}

Antwort:

{
“Code” : 0,
“Botschaft” : “Erfolg”,
“Ergebnis” : {
“Header” : 4003
}
}

2.2 MokoSupport

2.2.1 Stellen Sie eine Verbindung zum MQTT-Server her
1、Erstellen Sie MqttAndroidClient

public void creatClient(String-Host, String-Port, Zeichenfolge clientId, boolean tlsConnection)

2、Stellen Sie eine Verbindung zum Server her

public void connectMqtt(MqttConnectOptions-Optionen)
Rufen Sie den Erstellungsstatus gemäß MqttCallbackHandler ab und erhalten Sie den Rückgabedaten vom Server

@Override
public void connectComplete(Boolesche Wiederverbindung, String serverURI) {

}
@Override
public void connectionLost(Wirfbare Ursache) {

}
@Override
public void messageArrived(String-Thema, MqttMessage-Nachricht) wirft eine Ausnahme {

}

3、Erhalten Sie den Verbindungsstatus, indem Sie die Sendung registrieren:

Broadcast-AKTION:MokoConstants.ACTION_MQTT_CONNECTION

Verbindungsstatus:

    • Verbindungserfolg:MokoConstants.MQTT_CONN_STATUS_SUCCESS
    • Trennen:MokoConstants.MQTT_CONN_STATUS_LOST

4、Empfangen Sie die Rückgabedaten vom Server, indem Sie die Übertragung registrieren

Broadcast-AKTION:MokoConstants.ACTION_MQTT_RECEIVE

Daten zurückgeben:

    • Daten zurückgeben Thema:

MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC

    • Daten zurückgeben Nachricht:

MokoConstants.EXTRA_MQTT_RECEIVE_MESSAGE

Die Rückgabedaten liegen im JSON-Format vor,z.B:

{
“Name der Firma” : “Moko”,
“Produktionsdatum” : “201801”,
“product_model” : “plug_one”,
“Firmware Version” : “000001”
“device_mac” : “11:22:33:44:55:66”
}

2.2.2 Aktionsmonitor
Die MQTT-Kommunikation enthält vier Arten von Aktionen. So führen Sie jede Aktion aus, Sie müssen ActionListener festlegen, um den Status der Aktion zu überwachen:

öffentliche Aufzählung Aktion {
/**
* Aktion verbinden
**/
VERBINDEN,
/**
* Aktion abonnieren
**/
ABONNIEREN,
/**
* Aktion veröffentlichen
**/
VERÖFFENTLICHEN,
/**
* Aktion abbestellen
**/
ABMELDEN
}

Erhalten Sie den Aktionsstatus, indem Sie die Sendung registrieren:

1、VERBINDEN

Broadcast-AKTION:MokoConstants.ACTION_MQTT_CONNECTION

Verbindung fehlgeschlagen:MokoConstants.MQTT_CONN_STATUS_FAILED
2、ABONNIEREN

Broadcast-AKTION:MokoConstants.ACTION_MQTT_SUBSCRIBE

Thema abonnieren:MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC
Abonnementstatus:MokoConstants.EXTRA_MQTT_STATE

3、VERÖFFENTLICHEN

Broadcast-AKTION:MokoConstants.ACTION_MQTT_PUBLISH

Status veröffentlichen:MokoConstants.EXTRA_MQTT_STATE

4、ABMELDEN

Broadcast-AKTION:MokoConstants.ACTION_MQTT_UNSUBSCRIBE

Status abbestellen:MokoConstants.EXTRA_MQTT_STATE

2.2.3 Thema abonnieren

MokoSupport.getInstance().abonnieren(String-Thema, int qos)

2.2.4 Informationen veröffentlichen

MokoSupport.getInstance().veröffentlichen(String-Thema, MqttMessage-Nachricht)

2.2.5 Thema abbestellen

MokoSupport.getInstance().Abmelden(String-Thema)

2.2.6 Stellen Sie fest, ob der MQTT angeschlossen ist

MokoSupport.getInstance().Ist verbunden()

2.2.7 Trennung

MokoSupport.getInstance().connectMqtt()

3.Protokoll auf SD-Karte speichern
Das SDK integriert das auf der SD-Kartenfunktion gespeicherte Protokoll, heißt https://github.com/elvishew/xLog

Initialisierungsmethode in MokoSupport.getInstance().drin(getApplicationContext())

Der auf der SD-Karte gespeicherte Ordnername und Dateiname können geändert werden.

öffentliche Klasse LogModule {
private static final String TAG = “mokoLife”;// Dateiname
private static final String LOG_FOLDER = “mokoLife”;// Ordnernamen

}

Speicherstrategie: Speichern Sie nur die Daten des Tages und die Daten des Vortages , Die Datei wird mit dem Suffix.bak versehen

Methode aufrufen:

LogModule.v(“Protokollinfo”);
LogModule.d(“Protokollinfo”);
LogModule.i(“Protokollinfo”);
LogModule.w(“Protokollinfo”);
LogModule.e(“Protokollinfo”);