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 wifi pour vous connecter à la prise intelligente, vous devez mettre la prise intelligente en mode AP(Veuillez vous référer au manuel d'utilisation de MokoLife): branchez la prise intelligente dans une prise de courant, appuyez sur le bouton pour 10 secondes jusqu'à ce que le voyant de la prise intelligente clignote en orange qui indique que la prise intelligente est 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, lors de la connexion réussie, appeler connectDeviceWithHost:Port
connectSucBlock:Echec de connexion
Méthodes de blocage 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]readSmartPlugDevice
InformationWithSucBlock:^(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:@ "L'hôte de votre 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 de serveur MQTT"
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(
getApplication Le contexte()); } }

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_
    DE LIAISON
  • 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_
RÉPONSE 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",
"Device_specifications" : "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)

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

2、Connectez-vous au serveur

@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_
    SUCCÈS
  • 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_
SUJET
  • 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()

5.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 {
Private static final String TAG = "mokoLife";// nom de fichier
Private static final String 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 de journal»);
LogModule.d(«Informations de journal»);
LogModule.i(«Informations de journal»);
LogModule.w(«Informations de journal»);
LogModule.e(«Informations de journal»);

Parlez à un expert