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

أثناء بناء مركزنا الخاص ، قررنا أنه من الضروري ليس فقط إظهار التقنيات الجديدة على أنها عروض تجريبية ، ولكن أيضًا لإدخالها في عمل المركز نفسه.
على سبيل المثال ، يمكن تحويل جميع القاعات والجماهير في المركز - مقسمة إلى عدة أجزاء - ولم شملها في مكان واحد. الموقع مجهز أيضًا بـ "مكتب ذكي" - حلول إدارة الموارد ، كاميرات مع التعرف على الوجه ، أجهزة استشعار لإنترنت الأشياء.
في هذه العملية ، توصلنا إلى سيناريو بسيط وفعال يعتمد على SAP Cloud Platform لمراقبة كيفية استخدام غرف الاجتماعات بشكل فعال. في هذه المقالة ، سنخبرك بكيفية تجميع مثل هذا السيناريو بسرعة وسهولة في يوم واحد.
علاوة على ذلك - حول المستشعرات وخدمة IoT في SAP Cloud Platform و "تصنيف الكرمة" للموظفين.
بدأنا بإعداد الخدمات على منصة SAP Cloud للتكامل مع أجهزة الاستشعار لإنترنت الأشياء. لتطوير الحل ، استخدمنا خدمة إنترنت الأشياء في SAP Cloud Platform (SCP) لأتمتة نقل البيانات ، بالإضافة إلى بيئة تطوير Cloud Foundry في SCP.
قدمنا عرضًا توضيحيًا باستخدام أجهزة الاستشعار هذه:
- جهاز استشعار Magnetocontact ، يعمل على فتح الأبواب وإغلاقها
- جهاز استشعار الحركة بالأشعة تحت الحمراء لاكتشاف الاختراق في المنطقة المحمية ، وفي حالتنا أيضًا في غرفة الاجتماعات
يجب تنفيذ مراقبة قاعات الاجتماعات للتحقق من كيفية استخدام الموظفين للمباني بالفعل - سواء كان الاجتماع قد تم أو كانت غرفة الاجتماعات فارغة في ذلك الوقت ، وعدد الأشخاص الذين انتهوا من حضور الاجتماع وتفاصيل أخرى. ونتيجة لذلك ، يمكنك جمع إحصائيات حول كيفية استخدام الموظفين لغرف الاجتماعات بشكل فعال على مدار فترة زمنية.
الشكل 1. معمارية خدمة إنترنت الأشياء في SAP Cloud Platform
استخدمنا نظام SAP Cloud Platform وخدمة إنترنت الأشياء كأساس لهذا المثال. يتم عرض بنية النظام الأساسي في الشكل 1 ، وهو يدعم وظائف الجمع بين كل من الأجهزة الفردية ونقاط الوصول (البوابات) في شبكة مشتركة تعتمد على خدمة إنترنت الأشياء في SAP Cloud Platform.
بالنسبة للأجهزة التي لا تحتوي على بروتوكولات HTTPS / MQTT ، وكذلك لتقسيم الأجهزة إلى مقاطع تعمل على دمج الرسائل وإرسالها مركزيًا إلى SAP Cloud Internet of Things ، يتم استخدام IoT GateWay Edge. هذا مكون برمجي يمكنه الاتصال بالأجهزة عبر البروتوكولات: HTTPS و MQTT و Modbus (1) و CoAP و File (2) و OPC UA (3) و SigFox (4) و SNMP (5). بالإضافة إلى ذلك ، يمكن للمطور استخدام SDK لتوسيع إمكانيات GateWay وتنفيذ بروتوكولاتها لتبادل البيانات مع الأجهزة.
ملاحظاتملاحظات من وثائق SAP Cloud Platform:
1) يتم تطبيق Modus حاليًا باستخدام:
• TCP / IP عبر الإيثرنت
• إرسال تسلسلي غير متزامن عبر وسائط مختلفة (سلك: RS-232 ، RS-485 ؛ ليف ، راديو ، وما إلى ذلك)
• ModbusPLUS ، شبكة تمرير رمزية عالية السرعة.
يحدد Modbus وحدة بيانات بروتوكول بسيطة مستقلة عن طبقات الاتصال الأساسية. يمكن أن يؤدي رسم الخرائط على حافلات أو شبكات معينة إلى إدخال بعض الحقول الإضافية في وحدة بيانات التطبيق. يتبع البروتوكول نهج خادم العميل ، حيث يبدأ العميل معاملة Modbus لاستطلاع خادم للبيانات.
2) سير العمل النموذجي للمحول هو ما يلي:
1. قراءة ملف معين ، بناءً على مجموعة من معلمات التكوين.
2. استعرض محتوى الملف واستخرج الحقول القيمة وفقًا لتعليمات ملف مخطط تحليل المحول.
3. ارسم هذه الحقول على مفاهيم وكيانات خدمة إنترنت الأشياء (على سبيل المثال ، معالجة بيانات التعريف ، والقياسات ، وما إلى ذلك) ، أيضًا استنادًا إلى ملف مخطط التحليل الخاص بالمحول.
4. دفق البيانات المعيارية حتى خدمة إنترنت الأشياء الأساسية.
5. قم بإزالة الملف الهدف من موقعه الأصلي ، واختياريًا نسخه احتياطيًا إلى مجلد آخر.
تنسيقات الملفات المدعومة هي JSON و CSV و binary. بالنسبة إلى الملفات الثنائية ، يتم نقل الملف كسلسلة مشفرة Base64 إلى خدمة إنترنت الأشياء الأساسية.
3) تتكامل بوابة إنترنت الأشياء مع خوادم OPC UA من خلال العمل كعميل OPC UA. يمكن للمحول الاتصال بالخادم لتأسيس جلسة OPC UA ؛ عند الاتصال الأول ، يتصفح المحول مساحة عنوان الخادم وينشئ جهازًا مناظرًا مع مجموعة من أجهزة الاستشعار. ثم ، يقوم بتكوين استرداد البيانات ، لكل خيارين ممكنين:
• وضع السحب الدوري: يقوم المحول باستقصاء الخادم للبيانات على أساس دوري ، مع فترة استقصاء قابلة للتكوين
• وضع الاشتراك: يقوم المحول بإنشاء اشتراك في عقد الخادم ، ليتم إعلامه من قبل الخادم نفسه كلما تغيرت قيمة العقدة
4) SigFox هي شركة فرنسية تستخدم تقنية راديو مقرها UNB (Ultra Narrow Band) لتوصيل أجهزة إنترنت الأشياء بشبكتها. وهي تستخدم حاليًا نطاق ISM على 868 ميجا هرتز (كما هو محدد بواسطة ETSI و CEPT) في أوروبا وعلى 902 ميجا هرتز في الولايات المتحدة (كما هو محدد بواسطة FCC) ، اعتمادًا على لوائح إقليمية محددة. لتوسيع منطقة تغطية الخدمة ، لدى SigFox شراكات مع العديد من مشغلي الشبكات حول العالم. من خلال الاستفادة من البنية التحتية لـ UNB التي يوفرها هؤلاء الشركاء ، يتيح SigFox الاتصال بين الأجهزة التي تعمل ببروتوكول SigFox اللاسلكي وسحابة SigFox. في هذا السياق ، تعمل البنية التحتية لـ SigFox كطبقة النقل التي ترسل البيانات التي تم إنشاؤها بواسطة الأجهزة إلى السحابة. هذه الطبقة لا تعرف البيانات ، مما يعني أنها لا تفسر البيانات ولكنها ببساطة تنقلها. بالنظر إلى ذلك ، يمكن لمصنعي الأجهزة الذين يقومون بتثبيت البرامج الثابتة لـ SigFox على منتجاتهم استخدام خدمة SigFox للوصول إلى بياناتهم ، ومجموعة من واجهات برمجة التطبيقات REST لإنشاء تطبيقات استنادًا إلى هذه البيانات. يوضح الرسم شبكة SigFox بطريقة مبسطة.
5) يتبع تدفق البيانات مسارين:
• تصدر بوابة إنترنت الأشياء استطلاعًا دوريًا على جميع الأجهزة ، وتقوم بإجراء MIB-WALK كامل لكل جهاز متصل.
• تستقبل بوابة إنترنت الأشياء الفخاخ من الأجهزة ، إذا كانت الأجهزة قادرة على إرسال الفخاخ.
في بنية إنترنت الأشياء ، يمكن نشر خدمة GateWay كجزء من SAP Cloud Platform وعلى الجهاز النهائي. واحدة من المزايا الرئيسية لـ GateWay هي التكامل مع SAP Cloud Platform ، حيث إنها تحل مشكلة نقل البيانات من الأجهزة إلى النظام الأساسي السحابي. ولكن من الممكن أيضًا التكامل مع خدمة إنترنت الأشياء بدون GateWay ، باستخدام بروتوكولات MQTT / HTTPS.
تم تصميم بنية خدمة إنترنت الأشياء باستخدام بيئة Cloud Foundry ، والتي تتيح لك نشر تطبيقاتك التي تم تطويرها على أساس لغات Python و JavaScript (Nodejs) و Java (Tomcat) و Go و Scala
وما إلى ذلك إلى SAP Cloud Platform. في هذا السيناريو ، استخدمنا خادم تطبيقات Nodejs لإنشاء خدمتنا الخاصة لمعالجة الرسائل من أجهزة الاستشعار في بيئة SAP Cloud Platform.
يمكن العثور على نموذج لتعليمة برمجية لخدمة تستند إلى Nodejs هنا.const http = require('http'); const hdb = require('hdb'); http.createServer(function (req, res) { if (req.method === 'POST') { let body = ''; req.on('data', chunk => { body += chunk.toString();
لإعداد الكود في Nodejs ، استخدمنا وحدة node-hdb ، والتي توفر الاتصال مع HANA DBMS وهي موجودة بالفعل في nodejs buildpack في CloudFoundry.
في بيئة CloudFoundry ، يجب عليك تحديد التبعيات بين التطبيق والوحدات المستخدمة. في هذه الحالة ، سيتمكن Nodejs من الوصول إلى الوحدة النمطية وتشغيل تطبيقنا ، لذلك نحدد الرابط في ملف package.json
التبعية"dependencies" : {
"hdb" : "0.xx"
}
بصفتنا مستودع البيانات الرئيسي والمحرك لإنشاء استعلامات تحليلية ، فإننا نستخدم نظام HANA DBMS. باستخدام الوحدة النمطية
node-hdb ، يمكنك استخدام إمكانات الإدراج المجمّع (لتسريع إدراج البيانات) ، وإدارة المعاملات (الالتزام ، والعودة ، والتشغيل التلقائي) ، واستدعاء إجراءات SQL المخزنة.
البيانات التي تم الحصول عليها باستخدام أجهزة استشعار إنترنت الأشياء تأتي من خلال خدمة إنترنت الأشياء إلى SAP Cloud Platform - مباشرة إلى خدمتنا المستندة إلى Nodejs. يجب عليك أولاً تكوين نموذج البيانات وتنسيق الرسالة في SAP Cloud Internet of Things.
كيف يمكنك إنشاء واجهة مستخدم بسرعة وتخصيص المكونات الأساسية لـ SAP UI5؟
لعرض حالة غرفة الاجتماعات في الخدمة استخدمنا مكون
GenericTile . يعرض الشكل 2 مثالاً لمكون GenericTile مخصص للإشارة إلى حالة غرفة الاجتماعات.

لرسم الأيقونات والعروض الملونة على مكون GenericTile ، استخدمنا امتداد لوحة HTML5 وطريقة العارض لنموذج كائن SAP UI5.
يمكن العثور على نموذج التعليمات البرمجية هنا renderer: function (oRM, oControl) { var model; var d; var view = sap.ui.getCore().byId("samplecontainer---mainview"); if (!this.status) this.status = {"door":"","motion":"","color":"#2bbc2d","busy":0}; if (view != undefined) model = view.getModel("DT1"); if (model != undefined){ d = JSON.parse(model.getJSON()); if (this.status){ this.status.busy = d.busy; this.status.door = d.door; this.status.motion = d.motion; this.status.color = d.color; } } oRM.write("<div"); oRM.writeControlData(oControl); oRM.write(">"); </spoiler> if (this.status.busy == 0){ oRM.write("<img id='iDT1' src='/iotex/images/room_empty.png' alt='Empty' height='64' width='70'>"); } else { oRM.write("<img id='iDT1' src='/iotex/images/room_booked.png' alt='Booked' height='64' width='70'>"); } oRM.write("<canvas id='cDT1' width='30' height='30'></canvas>"); oRM.write("<script>"); oRM.write("var canvas = document.getElementById('cDT1');"); oRM.write("var context = canvas.getContext('2d');"); oRM.write("var centerX = canvas.width / 2;"); oRM.write("var centerY = canvas.height / 2;"); oRM.write("var radius = 12;"); oRM.write("context.beginPath();"); oRM.write("context.arc(centerX, centerY, radius, 0, 2 * Math.PI, false);"); if ((this.status.busy == 1)&&((this.status.door != 0)||(this.status.motion != 0))){ oRM.write("context.fillStyle = '#f46e41';");
كيف يمكنني إنشاء استعلامات تحليلية وعرض الرسوم البيانية في واجهة المستخدم في تطبيق على SCP؟أسهل طريقة للوصول إلى البيانات في SAP HANA من UI5 هي بروتوكول OData. يسمح لك باستخدام نموذج كائن جاهز لنقل البيانات إلى عنصر عرض UI5. ومع ذلك ، إذا كان استعلام تحليلي معقد مطلوبًا لتشكيل مجموعة بيانات ، فإن SQLScript والإجراءات المخزنة في SAP HANA تأتي إلى الإنقاذ. لا يمكنك أيضًا اللجوء إلى التطوير المعقد للاستعلامات في SQLScript ، ولكن ببساطة استخدم محرر طريقة عرض الحساب في SAP Web IDE.
الشكل 3. مثال لمخطط دائري من مكتبة sap.viz.ui5نموذج جافا سكريبت ورمز SAP UI5 لعرض مخطط دائري
هو مبين هنا $.ajax ({ type: "GET", url: "/iotex/odatasource/rooms.xsodata/rooms?$format=json", dataType: 'json', async: false, success: function (data, status){ var aData = data.d.results; var UData = {Data: aData}; room_model.setData(UData); } }); View.setModel(room_model,"Rooms"); var oVizFrame = this.oVizFrame = this.getView().byId("idVizFrame"); var oDataset = new sap.viz.ui5.data.FlattenedDataset({ dimensions : [{ name : 'Time', value : "{Time}"}], measures : [{ name : 'Usage', value : '{Value}'} ], data : { path : "/Data" } }); oVizFrame.setDataset(oDataset); oVizFrame.setVizProperties({ title:{ text : " " }, plotArea: { colorPalette : ['#2bbc2d','#f46e41','#c5f442'], drawingEffect: "glossy" }}); var feedSize = new sap.viz.ui5.controls.common.feeds.FeedItem({ 'uid': "size", 'type': "Measure", 'values': ["Usage"] }), feedColor = new sap.viz.ui5.controls.common.feeds.FeedItem({ 'uid': "color", 'type': "Dimension", 'values': ["Time"] }); oVizFrame.addFeed(feedSize); oVizFrame.addFeed(feedColor);
لعرض البيانات بشكل صحيح على المخطط الدائري ، يجب عليك التحقق بعناية من مسار البيانات بالتنسيق المحدد في خاصية المسار لكائن FlattenedDataset. في هذه الحالة ، تشير خاصية Path إلى كائن / Data ، لذلك من الضروري تقديم بنية JSON المطلوبة في النموذج الموضح
هنا var datapiechart = { "Data" : []}; var yellow = {"Time":"Abused","Value":data.yellow}; var red = {"Time":"Occupied","Value":data.red}; var green = {"Time":"Free","Value":data.green}; datapiechart.Data.push(yellow); datapiechart.Data.push(red); datapiechart.Data.push(green); var mod = viz.getModel(); mod.setData(datapiechart); viz.setModel(mod);
لعرض الإحصائيات (انظر الشكل 4) حول المستخدمين الذين يحجزون غرف الاجتماعات ، استخدمنا عنصر جدول UI5 بسيط. يعرض "النقاط" المتراكمة اعتمادًا على عدد "الزيارات" للأحداث. وبالتالي من الممكن تحديد الموظفين عديمي الضمير الذين يحجزون غرف الاجتماعات.
الشكل 4. إحصائيات الزيارات لمستخدم معيّنباستخدام خدمة إنترنت الأشياء ، بالإضافة إلى بيئة CloudFoundry في SAP Cloud Platform ، يمكنك إنشاء خدمات إنترنت الأشياء الخاصة بك بسرعة ودمجها بسهولة مع أي جهاز. كمصدر للمعلومات المرجعية على خدمة إنترنت الأشياء ، يمكنك استخدام
الرابط حيث يتم وصف بنية الخدمة بالتفصيل ويتم توفير أمثلة التعليمات البرمجية.

يمكنك أيضًا استخدام الوصول التجريبي
هنا لاختبار بيئة Foundry Cloud بالضغط أولاً على زر تسجيل الدخول وإكمال إجراءات التسجيل.