IoT Smart Plug Socket SDK סאַלושאַנז

סמאַרט פּאַג MK102
סמאַרט צאַפּן MK112
סמאַרט סוויטש WS001-3
README.md--יאָס

1. אונטער די MKSDK For Device טעקע איז די SDK צו קאַנפיגיער די קלוג צאַפּן

1.1 אויב איר ווילן צו קאַנפיגיער די MQTT סערווער אינפֿאָרמאַציע און די וויפי אינפֿאָרמאַציע צו פאַרבינדן צו די קלוג צאַפּן, איר דאַרפֿן צו מאַכן די קלוג צאַפּן אין אַפּ מאָדע(ביטע אָפּשיקן צו די MokoLife באַניצער מאַנואַל): צאַפּן די קלוג צאַפּן אין אַ מאַכט כאָלעל, דריקן דעם קנעפּל פֿאַר 10 סעקונדעס ביז די קלוג צאַפּן גראדן בלינק בורשטין ליכט וואָס ינדיקייץ די קלוג צאַפּן אין אַפּ מאָדע(נאטיץ: די צייט צייט פֿאַר אַפּ מאָדע איז 3 מינוט, אַמאָל איר האָבן קאַנפיגיערד די אינפֿאָרמאַציע צו די קלוג צאַפּן, עס וועט סוף אַפּ מאָדע). אַרייַן די Wlan בלאַט און סעלעקטירן דעם סמאַרט צאַפּן האָצפּאָט צו פאַרבינדן, ווען קאַנעקטינג הצלחה, רופן connectDeviceWithHost:פּאָרט
connectSucBlock:connectFailed
בלאַק מעטהאָדס צו פאַרבינדן די קלוג צאַפּן. ווייַטערדיק איז די גאַנץ קאַנפיגיעריישאַן פון די קלוג צאַפּן פּראָצעס:

שריט 1

[[MKSocketManager sharedInstance] connectDeviceWithHost:@"192.168.4.1"
פּאָרט:8266
connectSucBlock:^(NSString *IP, NSInteger פּאָרט) {
//פאַרבינדן הצלחה
connectFailedBlock:^(NSError *טעות) {
//פאַרבינדן ניט אַנדערש
}];

שריט 2

[[MKSocketManager sharedInstance]readSmartPlugDevice
InformationWithSucBlock:^(id returnData) {
//לייענען מיטל אינפֿאָרמאַציע הצלחה
} failedBlock:^(NSError *טעות) {
//לייענען מיטל אינפֿאָרמאַציע ניט אַנדערש
}];

שריט 3

[[MKSocketManager sharedInstance] configMQTTServerHost:@"דיין MQTT סערווירער באַלעבאָס"
פּאָרט:פּאָרט
קאָננעקטמאָדע:mqttServerConnectTCPMode
qos:mqttQosLevelExactlyOnce
בלייב לעבן:60
cleanSession:יאָ
clientId:@"דיין מיטל מעק אַדרעס"
נאמען:@"דיין MQTT סערווירער נאמען"
פּאַראָל:@"דיין MQTT סערווירער פּאַראָל"
sucBlock:^(id returnData) {
//Config הצלחה
}
failedBlock:^(NSError *טעות) {
//קאַנפיגיערד דורכפאַל
}];

שריט 4

[[MKSocketManager sharedInstance] configWifiSSID:דיין וויפי ססיד
פּאַראָל:wifi פּאַראָל
זיכערהייט:wifiSecurity_WPA2_PSK
sucBlock:^(id returnData) {
//Config הצלחה
} failedBlock:^(NSError *טעות) {
//קאַנפיגיערד דורכפאַל
}];

2. די MKSDKForMqttServer טעקע איז די SDK וואָס קאַנפיגיער די אַפּ און MQTTServer

2.1 MKMQTTServerManagerDelegate

@פּראָטאָקאָל MKMQTTServerManagerDelegate

(פּאָסל)mqttServerManagerStateChanged:(MKMQTTSessionManagerState)שטאַט;
//פאַרבינדן שטאַט דעלעגאַט אופֿן

(פּאָסל)sessionManager:(MKMQTTServerManager *)sessionManager didReceiveMessage:(NSData *)דאַטן אויף טעמע:(NSString *)טעמע;//ריסיווז די דאַטן פון די MQTT סערווער

@סוף

2.2 APP פאַרבינדן צו די MQTT סערווער

ווען די נעץ איז בנימצא,רופן [[MKMQTTServerManager sharedInstance] connectMQTTServer:פּאָרט:tls:בלייב לעבן:ריין:
aut:באַניצער:פאָרן:clientId:] צו פאַרבינדן דיין MQTT סערווער.

2.3 אַבאָנירן טעמע

ביטע אָפּשיקן צו די MQTT פּראָטאָקאַל דאָקומענט פֿאַר די טעמע פון ​​די סמאַרט פּלוג.קאַלל - (פּאָסל)סאַבסקריפּשאַנז:(NSAarray *)טעמע רשימה און - (פּאָסל)אַנסאַבסקריפּשאַנז:(NSAarray *)topicList צו אַבאָנירן און אַבאָנירן די טעמע סעפּעראַטלי.

2.4 APP אַרויסגעבן דאַטן צו אַ ספּעסיפיעד טעמע

ביטע אָפּשיקן צו די MQTT פּראָטאָקאַל דאָקומענט פֿאַר די טעמע פון ​​די קלוג צאַפּן. — (פּאָסל)sendData:(NSDictionary *)דאַטע טעמע:(NSString *)טעמע סוקבלאָקק:(פּאָסל (^)(פּאָסל))sucBlock failedBlock:(פּאָסל (^)(NSError *טעות))failedBlock

README.md - אַנדרויד

1.אַרייַנפיר און נוצן SDK

1.1 אַרייַנפיר מאָדולע פּרויעקט מאָקאָסופּפּאָרט

1.2 קאַנפיגיער סעטטינגס.גראַדלע טעקע און רופן מאָקאָסופּפּאָרט פּרויעקט:

אַרייַננעמען ':אַפּ',':מאָקאָסופּפּאָרט'

1.3 רעדאַגירן די build.gradle טעקע פון ​​די הויפּט פּרויעקט:

דיפּענדאַנסיז {
ימפּלאַמענטיישאַן פילעטרעע(dir: 'ליבס', אַרייַננעמען: ['*.jar'])
ימפּלאַמענטיישאַן פּרויעקט(דרך: ': מאָקאָסופּפּאָרט')
}

1.4 אַרייַנפיר SDK בעשאַס פּרויעקט יניטיאַליזיישאַן:

פובליק קלאַס באַסעאַפּפּליקאַטיאָן יקסטענדז אַפּפּליקאַטיאָן { @איבעררייד ציבור פּאָסל אויף שאַפֿן() { super.onCreate(); // יניטיאַליזאַטיאָן MokoSupport.getInstance().אין דעם(
באַקומען אַפּפּליקאַטיאָן קאָנטעקסט()); } }

2.פונקציע הקדמה

  • די מעטהאָדס צוגעשטעלט אין SDK אַרייַננעמען: כאָלעל קאָמוניקאַציע מיט WIFI מיטל, MQTT פֿאַרבינדונג דינסט, דיסקאַנעקשאַן, אַבאָנעמענט טעמע, אַנסאַבסקרייבינג טעמע, פּאָסטן טעמע, קלאָץ רעקאָרד, עטק.
  • סאָקקעט קאָמוניקאַציע איז גערופֿן דורך SocketService;
  • MQTT קאָמוניקאַציע קענען זיין גערופֿן דורך MokoSupport.getInstance();

2.1 SocketService

איידער קריייטינג אַ סאָקקעט קשר, איר דאַרפֿן צו באַשטעטיקן צי די אַפּ איז קאָננעקטעד צו די WIFI פון די מיטל. פאַרבינדן די פעליקייַט IP אַדרעס 192.168.4.1, די פעליקייַט פּאָרט נומער איז 8266, וואָס קענען זיין מאַדאַפייד אין SocketThread.

2.1.1 יניטיאַליזאַטיאָן

bindService(נייַ ינטענט(דאָס, SocketService.class), mServiceConnection, BIND_AUTO_CREATE);

אָנהייב SocketService, און באַקומען די SocketService כייפעץ, רופן mService.startSocket() צו שאַפֿן אַ סאָקקעט פאָדעם, פאַרבינדן די מיטל, און דער פאָדעם ווארטן פֿאַר די אָנזאָג צו זיין געשיקט נאָך די קשר איז געראָטן;

2.1.2 באַקומען קשר סטאַטוס און ענטפער

1. באַקומען די קשר סטאַטוס דורך רעדזשיסטערינג די בראָדקאַסט:

בראָדקאַסט ACTION:MokoConstants.ACTION_AP_CONNECTION
קשר סטאַטוס:
  • קשר מצליח:MokoConstants.CONN_STATUS_SUCCESS
  • קאַנעקטינג:MokoConstants.CONN_STATUS_
    קאַנעקטינג
  • פֿאַרבינדונג ניט אַנדערש:MokoConstants.CONN_STATUS_FAILED
  • קשר צייט:MokoConstants.CONN_STATUS_TIMEOUT

2、באַקומען די סאָקקעט קאָמוניקאַציע ענטפער דורך רעדזשיסטערינג די בראָדקאַסט :

בראָדקאַסט ACTION:MokoConstants.ACTION_AP_SET_DATA_
ענטפער באַקומען אַ ענטפער:
DeviceResponse ענטפער = (Device Response) intent.getSerializableExtra(מאָקאָקאָנסטאַנץ.
EXTRA_AP _SET_DATA_RESPONSE);

2.1.3 כאָלעל

שיקן דאַטן בלויז אַקסעפּץ סטרינגס אין JSON פֿאָרמאַט
למשל:

1、באַקומען מיטל אינפֿאָרמאַציע:

{
"כעדער" : 4001
}

ענטפער:

{
"קאָד" : 0,
"אָנזאָג" : "הצלחה",
"רעזולטאט" : {
"כעדער" : 4001,
"מכשיר_פונקציע" : "iot_plug",
"מכשיר נאָמען" : "plug_one",
"מכשיר_ספּעסיפיקאַטיאָנס" : "אונדז",
"מכשיר_מעק" : “11:22:33:44:55:66",
"מכשיר_טיפּ" : "1"
}
}

2、 שיקן MQTT סערווער אינפֿאָרמאַציע

{
"כעדער" : 4002,
"באַלעבאָס" : "45.32.33.42",
"פּאָרט" : 1883,
"קאָננעקט_מאָדע" : 0,
"באַניצער נאָמען" : "DVES_USER",
"שפּריכוואָרט" : "DVES_PASS",
"בלייב לעבן" : 120,
"קאָס" : 2,
"ריין_סעסיע" :1
}
ענטפער:

{
"קאָד" : 0,
"אָנזאָג" : "הצלחה",
"רעזולטאט" : {
"כעדער" : 4002
}
}

3、שיקן אַ WIFI נעץ מיט אַ ספּעציפיש SSID

{
"כעדער" : 4003,
"wifi_ssid" : "פיטפּאָלאָ",
"wifi_pwd" : "פיטפּאָלאָ 1234.",
"wifi_security" : 3
}

ענטפער:

{
"קאָד" : 0,
"אָנזאָג" : "הצלחה",
"רעזולטאט" : {
"כעדער" : 4003
}
}

2.2 MokoSupport

2.2.1 פאַרבינדן צו די MQTT סערווער

1、שאַפֿן MqttAndroidClient

ציבור פּאָסל קרעאַטקליענט(שטריקל באַלעבאָס, שטריקל פּאָרט, שטריקל clientId, בוליאַן tlsConnection)

ציבור פּאָסל קאָננעקטMqtt(MqttConnectOptions אָפּציעס)
באַקומען די שאַפונג סטאַטוס לויט MqttCallbackHandler און באַקומען די צוריקקומען דאַטן פאָרעם סערווער

2、פאַרבינדן צו די סערווער

@איבעררייד
ציבור פּאָסל קאָננעקט קאָמפּלעטע(בוליאַן ריקאַנעקט, שטריקל סערווערURI) {

}
@איבעררייד
ציבור פּאָסל קשר פאַרפאַלן(טראָואַבאַל סיבה) {

}
@איבעררייד
ציבור פּאָסל אָנזאָג ערייווד(שטריקל טעמע, MqttMessage אָנזאָג) ווארפט ער ויסנעם {

}

3、באַקומען די קשר סטאַטוס דורך רעדזשיסטערינג די בראָדקאַסט:

בראָדקאַסט ACTION:MokoConstants.ACTION_MQTT_CONNECTION

קשר סטאַטוס:

  • קשר הצלחה:MokoConstants.MQTT_CONN_STATUS_
    הצלחה
  • דיסקאַנעקט:MokoConstants.MQTT_CONN_STATUS_LOST

4、באַקומען די צוריקקומען דאַטן פון די סערווער דורך רעדזשיסטערינג די בראָדקאַסט

בראָדקאַסט ACTION:MokoConstants.ACTION_MQTT_RECEIVE

צוריקקומען דאַטן:

  • צוריקקומען דאַטן טעמע:
MokoConstants.EXTRA_MQTT_RECEIVE_
טעמע
  • צוריקקומען דאַטן אָנזאָג:
MokoConstants.EXTRA_MQTT_RECEIVE_
אָנזאָג

די צוריקקער דאַטן זענען אין JSON פֿאָרמאַט,למשל:

{
"פֿירמע נאָמען" : "אַן",
"פּראָדוקציע_דאַטע" : "201801",
"פּראָדוקט_מאָדעל" : "plug_one",
"פירמוואַרע_ווערסיע" : "000001"
"מכשיר_מעק" : “11:22:33:44:55:66"
}

2.2.2 קאַמף מאָניטאָר

MQTT קאָמוניקאַציע כּולל פיר טייפּס פון אַקשאַנז. צו ויספירן יעדער קאַמף, איר דאַרפֿן צו שטעלן ActionListener צו מאָניטאָר די אַקשאַן שטאַט:

ציבור נומער קאַמף {
/**
* קאָננעקט קאַמף
**/
קאָננעקט,
/**
* אַבאָנירן קאַמף
**/
אַבאָנירן,
/**
* אַרויסגעבן קאַמף
**/
PUBLISH,
/**
* אַנסאַבסקרייבינג קאַמף
**/
אַנסאַבסקרייב
}

באַקומען די אַקשאַן סטאַטוס דורך רעדזשיסטערינג די בראָדקאַסט:

1、קאָננעקט

בראָדקאַסט ACTION:MokoConstants.ACTION_MQTT_CONNECTION
פֿאַרבינדונג ניט אַנדערש:MokoConstants.MQTT_CONN_STATUS_FAILED

2、אַבאָנירן

בראָדקאַסט ACTION:MokoConstants.ACTION_MQTT_SUBSCRIBE
אַבאָנירן טעמע:MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC
אַבאָנירן סטאַטוס:MokoConstants.EXTRA_MQTT_STATE

3、PUBLISH

בראָדקאַסט ACTION:MokoConstants.ACTION_MQTT_PUBLISH
אַרויסגעבן סטאַטוס:MokoConstants.EXTRA_MQTT_STATE

4、אַנסאַבסקרייב

בראָדקאַסט ACTION:MokoConstants.ACTION_MQTT_UNSUBSCRIBE
אַנסאַבסקרייבינג סטאַטוס:MokoConstants.EXTRA_MQTT_STATE

2.2.3 אַבאָנירן טעמע

MokoSupport.getInstance().אַבאָנירן(שטריקל טעמע, int qos)

2.2.4 אַרויסגעבן אינפֿאָרמאַציע

MokoSupport.getInstance().אַרויסגעבן(שטריקל טעמע, MqttMessage אָנזאָג)

2.2.5 אַנסאַבסקרייבינג טעמע

MokoSupport.getInstance().אַנסאַבסקרייב(
שטריקל טעמע)

2.2.6 באַשטימען צי די MQTT איז קאָננעקטעד

MokoSupport.getInstance().איז קאָננעקטעד()

2.2.7 דיסקאַנעקשאַן

MokoSupport.getInstance().disconnectMqtt()

5.היט קלאָץ צו סד קאָרט

SDK ינטאַגרייץ די קלאָץ געראטעוועט צו די סד קאָרט פונקציע, איז גערופן https://github.com/elvishew/xLog יניטיאַליזאַטיאָן אופֿן אין MokoSupport.getInstance().אין דעם(
באַקומען אַפּפּליקאַטיאָן קאָנטעקסט()) דער טעקע נאָמען און טעקע נאָמען געראטעוועט אויף די סד קאָרט קענען זיין מאַדאַפייד.

ציבור קלאַס לאָגמאָדול {
פּריוואַט סטאַטיק לעצט שטריקל TAG = "מאָקאָליפע";// טעקע נאָמען
פּריוואַט סטאַטיק לעצט שטריקל LOG_FOLDER = "מאָקאָליפע";// טעקע נאָמען

}

סטאָרידזש סטראַטעגיע: נאָר קראָם די דאַטן פון דעם טאָג און די דאַטן פון דעם טאָג פריער , דער טעקע איז סאַפיקסט מיט.באַק

רופן אופֿן:

LogModule.v("לאָג אינפֿאָרמאַציע");
LogModule.d("לאָג אינפֿאָרמאַציע");
LogModule.i("לאָג אינפֿאָרמאַציע");
LogModule.w("לאָג אינפֿאָרמאַציע");
LogModule.e("לאָג אינפֿאָרמאַציע");