
هذه هي المحاولة الثالثة لتكوين صداقات منزلية ذكية مع android ، واسمحوا لي أن أذكرك أن أول محاولة للتحكم في أجهزة android عبر HTTP كانت تستخدم تطبيق Paw Server. سمح هذا التطبيق باستخدام لغة BeanShell لتضمين الشفرة في صفحة xhtml والتفاعل معها أو استلام البيانات أو إدارتها. للتكامل مع خادم المنزل الذكي (
ioBroker ) ، تمت كتابة برنامج تشغيل ، ولكن من أجل التكوين الأول ، كان من الضروري تحميل البرامج النصية يدويًا. علاوة على ذلك ، تم تحديث البرامج النصية من خلال برنامج التشغيل ، مما سمح بإضافة وظائف جديدة وإصلاح الأخطاء ، ولكن أيضًا فرض عدد من القيود في محاولات الابتعاد عن الأساليب المنصوص عليها في Paw Server لتنفيذ وظائف جديدة.
المحاولة الثانية كانت لبناء التطبيق الخاص بك على أساس المصدر من خادم باو. كان الهدف الرئيسي هو تبسيط عملية التكوين للمستخدم ، بالإضافة إلى إضافة ميزات جديدة لا يمكن تنفيذها في الإصدار السابق.
في نفس الإصدار ، تقرر التخلي عن خادم Paw بالكامل وإعادة كتابة التطبيق وبرنامج التشغيل لـ ioBroker. أضف طرق اتصال جديدة ، إلى جانب HTTP الموجود ، أيضًا MQTT. أضف المزيد من الإعدادات لاختيار الأحداث ، سواء من النظام نفسه أو من أجهزة الاستشعار المدمجة. بالطبع ، أول شيء سيتم تحسين التطبيق لـ ioBroker ، ولكن من دون صعوبة كبيرة يمكن دمجها في الأنظمة الأخرى.
جوجل اللعبالتطبيق يتيح لك:
- احصل على حالة إعدادات النظام (سطوع الإضاءة الخلفية ، وحالة الشاشة ، وحجم الصوت ، والبطارية ، وما إلى ذلك)
- تلقي البيانات من المكالمات الواردة ، التعرف على الكلام
- تلقي البيانات من أجهزة استشعار مدمجة.
- الحصول على إحداثيات الموقع.
- الحصول على قائمة التطبيقات المثبتة وإطلاقها.
- إدارة إعدادات النظام (سطوع الإضاءة الخلفية ، مستوى الصوت ، إلخ)
- قم بإجراء المكالمات.
- إنشاء الإخطارات ومربعات الحوار.
- إرسال النص إلى توليف الكلام.
- التفاعل مع تاسكر.
- إرسال الملفات إلى الأجهزة (HTTP فقط).
مظهر

مظهر التطبيق غير نهائي وقد يختلف. أرغب في تغيير أو إضافة الكثير ، ولكن هذا كل شيء مع مرور الوقت.
مع التنقل من خلال التطبيق ، كما أعتقد ، لا ينبغي أن يكون هناك أي صعوبات. عند الإطلاق الأول ، يبلغ التطبيق بإيجاز عن التغييرات الحالية في الإصدار الجديد ويقترح استخدام "المساعد". بالانتقال إلى إعدادات التطبيق ، يمكنك تغيير معلمات التشغيل الأساسية ، وتحديد نوع الاتصال ، وتحديد الأحداث التي سيتم إرسالها إلى الخادم ، وكذلك السماح أو رفض الوصول إلى بعض البيانات (دفتر الهاتف ، الرسائل ، قائمة المكالمات والصور).
على الشاشة الرئيسية ، يمكنك رؤية "التجانبات" ، في حين أن هذه نسخة تجريبية ، لكن مع مرور الوقت أخطط لتوسيع قدراتها. من "البلاط" المتاحة ، في الوقت الحالي ، هناك: زر ، باهتة ، والوقت ، والقائمة ، واللون ، والمعلومات. تتمثل المهمة الرئيسية للبلاطات في إرسال أو استقبال البيانات (الأوامر) من الخادم أو إدارة الأجهزة الأخرى. رغم عدم وجود صورة شاملة لكيفية عمل كل شيء ، لن أصف الآن جميع الفروق الدقيقة.
اتصالات
الآن حول الاتصالات وأوامر التحكم ، يحتوي التطبيق على خيارين للاتصال عبر HTTP و MQTT. كل طريقة لها مزاياها وعيوبها ، أي طريقة اتصال تختارها.
HTTP
تتضمن هذه الطريقة الاتصال عبر شبكة Wi-Fi بشبكة محلية. يقوم التطبيق "برفع" خادم الويب الخاص به (يمكن رؤية عنوان IP والمنفذ في الإشعار عند الاتصال) ويمنح الوصول إلى إدارته. يمكن القيام بذلك إما مباشرة (عبر متصفح) أو بالتكامل مع خادم UD ، من خلال طلبات POST أو GET.


سيتم إرجاع الردود من الطلبات بتنسيق JSON ، ويتم إرسال اسم الجهاز وعنوان IP وحالة الأمر في نص الاستجابة. تطلب بعض الطلبات "رد اتصال" إضافيًا ، على سبيل المثال ، عند إرسال نص إلى توليف الكلام ، سيرسل التطبيق طلبًا إلى الخادم حول بداية التحدث بالنص وإتمامه. بالطريقة نفسها ، ينقل التطبيق بيانات حول الأحداث وقراءات أجهزة الاستشعار المدمجة إلى الخادم. لذلك ، للعمل الكامل ، يجب أن يكون خادم UD قادراً على معالجتها.
MQTT
يتمتع بروتوكول MQTT بشعبية كبيرة ويدعمه أنظمة DD المختلفة ، مما يجعل من السهل دمج التطبيق فيها. عند اختيار طريقة الاتصال هذه ، يمكنك استخدام كل من وسطاء MQTT المحليين والخارجيين.
عند الاتصال بالوسيط MQTT ،
يتم إنشاء الفرع الرئيسي
/ PAW / ، متبوعًا باسم الأجهزة (يجب أن يكون لكل جهاز جهاز خاص به) ، والذي بدوره ينقسم إلى فرعين للموضوع
/ info / و
/ comm / ، يمكنك تخمينه من الاسم الذي ينشر فرع المعلومات (المعلومات) جميع المعلومات الواردة من الجهاز ، ويحتوي فرع comm (command) على موضوعات لإدارتها. يتم ذلك من أجل الوضوح ، من أجل فهم أفضل للموضوع المسؤول عن ماذا.

يوجد أيضًا في الفرع الرئيسي
/ all_devices / يوجد في هذا الفرع موضوعات تشترك فيها جميع الأجهزة ، مما يتيح لك إدارة جميع الأجهزة في وقت واحد.
بالنسبة إلى العالمية ، في هذه المواضيع التي يمكن أن تكون قيمها صحيحة (صواب) أو خاطئة (خطأ) ، يمكن أن تأخذ قيمًا مختلفة ، أي ،
1 ، على ، تلقائي ، القيمة
الحقيقية هي القيمة الحقيقية ، و
0 ، إيقاف ، خطأ ، دليل خطأ . ميزة أخرى للتطبيق هي أنه للتحقق من تنفيذ الأمر ، في حالة التنفيذ الناجح ، يتم نشر قيمة فارغة في نفس الموضوع. وإذا لم تختف القيمة بعد النشر ، فهذا يشير إلى حدوث خطأ أثناء تنفيذ الأمر أو أن القيمة لا تتطابق مع القيمة الصحيحة لهذا الموضوع. على سبيل المثال ، عند تغيير مستوى الصوت ، إذا كانت القيمة لا تتوافق مع الرقم أو تتجاوز الحد الأقصى ، لنوع معين من مستوى الصوت ، فسوف تُرجع خطأ.
أيضًا في هذا الإصدار ، تم توسيع مجموعة أوامر الإشعارات و "مربعات الحوار" ، فهي تتيح لك عرض معلومات أكثر تفصيلًا ، وكذلك التفاعل مع المستخدم إذا تم استخدام الجهاز كمخبر. عند إنشائها ، يلزم عدد كبير من المعلمات ، لذلك ، من الضروري نشر القيمة بتنسيق JSON في الموضوع المناسب.
بالنسبة إلى موضوع الإشعارات
/ comm / الإعلام / create (فيما يلي مثال على القيمة)
{ "noti":"Any text", "title":"Title 2", "info":"Any text", "vibrate":true, "sound":true, "light":true, "id":2 }
من أجل موضوع "مربعات الحوار"
/ comm / الإخطار / التنبيه . تأتي استجابة "مربعات الحوار" بتنسيق JSON ويتم نشرها في الموضوع
/ info / alert / response { "alert":"Turn the lights off?", "title":"Light", "negative":"No", "positive":"Yes", "neutral":"Neutral", "sound":true, "id":2 }
التكامل IoBroker

بتضمين القدرة على العمل من خلال بروتوكول MQTT في التطبيقات ، أردت فقط تبسيط التكامل مع النظام والتخلص من كتابة برنامج تشغيل منفصل. لكن لا يمكن تنفيذ بعض الوظائف من خلال بروتوكول MQTT ، ولهذا السبب لا يمكن الاستغناء عن برنامج التشغيل.
يشبه هيكل كائنات برنامج التشغيل هيكل MQTT ، وينقسم أيضًا إلى فرعين
/ info / و
/ comm / ، ولديه أوامر مماثلة للإدارة ونفس رد الفعل على البيانات غير الصحيحة. لن أصف إعدادات برنامج التشغيل والتشغيل هنا ، وسيتم تحديث جميع المعلومات الحالية على
جيثب .
ملاحظات
بالنسبة لإدارة إعدادات النظام (التحكم في سطوع الإضاءة الخلفية ، الاستيقاظ من النوم ، وما إلى ذلك) ، سوف تتفاعل الأجهزة المختلفة بشكل مختلف أو لا تتفاعل مع الأوامر. نظرًا للتنوع الكبير من الأجهزة ، إصدارات SDK ، البرامج الثابتة ، من الصعب تعيين نموذج سلوك واحد لكل أمر. تحتاج هنا إلى تحديد الإجراء وفقًا لجهازك ، على سبيل المثال ، بالنسبة لمعظم الأجهزة لإيقاف تشغيل الشاشة (إرساله إلى النوم) ، يكفي تغيير وقت مهلة الإضاءة الخلفية ، لكن هذا لن ينجح في بعض الأجهزة. نفس الموقف مع إعدادات النظام الأخرى ، بالنسبة لمعظم الأجهزة ، ستحدث التغييرات فورًا ، ولكن بالنسبة إلى الأجهزة الأخرى ، من الضروري إرسال الجهاز إلى النوم ومن ثم إيقاظه حتى تصبح التغييرات نافذة المفعول. تنشأ أصغر مشكلات من هذا النوع مع SDK 19 (Android 4.4) ، لكن هذا ليس دقيقًا.) أيضًا ، لا تنس أن هناك دعمًا لـ Tasker ، وإذا كنت تفتقر إلى وظيفة ، فيمكنك إضافتها والتفاعل من خلال التطبيق.