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 met de slimme stekker, u moet de slimme stekker in de AP-modus zetten(Raadpleeg de MokoLife-gebruikershandleiding): steek de slimme stekker in een stopcontact, druk op de knop voor 10 seconden totdat de smart plug-indicator oranje knippert, wat aangeeft dat de smart plug 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 het succesvol verbinden, bel connectDeviceWithHost:haven
connectSucBlock:connectFailed
Blokkeermethoden om de slimme stekker aan te sluiten. Hieronder volgt de volledige configuratie van het slimme 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]readSmartPlugDevice
InformationWithSucBlock:^(id returnData) {
//Lees apparaatinfo succes
} FailBlock:^(NSError * -fout) {
//Apparaatgegevens lezen is mislukt
}];

stap 3

[[MKSocketManager sharedInstance] configMQTTServerHost:@ "Uw MQTT Server-host"
haven:haven
connectMode:mqttServerConnectTCPMode
qos:mqttQosLevelExactlyOnce
in leven houden:60
cleanSession:JA
klant identificatie:@ "Het mac-adres van je apparaat"
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 protocale document 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 ongeldigheid onCreate() { super.onCreate(); // initialisatie MokoSupport.getInstance().in het(
getApplication Context()); } }

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_
    VERBINDEN
  • 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_
REACTIE Krijg antwoord:
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,
"Clean_session" :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)

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

2、Maak verbinding met de server

@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_
    SUCCES
  • 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_
ONDERWERP
  • Gegevensbericht retourneren:
MokoConstants.EXTRA_MQTT_RECEIVE_
BERICHT

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()

5.Logboek opslaan op SD-kaart

SDK integreert het logboek dat is opgeslagen op de SD-kaartfunctie, heet https://github.com/elvishew/xLoginitialization method in MokoSupport.getInstance().in het(
getApplicationContext())De mapnaam en bestandsnaam die op de SD-kaart zijn opgeslagen, kunnen worden gewijzigd.

openbare klasse LogModule {
private static final 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");

Praat met een expert