1. نظرة عامة/مقدمة
على الرغم من أنّ التطبيقات المتعدّدة الطبقات التي تتألف من الويب وخادم التطبيقات وقاعدة البيانات هي أساس تطوير الويب ونقطة البداية للعديد من المواقع الإلكترونية، إلا أنّ تحقيق النجاح غالبًا ما يواجه تحديات متعلّقة بقابلية التوسّع والتكامل والسرعة. على سبيل المثال، كيف يمكن معالجة البيانات في الوقت الفعلي وكيف يمكن توزيعها على أنظمة أعمال رئيسية متعددة؟ أدّت هذه المشاكل إلى جانب متطلبات التطبيقات على مستوى الإنترنت إلى الحاجة إلى نظام رسائل موزّع، كما أدّت إلى ظهور نمط معماري لاستخدام مسارات البيانات لتحقيق أنظمة مرنة في الوقت الفعلي. نتيجةً لذلك، إنّ فهم كيفية نشر البيانات في الوقت الفعلي على نظام رسائل موزّعة ثم كيفية إنشاء مسار بيانات من المهارات الضرورية للمطورين والمهندسين المعماريين على حدٍ سواء.
التطبيقات التي ستنشئها
في هذا الدرس التطبيقي حول الترميز، ستنشئ مسارًا لبيانات الطقس يبدأ بجهاز إنترنت الأشياء (IoT)، ويستفيد من قائمة انتظار الرسائل لتلقي البيانات وتقديمها، ويستفيد من استخدام وظيفة بدون خادم لنقل البيانات إلى مستودع البيانات ثم إنشاء لوحة معلومات تعرض المعلومات. وسيتم استخدام جهاز Raspberry Pi مع جهاز استشعار للطقس في جهاز إنترنت الأشياء (IoT)، كما ستشكّل عدة مكونات في Google Cloud Platform مسار البيانات. على الرغم من أنّ إنشاء Raspberry Pi مفيد، إلا أنّه جزء اختياري من هذا الدليل التعليمي حول رموز البرامج، ويمكن استبدال بيانات الطقس التي يتم بثها بنص برمجي.
بعد إكمال الخطوات الواردة في هذا الدليل التعليمي، ستحصل على مسار بيانات بث يغذّي لوحة بيانات تعرض درجة الحرارة والرطوبة ونقطة الندى وضغط الهواء.
المعلومات التي ستطّلع عليها
- كيفية استخدام Google Pub/Sub
- كيفية نشر دالة Google Cloud
- كيفية الاستفادة من Google BigQuery
- كيفية إنشاء لوحة بيانات باستخدام "مركز البيانات من Google"
- بالإضافة إلى ذلك، إذا أنشأت أداة استشعار إنترنت الأشياء، ستتعرّف أيضًا على كيفية استخدام حزمة تطوير برامج Google Cloud وكيفية تأمين طلبات الوصول عن بُعد إلى Google Cloud Platform.
المتطلبات
- حساب على Google Cloud Platform المستخدمون الجدد في Google Cloud Platform مؤهّلون للاستفادة من فترة تجريبية مجانية بقيمة 300 دولار أمريكي.
إذا كنت تريد إنشاء جزء أداة استشعار إنترنت الأشياء من هذا الدليل التعليمي للترميز بدلاً من الاستفادة من عيّنات البيانات والنصوص البرمجية، ستحتاج أيضًا إلى ما يلي (يمكن طلبه كمجموعة كاملة أو كأجزاء فردية هنا)...
- جهاز Raspberry Pi Zero W مزوّد بوحدة إمداد طاقة وبطاقة ذاكرة SD وحافظة
- قارئ بطاقات USB
- موزّع USB (للسماح بتوصيل لوحة مفاتيح وماوس في منفذ USB الوحيد على جهاز Raspberry Pi)
- أسلاك لوحة توصيل أنثى إلى أنثى
- رؤوس GPIO المطرقة
- مستشعر BME280
- كاوية لحام مع لحام
بالإضافة إلى ذلك، يُفترض توفُّر شاشة كمبيوتر أو تلفزيون مزوَّد بمدخل HDMI وكابل HDMI ولوحة مفاتيح وماوس.
2. الإعداد
إعداد بيئة ذاتية
إذا لم يكن لديك حساب على Google (Gmail أو G Suite)، عليك إنشاء حساب. بغض النظر عما إذا كان لديك حساب Google من قبل أم لا، احرص على الاستفادة من التجربة المجانية بقيمة 300 دولار أمريكي.
سجِّل الدخول إلى وحدة تحكُّم Google Cloud Platform ( console.cloud.google.com). يمكنك استخدام المشروع التلقائي ("مشروعي الأول") لهذا البرنامج التدريبي أو يمكنك اختيار إنشاء مشروع جديد. إذا كنت ترغب في إنشاء مشروع جديد، يمكنك استخدام صفحة إدارة الموارد. يجب أن يكون رقم تعريف المشروع اسمًا فريدًا في جميع مشاريع Google Cloud (سبق أن تم استخدام الرقم الظاهر أدناه ولن يكون متاحًا لك). دوِّن معرّف مشروعك (على سبيل المثال، سيكون رقم تعريف مشروعك _____) لأنه ستحتاج إليه لاحقًا.
من المفترض ألا تتجاوز تكلفة تنفيذ هذا الدليل التعليمي بضعة دولارات، ولكن قد تزيد هذه التكلفة إذا قرّرت استخدام المزيد من الموارد أو إذا تركت الدليل التعليمي قيد التشغيل. احرص على الانتقال إلى قسم "الحذف سريعًا" في نهاية الدرس التطبيقي حول الترميز.
3- إنشاء جدول BigQuery
BigQuery هو مستودع بيانات للمؤسسات منخفض التكلفة ويعمل بدون خادم ويتّسم بإمكانية التوسع بشكل كبير، وسيكون خيارًا مثاليًا لتخزين البيانات التي يتم بثّها من أجهزة إنترنت الأشياء مع السماح أيضًا للوحة بيانات الإحصاءات بطلب المعلومات.
لننشئ جدولاً سيحتوي على جميع بيانات الطقس في إنترنت الأشياء. اختَر BigQuery من وحدة التحكّم في Cloud. سيؤدي ذلك إلى فتح BigQuery في نافذة جديدة (لا تغلق النافذة الأصلية لأنّك ستحتاج إلى الوصول إليها مرة أخرى).
انقر فوق أيقونة السهم لأسفل بجوار اسم مشروعك ثم حدد "Create new dataset" (إنشاء مجموعة بيانات جديدة)
أدخِل "weatherData" لمجموعة البيانات، واختَر مكانًا لتخزينها، ثم انقر على "حسنًا".
انقر على علامة "+" بجانب مجموعة البيانات لإنشاء جدول جديد.
بالنسبة إلى بيانات المصدر، اختَر إنشاء جدول فارغ. بالنسبة إلى اسم جدول الوجهة، أدخِل weatherDataTable. ضمن المخطّط، انقر على الزر إضافة حقل إلى أن يصبح لديك 9 حقول في المجموع. املأ الحقول كما هو موضّح أدناه مع الحرص على اختيار النوع المناسب لكل حقل. عند اكتمال كل شيء، انقر على الزر إنشاء جدول.
من المفترض أن تظهر لك نتيجة مثل هذه...
تم الآن إعداد مستودع بيانات لتلقّي بيانات الطقس.
4. إنشاء موضوع على خدمة Pub/Sub
تمثّل خدمة Cloud Pub/Sub أساسًا بسيطًا وموثوقًا به وقابلاً للتطور لتحليلات البث وأنظمة الحوسبة المستندة إلى الأحداث. ولهذا السبب، فهي مثالية للتعامل مع رسائل إنترنت الأشياء (IoT) الواردة ثم السماح للأنظمة النهائية بمعالجتها.
إذا كنت لا تزال في نافذة BigQuery، عليك التبديل مرة أخرى إلى Cloud Console. إذا أغلقت Cloud Console، انتقِل إلى https://console.cloud.google.com
من Cloud Console، انقر على "نشر/اشتراك" ثم على Topics.
إذا ظهر لك طلب تمكين واجهة برمجة التطبيقات، فانقر على زر تمكين واجهة برمجة التطبيقات.
انقر على الزر "إنشاء موضوع".
أدخِل weatherdata كاسم الموضوع وانقر على "إنشاء".
من المفترض أن يظهر لك الموضوع الذي تم إنشاؤه حديثًا.
أصبح لديك الآن موضوع Pub/Sub لنشر رسائل إنترنت الأشياء عليه والسماح لعمليات أخرى بالوصول إلى هذه الرسائل.
النشر الآمن في الموضوع
إذا كنت تخطط لنشر رسائل في موضوع النشر/الاشتراك من موارد خارج Google Cloud Console (مثل أداة استشعار إنترنت الأشياء)، سيكون من الضروري التحكم بإحكام في الوصول باستخدام حساب خدمة وضمان أمان الاتصال من خلال إنشاء شهادة ثقة.
من Cloud Console، اختَر "إدارة الهوية وإمكانية الوصول والمشرف"، ثم "حسابات الخدمة".
انقر على الزر "إنشاء حساب خدمة".
في القائمة المنسدلة "الدور"، اختَر دور "ناشر Pub/Sub".
اكتب اسم حساب الخدمة (iotWeatherPublisher)، وضع علامة في مربّع الاختيار "أثاث مفتاح خاص جديد"، وتأكّد من ضبط "نوع المفتاح" على JSON وانقر على "إنشاء".
سيتم تنزيل مفتاح الأمان تلقائيًا. هناك مفتاح واحد فقط، لذلك من المهم عدم فقدانه. انقر على "إغلاق".
من المفترض أن يظهر لك أنّه تم إنشاء حساب خدمة وأنّ هناك معرّف مفتاح مرتبطًا به.
للوصول إلى المفتاح بسهولة لاحقًا، سنخزّنه في Google Cloud Storage. من Cloud Console، اختَر "مساحة التخزين" ثم "المتصفّح".
انقر على الزر "إنشاء حزمة".
اختَر اسمًا لحزمة التخزين (يجب أن يكون اسمًا فريدًا عالميًا على جميع خدمات Google Cloud) وانقر على الزر "إنشاء".
تحديد موقع مفتاح الأمان الذي تم تنزيله تلقائيًا ثم سحبه أو إفلاته أو تحميله في حزمة مساحة التخزين
من المفترض أن يظهر المفتاح في متصفِّح Cloud Storage بعد اكتمال تحميل المفتاح.
دوِّن اسم حزمة التخزين واسم ملف مفتاح الأمان للرجوع إليهما لاحقًا.
5- إنشاء دالة Cloud
لقد أتاحت الحوسبة السحابية إمكانية إنشاء نماذج حوسبة بدون خادم حيث يمكن تنفيذ المنطق عند الطلب استجابةً للأحداث التي تنشأ من أي مكان. وفي هذا التمرين المعملي، ستبدأ دالة سحابية في كل مرة يتم فيها نشر رسالة حول موضوع الطقس، وستقرأ الرسالة ثم تخزنها في BigQuery.
من Cloud Console، اختَر Cloud Functions.
إذا ظهرت لك رسالة واجهة برمجة التطبيقات، انقر على زر "تفعيل واجهة برمجة التطبيقات".
انقر على زر "إنشاء دالة".
في حقل "الاسم"، اكتب function-weatherPubSubToBQ. بالنسبة إلى "العامل المشغِّل"، اختَر موضوع Cloud Pub/Sub، وفي القائمة المنسدلة "الموضوع"، اختَر weatherdata. بالنسبة إلى رمز المصدر، اختَر محرِّرًا مضمَّنًا. في علامة التبويب index.js، الصِق الرمز البرمجي التالي فوق الرمز البرمجي الحالي. احرص على تغيير الثوابت الخاصة بـ projectId وdatasetId وtableId لتتلاءم مع بيئتك.
/**
* Background Cloud Function to be triggered by PubSub.
*
* @param {object} event The Cloud Functions event.
* @param {function} callback The callback function.
*/
exports.subscribe = function (event, callback) {
const BigQuery = require('@google-cloud/bigquery');
const projectId = "myProject"; //Enter your project ID here
const datasetId = "myDataset"; //Enter your BigQuery dataset name here
const tableId = "myTable"; //Enter your BigQuery table name here -- make sure it is setup correctly
const PubSubMessage = event.data;
// Incoming data is in JSON format
const incomingData = PubSubMessage.data ? Buffer.from(PubSubMessage.data, 'base64').toString() : "{'sensorID':'na','timecollected':'1/1/1970 00:00:00','zipcode':'00000','latitude':'0.0','longitude':'0.0','temperature':'-273','humidity':'-1','dewpoint':'-273','pressure':'0'}";
const jsonData = JSON.parse(incomingData);
var rows = [jsonData];
console.log(`Uploading data: ${JSON.stringify(rows)}`);
// Instantiates a client
const bigquery = BigQuery({
projectId: projectId
});
// Inserts data into a table
bigquery
.dataset(datasetId)
.table(tableId)
.insert(rows)
.then((foundErrors) => {
rows.forEach((row) => console.log('Inserted: ', row));
if (foundErrors && foundErrors.insertErrors != undefined) {
foundErrors.forEach((err) => {
console.log('Error: ', err);
})
}
})
.catch((err) => {
console.error('ERROR:', err);
});
// [END bigquery_insert_stream]
callback();
};
في علامة التبويب package.json، الصق الرمز التالي فوق رمز العنصر النائب الموجود
{
"name": "function-weatherPubSubToBQ",
"version": "0.0.1",
"private": true,
"license": "Apache-2.0",
"author": "Google Inc.",
"dependencies": {
"@google-cloud/bigquery": "^0.9.6"
}
}
إذا تم ضبط الدالة المطلوب تنفيذها على "HelloWorld"، غيِّرها إلى "subscribe". انقر على زر إنشاء
سيستغرق الأمر دقيقتين تقريبًا إلى أن تظهر وظيفتك أنّها قد تم نشرها.
تهانينا! لقد ربطت للتوّ Pub/Sub بخدمة BigQuery من خلال Functions.
6- إعداد أجهزة إنترنت الأشياء (اختياري)
تجميع Raspberry Pi وجهاز الاستشعار
إذا كان هناك أكثر من 7 دبابيس، عليك اختصار العنوان إلى 7 دبابيس فقط. يجب توصيل دبابيس الرأس بلوحة المستشعر.
يجب تثبيت دبابيس رؤوس المطرقة بعناية في جهاز Raspberry Pi.
عليك تنسيق بطاقة SD وتثبيت أداة تثبيت NOOBS (برنامج الإصدار الجديد من الحزمة الجديدة) من خلال اتّباع الخطوات الواردة هنا. أدخِل بطاقة SD في جهاز Raspberry Pi ثم ضع جهاز Raspberry Pi في غلافه.
استخدِم أسلاك لوحة توصيل الدوائر لتوصيل أداة الاستشعار بجهاز Raspberry Pi وفقًا للرسم التوضيحي أدناه.
موصّل Raspberry Pi | اتصال أداة الاستشعار |
الإبرة 1 (3.3 فولت) | رقم هوية السيارة |
رقم التعريف الشخصي 3 (CPIO2) | وصلة SDI |
الإبرة 5 (GPIO3) | SCK |
الدبوس 9 (البرّي) | GND |
قم بتوصيل الشاشة (باستخدام موصل HDMI الصغير)، ولوحة المفاتيح/الماوس (مع موزّع USB) وأخيرًا، محول الطاقة.
ضبط جهاز Raspberry Pi وجهاز الاستشعار
بعد انتهاء تشغيل Raspberry Pi، حدد Raspbian لنظام التشغيل المطلوب، ثم تأكد من أن اللغة المطلوبة صحيحة، ثم انقر على "Install" (تثبيت) (رمز محرك الأقراص الثابتة في الجزء العلوي الأيسر من النافذة).
انقر على رمز Wi-Fi (أعلى يسار الشاشة) واختَر شبكة. إذا كانت الشبكة آمنة، أدخِل كلمة المرور (مفتاح تمت مشاركته مسبقًا).
انقر على أيقونة التوت (أعلى يسار الشاشة)، وحدد التفضيلات ثم إعداد Raspberry Pi. من علامة التبويب "الواجهات"، فعِّل بروتوكول I2C. من علامة التبويب "الترجمة والنشر"، اضبط اللغة والمنطقة الزمنية. بعد ضبط المنطقة الزمنية، اسمح لجهاز Raspberry Pi بإعادة تشغيل الجهاز.
بعد اكتمال إعادة التشغيل، انقر على رمز "المحطة الطرفية" لفتح نافذة طرفية.
اكتب الأمر التالي للتأكّد من ربط أداة الاستشعار بشكل صحيح.
sudo i2cdetect -y 1
من المفترض أن تظهر النتيجة على النحو التالي: 77.
تثبيت حزمة تطوير البرامج (SDK) لخدمة Google Cloud
للاستفادة من الأدوات المتاحة على Google Cloud Platform، يجب تثبيت حزمة Google Cloud SDK على Raspberry Pi. تتضمّن حزمة SDK الأدوات اللازمة لإدارة Google Cloud Platform والاستفادة منها، وهي متاحة لعدة لغات برمجة.
افتح نافذة طرفية على جهاز Raspberry Pi إذا لم تكن مفتوحة، واضبط متغيّر بيئة يتطابق مع إصدار حزمة تطوير البرامج (SDK) مع نظام التشغيل على Raspberry Pi.
export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
أضِف الآن الموقع الجغرافي الذي يتم فيه تخزين حِزم Google Cloud SDK حتى تعرف أدوات التثبيت المكان الذي يجب البحث فيه عند طلب تثبيت حزمة SDK.
echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
أضف المفتاح العام من مستودع حزم Google حتى يتحقق برنامج Raspberry Pi من الأمان ويثق في المحتوى أثناء التثبيت.
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
تأكَّد من أنّ جميع البرامج على جهاز Raspberry Pi محدّثة وثبِّت حزمة Google Cloud SDK الأساسية.
sudo apt-get update && sudo apt-get install google-cloud-sdk
عندما يظهر لك السؤال "هل تريد المتابعة؟"، اضغط على Enter.
ثبِّت حزمة tendo باستخدام أداة إدارة حِزم Python. تُستخدَم هذه الحزمة للتحقّق مما إذا كان النص البرمجي يتم تشغيله أكثر من مرّة ويتم تثبيته لتطبيقه على نص الطقس البرمجي.
pip install tendo
التأكّد من أنّ حزمتَي Google Cloud PubSub وOAuth2 للغة Python مثبَّتتان ومحدَّثتان باستخدام أداة إدارة حزم Python
sudo pip install --upgrade google-cloud-pubsub
sudo pip install --upgrade oauth2client
إعداد حزمة تطوير البرامج (SDK) في Google Cloud
تسمح حزمة تطوير البرامج (SDK) بالوصول عن بُعد والمصدَّق عليه إلى Google Cloud. في هذا الدليل التعليمي حول رموز البرامج، سيتم استخدامه للوصول إلى حزمة التخزين حتى يمكن تنزيل مفتاح الأمان بسهولة إلى Raspberry Pi.
من سطر الأوامر في Raspberry Pi، أدخل
gcloud init --console-only
عندما يظهر لك السؤال "هل تريد تسجيل الدخول (نعم/لا)؟"، اضغط على مفتاح Enter.
عندما تظهر لك الرسالة "الانتقال إلى الرابط التالي في المتصفّح:" متبوعة بعنوان URL طويل يبدأ بـ https://accounts.google.com/o/oauth؟...، مرِّر مؤشر الماوس فوق عنوان URL وانقر بزر الماوس الأيمن واختَر "نسخ عنوان URL". بعد ذلك افتح متصفح الويب (رمز الكرة الأرضية الأزرق في الزاوية العلوية اليسرى من الشاشة)، وانقر بزر الماوس الأيمن فوق شريط العناوين، ثم انقر على "لصق".
بعد رؤية شاشة تسجيل الدخول، أدخِل عنوان البريد الإلكتروني المرتبط بحسابك على Google Cloud واضغط على Enter. ثم أدخل كلمة المرور وانقر على زر "التالي".
سيُطلب منك السماح لـ Google Cloud SDK بالوصول إلى حسابك على Google. انقر فوق الزر "السماح".
سيظهر لك رمز التحقق. باستخدام الماوس، ميِّز المحتوى، ثم انقر بزر الماوس الأيمن واختَر "نسخ". ارجع إلى نافذة المحطة الطرفية، وتأكَّد من أنّ المؤشر على يسار "إدخال رمز التحقّق:"، وانقر بزر الماوس الأيمن ثم اختَر "لصق". اضغط على الزر Enter.
إذا طُلب منك "اختيار مشروع على السحابة الإلكترونية لاستخدامه:"، أدخِل الرقم المتوافق مع اسم المشروع الذي كنت تستخدمه في هذا الدرس التطبيقي حول الترميز، ثم اضغط على Enter.
إذا طُلِب منك تفعيل واجهة Compute API، اضغط على الزر Enter لتفعيلها. بعد ذلك، سيُطلب منك ضبط إعدادات Google Compute Engine. اضغط على Enter. ستظهر لك قائمة بالمناطق المحتملة. اختَر منطقة قريبة منك وأدخِل الرقم المقابل لها واضغط على مفتاح Enter.
ستظهر لك بعض المعلومات الإضافية بعد قليل. اكتمل الآن إعداد حزمة تطوير البرامج (SDK) لخدمة Google Cloud. يمكنك إغلاق نافذة متصفّح الويب لأنّك لن تحتاج إليها من الآن فصاعدًا.
تثبيت برنامج الاستشعار والنص البرمجي للطقس
من سطر الأوامر على Raspberry Pi، يمكنك استنساخ الحِزم المطلوبة لقراءة المعلومات من دبابيس الإدخال/الإخراج.
git clone https://github.com/adafruit/Adafruit_Python_GPIO
تثبيت الحِزم التي تم تنزيلها
cd Adafruit_Python_GPIO
sudo python setup.py install
cd ..
استنساخ رمز المشروع الذي يُمكِّن جهاز استشعار الطقس
git clone https://github.com/googlecodelabs/iot-data-pipeline
انسخ برنامج تشغيل المستشعر في الدليل نفسه الموجود في باقي البرامج التي تم تنزيلها.
cd iot-data-pipeline/third_party/Adafruit_BME280
mv Adafruit_BME280.py ../..
cd ../..
تعديل النص البرمجي عن طريق الكتابة...
nano checkWeather.py
غيِّر المشروع إلى رقم تعريف المشروع والموضوع إلى اسم موضوع Pub/Sub (تم ذكر هذه الأسماء في قسمَي "الإعداد" و"إنشاء موضوع Pub/Sub" في هذا الدليل التعليمي).
غيِّر قيم sensorID وsensorZipCode وsensorLat وsensorLong إلى أي قيمة تريدها. يمكن العثور على قيم خطوط الطول والعرض لموقع أو عنوان معين هنا.
عند الانتهاء من إجراء التغييرات اللازمة، اضغط على Ctrl-X لبدء الخروج من محرِّر النصوص nano. اضغط على Y للتأكيد.
# constants - change to fit your project and location
SEND_INTERVAL = 10 #seconds
sensor = BME280(t_mode=BME280_OSAMPLE_8, p_mode=BME280_OSAMPLE_8, h_mode=BME280_OSAMPLE_8)
credentials = GoogleCredentials.get_application_default()
project="myProject" #change this to your Google Cloud project id
topic = "myTopic" #change this to your Google Cloud PubSub topic name
sensorID = "s-Googleplex"
sensorZipCode = "94043"
sensorLat = "37.421655"
sensorLong = "-122.085637"
تركيب مفتاح الأمان
انسخ مفتاح الأمان (من قسم "النشر الآمن إلى موضوع") إلى جهاز Raspberry Pi.
في حال استخدام بروتوكول النقل الآمن للملفات (SFTP) أو بروتوكول SCP لنسخ مفتاح الأمان من جهازك المحلي إلى جهاز Raspberry Pi (إلى دليل /home/pi)، يمكنك تخطّي الخطوة التالية والانتقال بسرعة إلى تصدير المسار.
إذا وضعت مفتاح الأمان في حزمة تخزين، عليك تذكُّر اسم حزمة التخزين واسم الملف. استخدِم الأمر gsutil لنسخ مفتاح الأمان. يمكن لهذا الأمر الوصول إلى Google Storage (سبب تسميته gsutil وسبب بدء مسار الملف بـ gs://). تأكد من تغيير الأمر أدناه للحصول على اسم الحزمة واسم الملف.
gsutil cp gs://nameOfYourBucket/yourSecurityKeyFilename.json .
من المفترض أن تظهر لك رسالة تفيد بأنّه يتم نسخ الملف، ثم رسالة تفيد بأنّه اكتمل.
من سطر الأوامر على Raspberry Pi، يمكنك تصدير مسار إلى مفتاح الأمان (يمكنك تغيير اسم الملف ليطابق ما لديك).
export GOOGLE_APPLICATION_CREDENTIALS=/home/pi/iot-data-pipeline/yourSecurityKeyFilename.json
أصبح لديك الآن أداة استشعار الطقس المتكاملة لتكنولوجيات إنترنت الأشياء (IoT) الجاهزة لإرسال البيانات إلى Google Cloud.
7- بدء مسار البيانات
قد تحتاج إلى تفعيل Compute API
بث البيانات من جهاز Raspberry Pi
إذا كنت قد أنشأت جهاز استشعار الطقس IoT من Raspberry Pi، ابدأ النص البرمجي الذي سيقرأ بيانات الطقس ويرسلها إلى Google Cloud Pub/Sub. إذا لم تكن في الدليل /home/pi/iot-data-pipeline، انتقِل إليه أولاً.
cd /home/pi/iot-data-pipeline
بدء نص الطقس
python checkWeather.py
يُفترض أن تظهر لك نتائج بيانات الطقس من خلال نافذة المحطة الطرفية كل دقيقة. مع تدفّق البيانات، يمكنك التخطّي إلى القسم التالي (التحقّق من تدفّق البيانات).
البث المحاكي للبيانات
إذا لم تكن قد أنشأت أداة استشعار الطقس في إنترنت الأشياء (IoT)، يمكنك محاكاة تدفق البيانات باستخدام مجموعة بيانات عامة تم تخزينها على Google Cloud Storage وإدخالها في موضوع Pub/Sub الحالي. سيتم استخدام Google Dataflow مع النموذج الذي توفّره Google للقراءة من Cloud Storage والنشر في Pub/Sub.
وكجزء من هذه العملية، سيحتاج Dataflow إلى موقع تخزين مؤقت، لذا سننشئ حزمة تخزين لهذا الغرض.
من Cloud Console، اختَر "مساحة التخزين" ثم "المتصفّح".
انقر على الزر "إنشاء حزمة".
اختَر اسمًا لحزمة التخزين (تذكّر أنّه يجب أن يكون اسمًا فريدًا عالميًا عبر جميع خدمات Google Cloud) وانقر على الزر "إنشاء". تذكَّر اسم حزمة التخزين هذه لأنّك ستحتاج إليها قريبًا.
من Cloud Console، اختَر Dataflow (تدفّق البيانات).
انقر على "إنشاء مهمة من نموذج" (في الجزء العلوي من الشاشة).
املأ تفاصيل الوظيفة كما هو موضح أدناه، مع الانتباه إلى ما يلي:
- أدخِل اسم المهمة dataflow-gcs-to-pubsub.
- يجب أن تختار منطقتك تلقائيًا وفقًا لمكان استضافة مشروعك، ويجب ألا تحتاج إلى تغييرها.
- اختيار نموذج Cloud Dataflow الخاص بـ GCS Text to Cloud Pub/Sub
- بالنسبة إلى ملفات Cloud Storage الإدخال، أدخِل gs://codelab-iot-data-pipeline-sampleweatherdata/*.json (هذه مجموعة بيانات عامة).
- بالنسبة إلى موضوع Pub/Sub للإخراج، سيعتمد المسار الدقيق على اسم مشروعك وسيبدو على النحو التالي: "projects/yourProjectName/topics/weatherdata".
- اضبط "الموقع الجغرافي المؤقت" على اسم حزمة Google Cloud Storage التي أنشأتها للتو مع بادئة اسم ملف "tmp". من المفترض أن يظهر بالتنسيق التالي: "gs://myStorageBucketName/tmp".
بعد ملء جميع المعلومات (راجِع ما يلي)، انقر على الزر "تشغيل المهمة".
من المفترض أن يبدأ تشغيل مهمة Dataflow.
من المفترض أن يستغرق إكمال مهمة Dataflow دقيقة واحدة تقريبًا.
8. التحقق من تدفق البيانات
سجلّات Cloud Functions
تأكَّد من أنّ دالة السحابة الإلكترونية يتم تفعيلها من خلال خدمة Pub/Sub.
gcloud beta functions logs read function-weatherPubSubToBQ
من المفترض أن تُظهر السجلات أنّ الدالة يتم تنفيذها وأنّه يتم استلام البيانات وإدراجها في BigQuery.
بيانات BigQuery
تأكَّد من تدفّق البيانات إلى جدول BigQuery. من Cloud Console، انتقِل إلى BigQuery (bigquery.cloud.google.com).
ضمن اسم المشروع (على الجانب الأيسر من النافذة)، انقر على مجموعة البيانات (weatherData)، ثم على الجدول (weatherDataTable)، ثم انقر على زر "جدول طلبات البحث".
أضِف علامة نجمية إلى عبارة SQL لتظهر على النحو التالي: SELECT * FROM...، ثم انقر على الزر "تنفيذ الاستعلام".
إذا طُلب منك ذلك، فانقر فوق الزر "Run query" (تشغيل الاستعلام)
وإذا ظهرت لك نتائج، يعني ذلك أنّ البيانات تتدفق بشكل صحيح.
مع تدفق البيانات، أنت الآن جاهز لإنشاء لوحة معلومات تحليلات.
9. إنشاء لوحة بيانات في Data Studio
يعمل "مركز البيانات من Google" على تحويل بياناتك إلى لوحات بيانات وتقارير غنيّة بالمعلومات وسهلة القراءة والمشاركة وقابلة للتخصيص بالكامل.
من متصفّح الويب، انتقِل إلى https://datastudio.google.com.
ضمن "بدء تقرير جديد"، انقر على "فارغ" ثم على الزر "البدء".
انقر على مربّع الاختيار لقبول البنود، ثم انقر على الزر التالي ، وحدد الرسائل الإلكترونية التي ترغب في استلامها، ثم انقر على الزر تم. مرة أخرى، ضمن "بدء تقرير جديد"، انقر على "فارغ".
انقر على الزر "إنشاء مصدر بيانات جديد".
انقر على BigQuery، ثم على الزر "تفويض"، ثم اختَر حساب Google الذي تريد استخدامه مع "مركز البيانات" (يجب أن يكون الحساب نفسه الذي كنت تستخدمه في ورشة عمل رموز البرامج).
انقر على الزر "سماح".
اختَر اسم المشروع ومجموعة البيانات والجدول. بعد ذلك، انقر على زر "الاتصال".
غيِّر حقول النوع كما هو موضّح أدناه (يجب أن تكون كل الحقول رقمًا باستثناء سمة "الوقت المنقضي" و"معرّف جهاز الاستشعار"). تجدر الإشارة إلى أنّه يتم ضبط السمة timecollected على "التاريخ الساعة" (وليس "التاريخ" فقط). غيِّر حقول التجميع كما هو موضّح أدناه (يجب أن تكون نقطة التكثُّف ودرجة الحرارة والرطوبة والضغط على متوسطات ويجب ضبط كل الحقول الأخرى على "غير محدّد"). انقر على الزر "إنشاء تقرير".
أكِّد ذلك بالنقر على الزر "إضافة إلى التقرير".
إذا طُلب منك تحديد حسابك في Google، فقم بذلك ثم انقر على الزر "السماح" للسماح لـ "مركز البيانات" بتخزين تقاريره في Google Drive.
ستظهر لك لوحة فارغة لإنشاء لوحة المعلومات. من الصف العلوي من الرموز، اختَر "السلسلة الزمنية".
ارسم مستطيلاً في أعلى الجانب الأيسر من الورقة الفارغة. يجب أن تشغل العلامة التجارية ربع مساحة الورقة الفارغة تقريبًا.
على الجانب الأيسر من النافذة، حدد علامة التبويب "Style" (النمط). غيِّر البيانات غير المتوفّرة من "السطر إلى الصفر" إلى "فواصل الأسطر". في قسم "المحور العمودي الأيمن"، احذف القيمة 0 من Axis Min لتغييرها إلى (Auto).
انقر فوق الرسم البياني الموجود على الورقة وانسخه/ألصقه (Ctrl-C/Ctrl-V) 3 مرات. محاذاة الرسوم البيانية بحيث يشغل كل رسم بياني ¼ من التنسيق
انقر على كل رسم بياني، وضمن قسم خصائص السلسلة الزمنية وبياناتها، انقر على المقياس الحالي (نقطة التكثف)، واختر مقياسًا مختلفًا ليتم عرضه حتى يكون لجميع قراءات الطقس الأربع (نقطة الندى ودرجة الحرارة والرطوبة والضغط) رسم بياني خاص بها.
لديك الآن لوحة بيانات أساسية.
10. تهانينا!
لقد قمت بإنشاء مسار بيانات كامل! من خلال ذلك، تعرّفت على كيفية استخدام Google Pub/Sub وكيفية نشر دالة لا تستخدِم خادمًا وكيفية الاستفادة من BigQuery وكيفية إنشاء لوحة بيانات إحصاءات باستخدام Data Studio. بالإضافة إلى ذلك، تعرّفت على كيفية استخدام حزمة تطوير برامج Google Cloud بأمان لنقل البيانات إلى Google Cloud Platform. أخيرًا، لديك الآن بعض الخبرة العملية في استخدام نمط معماري مهم يمكنه التعامل مع أعداد كبيرة مع الحفاظ على مدى التوفّر.
الإزالة
بعد الانتهاء من تجربة بيانات الطقس ومسار تعلُّم الإحصاءات، يمكنك إزالة الموارد التي يتم تشغيلها.
إذا كنت قد أنشأت أداة استشعار إنترنت الأشياء، أوقِفها. اضغط على Ctrl-C في النافذة الطرفية لإيقاف النص البرمجي، ثم اكتب ما يلي لإيقاف تشغيل Raspberry Pi
shutdown -h now
انتقِل إلى Cloud Functions وانقر على مربّع الاختيار بجانب function-weatherPubSubToBQ، ثم انقر على "Delete".
انتقِل إلى Pub/Sub، وانقر على Topic (الموضوع)، ثم انقر على مربّع الاختيار بجانب موضوع weatherdata، ثم انقر على Delete (حذف).
انتقِل إلى "مساحة التخزين"، وانقر على مربّعات الاختيار بجانب حِزم التخزين، ثم انقر على "حذف".
انتقِل إلى bigquery.cloud.google.com، وانقر على السهم المتّجه للأسفل بجانب اسم مشروعك، ثمّ انقر على السهم المتّجه للأسفل على يسار مجموعة بيانات weatherData، ثمّ انقر على "حذف مجموعة البيانات".
اكتب معرّف مجموعة البيانات (الطقس) عندما يُطلب منك ذلك لإنهاء حذف البيانات.