IoT Smart Plug Socket SDK-løsninger

Smart Pug MK102
Smart stik MK112
Smart switch WS001-3
README.md - IOS

1. Under mappen MKSDK For Device er SDK til konfiguration af smart plug

1.1 Hvis du vil konfigurere MQTT-serveroplysningerne og wifi-oplysningerne til at oprette forbindelse til smart-stikket, du skal sætte det smarte stik i AP-tilstand(Se brugervejledningen til MokoLife): Sæt det smarte stik i et stikkontakt, tryk på knappen for 10 sekunder, indtil indikatoren for smart plug blinker gult, hvilket indikerer, at smart plug'en er i AP-tilstand(Bemærk: Timeoutperioden for AP-tilstand er 3 minutter, når du har konfigureret oplysningerne til smart plug, det afslutter AP-tilstand). Gå ind på Wlan-siden, og vælg det smart plug-hotspot, du vil oprette forbindelse til, når du opretter forbindelse, ring til connectDeviceWithHost:Havn
connectSucBlock:connectFailed
Blokmetoder til at forbinde smart plug. Følgende er den komplette konfiguration af smart plug-processen:

trin 1

[[MKSocketManager sharedInstance] connectDeviceWithHost:@ ”192.168.4.1 ″
Havn:8266
connectSucBlock:^(NSString * IP, NSInteger-port) {
//forbinde succes
connectFailedBlock:^(NSError * -fejl) {
//forbindelse mislykkedes
}];

trin 2

[[MKSocketManager sharedInstance]readSmartPlugDevice
InformationWithSucBlock:^(id returnData) {
//Læs enhedsinfosucces
} failedBlock:^(NSError * -fejl) {
//Læsning af enhedsoplysninger mislykkedes
}];

trin 3

[[MKSocketManager sharedInstance] configMQTTServerHost:@ ”Din MQTT Server-vært”
Havn:Havn
connectMode:mqttServerConnectTCPMode
qos:mqttQosLevelExactlyOnce
holde i live:60
cleanSession:JA
klient-id:@ ”Din enheds mac-adresse”
brugernavn:@ ”Dit MQTT Server-brugernavn”
adgangskode:@ ”Din MQTT-serveradgangskode”
sucBlock:^(id returnData) {
//Config succes
}
failedBlock:^(NSError * -fejl) {
//Konfiguration mislykkedes
}];

trin 4

[[MKSocketManager sharedInstance] configWifiSSID:din wifi ssid
adgangskode:wifi-adgangskode
sikkerhed:wifiSecurity_WPA2_PSK
sucBlock:^(id returnData) {
//Config succes
} failedBlock:^(NSError * -fejl) {
//Konfiguration mislykkedes
}];

2. MKSDKForMqttServer-mappen er SDK, der konfigurerer APP og MQTTServer

2.1 MKMQTTServerManagerDelegate

@protocol MKMQTTServerManagerDelegate

(ugyldig)mqttServerManagerStateChanged:(MKMQTTSessionManagerState)stat;
//forbinde statsdelegeret metode

(ugyldig)sessionManager:(MKMQTTServerManager *)sessionManager didReceiveMessage:(NSData *)data om emnet:(NSString *)emne;//Modtager dataene fra MQTT-serveren

@ende

2.2 APP opretter forbindelse til MQTT-serveren

Når netværket er tilgængeligt,opkald [[MKMQTTServerManager sharedInstance] connectMQTTServer:Havn:tls:holde i live:ren:
godkendelse:bruger:passere:klient-id:] for at forbinde din MQTT-server.

2.3 Abonner emne

Der henvises til MQTT protokaldokumentet om emnet for det smarte stik. Ring - (ugyldig)abonnementer:(NSArray *)topicList og - (ugyldig)afmeldinger:(NSArray *)topicListe for at abonnere og afmelde emnet separat.

2.4 APP offentliggør data til et bestemt emne

Se MQTT protokaldokumentet for emnet for smart plug. - (ugyldig)sendData:(NSDictionary *)dataemne:(NSString *)emne sucBlock:(ugyldig (^)(ugyldig))sucBlock mislykkedesBlock:(ugyldig (^)(NSError * -fejl))failedBlock

README.md - Android

1.Importer og brug SDK

1.1 Importer modulprojekt mokosupport

1.2 Konfigurer settings.gradle-filen, og ring til mokosupport-projektet:

inkluderer ':app ',':mokosupport '

1.3 Rediger build.gradle-filen til hovedprojektet:

afhængigheder {
implementering fileTree(til dig: 'Libs', omfatte: ['*.krukke'])
implementeringsprojekt(sti: ': mokosupport ')
}

1.4 Importer SDK under initialisering af projektet:

public class BaseApplication udvider applikationen { @Override offentlig tomrum onCreate() { super.onCreate(); // initialisering MokoSupport.getInstance().i det(
getApplication Sammenhæng()); } }

2.Funktion Introduktion

  • Metoderne i SDK inkluderer: Socket-kommunikation med WIFI-enhed, MQTT-forbindelsestjeneste, afbrydelse, abonnementsemne, afmeld emne, post emne, log post, etc.
  • Socket-kommunikation kaldes af SocketService;
  • MQTT-kommunikation kan kaldes af MokoSupport.getInstance();

2.1 SocketService

Før du opretter en Socket-forbindelse, skal du bekræfte, om APP'en er forbundet til enhedens WIFI. Tilslut standard-IP-adressen 192.168.4.1, standardportnummeret er 8266, som kan ændres i SocketThread.

2.1.1 Initialisering

bindService(ny hensigt(det her, SocketService.class), mServiceConnection, BIND_AUTO_CREATE);

Start SocketService, og få SocketService-objektet, ring til mService.startSocket() for at oprette en Socket-tråd, tilslut enheden, og tråden venter på, at meddelelsen sendes, efter at forbindelsen er gennemført;

2.1.2 Få forbindelsesstatus og svar

1. Få forbindelsesstatus ved at registrere udsendelsen:

Broadcast HANDLING:MokoConstants.ACTION_AP_CONNECTION
Forbindelsesstatus:
  • Forbindelsen blev gennemført:MokoConstants.CONN_STATUS_SUCCESS
  • Tilslutning:MokoConstants.CONN_STATUS_
    TILSLUTNING
  • Forbindelsen mislykkedes:MokoConstants.CONN_STATUS_FAILED
  • Forbindelse timeout:MokoConstants.CONN_STATUS_TIMEOUT

2、Få Socket-kommunikationssvaret ved at registrere udsendelsen :

Broadcast HANDLING:MokoConstants.ACTION_AP_SET_DATA_
RESPONS Få et svar:
DeviceResponse-svar = (DeviceResponse) intention.getSerializableExtra(MokoConstants.
EXTRA_AP _SET_DATA_RESPONSE);

2.1.3 Stikkontakt

Send data accepterer kun strenge i JSON-format
f.eks:

1、Få enhedsoplysninger:

{
"header" : 4001
}

respons:

{
"kode" : 0,
"besked" : "succes",
"resultat" : {
"header" : 4001,
“Enhedsfunktion” : “Iot_plug”,
"enhedsnavn" : “Plug_one”,
“Enhed_specifikationer” : "os",
“Device_mac” : “11:22:33:44:55:66”,
“Enhedstype” : “1”
}
}

2、 Send MQTT-serveroplysninger

{
"header" : 4002,
"vært" : “45.32.33.42”,
"Havn" : 1883,
“Connect_mode” : 0,
“Brugernavn” : “DVES_USER”,
"adgangskode" : “DVES_PASS”,
"holde i live" : 120,
“Qos” : 2,
“Ren_session” :1
}
respons:

{
"kode" : 0,
"besked" : "succes",
"resultat" : {
"header" : 4002
}
}

3、Send et WIFI-netværk med et specifikt SSID

{
"header" : 4003,
“Wifi_ssid” : "Fitpolo",
“Wifi_pwd” : “Fitpolo1234.”,
“Wifi_sikkerhed” : 3
}

respons:

{
"kode" : 0,
"besked" : "succes",
"resultat" : {
"header" : 4003
}
}

2.2 MokoSupport

2.2.1 Opret forbindelse til MQTT-serveren

1、Opret MqttAndroidClient

offentlig ugyldig creatClient(String vært, Strengport, String clientId, boolske tls Forbindelse)

offentlig ugyldig forbindelseMqtt(MqttConnectOptions muligheder)
Få oprettelsesstatus i henhold til MqttCallbackHandler, og modtag returformularformserveren

2、Opret forbindelse til serveren

@Override
public void connectComplete(boolsk tilslutning igen, StrengserverURI) {
...
}
@Override
offentlig ugyldig forbindelseLost(Årsag, der kan kastes) {
...
}
@Override
offentlig ugyldig meddelelse Ankom(Strengemne, MqttMessage-besked) kaster undtagelse {
...
}

3、Få forbindelsesstatus ved at registrere udsendelsen:

Broadcast HANDLING:MokoConstants.ACTION_MQTT_CONNECTION

Forbindelsesstatus:

  • Forbindelses succes:MokoConstants.MQTT_CONN_STATUS_
    SUCCES
  • Koble fra:MokoConstants.MQTT_CONN_STATUS_LOST

4、Modtag returdata fra serveren ved at registrere udsendelsen

Broadcast HANDLING:MokoConstants.ACTION_MQTT_RECEIVE

Returner data:

  • Retur data Emne:
MokoConstants.EXTRA_MQTT_RECEIVE_
EMNE
  • Retur datameddelelse:
MokoConstants.EXTRA_MQTT_RECEIVE_
BESKED

Returdataene er i JSON-format,f.eks:

{
"firmanavn" : “Moko”,
"produktions dato" : “201801”,
“Produktmodel” : “Plug_one”,
“Firmware_version” : “000001”
“Device_mac” : “11:22:33:44:55:66”
}

2.2.2 Handlingsmonitor

MQTT-kommunikation indeholder fire slags handlinger. At udføre hver handling, skal du indstille ActionListener til at overvåge tilstanden for handlingen:

offentlig enum Handling {
/**
* Forbind handling
**/
OPRET FORBINDELSE,
/**
* Abonner handling
**/
TILMELD,
/**
* Publicer handling
**/
OFFENTLIGGØRE,
/**
* Afmeld handling
**/
OPSIGE ABONNEMENT
}

Få Action-status ved at registrere udsendelsen:

1、OPRET FORBINDELSE

Broadcast HANDLING:MokoConstants.ACTION_MQTT_CONNECTION
Forbindelsen mislykkedes:MokoConstants.MQTT_CONN_STATUS_FAILED

2、TILMELD

Broadcast HANDLING:MokoConstants.ACTION_MQTT_SUBSCRIBE
Abonner emne:MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC
Abonner status:MokoConstants.EXTRA_MQTT_STATE

3、OFFENTLIGGØRE

Broadcast HANDLING:MokoConstants.ACTION_MQTT_PUBLISH
Offentliggør status:MokoConstants.EXTRA_MQTT_STATE

4、OPSIGE ABONNEMENT

Broadcast HANDLING:MokoConstants.ACTION_MQTT_UNSUBSCRIBE
Afmeld status:MokoConstants.EXTRA_MQTT_STATE

2.2.3 Abonner emne

MokoSupport.getInstance().abonnere(Strengemne, int qos)

2.2.4 Offentliggør oplysninger

MokoSupport.getInstance().offentliggøre(Strengemne, MqttMessage-besked)

2.2.5 Afmeld emne

MokoSupport.getInstance().opsige abonnement(
Strengemne)

2.2.6 Bestem, om MQTT er tilsluttet

MokoSupport.getInstance().isConnected()

2.2.7 Afbrydelse

MokoSupport.getInstance().afbrydMqtt()

5.Gem log på SD-kort

SDK integrerer loggen gemt i SD-kortfunktionen, kaldes https://github.com/elvishew/xLog initialiseringsmetode i MokoSupport.getInstance().i det(
getApplicationContext()) Mappenavnet og filnavnet, der er gemt på SD-kortet, kan ændres.

offentlig klasse LogModule {
privat statisk endelig streng TAG = “mokoLife”;// filnavn
privat statisk endelig streng LOG_FOLDER = “mokoLife”;// mappenavn
...
}

Opbevaringsstrategi: gem kun data om dagen og data for dagen før , filen er efterfulgt af.bak

opkaldsmetode:

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