פתרונות SDK של שקע תקע חכם של IoT

פאג חכם MK102
תקע חכם MK112
מתג חכם WS001-3
README.md - IOS

1. מתחת לתיקיה MKSDK למכשירים נמצא ה- SDK להגדרת התקע החכם

1.1 אם ברצונך להגדיר את פרטי שרת MQTT ואת פרטי ה- wifi לחיבור לתקע החכם, אתה צריך להפוך את התקע החכם למצב AP(עיין במדריך למשתמש של MokoLife): חבר את התקע החכם לשקע חשמל, לחץ על הכפתור עבור 10 שניות עד שמחוון התקע החכם יהבהב באור ענבר המציין את התקע החכם למצב AP(הערה: פרק הזמן הקצוב למצב AP הוא 3 דקות, לאחר שתגדיר את המידע לתקע החכם, זה יסתיים במצב AP). כנסו לעמוד Wlan ובחרו את נקודה החמה של התקע החכם לחיבור, כשמתחברים בהצלחה, חייג connectDeviceWithHost:נמל
להתחבר:connectFailed
שיטות חסימה לחיבור התקע החכם. להלן התצורה המלאה של תהליך התקע החכם:

שלב 1

[[MKSocketManager sharedInstance] connectDeviceWithHost:@ ”192.168.4.1 ″
נמל:8266
להתחבר:^(NSString * IP, נמל NSInteger) {
//לחבר הצלחה
- -:^(שגיאת NSError *) {
//התחבר נכשל
}];

שלב 2

[[MKSocketManager sharedInstance]readSmartPlugDevice
InformationWithSucBlock:^(מזהה חזרה נתונים) {
//קרא את הצלחת פרטי המכשיר
} נכשלה:^(שגיאת NSError *) {
//קריאת פרטי המכשיר נכשלה
}];

שלב 3

[[MKSocketManager sharedInstance] configMQTTServerHost:@ "מארח שרת MQTT שלך"
נמל:נמל
connectMode:mqttServerConnectTCPMode
qos:mqttQosLevelExactlyOnce
להשאיר בחיים:60
נקייה:כן
לקוח:@ "כתובת ה- Mac של המכשיר שלך"
שם משתמש:@ "שם המשתמש שלך בשרת MQTT"
סיסמה:@ "סיסמת שרת MQTT שלך"
הצלחה:^(מזהה חזרה נתונים) {
//הגדר הצלחה
}
נכשלה:^(שגיאת NSError *) {
//התצורה נכשלה
}];

שלב 4

[[MKSocketManager sharedInstance] configWifiSSID:ה- ssid שלך
סיסמה:סיסמת wifi
בִּטָחוֹן:wifiSecurity_WPA2_PSK
הצלחה:^(מזהה חזרה נתונים) {
//הגדר הצלחה
} נכשלה:^(שגיאת NSError *) {
//התצורה נכשלה
}];

2. תיקיית MKSDKForMqttServer היא ה- SDK שמגדיר את ה- APP ו- MQTTServer.

2.1 MKMQTTServerManager דלגייט

@protocol MKMQTTServerManagerDelegate

(בָּטֵל)mqttServerManagerStateChanged:(MKMQTTSessionManagerState)מדינה;
//חיבור שיטת נציג המדינה

(בָּטֵל)sessionManager:(MKMQTTServerManager *)sessionManager didReceiveMessage:(NSData *)נתונים onTopic:(NSString *)נוֹשֵׂא;//מקבל את הנתונים משרת MQTT

@סוֹף

2.2 APP מתחברים לשרת MQTT

כאשר הרשת זמינה,שִׂיחָה [[MKMQTTServerManager sharedInstance] connectMQTTServer:נמל:tls:להשאיר בחיים:לְנַקוֹת:
autor:משתמש:לַעֲבוֹר:לקוח:] לחיבור שרת ה- MQTT שלך.

2.3 הירשם לנושא

אנא עיין במסמך הפרוטוקול MQTT בנושא התקע החכם. התקשר - (בָּטֵל)מנויים:(NSArray *)נושא רשימה ו - (בָּטֵל)ביטול המנויים:(NSArray *)נושא ליסט להירשם לביטול המנוי ולביטולו בנפרד.

2.4 APP מפרסם נתונים לנושא מוגדר

אנא עיין במסמך הפרוטוקול MQTT לנושא התקע החכם. - (בָּטֵל)לשלוח נתונים:(NSDictions *)נושא נתונים:(NSString *)נושא:(בָּטֵל (^)(בָּטֵל))נכשלה:(בָּטֵל (^)(שגיאת NSError *))נכשלה

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

1.ייבא והשתמש ב- SDK

1.1 ייבא פרוייקט mokosupport של מודול

1.2 קבע את התצורה של קובץ settings.gradle והתקשר לפרויקט mokosupport:

כלול ':אפליקציה ',':mokosupport '

1.3 ערוך את קובץ build.gradle של הפרויקט הראשי:

תלות {
יישום קובץ(לך: 'ליבים', לִכלוֹל: ['*.קַנקַן'])
פרויקט יישום(נָתִיב: ‘: mokosupport ')
}

1.4 ייבא SDK במהלך אתחול הפרויקט:

BaseApplication בכיתה ציבורית מרחיב את היישום { @Override חלל ציבורי onCreate() { סופר. ליצור(); // אִתחוּל MokoSupport.getInstance().init(
getApplication הֶקשֵׁר()); } }

2.מבוא פונקציה

  • השיטות המסופקות ב- SDK כוללות: תקשורת שקע עם מכשיר WIFI, שירות חיבור MQTT, ניתוק, נושא המנוי, בטל את הרישום לנושא, פרסם נושא, רשומת יומן, וכו.
  • תקשורת Socket נקראת על ידי SocketService;
  • ניתן להתקשר לתקשורת MQTT על ידי MokoSupport.getInstance();

2.1 SocketService

לפני יצירת חיבור Socket, עליך לאשר אם ה- APP מחובר ל- WIFI של המכשיר. חבר את כתובת ה- IP המוגדרת כברירת מחדל 192.168.4.1, מספר היציאה המוגדר כברירת מחדל הוא 8266, אשר ניתן לשנות ב- SocketThread.

2.1.1 אִתחוּל

bindService(כוונה חדשה(זה, SocketService.class), חיבור mService, BIND_AUTO_CREATE);

התחל את SocketService, ולקבל את האובייקט SocketService, התקשר אל mService.startSocket() ליצירת חוט שקע, חבר את המכשיר, והחוט ממתין להישלח ההודעה לאחר שהחיבור יצליח;

2.1.2 קבל מצב ותגובת חיבור

1. קבל את מצב החיבור על ידי רישום השידור:

שידור פעולה:MokoConstants.ACTION_AP_CONNECTION
סטטוס חיבור:
  • החיבור הצליח:MokoConstants.CONN_STATUS_SUCCESS
  • מְקַשֵׁר:MokoConstants. CONN_STATUS_
    מְקַשֵׁר
  • חיבור נכשל:MokoConstants.CONN_STATUS_FAILED
  • פסק זמן לחיבור:MokoConstants.CONN_STATUS_TIMEOUT

2、קבל את תגובת התקשורת Socket על ידי רישום השידור :

שידור פעולה:MokoConstants.ACTION_AP_SET_DATA_
תְגוּבָה קבל תגובה:
תגובה DeviceResponse = (מכשיר תגובה) intent.getSerializableExtra(מוקוקונסטנטים.
EXTRA_AP _SET_DATA_RESPONSE);

2.1.3 שֶׁקַע

שלח נתונים מקבל רק מחרוזות בפורמט JSON
לְמָשָׁל:

1、קבל מידע על מכשירים:

{
"כּוֹתֶרֶת" : 4001
}

תְגוּבָה:

{
"קוד" : 0,
"הוֹדָעָה" : "הַצלָחָה",
"תוֹצָאָה" : {
"כּוֹתֶרֶת" : 4001,
"מכשיר_פונקציה" : "Iot_plug",
"שם התקן" : "Plug_one",
"מפרט מכשיר" : "לָנוּ",
“Device_mac” : "11:22:33:44:55:66”,
"סוג מכשיר" : "1"
}
}

2、 שלח מידע על שרת MQTT

{
"כּוֹתֶרֶת" : 4002,
"מנחה" : "45.32.33.42",
"נמל" : 1883,
"Connect_mode" : 0,
"שם משתמש" : "DVES_USER",
"סיסמה" : "DVES_PASS",
"להשאיר בחיים" : 120,
"Qos" : 2,
"מושב נקי" :1
}
תְגוּבָה:

{
"קוד" : 0,
"הוֹדָעָה" : "הַצלָחָה",
"תוֹצָאָה" : {
"כּוֹתֶרֶת" : 4002
}
}

3、שלח רשת WIFI עם SSID ספציפי

{
"כּוֹתֶרֶת" : 4003,
"Wifi_ssid" : "Fitpolo",
“Wifi_pwd” : "Fitpolo1234.",
"Wifi_security" : 3
}

תְגוּבָה:

{
"קוד" : 0,
"הוֹדָעָה" : "הַצלָחָה",
"תוֹצָאָה" : {
"כּוֹתֶרֶת" : 4003
}
}

2.2 MokoSupport

2.2.1 התחבר לשרת MQTT

1、צור MqttAndroidClient

בטל ציבורי(מארח מחרוזות, נמל מיתרים, מחרוזת לקוח, חיבור bls)

בטל ציבורי(אפשרויות MqttConnectOptions)
קבל את סטטוס היצירה על פי MqttCallbackHandler וקבל את שרת טופס נתוני ההחזרה

2、התחבר לשרת

@ Override
השלמת הריק(התחבר מחדש בוליאני, שרת מיתריםURI) {
...
}
@ Override
חיבור ריק לציבור(סיבה לזריקה) {
...
}
@ Override
הודעה בטל ציבורי הגעת(נושא המיתרים, הודעת MqttMessage) זורק חריג {
...
}

3、קבל את מצב החיבור על ידי רישום השידור:

שידור פעולה:MokoConstants.ACTION_MQTT_CONNECTION

סטטוס חיבור:

  • הצלחה בחיבור:מוקוקונסטנטים. MQTT_CONN_STATUS_
    הַצלָחָה
  • לְנַתֵק:MokoConstants.MQTT_CONN_STATUS_LOST

4、קבל את נתוני ההחזרה מהשרת על ידי רישום השידור

שידור פעולה:MokoConstants.ACTION_MQTT_RECEIVE

החזר נתונים:

  • נושא החזרת נושא:
MokoConstants.EXTRA_MQTT_RECEIVE_
נוֹשֵׂא
  • החזרת הודעה:
MokoConstants.EXTRA_MQTT_RECEIVE_
הוֹדָעָה

נתוני ההחזרה הם בפורמט JSON,לְמָשָׁל:

{
"שם החברה" : "מוקו",
"תאריך ייצור" : "201801",
"דגם מוצר" : "Plug_one",
"Firmware_version" : "000001"
“Device_mac” : "11:22:33:44:55:66”
}

2.2.2 צג פעולה

תקשורת MQTT מכילה ארבעה סוגים של פעולות. לבצע כל פעולה, עליך להגדיר את ActionListener לפקח על מצב הפעולה:

פעולה ציבורית ציבורית {
/**
* חבר פעולה
**/
לְחַבֵּר,
/**
* הירשם לפעולה
**/
להירשם כמנוי,
/**
* פרסם פעולה
**/
לְפַרְסֵם,
/**
* בטל את הרישום לפעולה
**/
להירשם
}

קבל את סטטוס הפעולה על ידי רישום השידור:

1、לְחַבֵּר

שידור פעולה:MokoConstants.ACTION_MQTT_CONNECTION
חיבור נכשל:MokoConstants.MQTT_CONN_STATUS_FAILED

2、להירשם כמנוי

שידור פעולה:MokoConstants.ACTION_MQTT_SUBSCRIBE
הירשם לנושא:MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC
הרשמו סטטוס:MokoConstants.EXTRA_MQTT_STATE

3、לְפַרְסֵם

שידור פעולה:MokoConstants.ACTION_MQTT_PUBLISH
פרסם סטטוס:MokoConstants.EXTRA_MQTT_STATE

4、להירשם

שידור פעולה: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().נתק Mqtt()

5.שמור יומן בכרטיס SD

SDK משלב את היומן שנשמר בפונקציה של כרטיס SD, נקרא https://github.com/elvishew/xLoginitialization method in MokoSupport.getInstance().init(
קבלApplicationContext())ניתן לשנות את שם התיקיה ושם הקובץ שנשמרו בכרטיס ה- SD.

- {
סופי סטטי פרטי מחרוזת TAG = “mokoLife”;// שם קובץ
סופי סטטי פרטי מחרוזת LOG_FOLDER = “mokoLife”;// שם התיקיה
...
}

אסטרטגיית אחסון: שמור רק את הנתונים של היום ואת הנתונים של יום קודם , הקובץ מתווסף עם .bak

שיטת שיחה:

LogModule.v("מידע ביומן");
LogModule.d("מידע ביומן");
LogModule.i("מידע ביומן");
LogModule.w("מידע ביומן");
LogModule.e("מידע ביומן");

שוחח עם מומחה