لمحة عن هذا الدرس التطبيقي حول الترميز
1. نظرة عامة/مقدمة
في حين أن التطبيقات متعددة الطبقات التي تتكون من الويب وخادم التطبيقات وقاعدة البيانات هي الأساس لتطوير الويب ونقطة البداية للعديد من المواقع الإلكترونية، فإن النجاح غالبًا ما يجلب تحديات متعلقة بقابلية التوسع والتكامل والسرعة. على سبيل المثال، كيف يمكن معالجة البيانات في الوقت الفعلي وكيف يمكن توزيعها على أنظمة أعمال رئيسية متعددة؟ أدت هذه المشكلات إلى جانب مطالب التطبيقات على مستوى الإنترنت إلى الحاجة إلى نظام رسائل موزّعة وأدت إلى ظهور نمط بنيوي لاستخدام مسارات البيانات لتحقيق أنظمة مرنة في الوقت الفعلي. نتيجةً لذلك، يُعد فهم كيفية نشر البيانات في الوقت الفعلي إلى نظام رسائل موزّعة ثم كيفية إنشاء مسار بيانات من المهارات الضرورية للمطورين والمهندسين المعماريين على حدٍ سواء.
ما ستقوم بإنشائه
في هذا الدرس التطبيقي حول الترميز، ستنشئ مسارًا لبيانات الطقس يبدأ بجهاز إنترنت الأشياء (IoT)، ويستفيد من قائمة انتظار الرسائل لتلقي البيانات وتقديمها، ويستفيد من استخدام وظيفة بدون خادم لنقل البيانات إلى مستودع البيانات ثم إنشاء لوحة معلومات تعرض المعلومات. وسيتم استخدام جهاز Raspberry Pi مع جهاز استشعار للطقس في جهاز إنترنت الأشياء (IoT)، كما ستشكّل عدة مكونات في Google Cloud Platform مسار البيانات. على الرغم من أنّ إنشاء Raspberry Pi مفيد، هو جزء اختياري من هذا الدرس التطبيقي حول الترميز ويمكن استبدال بيانات الطقس المتدفقة بنص برمجي.
بعد الانتهاء من الخطوات الواردة في هذا الدرس التطبيقي حول الترميز، سيكون لديك مسار لنقل البيانات يوفّر لوحة بيانات تعرض درجة الحرارة والرطوبة ونقطة الندى وضغط الهواء.
المعلومات التي ستطّلع عليها
- كيفية استخدام خدمة Google Pub/Sub
- كيفية نشر دالة Google Cloud
- كيفية الاستفادة من Google BigQuery
- كيفية إنشاء لوحة بيانات باستخدام "مركز البيانات من Google"
- بالإضافة إلى ذلك، إذا أنشأت أداة استشعار إنترنت الأشياء (IoT)، فستتعلم أيضًا كيفية استخدام حزمة SDK في Google Cloud وكيفية تأمين مكالمات الوصول عن بُعد إلى Google Cloud Platform
المتطلبات
- حساب على Google Cloud Platform المستخدمون الجدد في Google Cloud Platform مؤهّلون للحصول على فترة تجريبية مجانية بقيمة 300 دولار أمريكي.
إذا أردت إنشاء جزء أداة استشعار إنترنت الأشياء (IoT) في هذا الدرس التطبيقي حول الترميز بدلاً من عينة البيانات والنص البرمجي، ستحتاج أيضًا إلى ما يلي (يمكن طلبه كمجموعة كاملة أو كأجزاء فردية هنا)...
- جهاز 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 هو مستودع بيانات مؤسسة منخفض التكلفة وقابل للتوسع وبدون خادم، وسيكون خيارًا مثاليًا لتخزين البيانات التي يتم بثها من أجهزة "إنترنت الأشياء" (IoT) مع السماح أيضًا للوحة بيانات الإحصاءات بالاستعلام عن المعلومات.
لننشئ جدولاً يحتوي على جميع بيانات الطقس من إنترنت الأشياء (IoT). اختَر BigQuery من وحدة التحكّم في Cloud. سيؤدي هذا إلى فتح BigQuery في نافذة جديدة (لا تغلق النافذة الأصلية؛ حيث ستحتاج إلى الوصول إليها مرة أخرى).
انقر فوق أيقونة السهم لأسفل بجوار اسم مشروعك ثم حدد "Create new dataset" (إنشاء مجموعة بيانات جديدة)
أدخِل "بيانات الطقس". لمجموعة البيانات، حدد موقعًا لتخزينها وانقر على "موافق"
انقر على رمز "+" التوقيع بجانب مجموعة البيانات لإنشاء جدول جديد
بالنسبة إلى بيانات المصدر، اختَر إنشاء جدول فارغ. بالنسبة إلى اسم جدول الوجهة، أدخِل weatherDataTable. ضمن المخطط، انقر على الزر إضافة حقل حتى يصل إجمالي الحقول إلى 9 حقول. املأ الحقول كما هو موضّح أدناه وتأكَّد أيضًا من اختيار النوع المناسب لكل حقل. عند الانتهاء من كل شيء، انقر فوق زر إنشاء جدول.
من المفترض أن تظهر لك نتيجة مثل هذه...
لديك الآن مستودع بيانات تم إعداده لتلقي بيانات الطقس.
4. إنشاء موضوع على خدمة Pub/Sub
تمثّل خدمة Cloud Pub/Sub أساسًا بسيطًا وموثوقًا به وقابلاً للتطور لتحليلات البث وأنظمة الحوسبة المستندة إلى الأحداث. ولهذا السبب، فهي مثالية للتعامل مع رسائل إنترنت الأشياء (IoT) الواردة ثم السماح للأنظمة النهائية بمعالجتها.
إذا كنت لا تزال في نافذة BigQuery، عليك التبديل مرة أخرى إلى Cloud Console. إذا أغلقت Cloud Console، انتقِل إلى https://console.cloud.google.com
من Cloud Console، انقر على "نشر/اشتراك" ثم على Topics.
إذا ظهر لك طلب تمكين واجهة برمجة التطبيقات، فانقر على زر تمكين واجهة برمجة التطبيقات.
انقر على الزر "إنشاء موضوع"
أدخِل "بيانات الطقس". كاسم للموضوع، ثم انقر على "إنشاء"
من المفترض أن يظهر لك الموضوع الجديد
لديك الآن موضوع النشر/الاشتراك لنشر رسائل إنترنت الأشياء (IoT) والسماح للعمليات الأخرى بالوصول إلى هذه الرسائل.
النشر الآمن للموضوع
إذا كنت تخطط لنشر رسائل في موضوع النشر/الاشتراك من موارد خارج Google Cloud Console (مثل أداة استشعار إنترنت الأشياء)، سيكون من الضروري التحكم بإحكام في الوصول باستخدام حساب خدمة وضمان أمان الاتصال من خلال إنشاء شهادة ثقة.
من Cloud Console، اختَر "إدارة الهوية وإمكانية الوصول" حسابات "المشرف" ثم "الخدمة"
انقر على الزر "إنشاء حساب الخدمة".
في القائمة المنسدلة "الدور"، اختَر دور "الناشر/الاشتراك"
اكتب اسم حساب الخدمة (iotWeatherPublisher)، وضع علامة في مربّع الاختيار "أثاث مفتاح خاص جديد"، وتأكّد من ضبط "نوع المفتاح" على JSON وانقر على "إنشاء".
سيتم تنزيل مفتاح الأمان تلقائيًا. هناك مفتاح واحد فقط، لذلك من المهم عدم فقدانه. انقر على "إغلاق".
من المفترض أن يظهر لك أنّه قد تم إنشاء حساب خدمة وأنّ هناك معرّف مفتاح مرتبطًا به.
للوصول إلى المفتاح بسهولة لاحقًا، سنخزّنه في Google Cloud Storage. من Cloud Console، اختَر "مساحة التخزين" ثم "المتصفّح".
انقر فوق الزر "Create Bucket" (إنشاء حزمة)
اختَر اسمًا لحزمة التخزين (يجب أن يكون اسمًا فريدًا عالميًا على جميع خدمات Google Cloud) وانقر على الزر "إنشاء".
تحديد موقع مفتاح الأمان الذي تم تنزيله تلقائيًا ثم سحبه أو إفلاته أو تحميله في حزمة مساحة التخزين
من المفترض أن يظهر المفتاح في متصفِّح Cloud Storage بعد اكتمال تحميل المفتاح.
دوِّن اسم حزمة التخزين واسم ملف مفتاح الأمان لاستخدامها في وقت لاحق.
5. إنشاء دالة سحابية
لقد أتاحت الحوسبة السحابية إمكانية إنشاء نماذج للحوسبة بدون خادم حيث يمكن تنفيذ المنطق عند الطلب استجابةً للأحداث التي تنشأ من أي مكان. وفي هذا التمرين المعملي، ستبدأ دالة سحابية في كل مرة يتم فيها نشر رسالة حول موضوع الطقس، وستقرأ الرسالة ثم تخزنها في BigQuery.
من Cloud Console، اختَر Cloud Functions.
إذا ظهرت لك رسالة من واجهة برمجة التطبيقات، انقر على الزر "تفعيل واجهة برمجة التطبيقات".
انقر على الزر "إنشاء دالة"
في حقل "Name" (الاسم)، اكتب function-weatherPubSubToBQ. بالنسبة إلى "المشغّل"، اختَر موضوع Cloud Pub/Sub، ثم اختَر بيانات الطقس في القائمة المنسدلة "الموضوع". بالنسبة إلى رمز المصدر، اختَر محرِّرًا مضمَّنًا. في علامة التبويب index.js، الصق الرمز التالي فوق الجزء الموجود للبدء. احرص على تغيير الثوابت لمعرّف المشروع ومعرّف مجموعة البيانات ومعرّف الجدول لملاءمة بيئتك.
/**
* 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، يمكنك تغييرها إلى "اشتراك". انقر على زر إنشاء
سيستغرق إظهار الدالة حوالي دقيقتين.
تهانينا! لقد ربطت للتو Pub/Sub بـ BigQuery من خلال الدوال.
6. إعداد أجهزة إنترنت الأشياء (اختياري)
تجميع جهاز Raspberry Pi وجهاز الاستشعار
إذا كان هناك أكثر من 7 دبابيس، عليك اختصار العنوان إلى 7 دبابيس فقط. يجب توصيل دبابيس الرأس بلوحة المستشعر.
يجب تثبيت دبابيس رؤوس المطرقة بعناية في جهاز Raspberry Pi.
عليك تنسيق بطاقة SD وتثبيت أداة تثبيت NOOBS (برنامج الإصدار الجديد من الحزمة الجديدة) من خلال اتّباع الخطوات الواردة هنا. أدخل بطاقة SD في جهاز 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.
تثبيت حزمة Teno باستخدام مدير حزم 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. ثم أدخل كلمة المرور وانقر على زر "التالي".
سيُطلب منك طلب حزمة تطوير البرامج (SDK) في Google Cloud للوصول إلى حسابك على 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
غيِّر المشروع إلى رقم تعريف المشروع والموضوع باسم موضوع النشر/الاشتراك (تم توضيح ذلك في قسمَي الموضوع "بدء الإعداد" و"إنشاء نشر/اشتراك" في هذا الدرس التطبيقي حول الترميز).
غيِّر قيم filterID وsensitiveZipCode وNestLat وPensanceLong إلى أي قيمة تريدها. يمكن العثور على قيم خطوط الطول والعرض لموقع أو عنوان معين هنا.
عند الانتهاء من إجراء التغييرات اللازمة، اضغط على 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
إذا أنشأت جهاز استشعار للطقس Raspberry Pi IoT، ابدأ النص البرمجي الذي سيقرأ بيانات الطقس ويرسلها إلى Google Cloud Pub/Sub. إذا لم تكن في الدليل /home/pi/iot-data-piline، يُرجى الانتقال إليه أولاً.
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، اختَر "مساحة التخزين" ثم "المتصفّح".
انقر فوق الزر "Create Bucket" (إنشاء حزمة)
اختَر اسمًا لحزمة التخزين (تذكّر أنّه يجب أن يكون اسمًا فريدًا عالميًا عبر جميع خدمات Google Cloud) وانقر على الزر "إنشاء". لا تنسَ اسم حزمة التخزين هذه، حيث ستحتاج إليها قريبًا.
من Cloud Console، اختَر Dataflow.
انقر فوق "Create Job from Template" (إنشاء مهمة من القالب) (في الجزء العلوي من الشاشة)
املأ تفاصيل الوظيفة كما هو موضح أدناه، مع الانتباه إلى ما يلي:
- أدخِل اسم وظيفة dataflow-gcs-to-pubsub
- يجب أن تختار منطقتك تلقائيًا وفقًا لمكان استضافة مشروعك، ويجب ألا تحتاج إلى تغييرها.
- اختيار نموذج Cloud Dataflow الخاص بـ GCS Text to Cloud Pub/Sub
- بالنسبة إلى ملفات الإدخال في السحابة الإلكترونية للإدخال، أدخِل gs://codelab-iot-data-piline- sampleweatherdata/*.json (هذه مجموعة بيانات علنية).
- بالنسبة إلى موضوع نشر النتائج/الاشتراك، سيعتمد المسار الدقيق على اسم مشروعك وسيبدو على الشكل التالي "projects/yourProjectName/topics/weatherdata"
- اضبط الموقع الجغرافي المؤقت على اسم حزمة Google Cloud Storage التي أنشأتها للتو مع بادئة اسم الملف "tmp". من المفترض أن يظهر بالتنسيق التالي: "gs://myStorageBucketName/tmp".
عند الانتهاء من ملء جميع المعلومات (انظر أدناه)، انقر على الزر "تشغيل المهمة".
من المفترض أن يبدأ تشغيل مهمة Dataflow.
من المفترض أن يستغرق اكتمال مهمة Dataflow دقيقة تقريبًا.
8. التحقق من تدفق البيانات
سجلات Cloud Function
تأكَّد من أنّ دالة السحابة الإلكترونية يتم تفعيلها من خلال خدمة Pub/Sub.
gcloud beta functions logs read function-weatherPubSubToBQ
يجب أن توضح السجلات أن الدالة يتم تنفيذها وأن البيانات يتم استلامها وأن يتم إدراجها في BigQuery
بيانات BigQuery
تحقق للتأكد من تدفّق البيانات إلى جدول BigQuery. من Cloud Console، انتقِل إلى BigQuery (bigquery.cloud.google.com).
ضمن اسم المشروع (على الجانب الأيسر من النافذة)، انقر على مجموعة البيانات (weatherData)، ثم على الجدول (weatherDataTable) ثم النقر على زر "Query Table" (جدول الاستعلام)
أضف علامة نجمة إلى عبارة SQL بحيث يظهر SELECT * FROM... كما هو موضح أدناه ثم انقر فوق الزر RUN QUERY
إذا طُلب منك ذلك، فانقر فوق الزر "Run query" (تشغيل الاستعلام)
وإذا رأيت نتائج، فإن البيانات تتدفق على نحو سليم.
مع تدفق البيانات، أنت الآن جاهز لإنشاء لوحة معلومات تحليلات.
9. إنشاء لوحة بيانات "مركز البيانات"
يعمل "مركز البيانات من Google" على تحويل بياناتك إلى لوحات بيانات وتقارير غنية بالمعلومات تسهل قراءتها ومشاركتها وتخصيصها بالكامل.
من متصفّح الويب، انتقِل إلى https://datastudio.google.com.
ضمن "بدء تقرير جديد"، انقر على "فارغ" ثم على الزر "البدء".
انقر على مربّع الاختيار لقبول البنود، ثم انقر على الزر التالي ، وحدد الرسائل الإلكترونية التي ترغب في تلقيها، ثم انقر على الزر تم. مرّة أخرى، ضمن "بدء تقرير جديد"، انقر على "فارغ".
انقر فوق الزر "Create New Data Source" (إنشاء مصدر بيانات جديد).
انقر على BigQuery، ثم على الزر "Authorize" (تفويض)، ثم اختَر حساب Google الذي تريد استخدامه مع "مركز البيانات" (يجب أن يكون هو الحساب نفسه الذي كنت تستخدمه في الدرس التطبيقي حول الترميز).
انقر على الزر "السماح".
اختَر اسم المشروع ومجموعة البيانات والجدول. ثم انقر فوق الزر اتصال.
غيِّر حقول النوع كما هو موضّح أدناه (يجب أن تكون كل الحقول رقمًا باستثناء مقياس "الوقت الذي يتم جمعه" و"معرّف أداة الاستشعار"). تجدر الإشارة إلى أنّه يتم ضبط السمة timecollected على "التاريخ الساعة" (وليس "التاريخ" فقط). غيِّر حقول التجميع كما هو موضّح أدناه (يجب أن تكون نقطة التكثُّف ودرجة الحرارة والرطوبة والضغط يجب أن تكون قيمًا متوسطة، ويجب ضبط جميع الحقول الأخرى على "غير محدّد"). انقر على الزر "إنشاء تقرير".
أكِّد الإجراء بالنقر على الزر "إضافة إلى الإبلاغ".
إذا طُلب منك تحديد حسابك في Google، فقم بذلك ثم انقر على الزر "السماح" للسماح لـ "مركز البيانات" بتخزين تقاريره في Google Drive.
تُعرض لك لوحة فارغة لإنشاء لوحة المعلومات الخاصة بك. من الصف العلوي من الأيقونات، اختر "السلسلة الزمنية".
ارسم مستطيلاً في أعلى الجانب الأيسر من الورقة الفارغة. يجب أن تشغل حوالي 1⁄4 من إجمالي الورقة الفارغة.
على الجانب الأيسر من النافذة، حدد علامة التبويب "Style" (النمط). تغيير البيانات المفقودة من "خط إلى صفر" إلى "فواصل الأسطر". في قسم المحور ص الأيسر، احذف 0 من الحد الأدنى للمحور لتغييره إلى (تلقائي).
انقر فوق الرسم البياني الموجود على الورقة وانسخه/ألصقه (Ctrl-C/Ctrl-V) 3 مرات. محاذاة الرسوم البيانية بحيث يحتوي كل منها على 1⁄4 من التخطيط.
انقر على كل رسم بياني، وضمن قسم خصائص السلسلة الزمنية وبياناتها، انقر على المقياس الحالي (نقطة التكثف)، واختر مقياسًا مختلفًا ليتم عرضه حتى يكون لجميع قراءات الطقس الأربع (نقطة الندى ودرجة الحرارة والرطوبة والضغط) رسم بياني خاص بها.
لديك الآن لوحة معلومات أساسية!
10. تهانينا!
لقد قمت بإنشاء مسار بيانات كامل! وعند إجراء ذلك، تكون قد تعلمت كيفية استخدام Google Pub/Sub، وكيفية تفعيل دالة بدون خادم، وكيفية الاستفادة من BigQuery، وكيفية إنشاء لوحة بيانات إحصائية باستخدام أداة "مركز البيانات". بالإضافة إلى ذلك، رأيتم كيف يمكن استخدام Google Cloud SDK بشكل آمن لجلب البيانات إلى Google Cloud Platform. وأخيرًا، لديك الآن بعض الخبرة العملية بنمط معماري مهم يمكنه التعامل مع كميات كبيرة مع الحفاظ على التوافر.
الإزالة
بعد الانتهاء من تجربة بيانات الطقس ومسار الإحصاءات، يمكنك إزالة الموارد قيد التشغيل.
إذا أنشأت أداة استشعار إنترنت الأشياء (IoT)، فعليك إيقاف تشغيلها. اضغط على Ctrl-C في النافذة الطرفية لإيقاف النص البرمجي، ثم اكتب ما يلي لإيقاف تشغيل Raspberry Pi
shutdown -h now
انتقِل إلى Cloud Functions وانقر على مربّع الاختيار بجانب function-weatherPubSubToBQ، ثم انقر على "حذف".
انتقِل إلى نشر/اشتراك، وانقر على "الموضوع"، وانقر على مربّع الاختيار بجانب موضوع بيانات الطقس، ثم انقر على "حذف".
انتقِل إلى "مساحة التخزين"، وانقر على مربّعات الاختيار بجانب "حِزم التخزين"، ثم انقر على "حذف"
انتقل إلى bigquery.cloud.google.com، وانقر فوق السهم لأسفل بجوار اسم مشروعك، وانقر فوق السهم لأسفل على يمين مجموعة بيانات weatherData، ثم انقر فوق "حذف مجموعة البيانات".
اكتب معرّف مجموعة البيانات (الطقس) عندما يُطلب منك ذلك لإنهاء حذف البيانات.