IoT Smart Plug Socket SDK-løsninger
1. Under MKSDK For Device-mappen er SDK for å konfigurere smart pluggen
1.1 Hvis du vil konfigurere MQTT-serverinformasjonen og wifi-informasjonen for å koble til smartpluggen, du må sette smart pluggen i AP-modus(Se brukerhåndboken for MokoLife): koble smartkontakten til en stikkontakt, trykk på knappen for 10 sekunder til smartpluggindikatoren blinker gult lys som indikerer smartpluggen i AP-modus(Merk: Tidsavbruddsperioden for AP-modus er 3 minutter, når du har konfigurert informasjonen til smart pluggen, AP-modus avsluttes). Gå inn på Wlan-siden og velg smartplugg-hotspot du vil koble til, når du kobler til, ring connectDeviceWithHost:havn
connectSucBlock:tilkobling feilet
Blokkemetoder for å koble til smartpluggen. Følgende er den komplette konfigurasjonen av smart plug-prosessen:
trinn 1
havn:8266
connectSucBlock:^(NSString * IP, NSInteger-port) {
//koble suksess
connectFailedBlock:^(NSError * feil) {
//tilkobling feilet
}];
steg 2
InformasjonWithSucBlock:^(id returnData) {
//Les enhetsinfosuksess
} mislyktes:^(NSError * feil) {
//Lesing av enhetsinformasjonen mislyktes
}];
trinn 3
havn:havn
connectMode:mqttServerConnectTCPMode
qos:mqttQosLevelExactlyOnce
holde i live:60
cleanSession:JA
klient-ID:@ ”Enhetens mac-adresse”
brukernavn:@ ”Ditt MQTT Server brukernavn”
passord:@ ”MQTT Server-passordet ditt”
sucBlock:^(id returnData) {
//Config suksess
}
mislyktes:^(NSError * feil) {
//Konfigurering mislyktes
}];
trinn 4
passord:wifi-passord
sikkerhet:wifiSecurity_WPA2_PSK
sucBlock:^(id returnData) {
//Config suksess
} mislyktes:^(NSError * feil) {
//Konfigurering mislyktes
}];
2. MKSDKForMqttServer-mappen er SDK som konfigurerer APP og MQTTServer
2.1 MKMQTTServerManagerDelegate
@protocol MKMQTTServerManagerDelegate
(tomrom)mqttServerManagerStateChanged:(MKMQTTSessionManagerState)stat;
//koble statsdelegatmetoden
(tomrom)sessionManager:(MKMQTTServerManager *)sessionManager didReceiveMessage:(NSData *)data om emnet:(NSString *)emne;//Mottar dataene fra MQTT-serveren
@slutt
2.2 APP kobles til MQTT-serveren
godkjenning:bruker:sende:klient-ID:] for å koble til MQTT-serveren din.
2.3 Abonner emne
Se MQTT protokaldokumentet for temaet for smart pluggen. Ring - (tomrom)abonnement:(NSArray *)topicList og - (tomrom)avmeldinger:(NSArray *)topicListe for å abonnere og avslutte abonnementet på emnet separat.
2.4 APP publiserer data til et spesifisert emne
Se MQTT protokaldokumentet for emnet smart pluggen. - (tomrom)sendData:(NSDictionary *)dataemne:(NSString *)emne sucBlock:(tomrom (^)(tomrom))sucBlock failedBlock:(tomrom (^)(NSError * feil))mislyktes
README.md - Android
1.Importer og bruk SDK
1.1 Importer modulprosjekt mokosupport
1.2 Konfigurer settings.gradle-filen og ring mokosupport-prosjektet:
inkluderer ‘:app ’,’:mokosupport ’
1.3 Rediger build.gradle-filen til hovedprosjektet:
avhengigheter {
implementering fileTree(til deg: ‘Libs’, inkludere: ['*.krukke'])
implementeringsprosjekt(sti: ‘: mokosupport ’)
}
1.4 Importer SDK under initialisering av prosjektet:
getApplication Kontekst()); } }
2.Funksjon Introduksjon
- Metodene gitt i SDK inkluderer: Stikkontaktkommunikasjon med WIFI-enhet, MQTT-tilkoblingstjeneste, frakobling, abonnementstema, avslutte abonnementet, legg inn emne, loggpost, etc.
- Socket-kommunikasjon kalles av SocketService;
- MQTT-kommunikasjon kan ringes av MokoSupport.getInstance();
2.1 SocketService
Før du oppretter en stikkontakt, du må bekrefte om APP er koblet til WIFI på enheten. Koble til standard IP-adresse 192.168.4.1, standard portnummer er 8266, som kan endres i SocketThread.
2.1.1 Initialisering
bindService(ny hensikt(dette, SocketService.class), mServiceConnection, BIND_AUTO_CREATE);
Start SocketService, og få SocketService-objektet, ring mService.startSocket() for å lage en Socket-tråd, koble til enheten, og tråden venter på at meldingen skal sendes etter at forbindelsen er vellykket;
2.1.2 Få tilkoblingsstatus og svar
1. Få tilkoblingsstatus ved å registrere sendingen:
Tilkoblingsstatus:
- Tilkoblingen var vellykket:MokoConstants.CONN_STATUS_SUCCESS
- kobler til:MokoConstants.CONN_STATUS_
KOBLER TIL - Tilkoblingen mislyktes:MokoConstants.CONN_STATUS_FAILED
- Tidsavbrudd for tilkobling:MokoConstants.CONN_STATUS_TIMEOUT
2、Få Socket-kommunikasjonssvaret ved å registrere sendingen :
RESPONS Få svar:
EXTRA_AP _SET_DATA_RESPONSE);
2.1.3 Stikkontakt
Send data godtar bare strenger i JSON-format
f.eks:
1、Få enhetsinformasjon:
{
"Overskrift" : 4001
}
respons:
{
"kode" : 0,
"beskjed" : "suksess",
"resultat" : {
"Overskrift" : 4001,
“Device_function” : “Iot_plug”,
"enhetsnavn" : “Plug_one”,
“Enhetsspesifikasjoner” : "oss",
“Device_mac” : “11:22:33:44:55:66”,
"Enhetstype" : "1"
}
}
2、 Send MQTT-serverinformasjon
{
"Overskrift" : 4002,
"vert" : “45.32.33.42”,
"havn" : 1883,
“Connect_mode” : 0,
“Brukernavn” : “DVES_USER”,
"passord" : “DVES_PASS”,
"holde i live" : 120,
“Qos” : 2,
“Clean_session” :1
}
respons:
{
"kode" : 0,
"beskjed" : "suksess",
"resultat" : {
"Overskrift" : 4002
}
}
3、Send et WIFI-nettverk med et spesifikt SSID
{
"Overskrift" : 4003,
“Wifi_ssid” : "Fitpolo",
“Wifi_pwd” : “Fitpolo1234.”,
“Wifi_security” : 3
}
respons:
{
"kode" : 0,
"beskjed" : "suksess",
"resultat" : {
"Overskrift" : 4003
}
}
2.2 MokoSupport
2.2.1 Koble til MQTT-serveren
1、Opprett MqttAndroidClient
offentlig ugyldig creatClient(Stringvert, Strengport, String clientId, boolske tls Tilkobling)
public void connectMqtt(MqttConnectOptions-alternativer)
Få opprettelsesstatus i henhold til MqttCallbackHandler og motta skjema server for returdata
2、Koble til serveren
@Overstyring
public void connectComplete(koble til på nytt, Strenger serverURI) {
...
}
@Overstyring
offentlig ugyldig forbindelseTap(Kastbar årsak) {
...
}
@Overstyring
offentlig ugyldig melding Ankommet(Strengemne, MqttMessage-melding) kaster Unntak {
...
}
3、Få tilkoblingsstatus ved å registrere sendingen:
Broadcast ACTION:MokoConstants.ACTION_MQTT_CONNECTION
Tilkoblingsstatus:
- Forbindelsessuksess:MokoConstants.MQTT_CONN_STATUS_
SUKSESS - Koble fra:MokoConstants.MQTT_CONN_STATUS_LOST
4、Motta returdata fra server ved å registrere sendingen
Broadcast ACTION:MokoConstants.ACTION_MQTT_RECEIVE
Returner data:
- Returner data Emne:
EMNE
- Retur data Melding:
BESKJED
Returdataene er i JSON-format,f.eks:
{
"selskapsnavn" : “Moko”,
"produksjonsdato" : “201801”,
“Produktmodell” : “Plug_one”,
“Firmware_version” : “000001”
“Device_mac” : “11:22:33:44:55:66”
}
2.2.2 Handlingsmonitor
MQTT-kommunikasjon inneholder fire typer handlinger. Å utføre hver handling, du må angi ActionListener for å overvåke tilstanden til handlingen:
offentlig enum Handling {
/**
* Koble til handling
**/
KOBLE,
/**
* Abonner på handling
**/
ABONNERE,
/**
* Publiser handling
**/
PUBLISERE,
/**
* Avmeld abonnement
**/
AVSLUTTE ABONNEMENTET
}
Få Action-status ved å registrere sendingen:
1、KOBLE
Broadcast ACTION:MokoConstants.ACTION_MQTT_CONNECTION
Tilkoblingen mislyktes:MokoConstants.MQTT_CONN_STATUS_FAILED
2、ABONNERE
Broadcast ACTION:MokoConstants.ACTION_MQTT_SUBSCRIBE
Abonner emne:MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC
Abonner status:MokoConstants.EXTRA_MQTT_STATE
3、PUBLISERE
Broadcast ACTION:MokoConstants.ACTION_MQTT_PUBLISH
Publiser status:MokoConstants.EXTRA_MQTT_STATE
4、AVSLUTTE ABONNEMENTET
Broadcast ACTION:MokoConstants.ACTION_MQTT_UNSUBSCRIBE
Avslutt statusen:MokoConstants.EXTRA_MQTT_STATE
2.2.3 Abonner emne
MokoSupport.getInstance().abonnere(Strengemne, int qos)
2.2.4 Publiser informasjon
MokoSupport.getInstance().publisere(Strengemne, MqttMessage-melding)
2.2.5 Avslutt emnet
Strengemne)
2.2.6 Bestem om MQTT er koblet til
MokoSupport.getInstance().er sammenkoblet()
2.2.7 Frakobling
MokoSupport.getInstance().koble fra()
5.Lagre logg på SD-kort
getApplicationContext()) Mappenavnet og filnavnet som er lagret på SD-kortet, kan endres.
offentlig klasse LogModule {
privat statisk finale String TAG = “mokoLife”;// filnavn
privat statisk finale String LOG_FOLDER = “mokoLife”;// mappenavn
...
}
Lagringsstrategi: bare lagre data fra dagen og data dagen før , filen er suffiks med.bak
anropsmetode:
LogModule.v(“Logg info”);
LogModule.d(“Logg info”);
LogModule.i(“Logg info”);
LogModule.w(“Logg info”);
LogModule.e(“Logg info”);