Smart Home Lösung SDK
Smart Pug MK102
Smart Plug MK112
Smart Switch WS001-3
README.md - IOS

1. Unterhalb der MKSDK für Geräteordner ist das SDK das Smart Plug konfigurieren

1.1 Wenn Sie konfigurieren möchten die MQTT Sever Informationen und die Wi-Fi-Informationen für Smart-Stecker anschließen,Sie müssen den Smart-Stecker in AP-Modus machen(Bitte beachten Sie die MokoLife Bedienungsanleitung):Stecker in die Smart-Stecker-Steckdose,drücken Sie die Taste 10 Sekunden, bis das Smart-Stecker-Anzeige blinkt amber Licht, das den Smart-Stecker in AP-Modus anzuzeigen,(Hinweis:Die Timeout-Periode für AP-Modus 3 Protokoll,sobald Sie die Informationen an die Smart-Stecker konfiguriert,sie endet AP-Modus).Geben Sie die WLAN-Seite und wählen Sie das Smart Plug-Hotspot zu verbinden ,wenn eine Verbindung erfolgreich,Anruf connectDeviceWithHost:Hafen:connectSucBlock:connectFailedBlock Methoden Connect Smart plug.Following ist die vollständige Konfiguration des Smart Plug Prozess:

Schritt 1

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

Schritt 2

[[MKSocketManager sharedInstance] readSmartPlugDeviceInformationWithSucBlock:^(id returnData) {
//Lesen Sie Geräteinfo Erfolg
} failedBlock:^(* Fehler NSError) {
//Lesegeräteinfo fehlgeschlagen
}];

Schritt 3

[[MKSocketManager sharedInstance] configMQTTServerHost:@”Ihr MQTT Server-Host”
Hafen:Hafen
Connect:mqttServerConnectTCPMode
qos:mqttQosLevelExactlyOnce
bleib am Leben:60
cleanSession:JA
Kunden ID:@”Ihr Gerät MAC-Adresse”
Nutzername:@”Ihr MQTT Server Spielername”
Passwort:@”Ihr MQTT Server-Passwort”
sucBlock:^(id returnData) {
//Config Erfolg
}
failedBlock:^(* Fehler NSError) {
//Config fehlgeschlagen
}];

Schritt 4

[[MKSocketManager sharedInstance] configWifiSSID:wlan ssid
Passwort:WLAN Passwort
Sicherheit:wifiSecurity_WPA2_PSK
sucBlock:^(id returnData) {
//Config Erfolg
} failedBlock:^(* Fehler NSError) {
//Config fehlgeschlagen
}];

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

2.1 MKMQTTServerManagerDelegate
@protocol MKMQTTServerManagerDelegate

(Leere)mqttServerManagerStateChanged:(MKMQTTSessionManagerState)Zustand;//Verbindungszustand Delegatmethode

(Leere)Sessionmanager:(MKMQTTServerManager *)Sessionmanager didReceiveMessage:(NSData *)Daten ontopic:(NSString *)Thema;//Empfängt die Daten von dem Server MQTT

@Ende

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

2.3 Abonnieren Thema
Bitte beachten Sie die MQTT protocal Dokument für das Thema des smart plug.Call – (Leere)Abonnements:(NSArray *)topicList und – (Leere)Abmeldungen:(NSArray *)topicList abonnieren und das Thema abmelden separatrly.

2.4 APP veröffentlicht Daten zu einem bestimmten Thema
Bitte beachten Sie die MQTT protocal Dokument für das Thema des Smart Plug. – (Leere)schicke Daten:(NSDictionary *)Daten Thema:(NSString *)Thema sucBlock:(Leere (^)(Leere))sucBlock failedBlock:(Leere (^)(* Fehler NSError))failedBlock

README.md - Android

1.Import und Verwendung SDK

1.1 Import-Modul-Projekt mokosupport

1.2 Konfigurieren settings.gradle Datei und Aufruf mokosupport Projekt:

schließen ‚:App‘,‘:mokosupport’

1.3 Bearbeiten Sie die Datei build.gradle des Hauptprojekts:

Abhängigkeiten {
Umsetzung filetree(dir: ‚Libs‘, umfassen: ['*.Krug'])
Einführungsprojekt(Pfad: ‚: mokosupport‘)
}

1.4 Import SDK während Projektinitialisierung:

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

2.Funktion Einführung

    • Die Verfahren, die in SDK umfassen: Socket-Kommunikation mit WIFI-Gerät, MQTT Verbindungsdienst, Unterbrechung, Abonnement Thema, abmelden Thema, Beitrag Thema, Log-Aufzeichnung, etc.
    • Socket-Kommunikation wird durch SocketService genannt;
    • MQTT Kommunikation kann durch MokoSupport.getInstance aufgerufen werden();

2.1 SocketService

Vor dem Erstellen einer Socket-Verbindung, Sie müssen bestätigen, ob die APP zum WIFI des Geräts verbunden ist. Verbinden Sie die Standard-IP-Adresse 192.168.4.1, die Standard-Portnummer ist 8266, die in SocketThread modifiziert werden.

2.1.1 Initialisierung

bindService(neues Intent(Dies, SocketService.class), mServiceConnection, BIND_AUTO_CREATE);

Start SocketService, und erhalten die SocketService Objekt, Anruf mService.startSocket() ein Socket-Thread zu erstellen, schließen Sie das Gerät, und der Faden wartet auf die Nachricht gesendet wird, nachdem die Verbindung erfolgreich ist;

2.1.2 Holen Verbindungsstatus und Antwort

1.Holen Sie sich den Verbindungsstatus durch die Broadcast-Registrierung:

Broadcast-ACTION:MokoConstants.ACTION_AP_CONNECTION

Verbindungsstatus:

    • Verbindung erfolgreich:MokoConstants.CONN_STATUS_SUCCESS
    • Verbindungs:MokoConstants.CONN_STATUS_CONNECTING
    • Verbindung fehlgeschlagen:MokoConstants.CONN_STATUS_FAILED
    • Verbindungszeitüberschreitung:MokoConstants.CONN_STATUS_TIMEOUT

2、Holen Sie sich die Socket-Kommunikationsantwort durch die Broadcast-Registrierung :

Broadcast-ACTION: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
Sendedaten akzeptiert nur Zeichenketten im JSON-Format

z.B:

1、Erhalten Sie Geräteinformationen:

{
“Header” : 4001
}

Antwort:

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

2、 Senden MQTT Serverinformationen

{
“Header” : 4002,
“Wirt” : “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 Eine Verbindung mit dem Server MQTT
1、erstellen MqttAndroidClient

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

2、Eine Verbindung mit dem Server

public void connectMqtt(MqttConnectOptions Optionen)
Holen Sie sich das Erstellungsstatus nach MqttCallbackHandler und erhalten die Rückdatenformularserver

@Override
public void connectComplete(boolean Reconnect, String ServerUri) {

}
@Override
public void connectionLost(Throwable Ursache) {

}
@Override
public void messageArrived(String Thema, MqttMessage Nachricht) throws Exception {

}

3、Holen Sie sich den Verbindungsstatus durch die Broadcast-Registrierung:

Broadcast-ACTION:MokoConstants.ACTION_MQTT_CONNECTION

Verbindungsstatus:

    • Anschluss Erfolg:MokoConstants.MQTT_CONN_STATUS_SUCCESS
    • Trennen:MokoConstants.MQTT_CONN_STATUS_LOST

4、Erhalten Sie die Rückgabedaten vom Server durch die Broadcast-Registrierung

Broadcast-ACTION:MokoConstants.ACTION_MQTT_RECEIVE

Rückgabedaten:

    • Zurück Daten Thema:

MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC

    • Rückgabedaten Nachricht:

MokoConstants.EXTRA_MQTT_RECEIVE_MESSAGE

Die Rückkehr Daten im JSON-Format,z.B:

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

2.2.2 Action-Monitor
MQTT Mitteilung enthält vier Arten von Aktionen. Um jede Aktion ausführen, Sie müssen Set Action den Zustand der Aktion zu überwachen:

public enum Aktion {
/**
* Connect Aktion
**/
VERBINDEN,
/**
* Abonnieren Aktion
**/
ABONNIEREN,
/**
* veröffentlichen Aktion
**/
VERÖFFENTLICHEN,
/**
* UnSubscribe Aktion
**/
ABMELDEN
}

Holen Sie sich das Aktionsstatus durch die Broadcast-Registrierung:

1、VERBINDEN

Broadcast-ACTION:MokoConstants.ACTION_MQTT_CONNECTION

Verbindung fehlgeschlagen:MokoConstants.MQTT_CONN_STATUS_FAILED
2、ABONNIEREN

Broadcast-ACTION:MokoConstants.ACTION_MQTT_SUBSCRIBE

Abonnieren Thema:MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC
Abonnieren Status:MokoConstants.EXTRA_MQTT_STATE

3、VERÖFFENTLICHEN

Broadcast-ACTION:MokoConstants.ACTION_MQTT_PUBLISH

veröffentlichen Status:MokoConstants.EXTRA_MQTT_STATE

4、ABMELDEN

Broadcast-ACTION:MokoConstants.ACTION_MQTT_UNSUBSCRIBE

Abmelden Status:MokoConstants.EXTRA_MQTT_STATE

2.2.3 Abonnieren Thema

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

2.2.4 veröffentlichen Sie Informationen

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

2.2.5 Abmelden Thema

MokoSupport.getInstance().Abmelden(String Thema)

2.2.6 Bestimmen, ob die MQTT verbunden ist

MokoSupport.getInstance().Ist verbunden()

2.2.7 Unterbrechung

MokoSupport.getInstance().disconnectMqtt()

3.Protokoll speichern auf SD-Karte
SDK integriert das Log auf die SD-Kartenfunktion gespeichert, genannt wird https://github.com/elvishew/xLog

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

Der Ordnername und Dateinamen auf der SD-Karte gespeichert sind, können geändert werden.

public class LogModule {
private static final String TAG = “mokoLife”;// Dateiname
private static final String LOG_FOLDER = “mokoLife”;// Ordnernamen

}

Speicherstrategie: nur speichert die Daten des Tages und die Daten des Vortages , die Datei nachgestellten with.bak

Call-Methode:

LogModule.v(“Log-Informationen”);
LogModule.d(“Log-Informationen”);
LogModule.i(“Log-Informationen”);
LogModule.w(“Log-Informationen”);
LogModule.e(“Log-Informationen”);