IoT Smart Plug Socket SDK Solutions

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

1. Under de map MKSDK foar apparaat is de SDK om de smart plug te konfigurearjen

1.1 As jo ​​de MQTT-serverynformaasje en de wifi-ynformaasje wolle ynstelle om te ferbinen mei de smart plug, jo moatte de tûke stekker meitsje yn AP-modus(Sjoch asjebleaft de MokoLife brûkershanneling): stek de tûke stekker yn in stopkontakt, druk op de knop foar 10 sekonden oant de indicator fan 'e tûke stekker amber ljocht knippert dat de tûke stekker oanjout yn AP-modus(Noat: De tiidlimytperioade foar AP-modus is 3 minuten, as jo de ynformaasje ienris hawwe ynsteld foar de smart plug, it sil AP-modus einigje). Fier de Wlan-side yn en selektearje de hotspot foar smart plug om te ferbinen, by suksesfol ferbining, belje connectDeviceWithHost:haven
connectSucBlock:connectFailed
Blokkearmetoaden om de tûke stekker te ferbinen. Folgjende is de folsleine konfiguraasje fan it proses fan smart plug:

stap1

[[MKSocketManager sharedInstance] connectDeviceWithHost:@ ”192.168.4.1 ″
haven:8266
connectSucBlock:^(NSString * IP, NSInteger haven) {
//ferbine súkses
connectFailedBlock:^(NSError * flater) {
//ferbining mislearre
}];

step2

[[MKSocketManager sharedInstance]readSmartPlugDevice
InformationWithSucBlock:^(id returnData) {
//Lês apparaatynfo sukses
} failedBlock:^(NSError * flater) {
//Ynfo foar lêzen lêzen is mislearre
}];

step3

[[MKSocketManager sharedInstance] configMQTTServerHost:@ "Jo MQTT-serverhost"
haven:haven
connectMode:mqttServerConnectTCPMode
qos:mqttQosLevelExactlyOnce
yn libben hâlde:60
cleanSession:JA
clientId:@ "Jo Mac-adres fan jo apparaat"
brûkersnamme:@ "Jo brûkersnamme fan MQTT-tsjinner"
Wachtwurd:@ "Jo MQTT-serverwachtwurd"
sucBlock:^(id returnData) {
//Config súkses
}
failedBlock:^(NSError * flater) {
//Konfiguraasje mislearre
}];

step4

[[MKSocketManager sharedInstance] configWifiSSID:jo wifi ssid
Wachtwurd:wifi wachtwurd
feiligens:wifiSecurity_WPA2_PSK
sucBlock:^(id returnData) {
//Config súkses
} failedBlock:^(NSError * flater) {
//Konfiguraasje mislearre
}];

2. De map MKSDKForMqttServer is de SDK dy't de APP en MQTTServer konfigureart

2.1 MKMQTTServerManagerDelegate

@protocol MKMQTTServerManagerDelegate

(leech)mqttServerManagerStateChanged:(MKMQTTSessionManagerState)steat;
//ferbine steat delegearre metoade

(leech)sessionManager:(MKMQTTServerManager *)sessionManager didReceiveMessage:(NSData *)gegevens oer Underwerp:(NSString *)ûnderwerp;//Untfang de gegevens fan 'e MQTT-tsjinner

@ein

2.2 APP ferbynt mei de MQTT-tsjinner

As it netwurk beskikber is,belje [[MKMQTTServerManager sharedInstance] connectMQTTServer:haven:tls:yn libben hâlde:skjin:
auth:brûker:pas:clientId:] om jo MQTT-tsjinner te ferbinen.

2.3 Underwerp ynskriuwe

Sjoch asjebleaft nei it MQTT protokaal dokumint foar it ûnderwerp fan 'e smart plug. (leech)abonneminten:(NSArray *)topicList en - (leech)ûnskriuwings:(NSArray *)topicList om it ûnderwerp apart te abonnearjen en út te tekenjen.

2.4 APP publiseart gegevens nei in spesifisearre ûnderwerp

Sjoch asjebleaft nei it MQTT protokaldokumint foar it ûnderwerp fan 'e smart plug. - (leech)sendData:(NSDictionary *)gegevens ûnderwerp:(NSString *)ûnderwerp sucBlock:(leech (^)(leech))sucBlock mislearreBlock:(leech (^)(NSError * flater))failedBlock

README.md - Android

1.Ymportearje en brûke SDK

1.1 Module projekt ymportearje mokosupport

1.2 Konfigurearje bestân settings.gradle en skilje mokosupport-projekt:

omfetsje ‘:app ’,':mokosupport ’

1.3 Bewurkje it build.gradle-bestân fan it haadprojekt:

ôfhinklikens {
ymplemintaasje fileTree(oan dy: 'Libs', omfetsje: [‘* .Jar’])
útfiering projekt(paad: ‘: mokosupport ’)
}

1.4 Ymportearje SDK by inisjalisaasje fan projekt:

iepenbiere klasse BaseApplication wreidet applikaasje út { @Override iepenbiere leechte onCreate() { super.onCreate(); // inisjalisaasje MokoSupport.getInstance().yn it(
getApplication Kontekst()); } }

2.Funksje Yntroduksje

  • De metoaden levere yn SDK omfetsje: Socketkommunikaasje mei WIFI-apparaat, MQTT ferbining tsjinst, disconnection, abonnemint ûnderwerp, ôfmelde ûnderwerp, post ûnderwerp, log record, ensfh.
  • Socketkommunikaasje wurdt neamd troch SocketService;
  • MQTT-kommunikaasje kin wurde neamd troch MokoSupport.getInstance();

2.1 SocketService

Foardat jo in Socket-ferbining meitsje, jo moatte befestigje oft de APP ferbûn is mei de WIFI fan it apparaat. Ferbine it standert IP-adres 192.168.4.1, it standert poartenûmer is 8266, dy't kinne wurde oanpast yn SocketThread.

2.1.1 Inisjalisaasje

bindService(nije yntinsje(dit, SocketService.class), mServiceConnection, BIND_AUTO_CREATE);

Start SocketService, en krij it SocketService-objekt, skilje mService.startSocket() om in Socket thread te meitsjen, ferbine it apparaat, en de tried wachtet op it ferstjoeren fan it berjocht nei't de ferbining suksesfol is;

2.1.2 Krij ferbiningsstatus en antwurd

1. Krij de ferbiningsstatus troch de útstjoering te registrearjen:

Broadcast AKSJE:MokoConstants.ACTION_AP_CONNECTION
Ferbiningsstatus:
  • Ferbining slagge:MokoConstants.CONN_STATUS_SUCCESS
  • ferbine:MokoConstants.CONN_STATUS_
    VERBINING
  • Ferbining mislearre:MokoConstants.CONN_STATUS_FAILED
  • Ferbiningstimeout:MokoConstants.CONN_STATUS_TIMEOUT

2、Krij it Socket-kommunikaasje-antwurd troch de útstjoering te registrearjen :

Broadcast AKSJE:MokoConstants.ACTION_AP_SET_DATA_
ANTWURD Krij in antwurd:
DeviceResponse antwurd = (DeviceResponse) intention.getSerializableExtra(MokoConstants.
EXTRA_AP _SET_DATA_RESPONSE);

2.1.3 Socket

Gegevens ferstjoere aksepteart allinich snaren yn JSON-formaat
bgl:

1、Krij apparaatynformaasje:

{
“Koptekst” : 4001
}

antwurd:

{
"koade" : 0,
"berjocht" : "sukses",
"resultaat" : {
“Koptekst” : 4001,
"Apparaat_funksje" : “Iot_plug”,
"Namme fan it apparaat" : “Plug_one”,
“Apparaat_spesifikaasjes” : "ús",
“Device_mac” : “11:22:33:44:55:66”,
“Apparaat_type” : “1”
}
}

2、 Stjoer MQTT-serverynformaasje

{
“Koptekst” : 4002,
"gasthear" : “45.32.33.42”,
"haven" : 1883,
“Connect_mode” : 0,
“Brûkersnamme” : “DVES_USER”,
"Wachtwurd" : “DVES_PASS”,
"yn libben hâlde" : 120,
“Qos” : 2,
“Skjinne sesje” :1
}
antwurd:

{
"koade" : 0,
"berjocht" : "sukses",
"resultaat" : {
“Koptekst” : 4002
}
}

3、Stjoer in WIFI-netwurk mei in spesifike SSID

{
“Koptekst” : 4003,
“Wifi_ssid” : "Fitpolo",
“Wifi_pwd” : “Fitpolo1234.”,
“Wifi_security” : 3
}

antwurd:

{
"koade" : 0,
"berjocht" : "sukses",
"resultaat" : {
“Koptekst” : 4003
}
}

2.2 MokoSupport

2.2.1 Ferbine mei de MQTT-tsjinner

1、MqttAndroidClient oanmeitsje

iepenbiere leechte creatClient(String host, String port, String clientId, booleaanske tls Ferbining)

iepenbiere leechte ferbineMqtt(MqttConnectOptions opsjes)
Krij de skeppingsstatus neffens MqttCallbackHandler en ûntfange de tsjinner foar weromkomstformulier

2、Ferbine mei de server

@Override
iepenbiere leechte ferbine Folslein(booleaanske opnij ferbine, String serverURI) {
...
}
@Override
iepenbiere lege ferbining Ferlieze(Smytbere oarsaak) {
...
}
@Override
iepenbier leech berjocht Oankaam(String ûnderwerp, MqttMessage berjocht) smyt Útsûndering {
...
}

3、Krij de ferbiningsstatus troch de útstjoering te registrearjen:

Broadcast AKSJE:MokoConstants.ACTION_MQTT_CONNECTION

Ferbiningsstatus:

  • Ferbining súkses:MokoConstants.MQTT_CONN_STATUS_
    SUKSES
  • Ferbine:MokoConstants.MQTT_CONN_STATUS_LOST

4、Untfang de retourgegevens fan server troch de útstjoering te registrearjen

Broadcast AKSJE:MokoConstants.ACTION_MQTT_RECEIVE

Gegevens weromjaan:

  • Weromsette gegevens Underwerp:
MokoConstants.EXTRA_MQTT_RECEIVE_
ÛNDERWERP
  • Gegevens weromjaan Berjocht:
MokoConstants.EXTRA_MQTT_RECEIVE_
BERJOCHT

De weromkomstgegevens binne yn JSON-formaat,bgl:

{
"Bedriuwsnamme" : “Moko”,
"produksje datum" : “201801”,
“Product_model” : “Plug_one”,
“Firmware_version” : “000001”
“Device_mac” : “11:22:33:44:55:66”
}

2.2.2 Aksjemonitor

MQTT-kommunikaasje befettet fjouwer soarten aksjes. Om elke aksje út te fieren, Jo moatte ActionListener ynstelle om de steat fan 'e aksje te kontrolearjen:

iepenbiere enum Aksje {
/**
* Ferbine aksje
**/
FERBINE,
/**
* Aksje ynskriuwe
**/
ABONNE,
/**
* Aksje publisearje
**/
PUBLYSJES,
/**
* Ofmelde aksjes
**/
UTSKRIFTE
}

Krij de aksjestatus troch de útstjoering te registrearjen:

1、FERBINE

Broadcast AKSJE:MokoConstants.ACTION_MQTT_CONNECTION
Ferbining mislearre:MokoConstants.MQTT_CONN_STATUS_FAILED

2、ABONNE

Broadcast AKSJE:MokoConstants.ACTION_MQTT_SUBSCRIBE
Subscribe Subic:MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC
Status ynskriuwe:MokoConstants.EXTRA_MQTT_STATE

3、PUBLYSJES

Broadcast AKSJE:MokoConstants.ACTION_MQTT_PUBLISH
Publisearje status:MokoConstants.EXTRA_MQTT_STATE

4、UTSKRIFTE

Broadcast AKSJE:MokoConstants.ACTION_MQTT_UNSUBSCRIBE
Utskriuwe status:MokoConstants.EXTRA_MQTT_STATE

2.2.3 Underwerp ynskriuwe

MokoSupport.getInstance().abonnearje(String ûnderwerp, int qos)

2.2.4 Ynformaasje publisearje

MokoSupport.getInstance().publisearje(String ûnderwerp, MqttMessage berjocht)

2.2.5 Utskriuwe ûnderwerp

MokoSupport.getInstance().ôfmelde(
String ûnderwerp)

2.2.6 Bepale oft de MQTT ferbûn is

MokoSupport.getInstance().isConnected()

2.2.7 Ferbining

MokoSupport.getInstance().disconnectMqtt()

5.Bewarje logboek op SD-kaart

SDK yntegreart it logboek dat is opslein yn 'e SD-kaartfunksje, hjit https://github.com/elvishew/xLog inisjalisaasjemetoade yn MokoSupport.getInstance().yn it(
getApplicationContext()) De mapnamme en de bestânsnamme dy't op 'e SD-kaart is bewarre, kinne oanpast wurde.

iepenbiere klasse LogModule {
privee statyske finale String TAG = “mokoLife”;// Bestânsnamme
privee statyske finale String LOG_FOLDER = “mokoLife”;// mapnamme
...
}

Opslachstrategy: bewarje allinich de gegevens fan 'e dei en de gegevens fan' e dei derfoar , it bestân wurdt efterhelle mei.bak

opropmetoade:

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