IoT Smart Plug Socket SDK-oplossingen

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

1. Onder de map MKSDK For Device bevindt zich de SDK om de smart plug te configureren

1.1 Als u de MQTT-serverinformatie en de wifi-informatie wilt configureren om verbinding te maken voor een slimme stekker,je moet de slimme plug in AP-modus maken(Raadpleeg de MokoLife-gebruikershandleiding):steek de slimme stekker in het stopcontact,druk op de knop voor 10 seconden totdat het lampje van de slimme stekker oranje knippert, wat aangeeft dat de slimme stekker in de AP-modus staat(Notitie:De time-outperiode voor AP-modus is 3 minuten,nadat u de informatie hebt geconfigureerd voor de smart plug,het zal de AP-modus beëindigen).Ga naar de WLAN-pagina en selecteer de smart plug-hotspot om verbinding te maken ,bij succesvolle verbinding,bel connectDeviceWithHost:haven:connectSucBlock:connectFailedBlock methoden om smart plug aan te sluiten. Hierna volgt de volledige configuratie van het smart plug proces:

stap 1

[[MKSocketManager sharedInstance] connectDeviceWithHost:@”192.168.4.1″
haven:8266
connectSucBlock:^(NSString * IP, NSInteger-poort) {
//verbind succes
connectFailedBlock:^(NSError * -fout) {
//verbinding mislukt
}];

stap 2

[[MKSocketManager sharedInstance] readSmartPlugDeviceInformationWithSucBlock:^(id returnData) {
//Lees apparaatinfo succes
} FailBlock:^(NSError * -fout) {
//Apparaatgegevens lezen is mislukt
}];

stap 3

[[MKSocketManager sharedInstance] configMQTTServerHost:@”uw MQTT-serverhost”
haven:haven
connectMode:mqttServerConnectTCPMode
qos:mqttQosLevelExactlyOnce
in leven houden:60
cleanSession:JA
klant identificatie:@”uw apparaat mac-adres”
gebruikersnaam:@”uw MQTT-server gebruikersnaam”
wachtwoord:@”uw MQTT-serverwachtwoord”
sucBlock:^(id returnData) {
//Config Succes
}
FailBlock:^(NSError * -fout) {
//Config mislukt
}];

stap 4

[[MKSocketManager sharedInstance] configWifiSSID:uw wifi ssid
wachtwoord:wifi wachtwoord
veiligheid:wifiSecurity_WPA2_PSK
sucBlock:^(id returnData) {
//Config Succes
} FailBlock:^(NSError * -fout) {
//Config mislukt
}];

2. De MKSDKForMqttServer-map is de SDK die de APP en MQTTServer configureert

2.1 MKMQTTServerManagerDelegate
@protocol MKMQTTServerManagerDelegate

(nietig)mqttServerManagerStateChanged:(MKMQTTSessionManagerState)staat;//connect state gedelegeerde methode

(nietig)sessionManager:(MKMQTTServerManager *)sessionManager didReceiveMessage:(NSData *)data onTopic:(NSString *)onderwerp;//Ontvangt de gegevens van de MQTT-server

@einde

2.2 APP maakt verbinding met de MQTT-server
Als het netwerk beschikbaar is,bellen [[MKMQTTServerManager sharedInstance] connectMQTTServer:haven:tls:in leven houden:schoon:auth:gebruiker:slagen voor:klant identificatie:] om uw MQTT-server te verbinden.

2.3 Abonneer onderwerp
Raadpleeg het protocoldocument van MQTT voor het onderwerp van de slimme stekker – (nietig)abonnementen:(NSArray *)topicList en – (nietig)uitschrijvingen:(NSArray *)topicList om het onderwerp afzonderlijk aan en af ​​te melden.

2.4 APP publiceert gegevens over een gespecificeerd onderwerp
Raadpleeg het MQTT-protocaaldocument voor het onderwerp van de slimme stekker. – (nietig)verstuur data:(NSDictionary *)gegevensonderwerp:(NSString *)onderwerp sucBlock:(nietig (^)(nietig))sucBlock is mislukt:(nietig (^)(NSError * -fout))FailBlock

README.md - Android

1.Importeer en gebruik SDK

1.1 Moduleproject mokosupport importeren

1.2 Configureer settings.gradle-bestand en bel mokosupport-project:

omvatten ':app ',':mokosupport’

1.3 Bewerk het build.gradle-bestand van het hoofdproject:

afhankelijkheden {
implementatie fileTree(aan u: ‘Libs’, omvatten: ['*.pot'])
implementatie project(pad: ‘: mokosupport ')
}

1.4 Importeer SDK tijdens projectinitialisatie:

public class BaseApplication breidt Application uit {
@Override
openbare leegte onCreate() {
super.onCreate();
// initialisatie
MokoSupport.getInstance().in het(getApplicationContext());
}
}

2.Functie-introductie

    • De methoden die in SDK worden geboden, omvatten: Socketcommunicatie met WIFI-apparaat, MQTT-verbindingsservice, verbroken verbinding, abonnementsonderwerp, afmelden onderwerp, onderwerp plaatsen, logboekrecord, enzovoort.
    • Socket-communicatie wordt aangeroepen door SocketService;
    • MQTT-communicatie kan worden aangeroepen door MokoSupport.getInstance();

2.1 SocketService

Voordat u een Socket-verbinding maakt, u moet bevestigen of de APP is verbonden met de WIFI van het apparaat. Verbind het standaard IP-adres 192.168.4.1, het standaard poortnummer is 8266, die kan worden gewijzigd in SocketThread.

2.1.1 Initialisatie

bindService(nieuwe intentie(deze, SocketService.class), mServiceConnection, BIND_AUTO_CREATE);

Start SocketService, en haal het SocketService-object, bel mService.startSocket() om een ​​Socket-thread te maken, sluit het apparaat aan, en de thread wacht tot het bericht wordt verzonden nadat de verbinding is geslaagd;

2.1.2 Krijg verbindingsstatus en reactie

1.Verkrijg de verbindingsstatus door de uitzending te registreren:

Uitzending ACTIE:MokoConstants.ACTION_AP_CONNECTION

Verbindingsstatus:

    • Verbinding geslaagd:MokoConstants.CONN_STATUS_SUCCESS
    • Verbinden:MokoConstants.CONN_STATUS_CONNECTING
    • Verbinding mislukt:MokoConstants.CONN_STATUS_FAILED
    • Time-out van verbinding:MokoConstants.CONN_STATUS_TIMEOUT

2、Ontvang het Socket-communicatie-antwoord door de uitzending te registreren :

Uitzending ACTIE:MokoConstants.ACTION_AP_SET_DATA_RESPONSE

Ontvang een reactie:

DeviceResponse-antwoord = (DeviceResponse) intent.getSerializableExtra(MokoConstants.EXTRA_AP_SET_DATA_RESPONSE);

2.1.3 Contactdoos
Gegevens verzenden accepteert alleen tekenreeksen in JSON-indeling

bijv:

1、Haal apparaatinformatie op:

{
“koptekst” : 4001
}

reactie:

{
“code” : 0,
“bericht” : “succes”,
“resultaat” : {
“koptekst” : 4001,
“device_function” : “iot_plug”,
“toestelnaam” : “plug_one”,
“apparaatspecificaties” : “ons”,
“device_mac” : “11:22:33:44:55:66”,
“soort apparaat” : “1”
}
}

2、 Verzend MQTT-serverinformatie

{
“koptekst” : 4002,
“gastheer” : “45.32.33.42”,
“haven” : 1883,
“connect_mode” : 0,
“gebruikersnaam” : “DVES_USER”,
“wachtwoord” : “DVES_PASS”,
“in leven houden” : 120,
“qos” : 2,
“schone sessie” :1
}
reactie:

{
“code” : 0,
“bericht” : “succes”,
“resultaat” : {
“koptekst” : 4002
}
}

3、Stuur een WIFI-netwerk met een specifieke SSID

{
“koptekst” : 4003,
“wifi_ssid” : “Fitpolo”,
“wifi_pwd” : “fitpolo1234.”,
“wifi_security” : 3
}

reactie:

{
“code” : 0,
“bericht” : “succes”,
“resultaat” : {
“koptekst” : 4003
}
}

2.2 MokoSupport

2.2.1 Maak verbinding met de MQTT-server
1、Maak MqttAndroidClient

openbare leegte creatClient(String host, String poort, Tekenreeks clientId, boolean tlsConnection)

2、Maak verbinding met de server

openbare leegte connectMqtt(MqttConnectOptions-opties)
Verkrijg de aanmaakstatus volgens MqttCallbackHandler en ontvang de retourgegevensformulierserver

@Override
openbare leegte connectComplete(boolean opnieuw verbinden, Tekenreeks serverURI) {

}
@Override
openbare ongeldige verbinding(Wegwerpbare oorzaak) {

}
@Override
public void messageArrived(String onderwerp, MqttMessage-bericht) gooit Uitzondering {

}

3、Verkrijg de verbindingsstatus door de uitzending te registreren:

Uitzending ACTIE:MokoConstants.ACTION_MQTT_CONNECTION

Verbindingsstatus:

    • Verbinding geslaagd:MokoConstants.MQTT_CONN_STATUS_SUCCESS
    • verbinding verbreken:MokoConstants.MQTT_CONN_STATUS_LOST

4、Ontvang de retourgegevens van de server door de uitzending te registreren

Uitzending ACTIE:MokoConstants.ACTION_MQTT_RECEIVE

Gegevens retourneren:

    • Onderwerp gegevens retourneren:

MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC

    • Gegevensbericht retourneren:

MokoConstants.EXTRA_MQTT_RECEIVE_MESSAGE

De retourgegevens zijn in JSON-indeling,bijv:

{
“Bedrijfsnaam” : “moko”,
“productie datum” : “201801”,
“product Model” : “plug_one”,
“firmware versie” : “000001”
“device_mac” : “11:22:33:44:55:66”
}

2.2.2 Actie monitor
MQTT-communicatie bevat vier soorten acties. Om elke actie uit te voeren, u moet ActionListener instellen om de status van de actie te bewaken:

public enum Action {
/**
* Verbind actie
**/
AANSLUITEN,
/**
* Inschrijven Actie
**/
ABONNEER,
/**
* Actie publiceren
**/
PUBLICEREN,
/**
* Actie afmelden
**/
AFMELDEN
}

Verkrijg de actiestatus door de uitzending te registreren:

1、AANSLUITEN

Uitzending ACTIE:MokoConstants.ACTION_MQTT_CONNECTION

Verbinding mislukt:MokoConstants.MQTT_CONN_STATUS_FAILED
2、ABONNEER

Uitzending ACTIE:MokoConstants.ACTION_MQTT_SUBSCRIBE

Abonneer onderwerp:MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC
Abonnementsstatus:MokoConstants.EXTRA_MQTT_STATE

3、PUBLICEREN

Uitzending ACTIE:MokoConstants.ACTION_MQTT_PUBLISH

Publicatiestatus:MokoConstants.EXTRA_MQTT_STATE

4、AFMELDEN

Uitzending ACTIE:MokoConstants.ACTION_MQTT_UNSUBSCRIBE

Afmelden status:MokoConstants.EXTRA_MQTT_STATE

2.2.3 Abonneer onderwerp

MokoSupport.getInstance().inschrijven(String onderwerp, int qos)

2.2.4 Publiceer informatie

MokoSupport.getInstance().publiceren(String onderwerp, MqttMessage-bericht)

2.2.5 Afmelden onderwerp

MokoSupport.getInstance().Afmelden(String onderwerp)

2.2.6 Bepaal of de MQTT is aangesloten

MokoSupport.getInstance().is verbonden()

2.2.7 Verbinding verbroken

MokoSupport.getInstance().disconnectMqtt()

3.Logboek opslaan op SD-kaart
SDK integreert het logboek dat is opgeslagen op de SD-kaartfunctie, heet https://github.com/elvishew/xLog

initialisatiemethode in MokoSupport.getInstance().in het(getApplicationContext())

De mapnaam en bestandsnaam die op de SD-kaart zijn opgeslagen, kunnen worden gewijzigd.

openbare klasse LogModule {
privé statische laatste String TAG = “mokoLife”;// bestandsnaam
private static final String LOG_FOLDER = “mokoLife”;// naam van de map

}

Opslagstrategie: bewaar alleen de gegevens van de dag en de gegevens van de dag ervoor , het bestand is achtervoegsel .bak

bel methode:

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