Smart Home Solution SDK
Smart Carlin MK102
Smart Plug MK112
WS001-3 Smart Switch
README.md - IOS

1. En dessous de la MKSDK Pour le dossier Device est le SDK pour configurer la prise intelligente

1.1 Si vous souhaitez configurer les informations sever MQTT et les informations de connexion Wi-Fi de se connecter pour la prise intelligente,vous avez besoin de faire de la prise intelligente en mode AP(S'il vous plaît se référer au manuel utilisateur MokoLife):brancher la fiche dans la prise intelligente de puissance,appuyez sur le bouton pour 10 secondes jusqu'à ce que l'indicateur de prise intelligente voyant orange clignotant indiquant la prise intelligente en mode AP(Remarque:Le délai d'attente pour le mode AP est 3 minutes,une fois que vous avez configuré les informations à la prise intelligente,il se terminera en mode AP).Accédez à la page Wlan et sélectionnez le point d'accès de prise intelligente pour se connecter ,lorsqu'il est connecté avec succès,appel connectDeviceWithHost:Port:connectSucBlock:méthodes connectFailedBlock à plug.Following puce de connexion est la configuration complète du processus de prise intelligente:

étape 1

[[MKSocketManager sharedInstance] connectDeviceWithHost:@”192.168.4.1″
Port:8266
connectSucBlock:^(NSString * IP, Port NSInteger) {
//Se connecter succès
connectFailedBlock:^(* NSError erreur) {
//Echec de connexion
}];

étape 2

[[MKSocketManager sharedInstance] readSmartPlugDeviceInformationWithSucBlock:^(id returnData) {
//succès info Lire l'appareil
} failedBlock:^(* NSError erreur) {
//Lire les informations de l'appareil n'a pas
}];

étape 3

[[MKSocketManager sharedInstance] configMQTTServerHost:@”votre hôte MQTT serveur”
Port:Port
connectMode:mqttServerConnectTCPMode
QOS:mqttQosLevelExactlyOnce
rester en vie:60
cleanSession:OUI
identité du client:@”votre appareil adresse mac”
Nom d'utilisateur:@”votre MQTT serveur userName”
mot de passe:@”votre mot de passe serveur MQTT”
sucBlock:^(id returnData) {
//Le succès config
}
failedBlock:^(* NSError erreur) {
//config Échec
}];

étape 4

[[MKSocketManager sharedInstance] configWifiSSID:votre connexion Wi-Fi ssid
mot de passe:Mot de passe WiFi
Sécurité:wifiSecurity_WPA2_PSK
sucBlock:^(id returnData) {
//Le succès config
} failedBlock:^(* NSError erreur) {
//config Échec
}];

2. Le dossier est MKSDKForMqttServer le SDK qui configure le APP et MQTTServer

2.1 MKMQTTServerManagerDelegate
@protocol MKMQTTServerManagerDelegate

(vide)mqttServerManagerStateChanged:(MKMQTTSessionManagerState)Etat;//Procédé de connexion d'état déléguée

(vide)SessionManager:(MKMQTTServerManager *)SessionManager didReceiveMessage:(NSData *)données ontopic:(NSString *)sujet;//Reçoit les données du serveur MQTT

@fin

2.2 APP se connecter au serveur MQTT
Lorsque le réseau est disponible,appel [[MKMQTTServerManager sharedInstance] connectMQTTServer:Port:tls:rester en vie:nettoyer:auth:utilisateur:passer:identité du client:] pour connecter votre serveur MQTT.

2.3 Surveiller ce sujet
S'il vous plaît se référer au document protocal MQTT pour le sujet de la smart plug.Call – (vide)abonnements:(NSArray *)TOPICLIST et – (vide)désabonnements:(NSArray *)TOPICLIST pour vous abonner et désabonner le sujet separatrly.

2.4 APP publie des données à un sujet spécifique
S'il vous plaît se référer au document de MQTT protocal pour le sujet de la prise intelligente. – (vide)envoyer des données:(NSDictionary *)sujet des données:(NSString *)sujet sucBlock:(vide (^)(vide))sucBlock failedBlock:(vide (^)(* NSError erreur))failedBlock

README.md - Android

1.SDK importation et l'utilisation

1.1 projet de module d'importation mokosupport

1.2 Configurer fichier settings.gradle et appel projet mokosupport:

comprendre ':app »,»:mokosupport’

1.3 Modifier le fichier build.gradle du projet principal:

dépendances {
la mise en œuvre FileTree(vous: « libs », comprendre: ['*.pot'])
projet de mise en œuvre(chemin: «: mokosupport »)
}

1.4 Importer SDK lors de l'initialisation du projet:

BaseApplication public class étend l'application {
@Passer outre
publique onCreate vide() {
super.onCreate();
// initialisation
MokoSupport.getInstance().initialisation(getApplicationContext());
}
}

2.Présentation des fonctions

    • Les méthodes fournies dans le SDK comprennent: communication Socket avec dispositif WIFI, service de connexion MQTT, coupure, sujet d'abonnement, sujet unsubscribe, sujet après, enregistrement de journal, etc.
    • communication Socket est appelé par SocketService;
    • communication MQTT peut être appelée par MokoSupport.getInstance();

2.1 SocketService

Avant de créer une connexion Socket, vous devez confirmer si l'APP est connecté au WIFI du dispositif. Connectez l'adresse IP par défaut 192.168.4.1, le numéro de port par défaut est 8266, qui peut être modifié dans SocketThread.

2.1.1 initialisation

bindService(nouvelle intention(cette, SocketService.class), mServiceConnection, BIND_AUTO_CREATE);

Démarrer SocketService, et obtenir l'objet SocketService, appel mService.startSocket() pour créer un fil Socket, connecter le périphérique, et le thread pour le message à envoyer après la connexion est réussie;

2.1.2 Statut de la connexion et la réponse

1.Obtenez le statut de connexion en enregistrant la diffusion:

diffusion ACTION:MokoConstants.ACTION_AP_CONNECTION

Statut de connexion:

    • connexion réussie:MokoConstants.CONN_STATUS_SUCCESS
    • de liaison:MokoConstants.CONN_STATUS_CONNECTING
    • La connexion a échoué:MokoConstants.CONN_STATUS_FAILED
    • Délai de connection dépassé:MokoConstants.CONN_STATUS_TIMEOUT

2、Obtenez la réponse de communication Socket par l'enregistrement de la diffusion :

diffusion ACTION:MokoConstants.ACTION_AP_SET_DATA_RESPONSE

Obtenez une réponse:

= Réponse DeviceResponse (DeviceResponse) intent.getSerializableExtra(MokoConstants.EXTRA_AP_SET_DATA_RESPONSE);

2.1.3 Prise
Envoyer des données accepte uniquement les chaînes au format JSON

par exemple:

1、Obtenir des informations de l'appareil:

{
“entête” : 4001
}

réponse:

{
“code” : 0,
“message” : “Succès”,
“résultat” : {
“entête” : 4001,
“device_function” : “iot_plug”,
“nom de l'appareil” : “plug_one”,
“device_specifications” : “nous”,
“device_mac” : “11:22:33:44:55:66”,
“type d'appareil” : “1”
}
}

2、 Envoyer MQTT informations sur le serveur

{
“entête” : 4002,
“hôte” : “45.32.33.42”,
“Port” : 1883,
“connect_mode” : 0,
“Nom d'utilisateur” : “DVES_USER”,
“mot de passe” : “DVES_PASS”,
“rester en vie” : 120,
“QOS” : 2,
“clean_session” :1
}
réponse:

{
“code” : 0,
“message” : “Succès”,
“résultat” : {
“entête” : 4002
}
}

3、Envoyer un réseau WIFI avec un SSID spécifique

{
“entête” : 4003,
“wifi_ssid” : “Fitpolo”,
“wifi_pwd” : “fitpolo1234.”,
“WIFI_SECURITY” : 3
}

réponse:

{
“code” : 0,
“message” : “Succès”,
“résultat” : {
“entête” : 4003
}
}

2.2 MokoSupport

2.2.1 Se connecter au serveur MQTT
1、Créer MqttAndroidClient

publique creatClient vide(hôte String, Port de chaîne, chaîne clientId, booléen tlsConnection)

2、Se connecter au serveur

publique connectMqtt vide(options MqttConnectOptions)
Obtenez le statut de création selon MqttCallbackHandler et recevoir le retour serveur de formulaire de données

@Passer outre
publique ConnectComplete vide(booléen Reconnect, chaîne ServerUri) {

}
@Passer outre
publique connectionLost vide(Throwable cause de) {

}
@Passer outre
publique messageArrived vide(Sujet String, un message MqttMessage) throws Exception {

}

3、Obtenez le statut de connexion en enregistrant la diffusion:

diffusion ACTION:MokoConstants.ACTION_MQTT_CONNECTION

Statut de connexion:

    • Connexion réussie:MokoConstants.MQTT_CONN_STATUS_SUCCESS
    • couper:MokoConstants.MQTT_CONN_STATUS_LOST

4、Recevoir les données de retour de serveur par l'enregistrement de la diffusion

diffusion ACTION:MokoConstants.ACTION_MQTT_RECEIVE

données retour:

    • Retour des données Sujet:

MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC

    • Retour données Message:

MokoConstants.EXTRA_MQTT_RECEIVE_MESSAGE

Les données de retour est au format JSON,par exemple:

{
“Nom de la compagnie” : “farine”,
“date de production” : “201801”,
“modèle du produit” : “plug_one”,
“version du firmware” : “000001”
“device_mac” : “11:22:33:44:55:66”
}

2.2.2 moniteur d'action
communication MQTT contient quatre types d'actions. Pour exécuter chaque action, vous devez définir ActionListener pour surveiller l'état de l'action:

L'action publique enum {
/**
* Connect action
**/
RELIER,
/**
* Abonnez-action
**/
SOUSCRIRE,
/**
* publier action
**/
PUBLIER,
/**
* UnSubscribe action
**/
SE DÉSABONNER
}

Obtenez le statut d'action en enregistrant la diffusion:

1、RELIER

diffusion ACTION:MokoConstants.ACTION_MQTT_CONNECTION

La connexion a échoué:MokoConstants.MQTT_CONN_STATUS_FAILED
2、SOUSCRIRE

diffusion ACTION:MokoConstants.ACTION_MQTT_SUBSCRIBE

Surveiller ce sujet:MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC
Inscrivez-vous le statut:MokoConstants.EXTRA_MQTT_STATE

3、PUBLIER

diffusion ACTION:MokoConstants.ACTION_MQTT_PUBLISH

publier le statut:MokoConstants.EXTRA_MQTT_STATE

4、SE DÉSABONNER

diffusion ACTION:MokoConstants.ACTION_MQTT_UNSUBSCRIBE

état désabonnement:MokoConstants.EXTRA_MQTT_STATE

2.2.3 Surveiller ce sujet

MokoSupport.getInstance().souscrire(Sujet String, int QOS)

2.2.4 publier des informations

MokoSupport.getInstance().publier(Sujet String, un message MqttMessage)

2.2.5 sujet Se désabonner

MokoSupport.getInstance().Se désabonner(Sujet String)

2.2.6 Déterminer si le MQTT est connecté

MokoSupport.getInstance().est connecté()

2.2.7 Coupure

MokoSupport.getInstance().disconnectMqtt()

3.Enregistrer le journal sur la carte SD
SDK intègre le journal enregistré sur la fonction de carte SD, est appelé https://github.com/elvishew/xLog

Procédé d'initialisation dans MokoSupport.getInstance().initialisation(getApplicationContext())

Le nom du dossier et le nom du fichier enregistré sur la carte SD peut être modifiée.

LogModule public class {
static private String TAG = “mokoLife”;// nom de fichier
static private String = LOG_FOLDER “mokoLife”;// nom de dossier

}

stratégie de stockage: ne stocker les données du jour et les données de la veille , le fichier est suffixé with.bak

méthode d'appel:

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