تأملات في بيان مطور الأنظمة الذكية

قبل أيام قليلة ، قرأت مقالًا ممتازًا ، "بيان مطور الأنظمة الذكية: 15 مبدأًا"


قررت أن أشارك أفكاري حول الطبقة أدناه ، وهي المبادئ الأساسية للهندسة المعمارية ، والتي تتوافق بشكل أساسي مع المبادئ المقترحة.


بسبب طبيعة الصيام ، سيكون أكثر ذاتية من البيان.


أولاً ، دعنا نتعامل مع عدة مصطلحات ، على سبيل المثال ، مطور ومستخدم الأنظمة الذكية. من هو هذا وأين يحدث الانفصال؟


هناك 2 النقيضين واضحة: صانع التبديل الذكية التي تم شراؤها وزوجتي ، التي تضيء الضوء. ولكن إلى من أأخذ ابنه أو ابني ، الذي يأخذ أحيانًا ويحصل على ESP32 لحام زوج من المستشعرات والأزرار وشرائط LED الأخرى ، والتي تتفاعل أيضًا مع نفس المحول؟


ولكن حتى لو وجهنا أعيننا إلى البائع ، فإن الأمر ليس واضحًا تمامًا. ساوضح. واضح للغاية: جميع الأجهزة من نفس الشركة المصنعة ، المحور هو أيضا له ، والتطبيق في هواتفه الذكية هو مطور نظام ذكي. ولكن ماذا لو العديد من البائعين على نفس الشبكة؟ ولكن ماذا لو كان المركز الرئيسي لأحدهم ، وجهاز الآخر ، والسحابة التي أتفاعل معها ، مثل Siri ، هو Apple على الإطلاق؟ إلى أي منهم يتم توجيه البيان ، أي منهم هو نفس المطور؟ أعتقد أن النزول إلى ما دون مستوى التجريد العالمي للبيان ، والذي ، بالمناسبة ، أشارك بشكل كامل تقريبًا ، ينبغي أن يقدم فصلًا وظيفيًا أعمق ، وإلا فإن المسؤولية الجماعية عن تجربة المستخدم ستؤدي إما إلى عدم المسؤولية الجماعية التي نلاحظها الآن بدرجة أو بأخرى ، أو في حاوية صلبة من الأنظمة الإيكولوجية مع تكامل على مستوى المستخدم: أي منكم لديه أكثر من تطبيق لإدارة المنزل الذكي على هاتفك؟


أقترح الفصل التالي للكائنات: الأجهزة الطرفية ، لوحات الوصل ، البوابات ، سحب البيانات ، خدمات التكامل ، واجهات المستخدم.


المواضيع (مثل الأدوار) ، على سبيل المثال ، المستخدمون ، أو أدوات التخصيص ، أو المطورون ، أو المصنعون ، أو الموردون ، موجودة في سياق هذه الكائنات.


إنهم ينشئون ويشكلون نظامًا يوفر وظائفه من خلال تبادل البيانات.


في مزيد من التفاصيل في هذا المنشور ، سأركز فقط على الأشياء.


نهاية الأجهزة


نعم ، وهنا سؤال مضحك إلى حد ما. ما هو الجهاز النهائي ، أي "الشيء" ذاته في إنترنت الأشياء؟


من خلال مكنسة كهربائية ذكية ، كل شيء واضح: لقد انسحبوا من الصندوق ووصلوا قاعدته بمأخذ للتيار الكهربائي ، تخلص من ذلك ، وذهب ووضع تراكبًا من السجاد الأبيض مع إبداع حيواناتك الأليفة مجانًا وذهب لتوجيه الاتهام إليه. ولكن بالفعل مع المصباح الكهربائي ، الغريب ، فإنه ليس بهذه البساطة.


الآن أنظر إلى الثريا الخاص بي بعدة مصابيح ، أديرها بثلاثة مفاتيح مختلفة (بشكل منفصل ، وليس كتنشيط لرؤوس حربية نووية) ، في الواقع ، باهتة على سكة DIN في اللوحة. هنا ، بكلمة "الشيء" ، يبدو أننا نعني المشغل النهائي ، ولكن الشيء المضحك هو أن هذا باهتة متعددة القنوات وأنا لا أتذكر أي من الثريات الأخرى التي تتحكم فيها أيضًا ، لذلك هنا هو الجهاز ، ولكن ليس كل شيء ، ولكن جزءًا فقط. ولكن في نفس الوقت ، فإن عبارة الزوجة "إطفاء النور" بديهية.


أنصح القراء بإيجاد "الشيء" في حزمة أخرى: وحدة تحكم بالغرفة (ترموستات) ، تتحكم في رؤوس الرادياتير (تسخين) من خلال قناة واحدة من 8 قنوات PWM ، وتبرد من خلال إحدى القنوات 4 من مشغل القناة 0-10V ، والذي يضبط بالفعل على مصراع ثابت تدفق الهواء في القناة.


لقد فكرت في الصعود إلى مستشارية قاسية وتقديم تعريف دقيق "للأشياء" في هذا السياق ، لكن دعنا نتحدث عن الأجهزة النهائية من حيث وظيفتها ، وعددها وكيفية تفاعلها سيتم تركها خارج الأقواس في الوقت الحالي.


ثم "بديهي جعله أكثر دفئًا" أو "تشغيل وضع الاقتصاد عندما نغادر" هو واضح تمامًا.


محاور


في ضوء الأفكار السابقة حول ماهية الأشياء ، تعد المحاور أساسًا مصنعًا لأشياء افتراضية أكثر. إنه المحور الذي يمكن أن ينشئ ترموستات عندما يكون هناك بالفعل مستشعرات للحرارة ورؤوس مشعات. يمكنه إنشاء جهاز "كل العالم" ، يمكن إيقاف تشغيله. إنه أمر مضحك ، لكن المحور يمكن أن يكون ظاهريًا تمامًا ، على سبيل المثال ، في EIB أو KNX ، المفهوم الأساسي هو عنوان المجموعة: يرسل المستشعر البيانات إليه ، ويتلقى المشغل عنوان مجموعة واحد أو أكثر لكل وظيفة. وهكذا ، إذا كان لديك عند الخروج من الشقة رمز تبديل يرسل إلى حالة 1/1/1 ، وفي كل من المشغلات المسؤولة عن الضوء تكون موجودة (إلى جانب أكثر فردًا ، على سبيل المثال ، 1/0 / 11 ، 1/0/12 ، وما إلى ذلك) سيكون لديك مثل هذا الجهاز "إيقاف تشغيل العالم كله" دون أجهزة فعلية إضافية.


في هذا المثال ، يكون المحور هو الشبكة نفسها ، وفي حالات أخرى غالبًا ما يوجد المحور في العالم المادي كجهاز فعلي منفصل ، ولكن يمكنك إعطاء مثال جيد آخر على لوحة وصل "غير مادية للغاية" - وهذا هو Node-RED.


أطلب منك أن تولي اهتمامًا خاصًا لحقيقة أنني لا أقول عن قصد كيف تدفقات البيانات من الأجهزة الموجودة بالفعل إلى هذا المحور بالذات وكيف تتدفق من ذلك إلى أجزاء أخرى من النظام. كائنات النظام الأخرى - العبّارات - مسؤولة عن هذه الوظيفة.


بوابات


لقد حدث أنه خلال الأربعين إلى الخمسين عامًا الماضية ، تم إنشاء الكثير من الشبكات التي تختلف في الطوبولوجيا ومستوى التجريد (مع بروتوكولاتها الخاصة) ، والتي يمكن أن تكون بطريقة أو بأخرى جزءًا من نظام إنترنت الأشياء. لتوصيل شبكتين ، يتم إنشاء عقدة تبادل حركة المرور ، إذا قامت هذه العقدة بتعبئة جميع البيانات الخاصة ببروتوكول واحد إلى آخر ، فمن المعتاد أن نسميها نفقًا ، حيث من ناحية أخرى يمكنك الحصول على الدفق بالكامل للعمل معه كما لو كان محليًا ، في حالة حدوث استبدال التجريد ، ثم تسمى هذه العقدة بوابة.


نظرًا لأننا نتقن المصطلحات في هذا المنشور ، فلنستخدم مصطلح العبارة ونقضي مزيدًا من الوقت في التحليل من أين وأين توجد بالفعل عبّارة الأجهزة الموجودة بالفعل. قام كل من عمل مع أنظمة التحكم في العمليات إن عاجلاً أو آجلاً بتوسيع الشبكات "المركزية" بشبكات إضافية ، على سبيل المثال ، تم توصيل الكثير من الأمتار إلى Profibus على Modbus.


هذه حالة جيدة جدًا ولا يمكنك إيقافها كثيرًا ، لكن إلى أين يمكن قفل بوابة Xiaomi Mijia متعددة الوظائف؟ أود أن أقول ذلك من ZigBee إلى Wi-Fi ، لكن هذا ليس صحيحًا تمامًا. نعم ، توجد شبكة ZigBee على جانب واحد من البوابة ، ولكن حتى لو قمت بتوصيل جهاز تابع لجهة خارجية ، فلن تتمكن من الوصول إليه من خلال هذه البوابة. توجد شبكة Wi-Fi على الجانب الآخر من البوابة ، لكن البوابة لا توفر فقط الاتصال عبر الشبكة المحلية عبر البروتوكول (والذي كان يطلق عليه بروتوكول miIO من قِبل المتسللين) ، ولكن أيضًا مع شبكة Xiaomi ، والتي تضمن تشغيل تطبيق Mi Home عند مغادرة الشبكة المحلية. هناك بوابة أخرى مثيرة للإهتمام وهي Samsung SmartThings ، ولكن هناك صعوبات.


قبل أن كان هناك سؤال لماذا Groovy بكل تنوعها ، والآن أود أن أسمي صعوبة العطاء إلى الغيوم.


سأشرح موقفي ، على أمل أن أكون مخطئًا. عند إنشاء جهاز جديد متوافق مع نظام Samsung SmartThings ، يمكنك اختيار خيارين: الاتصال بلوحة وصل ، أو مباشرة إلى مجموعة النظراء ، إذا كنت ترغب في إنشاء التشغيل الآلي ، الجهاز الذي قمت بتسمية الجهاز الذي أنشأته لوحة الوصل أعلاه ، فقد انتقل إلى السحابة. النقطة. وهذا هو ، هناك انتهاك للبيان. لن تشعل الضوء في المرحاض إذا لم يعمل الإنترنت من أجلك ، إما من خلال التطبيق (على ما يبدو ، لم تعد هناك آمال محلية ، بناءً على المخطط في مقال IoT و Tizen IoT ) ، ولا محليًا من مستشعر الحركة لشبكة أخرى ، لأنك بحاجة إلى دمج الجهاز وليس شبكة - خلاف ذلك من خلال السحابة.


أولئك الذين تمكنوا من العمل مع Tizen IoT ، تصحيح لي ، من فضلك.


هناك موقف مشابه يتمثل في لوجيتك هارموني ، الذي قطع الأتمتة المحلية بعد التحديث.


إذا تجاهلنا بوابات نوع "شبكة الأتمتة - شبكة الأتمتة" ، فإن أهم شيء في تشغيل البوابة هو التجريد المستهدف ، والذي يترجم فيه عرض الأجهزة من الشبكة الأساسية ، ويتم تحديد ذلك بالفعل بواسطة سحب البيانات.


السحب البيانات


هذا هو الشيء الأكثر وضوحًا والأكثر وضوحًا في النظام في نفس الوقت. وظائفه والحاجة إليه واضحة ، ولكن كيف يتم تنفيذ هذا المكون بدقة هو الأقل وضوحًا ولا يعتمد على رغبات المستخدم النهائي.


لذلك ، أنا بدلاً من ذلك ملء هذا الجزء من قائمتي الشخصية والأفكار.


من الجيد أن يكون هناك واجهة برمجة تطبيقات مفهومة وواجهة بسيطة ، بل إنه أفضل عندما تكون واجهة برمجة التطبيقات هذه مفتوحة وتصل إليها فقط.


هنا سأبدي تحفظا على البساطة. البساطة ، إن لم يكن التحدث عن الرياضيات ، هي ذاتية من حيث المبدأ. يعتمد رأيي الشخصي على تجربتي ورغباتي. بالطبع ، بالنسبة لشركة تطلق منتجًا معينًا بمئات الآلاف من البساطة ، فهي مختلفة تمامًا.


أريد مني أن أكون قادرًا على نسج نتائج هوايتي في العالم المحيط بي. ما هو المطلوب لهذا؟


المورد الحد الرئيسي هو الوقت ، والثاني هو المعرفة ، والثالث هو المال. إذا لم أستطع صنع جهاز يعمل بطريقة ما عبر السحابة في يوم واحد ، فسيتم ذلك "لاحقًا" ، طالما أنه مرادف لـ "Mayy Chumorrow" و "Magnyana". الآن ، إذا كان يعمل بطريقة ما ، ثم بعد بضعة أيام عطلة ، ربما ستعمل كما يجب. IoT متعدد التخصصات بطبيعته ، وهنا تحتاج إلى رفع بعض خوادم OAuth2 ، وإضافة شهادات إليه ، وتنفيذ API ، ويتم كل ذلك لجعل متحكم منزلي الصغير مع مساعد صوت ، والذي سأكتب عنه في الجزء التالي.


كانت الأفكار السابقة أكثر حول "كيف؟" ، لكن المشكلة الأقل أهمية (هذا ليس تحديًا ، أي المشكلة) تكمن في "ماذا؟".


أود أن أقسم جميع سحابات البيانات الرئيسية التي يمكن استخدامها لإنترنت الأشياء إلى فئتين: نقاط البيانات والقدرات.


سحابة من نقاط البيانات . هذا إما تطور موازٍ مع عالم SCADA ، أو سليل مباشر.


هنا لديك قراءات جهاز استشعار درجة الحرارة - حسنًا ، دعنا نكتبها في مكان ما في السحابة ، حيث يحتاج الشخص إلى قراءتها. يوجد مستشعر درجة الحرارة على البطارية ، مما يعني أنك لا تزال بحاجة للحفاظ على مستوى الشحن - لا يهم ، انظر أعلاه. هناك فئات كاملة من السحب تتيح لك القيام بذلك. يمكن التعرف عليها بسهولة إذا كان البروتوكول الرئيسي هو MQTT (ولكن يمكن أن يكون كل من CoAP و STOMP). شيء رائع - أنا شخصياً استخدمه وليس فقط في إنترنت الأشياء ، واصفًا إياه بـ "انتصار الحرية على المنطق السليم". انها مجرد أن البروتوكولات مرنة لدرجة أن الجميع يحل نفس المشكلة بطريقتهم الخاصة.


سحابة من البيانات في شكل فرص . أعترف ، قبل حوالي 8-9 سنوات ، عندما كنت أكتب الإصدار التالي من النظام الأساسي المنزلي الخاص بي ، أردت أخذ وتصنيف الكائنات في النظام. بحيث يفهم النظام أن هذا المصباح الكهربائي ، وهذا هو التبديل ، وهذا هو صمام. التكرار الأول الواضح: قائمة الأنواع (ولكن في فصول الواقع ، لأن OOP هو نفسه). بعد ذلك يظهر مفتاح ، ولكن على البطارية تعمل طاقة OOP - لذا فقد ورثنا وحصلنا على واحد جديد. ثم اتضح أن البطارية يمكن أن تكون أي شيء. ثم كان لا بد من تقطيع ليس إلى شجرة من فئات الجهاز ، ولكن لتقسيم إلى "قدرات" الأجهزة ، والجمع بين الذي نحصل عليه التبديل.


هذه هي الطريقة التي تعمل بها Apple HomeKit و Alexa و Google وغيرها من النظم الإيكولوجية السحابية للمنازل الذكية. يبدو أنه هو السعادة.


ولكن ، كما قلت أعلاه ، لقد استخدمت هذا النهج منذ 8-9 سنوات. وحددت هذه الميزات ذاتها بنفسي ، كنت أرغب في إضافة كاميرا IP أو Asterisk PBX؟ عظيم انتهيت ويعمل.


ولكن هنا يكمن سوء الحظ ، فالنظم الإيكولوجية السحابية للمنازل الذكية المذكورة أعلاه هي في الواقع أنظمة إيكولوجية ليست لإنترنت الأشياء ، ولكنها أنظمة إيكولوجية للمساعدين الصوتيين ، الذين يجب أن تكون قدراتهم عالمية للعالم بأسره ولجميع الأجهزة. تختلف إضافة ميزات جديدة إلى العملية اختلافًا كبيرًا عن "إلحاقي ويعمل". نتذكر جميعًا كيف كان يجب على "فتح البوابة" في فجر هذه الأنظمة الإيكولوجية. الوضع مشابه مع SmartThings.


لا توجد جهة تصنيع يمكنها تقديم قائمة واضحة وشاملة من إمكانات الأجهزة التي يمكن إصدارها وتصبح جزءًا من نظام IoT البيئي. لهذا السبب لا تملك أنظمة مثل النسبة المئوية للدهون الحشوية أو نسبة السكر في الدم أو الأسيتون القدرة على معرفة ماذا؟ لماذا لا يستطيع المنزل دعمك بأوهام سعيدة عندما يكون كل شيء على ما يرام أو لفت انتباهك عندما يحدث خطأ ما؟


من ناحية أخرى ، كيفية إنشاء واجهات المستخدم دون فهم ما يمكن أن يفعله الجهاز؟ كان نهج نقطة البيانات في SCADA مناسبًا لإخفاء ميزات الطوبولوجيا والبروتوكولات. لتلقي البيانات (القائمة الأفقية) مع بعض الخصائص الإضافية ، على سبيل المثال ، الموثوقية (سواء كان هناك انقطاع على طول الطريق) أو مستويات الوصول ، ولكن عرضهم الرئيسي كان في شكل رسوم تخطيطية ذاكري.


لكن مستخدمي إنترنت الأشياء يعيشون في عصر ما بعد الكمبيوتر الشخصي ، والدوائر التي يكثر ذكرها غير مريحة على شاشات الهاتف ، والإعداد طويل للغاية.


أعتقد أنه يجب أن يكون هناك تهجين معين. أولاً ، يجب أن يعرف النظام ما هو الجهاز ، ويجب أن يحتوي على نقاط بيانات. ومع ذلك ، لا تقل أهمية عن ذلك أنه يجب أن يكون هناك أيضًا معلومات تعريفية إضافية يجب تسليمها إلى سحابة متخصصة ، على سبيل المثال ، مساعد الصوت المفضل لديك. قد تتضمن هذه المعلومات ، على وجه الخصوص ، كل من الملف الشخصي (مجموعة من القدرات) للجهاز ، في فهم السحابة الخارجية ، ومعرفاتها.


تتمثل وظيفة الجهة المصنعة للجهاز في وصف ، من بين أشياء أخرى ، الأداء المطلوب لهذا المنتج لكل من الواجهات البصرية وأنواع أخرى: التفاعل الصوتي ، AR / VR وما شابه. ولكن ، حتى لو لم يقم الصانع بذلك ، على مضض وبالكسل ، فإن المستخدم لا يزال بإمكانه اختيار ما يمكن لجهاز Google من الآن فصاعداً معرفته باسم "Smart Home Kettle" ، والآن لديه ميزات مثل: TemperatureControl و OnOff و Modes و تبديل نعم ، لقد أسقطت action.devices.traits للاكتناز.


هذا هو لضمان التفاعل ينبغي بالفعل خدمات التكامل.


خدمات التكامل


هذه هي البوابة نفسها ، ولكن بين الغيوم. يجب استبدال بعض التجريدات بآخرين.


أساس التفاعل حدث. هناك نماذج الاستعلام والمنشورات. الموضوع واسع للغاية بحيث يمكنك الوقوع في فخ بوليوود عند وصفه. هناك ، كما تعلمون ، يتم إنتاج عدد من الأفلام سنويًا أكثر مما يمكن أن يشاهده شخص ما ،
لذلك ، بحلول نهاية المقال ، سأكون أبعد عن الواقع من أن يبدأ الوصف في الوقت الحالي.


لقد ذكرت بالفعل العديد من الأنظمة المنزلية ، يمكنك استدعاء LoRaWAN (و TheThingsNetwork) ، IFTTT ، OpenStreetMap ، AWS IoT ، Azure IoT ، خدمات الطقس ، نعم ، في الواقع ، أي خدمة إنترنت أو إنترانت تقريبًا (هل هناك أي مصطلح آخر؟) يجب أن ندخل في أنظمة الشركات.


واجهات المستخدم


لن أصف هذا الجزء بعمق ، ولكني أريد أن أعرب عن استيائي ، وهو غير مستحق ، في رأيي ، تجاوزه أنظمة إنترنت سطح المكتب (IoT) المنزلية. فقط في Mojave HomeKit خرج أخيرًا - بالنسبة لي هذا أمر محير. لماذا تعد الغلاية أكثر تعقيدًا من جداول البيانات التي يمكنني من خلالها حساب التدفق النقدي لبعض الشركات؟ بعد كل شيء ، مع أرقام ، يمكنني العمل في متصفح ، لكن ليس من الضروري إيقاف تشغيل مكواة منسية ، وفقًا لفهم Apple. باختصار ، أعط PWA!


واجهات المستخدم هي مفاتيح مادية مريحة في المقام الأول ، لكنها قليلة بشكل لا يغتفر.


AR ، VR ، مختلط الواقع ، مساعدين صوتيين ، أجهزة تلفزيون ذكية ، تطبيقات للهواتف الذكية والأجهزة اللوحية ، واجهات EEG العصبية هي الكرز على الكعكة ، والتي نحن المهوسون ممتعون للغاية للعب بها.


خاتمة


يبدو ، ما علاقة Docker و microservices به؟ إذا كان الأمر مثيرًا للاهتمام للقراء ، فسأشارك بكل سرور أفكاري والتطورات في تنفيذ بنية نظام إنترنت الأشياء على أساس هذا التصنيف للكائنات.


أنا استخدامها بنفسي.

Source: https://habr.com/ru/post/ar433996/


All Articles