Řešení IoT Smart Plug Socket SDK
1. Pod složkou MKSDK pro zařízení je sada SDK pro konfiguraci inteligentní zásuvky
1.1 Chcete-li nakonfigurovat informace o serveru MQTT a informace o wifi pro připojení k inteligentní zásuvce, musíte inteligentní zástrčku přepnout do režimu AP(Přečtěte si uživatelskou příručku MokoLife): zapojte inteligentní zástrčku do zásuvky, stiskněte tlačítko pro 10 sekundy, dokud indikátor inteligentního konektoru nezačne blikat oranžově, což indikuje inteligentní konektor v režimu AP(Poznámka: Časový limit pro režim AP je 3 minut, jakmile nakonfigurujete informace na inteligentní zásuvku, ukončí režim AP). Přejděte na stránku Wlan a vyberte hotspot smart plug pro připojení, při úspěšném připojení, volání connectDeviceWithHost:přístav
connectSucBlock:připojení selhalo
Metody blokování pro připojení inteligentní zástrčky. Následuje úplná konfigurace procesu inteligentního připojení:
krok 1
přístav:8266
connectSucBlock:^(NSString * IP, Port NSInteger) {
//připojit úspěch
connectFailedBlock:^(Chyba NSError *) {
//připojení selhalo
}];
krok 2
InformationWithSucBlock:^(id returnData) {
//Úspěch čtení informací o zařízení
} failedBlock:^(Chyba NSError *) {
//Číst informace o zařízení se nezdařilo
}];
krok 3
přístav:přístav
connectMode:mqttServerConnectTCPMode
qos:mqttQosLevelExactlyOnce
udržet naživu:60
cleanSession:ANO
clientId:@ „Mac adresa vašeho zařízení“
uživatelské jméno:@ „Vaše uživatelské jméno serveru MQTT“
Heslo:@ „Vaše heslo k serveru MQTT“
sucBlock:^(id returnData) {
//Úspěch konfigurace
}
failedBlock:^(Chyba NSError *) {
//Konfigurace se nezdařila
}];
krok4
Heslo:wifi heslo
bezpečnostní:wifiSecurity_WPA2_PSK
sucBlock:^(id returnData) {
//Úspěch konfigurace
} failedBlock:^(Chyba NSError *) {
//Konfigurace se nezdařila
}];
2. Složka MKSDKForMqttServer je SDK, která konfiguruje APP a MQTTServer
2.1 MKMQTTServerManagerDelegate
@protocol MKMQTTServerManagerDelegate
(prázdnota)mqttServerManagerStateChanged:(MKMQTTSessionManagerState)Stát;
//metoda připojení delegáta státu
(prázdnota)sessionManager:(MKMQTTServerManager *)sessionManager didReceiveMessage:(NSData *)údaje k tématu:(NSString *)téma;//Přijímá data ze serveru MQTT
@konec
2.2 APP se připojí k serveru MQTT
ověř:uživatel:složit:clientId:] pro připojení vašeho serveru MQTT.
2.3 Odebírat téma
Informace o inteligentní zásuvce najdete v dokumentu protokolu MQTT. Volání - (prázdnota)předplatné:(NSArray *)topicList a - (prázdnota)odhlášení:(NSArray *)topicList pro samostatné přihlášení a odhlášení tématu.
2.4 Aplikace APP publikuje data k určitému tématu
Téma inteligentního konektoru najdete v dokumentu protokolu MQTT. - (prázdnota)sendData:(NSDictionary *)datové téma:(NSString *)téma sucBlock:(prázdnota (^)(prázdnota))sucBlock failedBlock:(prázdnota (^)(Chyba NSError *))failedBlock
README.md - Android
1.Importujte a používejte SDK
1.1 Importujte mokosupport projektu modulu
1.2 Nakonfigurujte soubor settings.gradle a zavolejte projekt mokosupport:
zahrnout ':aplikace',„:mokosupport “
1.3 Upravte soubor build.gradle hlavního projektu:
závislosti {
implementace fileTree(tobě: ‚Libs ', zahrnout: ['*.sklenice'])
realizační projekt(cesta: „: mokosupport “)
}
1.4 Importujte SDK během inicializace projektu:
getApplication Kontext()); } }
2.Úvod do funkce
- Mezi metody poskytované v SDK patří: Zásuvková komunikace se zařízením WIFI, Služba připojení MQTT, odpojení, téma předplatného, odhlásit téma, post téma, záznam protokolu, atd.
- Socket komunikaci volá SocketService;
- Komunikaci MQTT lze volat pomocí MokoSupport.getInstance();
2.1 SocketService
Před vytvořením připojení Socket, musíte potvrdit, zda je aplikace připojena k WIFI zařízení. Připojte výchozí IP adresu 192.168.4.1, výchozí číslo portu je 8266, který lze upravit v SocketThread.
2.1.1 Inicializace
bindService(nový záměr(tento, SocketService.class), mServiceConnection, BIND_AUTO_CREATE);
Spusťte SocketService, a získejte objekt SocketService, volejte mService.startSocket() k vytvoření vlákna Socket, připojte zařízení, a vlákno čeká na odeslání zprávy po úspěšném připojení;
2.1.2 Získejte stav připojení a odpověď
1. Zjistěte stav připojení registrací vysílání:
Stav připojení:
- Připojení bylo úspěšné:MokoConstants.CONN_STATUS_SUCCESS
- spojovací:MokoConstants.CONN_STATUS_
SPOJOVACÍ - Připojení se nezdařilo:MokoConstants.CONN_STATUS_FAILED
- Časový limit připojení:MokoConstants.CONN_STATUS_TIMEOUT
2、Zaregistrujte vysílání a získejte odpověď na Socketovou komunikaci :
ODEZVA Získejte odpověď:
EXTRA_AP _SET_DATA_RESPONSE);
2.1.3 Zásuvka
Odeslat data přijímá pouze řetězce ve formátu JSON
např:
1、Získejte informace o zařízení:
{
„Záhlaví“ : 4001
}
Odezva:
{
"kód" : 0,
"zpráva" : "úspěch",
"výsledek" : {
„Záhlaví“ : 4001,
„Device_function“ : „Iot_plug“,
"Název zařízení" : „Plug_one“,
„Specifikace zařízení“ : "nás",
„Device_mac“ : „11:22:33:44:55:66“,
"typ zařízení" : „1“
}
}
2、 Odešlete informace o serveru MQTT
{
„Záhlaví“ : 4002,
"hostitel" : „45,32,33,42“,
"přístav" : 1883,
„Connect_mode“ : 0,
„Uživatelské jméno“ : „DVES_USER“,
"Heslo" : „DVES_PASS“,
"udržet naživu" : 120,
„Qos“ : 2,
„Clean_session“ :1
}
Odezva:
{
"kód" : 0,
"zpráva" : "úspěch",
"výsledek" : {
„Záhlaví“ : 4002
}
}
3、Odeslat síť WIFI s konkrétním SSID
{
„Záhlaví“ : 4003,
„Wifi_ssid“ : „Fitpolo“,
„Wifi_pwd“ : „Fitpolo1234.“,
„Wifi_security“ : 3
}
Odezva:
{
"kód" : 0,
"zpráva" : "úspěch",
"výsledek" : {
„Záhlaví“ : 4003
}
}
2.2 MokoSupport
2.2.1 Připojte se k serveru MQTT
1、Vytvořte MqttAndroidClient
public void creatClient(Řetězec hostitele, Řetězcový port, Řetězec clientId, boolean tlsConnection)
public void connectMqtt(Možnosti MqttConnectOptions)
Získejte stav vytvoření podle MqttCallbackHandler a získejte server formulářů pro vrácení dat
2、Připojte se k serveru
@ Přepis
public void connectComplete(booleovské opětovné připojení, Řetězec serverURI) {
…
}
@ Přepis
veřejné neplatné připojení Ztraceno(Hoditelná příčina) {
…
}
@ Přepis
public void messageArrived(Řetězcové téma, Zpráva MqttMessage) vyvolá Výjimku {
…
}
3、Zjistěte stav připojení registrací vysílání:
Broadcast ACTION:MokoConstants.ACTION_MQTT_CONNECTION
Stav připojení:
- Úspěch připojení:MokoConstants.MQTT_CONN_STATUS_
ÚSPĚCH - Odpojit:MokoConstants.MQTT_CONN_STATUS_LOST
4、Získejte zpětná data ze serveru registrací vysílání
Broadcast ACTION:MokoConstants.ACTION_MQTT_RECEIVE
Vrácení dat:
- Téma návratových dat:
TÉMA
- Zpáteční datová zpráva:
ZPRÁVA
Vrácená data jsou ve formátu JSON,např:
{
"Jméno společnosti" : „Moko“,
"datum výroby" : „201801“,
„Product_model“ : „Plug_one“,
„Firmware_version“ : „000001“
„Device_mac“ : „11:22:33:44:55:66“
}
2.2.2 Monitor akcí
Komunikace MQTT obsahuje čtyři druhy akcí. Provést každou akci, musíte nastavit ActionListener, aby sledoval stav Akce:
veřejné výčet Akce {
/**
* Připojit akci
**/
PŘIPOJIT,
/**
* Přihlásit se k odběru
**/
PŘEDPLATIT,
/**
* Publikovat akci
**/
PUBLIKOVAT,
/**
* Odhlásit akci
**/
ODHLÁSIT ODBĚR
}
Získejte stav Akce registrací vysílání:
1、PŘIPOJIT
Broadcast ACTION:MokoConstants.ACTION_MQTT_CONNECTION
Připojení se nezdařilo:MokoConstants.MQTT_CONN_STATUS_FAILED
2、PŘEDPLATIT
Broadcast ACTION:MokoConstants.ACTION_MQTT_SUBSCRIBE
Přihlásit se k odběru tématu:MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC
Stav přihlášení k odběru:MokoConstants.EXTRA_MQTT_STATE
3、PUBLIKOVAT
Broadcast ACTION:MokoConstants.ACTION_MQTT_PUBLISH
Stav publikování:MokoConstants.EXTRA_MQTT_STATE
4、ODHLÁSIT ODBĚR
Broadcast ACTION:MokoConstants.ACTION_MQTT_UNSUBSCRIBE
Stav odhlášení:MokoConstants.EXTRA_MQTT_STATE
2.2.3 Odebírat téma
MokoSupport.getInstance().předplatit(Řetězcové téma, int qos)
2.2.4 Publikovat informace
MokoSupport.getInstance().publikovat(Řetězcové téma, Zpráva MqttMessage)
2.2.5 Odhlásit téma
Řetězcové téma)
2.2.6 Zjistěte, zda je MQTT připojen
MokoSupport.getInstance().je připojen()
2.2.7 Odpojení
MokoSupport.getInstance().odpojitMqtt()
5.Uložit protokol na SD kartu
getApplicationContext()) Název složky a název souboru uložený na SD kartě lze upravit.
veřejná třída LogModule {
soukromý statický konečný řetězec TAG = “mokoLife”;// název souboru
soukromý statický konečný řetězec LOG_FOLDER = “mokoLife”;// název složky
…
}
Strategie skladování: ukládejte pouze data dne a data z předchozího dne , soubor má příponu .bak
metoda volání:
LogModule.v(„Log info“);
LogModule.d(„Log info“);
LogModule.i(„Log info“);
LogModule.w(„Log info“);
LogModule.e(„Log info“);