Solutions SDK IoT Smart Plug Socket

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

1. Sous le dossier MKSDK For Device se trouve le SDK pour configurer la prise intelligente

1.1 Si vous souhaitez configurer les informations du serveur MQTT et les informations Wi-Fi pour vous connecter à la prise intelligente,vous devez faire la prise intelligente en mode AP(Veuillez vous référer au manuel d'utilisation de MokoLife):branchez la prise intelligente dans la prise de courant,appuyez sur le bouton pour 10 secondes jusqu'à ce que l'indicateur de prise intelligente clignote en lumière orange qui indique 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 sur la prise intelligente,il mettra fin au mode AP).Accédez à la page Wlan et sélectionnez le point d'accès intelligent pour vous connecter ,lorsque vous vous connectez avec succès,appeler connectDeviceWithHost:Port:connectSucBlock:Méthodes connectFailedBlock pour connecter la prise intelligente. Voici 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) {
//connecter le succès
connectFailedBlock:^(Erreur NSError *) {
//Echec de connexion
}];

étape 2

[[MKSocketManager sharedInstance] readSmartPlugDeviceInformationWithSucBlock:^(id returnData) {
//Lire le succès des informations sur l'appareil
} failedBlock:^(Erreur NSError *) {
//Échec de la lecture des informations sur l'appareil
}];

étape 3

[[MKSocketManager sharedInstance] configMQTTServerHost:@”votre hôte de serveur MQTT”
Port:Port
connectMode:mqttServerConnectTCPMode
qos:mqttQosLevelExactlyOnce
rester en vie:60
cleanSession:OUI
identité du client:@”l'adresse mac de votre appareil”
Nom d'utilisateur:@”votre nom d'utilisateur du serveur MQTT”
mot de passe:@”votre mot de passe MQTT Server”
sucBlock:^(id returnData) {
//Succès de la configuration
}
failedBlock:^(Erreur NSError *) {
//Échec de la configuration
}];

étape 4

[[MKSocketManager sharedInstance] configWifiSSID:votre wifi ssid
mot de passe:Mot de passe WiFi
Sécurité:wifiSecurity_WPA2_PSK
sucBlock:^(id returnData) {
//Succès de la configuration
} failedBlock:^(Erreur NSError *) {
//Échec de la configuration
}];

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

2.1 MKMQTTServerManagerDelegate
@protocol MKMQTTServerManagerDelegate

(néant)mqttServerManagerStateChanged:(MKMQTTSessionManagerState)Etat;//connecter la méthode de délégué d'état

(néant)sessionManager:(MKMQTTServerManager *)sessionManager didReceiveMessage:(NSData *)données surTopic:(NSString *)sujet;//Reçoit les données du serveur MQTT

@fin

2.2 APP se connecte 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 Abonnez-vous au sujet
Veuillez vous référer au document de protocole MQTT pour le sujet de la prise intelligente. – (néant)abonnements:(NSArray *)topicList et – (néant)désabonnements:(NSArray *)topicList pour souscrire et désinscrire le sujet séparément.

2.4 APP publie des données sur un sujet spécifié
Veuillez vous référer au document de protocole MQTT pour le sujet de la prise intelligente. – (néant)envoyer des données:(NSDictionary *)sujet de données:(NSString *)Sujet sucBlock:(néant (^)(néant))sucBlock failedBlock:(néant (^)(Erreur NSError *))failedBlock

README.md - Android

1.Importer et utiliser le SDK

1.1 Importer le projet de module mokosupport

1.2 Configurer le fichier settings.gradle et appeler le projet mokosupport:

comprendre ':app ",»:mokosupport’

1.3 Editez le fichier build.gradle du projet principal:

dépendances {
fichier d'implémentation(à toi: «Libs», comprendre: ['*.pot'])
projet de mise en œuvre(chemin: «: mokosupport »)
}

1.4 Importer le SDK lors de l'initialisation du projet:

classe publique BaseApplication étend Application {
@Passer outre
public void onCreate() {
super.onCreate();
// initialisation
MokoSupport.getInstance().init(getApplicationContext());
}
}

2.Introduction aux fonctions

    • Les méthodes fournies dans SDK incluent: Communication par socket avec un appareil WIFI, Service de connexion MQTT, coupure, sujet d'abonnement, désinscrire le sujet, publier le sujet, enregistrement de journal, etc.
    • La communication par socket est appelée par SocketService;
    • La communication MQTT peut être appelée par MokoSupport.getInstance();

2.1 SocketService

Avant de créer une connexion Socket, vous devez confirmer si l'application est connectée au WIFI de l'appareil. 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(ce, SocketService.class), mServiceConnection, BIND_AUTO_CREATE);

Démarrer SocketService, et obtenez l'objet SocketService, appeler mService.startSocket() créer un fil Socket, connecter l'appareil, et le thread attend que le message soit envoyé une fois la connexion réussie;

2.1.2 Obtenir l'état de la connexion et la réponse

1.Obtenez l'état de la connexion en enregistrant la diffusion:

ACTION de diffusion: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 en enregistrant la diffusion :

ACTION de diffusion:MokoConstants.ACTION_AP_SET_DATA_RESPONSE

Obtenez une réponse:

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

2.1.3 Prise
L'envoi de données accepte uniquement les chaînes au format JSON

par exemple:

1、Obtenir des informations sur l'appareil:

{
“entête” : 4001
}

réponse:

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

2、 Envoyer des informations sur le serveur MQTT

{
“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 Connectez-vous au serveur MQTT
1、Créer MqttAndroidClient

public void creatClient(Hôte de chaîne, Port de chaîne, String clientId, booléen tlsConnection)

2、Connectez-vous au serveur

public void connectMqtt(Options de MqttConnectOptions)
Obtenez le statut de création selon MqttCallbackHandler et recevez le serveur de formulaire de données de retour

@Passer outre
public void connectComplete(reconnexion booléenne, String serverURI) {

}
@Passer outre
connexion vide publique(Cause jetable) {

}
@Passer outre
message public nulArrivé(Sujet de chaîne, Message MqttMessage) lève l'exception {

}

3、Obtenez l'état de la connexion en enregistrant la diffusion:

ACTION de diffusion:MokoConstants.ACTION_MQTT_CONNECTION

Statut de connexion:

    • Succès de la connexion:MokoConstants.MQTT_CONN_STATUS_SUCCESS
    • Déconnecter:MokoConstants.MQTT_CONN_STATUS_LOST

4、Recevez les données de retour du serveur en enregistrant la diffusion

ACTION de diffusion:MokoConstants.ACTION_MQTT_RECEIVE

Renvoyer les données:

    • Renvoyer des données Sujet:

MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC

    • Message de retour de données:

MokoConstants.EXTRA_MQTT_RECEIVE_MESSAGE

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

{
“Nom de la compagnie” : “moko”,
“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
La communication MQTT contient quatre types d'actions. Pour exécuter chaque action, vous devez définir ActionListener pour surveiller l'état de l'action:

public enum Action {
/**
* Connecter l'action
**/
RELIER,
/**
* Abonnez-vous Action
**/
SOUSCRIRE,
/**
* Publier une action
**/
PUBLIER,
/**
* Action de désabonnement
**/
SE DÉSABONNER
}

Obtenez le statut Action en enregistrant la diffusion:

1、RELIER

ACTION de diffusion:MokoConstants.ACTION_MQTT_CONNECTION

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

ACTION de diffusion:MokoConstants.ACTION_MQTT_SUBSCRIBE

Abonnez-vous au sujet:MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC
Statut d'abonnement:MokoConstants.EXTRA_MQTT_STATE

3、PUBLIER

ACTION de diffusion:MokoConstants.ACTION_MQTT_PUBLISH

Statut de publication:MokoConstants.EXTRA_MQTT_STATE

4、SE DÉSABONNER

ACTION de diffusion:MokoConstants.ACTION_MQTT_UNSUBSCRIBE

Statut de désabonnement:MokoConstants.EXTRA_MQTT_STATE

2.2.3 Abonnez-vous au sujet

MokoSupport.getInstance().souscrire(Sujet de chaîne, int qos)

2.2.4 Publier des informations

MokoSupport.getInstance().publier(Sujet de chaîne, Message MqttMessage)

2.2.5 Rubrique de désabonnement

MokoSupport.getInstance().Se désabonner(Sujet de chaîne)

2.2.6 Déterminer si le MQTT est connecté

MokoSupport.getInstance().est connecté()

2.2.7 Coupure

MokoSupport.getInstance().déconnecterMqtt()

3.Enregistrer le journal sur la carte SD
Le SDK intègre le journal enregistré dans la fonction de carte SD, s'appelle https://github.com/elvishew/xLog

méthode d'initialisation dans MokoSupport.getInstance().init(getApplicationContext())

Le nom de dossier et le nom de fichier enregistrés sur la carte SD peuvent être modifiés.

Classe public class LogModule {
TAG de chaîne finale statique privée = “mokoLife”;// nom de fichier
chaîne finale statique statique LOG_FOLDER = “mokoLife”;// nom de dossier

}

Stratégie de stockage: stocker uniquement les données de la journée et les données de la veille , le fichier est suffixé avec.bak

méthode d'appel:

LogModule.v(“informations sur le journal”);
LogModule.d(“informations sur le journal”);
LogModule.i(“informations sur le journal”);
LogModule.w(“informations sur le journal”);
LogModule.e(“informations sur le journal”);