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 If you want to configure the MQTT server information and the wifi information to connect to the smart plug, you need to make the smart plug into AP mode(Raadpleeg de MokoLife-gebruikershandleiding): plug the smart plug into a power socket, druk op de knop voor 10 seconds till the smart plug indicator blink amber light which indicates the smart plug into AP mode(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, when connecting successfully, bel connectDeviceWithHost:haven
connectSucBlock:connectFailed
Blockmethods to connect the smart plug. Following is the complete configuration of the smart plug process:

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:@”your MQTT Server host”
haven:haven
connectMode:mqttServerConnectTCPMode
qos:mqttQosLevelExactlyOnce
in leven houden:60
cleanSession:JA
klant identificatie:@”your device mac address”
gebruikersnaam:@”your MQTT Server userName”
wachtwoord:@”your MQTT Server password”
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

Please refer to the MQTT protocal document for the topic of the smart plug.Call – (nietig)abonnementen:(NSArray *)topicList and – (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 public void onCreate() { super.onCreate(); // initialization 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_
    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 Get a response
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:

{
“header” : 4001
}

reactie:

{
“code” : 0,
“message” : “success”,
“result” : {
“header” : 4001,
“device_function” : “iot_plug”,
“device_name” : “plug_one”,
“device_specifications” : “us”,
“device_mac” : “11:22:33:44:55:66,
“device_type” : “1”
}
}

2、 Verzend MQTT-serverinformatie

{
“header” : 4002,
“host” : “45.32.33.42”,
“port” : 1883,
“connect_mode” : 0,
“username” : “DVES_USER”,
“password” : “DVES_PASS”,
“keepalive” : 120,
“qos” : 2,
“clean_session” :1
}
reactie:

{
“code” : 0,
“message” : “success”,
“result” : {
“header” : 4002
}
}

3、Stuur een WIFI-netwerk met een specifieke SSID

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

reactie:

{
“code” : 0,
“message” : “success”,
“result” : {
“header” : 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_
    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:

{
“company_name” : “moko”,
“production_date” : “201801”,
“product_model” : “plug_one”,
“firmware_version” : “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