كيفية بناء نظام مراقبة وتحليل للأجهزة المدمجة في إنترنت الأشياء

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

دعنا نركز على ثلاثة أشياء:

  1. رمز الجهاز والعبّارة الذي يعمل على دفق البيانات إلى واجهة مركزية.
  2. الخلفية وقاعدة البيانات لمعالجة وتخزين البيانات.
  3. الواجهة الأمامية لعرض البيانات.

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

1. جهاز وتسجيل بوابة أداة

عند التفكير في أداة مساعدة للتسجيل مستضافة على أجهزتك وبواباتك النهائية ، فإن الأشياء التي تظهر هي:

  • يجب أن يكون لها بصمة صغيرة.
  • لا تعطل جهازي أبدًا.
  • تستهلك القليل من القوة.
  • لا تخريب رمز التطبيق.

أجهزتك تعني رمزك. من الصعب تعميم هذا الموضوع لأن الكثير يعتمد على قناة الاتصال المستخدمة للاتصال بالإنترنت. نفتح مصدر أداة تسجيل تقوم بتسجيل الأحداث من الأجهزة الطرفية الخاصة بك وإرسالها إلى البوابة / الواجهة الخلفية الخاصة بك. إذا كنت تستخدم nRF52 مع BLE GATT وبوابة ، فنحن نوفر لك أيضًا نموذجًا يعمل خارج الصندوق. انتقل إلى GitHub لدينا للبدء.

1. jumper-ulogger - هو إطار لتسجيل بصمة الذاكرة أقل من 500B تقوم بدمجه في جهازك النهائي (مع أمثلة للانتقال إلى جهاز nRF52 و CC3200).
2. jumper-logging-agent - هي الخدمة التي تعمل على البوابة.
3. jumper-ble-logger - هو مثال لخدمة وكيل التسجيل لـ BLE GW.

إذا كان لديك أي مشاكل أو سؤال أرسل لنا ملاحظة إلى info@jumper.io.

2. الخلفية وقاعدة البيانات

هذا هو المكان الذي يجب الانتباه فيه بعناية أكبر لأن هناك بعض الأشياء الجيدة هنا :-) أوصي باستخدام مجموعات الأدوات التالية لإنجاز هذا العمل:

  • قاعدة بيانات ذات قيمة أساسية لتخزين لقطة حالية لحالة الجهاز (قمنا باختبار Firebase من Google و DynamoDB من Amazon). هذا هو جهاز الظل الخاص بك.
  • قاعدة بيانات سلسلة زمنية لتخزين بيانات الجهاز التاريخية وبيانات الاستعلام للتقارير والرسوم البيانية (اختبرنا InfluxDB).
  • بنية تحتية بدون خادم للاختيار من أجل الحد الأدنى من المعالجة المطلوبة (استخدمنا وظائف AWS Lambda و Google Cloud باستخدام إطار عمل بدون خادم).

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

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

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

لقد انتهى الأمر باستخدام Google Firebase لمتجر القيمة الرئيسية لأسباب متعددة. لقد صممنا بالفعل كل محرك التطبيق والمصادقة وقواعد البيانات بناءً عليه ، لذا كان استخدامه لبيانات الجهاز اختيارًا سهلاً.

بالنسبة إلى السلسلة الزمنية DB ، انتهى بنا الأمر إلى استخدام InfluxDB ، المستضاف على خوادم InfluxData مقابل 160 دولارًا شهريًا. ليست رخيصة للغاية ، ولكن تتسع لعدد يصل إلى 10،000 جهاز (لا يعتمد ذلك على تحميل البيانات). هذا أقل من 0.25 دولار في السنة لكل جهاز. حلو! الجانب السلبي مع InfluxDB هو أنه يجب عليك أن تكون حريصًا حقًا على حقول البيانات التي تحددها على هيئة فهارس. يمكن أن تعاني DB بسهولة من مشاكل الأداء بسبب الفهرسة الزائدة.

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

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

نهاية المقدمة

لا حاجة لاختراع العجلة هنا أيضًا. يوفر Keen واجهة لتوليد الرسوم البيانية ودمجها في مواقع الويب الأخرى. استخدمنا Grafana كمنصة أمامية لأنه يأتي مع خطة InfluxDB التي تبلغ 160 دولارًا / م. ربط Grafana أيضًا خيارًا قويًا آخر لقاعدة بيانات DB الخاصة بك على المدى الطويل.

مخطط نظام مفصل

ملخص

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

تأخذ المختبر الظاهري الطائر لاختبار تدور

إذا كانت جودة المنتج مهمة بالنسبة لك وتواجه صعوبة في اختبار برنامج النظام المضمن في IoT ، فقم بإلقاء نظرة على Jumper Virtual Lab. Jumper Virtual Lab هو استنساخ إنتاج افتراضي يسمح لك بتطوير واختبار وتنفيذ عملية تكامل مستمرة على نظامك المضمن بسهولة مع الأجهزة الافتراضية. ابدأ في استخدام Jumper مجانًا الآن.

شارك افكارك

لا تتردد في مشاركة أفكارك والاتصال بنا في قسم التعليقات أو على feedback@jumper.io.