IoT Smart Plug Socket SDK Solutions

الصلصال الذكية MK102
التوصيل الذكي MK112
التبديل الذكي WS001-3
README.md - IOS

1. أسفل مجلد MKSDK For Device يوجد SDK لتكوين القابس الذكي

1.1 إذا كنت تريد تكوين معلومات قطع MQTT ومعلومات wifi للاتصال بالقابس الذكي,تحتاج إلى جعل المكونات الذكية في وضع AP(يرجى الرجوع إلى دليل مستخدم MokoLife):قم بتوصيل القابس الذكي بمقبس الطاقة,اضغط على الزر 10 ثوانٍ حتى يومض مؤشر القابس الذكي باللون الكهرماني الذي يشير إلى القابس الذكي في وضع AP(ملحوظة:فترة المهلة لوضع AP هي 3 الدقائق,بمجرد تكوين المعلومات على القابس الذكي,سينهي وضع AP).أدخل صفحة Wlan وحدد نقطة اتصال المكونات الذكية للاتصال ,عند الاتصال بنجاح,استدعاء connectDeviceWithHost:ميناء:connectSucBlock:طرق connectFailedBlock لتوصيل القابس الذكي ، فيما يلي التكوين الكامل لعملية القابس الذكي:

الخطوة 1

[[إدارة MKSocketManager] connectDeviceWithHost:@”192.168.4.1″
ميناء:8266
connectSucBlock:^(NSString * IP, منفذ NSInteger) {
//ربط النجاح
connectFailedBlock:^(خطأ NSError *) {
//فشل الاتصال
}];

الخطوة 2

[[إدارة MKSocketManager] readSmartPlugDeviceInformationWithSucBlock:^(معرف البيانات) {
//قراءة معلومات الجهاز بنجاح
} فشل بلوك:^(خطأ NSError *) {
//فشل قراءة معلومات الجهاز
}];

الخطوه 3

[[إدارة MKSocketManager] configMQTTServerHost:@”مضيف خادم MQTT”
ميناء:ميناء
connectMode:mqttServerConnectTCPMode
جودة الخدمة:مرة واحدة فقط
حافظ على حياتك:60
تنظيف الدورة:نعم
معرف العميل:@”عنوان ماك جهازك”
اسم المستخدم:@”اسم مستخدم خادم MQTT الخاص بك”
كلمه السر:@”كلمة مرور خادم MQTT”
سوكبلوك:^(معرف البيانات) {
//نجاح التكوين
}
فشل بلوك:^(خطأ NSError *) {
//فشل التكوين
}];

الخطوة 4

[[إدارة MKSocketManager] configWifiSSID:شبكة wifi الخاصة بك
كلمه السر:كلمة السر واي فاي
الأمان:wifiSecurity_WPA2_PSK
سوكبلوك:^(معرف البيانات) {
//نجاح التكوين
} فشل بلوك:^(خطأ NSError *) {
//فشل التكوين
}];

2. مجلد MKSDKForMqttServer هو SDK الذي يقوم بتكوين التطبيق و MQTTServer

2.1 MKMQTTServerManagerDelegate
protocol MKMQTTServerManagerDelegate

(باطل)تغيرت mqttServerManagerState:(MKMQTTSessionManagerState)حالة;//ربط طريقة مندوب الدولة

(باطل)جلسة مدير:(MKMQTTServerManager *)SessionManager didReceiveMessage:(NSData *)البيانات على مدار:(NSString *)موضوع;//يستقبل البيانات من خادم MQTT

@النهاية

2.2 يتصل التطبيق بخادم MQTT
عندما تكون الشبكة متاحة,مكالمة [[MKMQTTServerManager sharstancestance] connectMQTTServer:ميناء:TLS:حافظ على حياتك:نظيف:المصادقة:المستعمل:البشري:معرف العميل:] لتوصيل خادم MQTT الخاص بك.

2.3 اشترك في الموضوع
يرجى الرجوع إلى مستند MQTT الأولي لموضوع القابس الذكي – (باطل)الاشتراكات:(NSArray *)الموضوع والقائمة – (باطل)إلغاء الاشتراك:(NSArray *)topicList للاشتراك وإلغاء الاشتراك في الموضوع بشكل منفصل.

2.4 ينشر APP البيانات إلى موضوع محدد
يرجى الرجوع إلى مستند MQTT الأولي لموضوع القابس الذكي. – (باطل)إرسال البيانات:(NSDictionary *)موضوع البيانات:(NSString *)موضوع سوكبلوك:(باطل (^)(باطل))فشل سوكبلوك:(باطل (^)(خطأ NSError *))فشل بلوك

README.md - Android

1.استيراد واستخدام SDK

1.1 استيراد mokosupport مشروع الوحدة النمطية

1.2 تكوين ملف settings.gradle ومشروع دعم mokosupport:

تضمن ':تطبيق',":دعم mokosupport’

1.3 قم بتحرير ملف build.gradle للمشروع الرئيسي:

التبعيات {
ملف التنفيذ(لك: "ليبس", تتضمن: ['*.إناء'])
مشروع التنفيذ(مسار: ": دعم mokosupport ")
}

1.4 استيراد SDK أثناء تهيئة المشروع:

BaseApplication الطبقة العامة يمتد التطبيق {
@تجاوز
الفراغ العام onCreate() {
إنشاء();
// التهيئة
MokoSupport.getInstance().فيه(getApplicationContext());
}
}

2.مقدمة الوظيفة

    • تتضمن الأساليب المتوفرة في SDK: اتصال مأخذ التوصيل مع جهاز WIFI, خدمة اتصال MQTT, انقطاع, موضوع الاشتراك, موضوع إلغاء الاشتراك, موضوع آخر, سجل السجل, إلخ.
    • يتم استدعاء اتصال مأخذ التوصيل بواسطة SocketService;
    • يمكن استدعاء MQTT بواسطة MokoSupport.getInstance();

2.1 SocketService

قبل إنشاء اتصال Socket, تحتاج إلى تأكيد ما إذا كان التطبيق متصل بشبكة WIFI للجهاز. قم بتوصيل عنوان IP الافتراضي 192.168.4.1, رقم المنفذ الافتراضي هو 8266, والتي يمكن تعديلها في SocketThread.

2.1.1 التهيئة

ربط الخدمة(نية جديدة(هذه, 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_CONNECTING
    • فشل الاتصال:MokoConstants.CONN_STATUS_FAILED
    • انتهى وقت محاولة الاتصال:MokoConstants.CONN_STATUS_TIMEOUT

2、احصل على استجابة اتصالات Socket بتسجيل البث :

ACTION البث:MokoConstants.ACTION_AP_SET_DATA_RESPONSE

احصل على رد:

استجابة DeviceResponse = (استجابة الجهاز) intent.getSerializableExtra(MokoConstants.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,
“جودة الخدمة” : 2,
“الدورة النظيفة” :1
}
استجابة:

{
“الشفرة” : 0,
“رسالة” : “نجاح”,
“نتيجة” : {
“العنوان” : 4002
}
}

3、أرسل شبكة WIFI مع SSID محدد

{
“العنوان” : 4003,
“wifi_ssid” : “Fitpolo”,
“wifi_pwd” : “1234.”,
“wifi_security” : 3
}

استجابة:

{
“الشفرة” : 0,
“رسالة” : “نجاح”,
“نتيجة” : {
“العنوان” : 4003
}
}

2.2 MokoSupport

2.2.1 الاتصال بخادم MQTT
1、إنشاء MqttAndroidClient

العملاق creatClient الفراغ(مضيف السلسلة, منفذ السلسلة, معرف عميل السلسلة, tls المنطقية)

2、اتصل بالخادم

connectMqtt الفراغ العام(خيارات MqttConnectOptions)
احصل على حالة الإنشاء وفقًا لـ MqttCallbackHandler واستقبل خادم نموذج بيانات الإرجاع

@تجاوز
ربط الفراغ العام(إعادة الاتصال المنطقي, سلسلة الخوادم) {

}
@تجاوز
اتصال الفراغ العام(سبب رمي) {

}
@تجاوز
رسالة باطلة عامة(موضوع السلسلة, رسالة MqttMessage) يلقي استثناء {

}

3、احصل على حالة الاتصال عن طريق تسجيل البث:

ACTION البث:MokoConstants.ACTION_MQTT_CONNECTION

حالة الإتصال:

    • نجاح الاتصال:MokoConstants.MQTT_CONN_STATUS_SUCCESS
    • قطع الاتصال:MokoConstants.MQTT_CONN_STATUS_LOST

4、استقبال البيانات المرتجعة من الخادم عن طريق تسجيل البث

ACTION البث:MokoConstants.ACTION_MQTT_RECEIVE

إرجاع البيانات:

    • إرجاع البيانات الموضوع:

MokoConstants.EXTRA_MQTT_RECEIVE_TOPIC

    • إرجاع رسالة البيانات:

MokoConstants.EXTRA_MQTT_RECEIVE_MESSAGE

بيانات الإرجاع بتنسيق JSON,على سبيل المثال:

{
“اسم الشركة” : “موكو”,
“تاريخ الإنتاج” : “201801”,
“موديل المنتج” : “plug_one”,
“نسخة برنامج ثابت” : “000001”
“device_mac” : “11:22:33:44:55:66”
}

2.2.2 رصد العمل
يحتوي اتصال MQTT على أربعة أنواع من الإجراءات. لتنفيذ كل إجراء, أنت بحاجة إلى تعيين ActionListener لمراقبة حالة الإجراء:

عمل التعداد العام {
/**
* ربط العمل
**/
الاتصال,
/**
* الاشتراك في العمل
**/
الإشتراك,
/**
* نشر الإجراء
**/
ينشر,
/**
* إجراء إلغاء الاشتراك
**/
غير مشترك
}

احصل على حالة الإجراء بتسجيل البث:

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、ينشر

ACTION البث:MokoConstants.ACTION_MQTT_PUBLISH

حالة النشر:MokoConstants.EXTRA_MQTT_STATE

4、غير مشترك

ACTION البث:MokoConstants.ACTION_MQTT_UNSUBSCRIBE

حالة إلغاء الاشتراك:MokoConstants.EXTRA_MQTT_STATE

2.2.3 اشترك في الموضوع

MokoSupport.getInstance().الإشتراك(موضوع السلسلة, عدد Qos)

2.2.4 نشر المعلومات

MokoSupport.getInstance().ينشر(موضوع السلسلة, رسالة MqttMessage)

2.2.5 موضوع إلغاء الاشتراك

MokoSupport.getInstance().إلغاء الاشتراك(موضوع السلسلة)

2.2.6 تحديد ما إذا كان MQTT متصل

MokoSupport.getInstance().متصل()

2.2.7 الانفصال

MokoSupport.getInstance().قطع الاتصال()

3.حفظ السجل على بطاقة SD
يدمج SDK السجل المحفوظ في وظيفة بطاقة SD, يسمى https://github.com/elvishew/xLog

طريقة التهيئة في MokoSupport.getInstance().فيه(getApplicationContext())

يمكن تعديل اسم المجلد واسم الملف المحفوظ على بطاقة SD.

LogModule الطبقة العامة {
السلسلة النهائية الخاصة الثابتة “mokoLife”;// اسم الملف
السلسلة النهائية الثابتة الخاصة LOG_FOLDER = “mokoLife”;// إسم الملف

}

استراتيجية التخزين: تخزين بيانات اليوم وبيانات اليوم السابق فقط , الملف مُلحق بـ .bak

طريقة الاتصال:

LogModule.v(“معلومات السجل”);
LogModule.d(“معلومات السجل”);
LogModule.i(“معلومات السجل”);
LogModule.w(“معلومات السجل”);
LogModule.e(“معلومات السجل”);